系統(tǒng)實(shí)現(xiàn)與維護(hù)_第1頁(yè)
系統(tǒng)實(shí)現(xiàn)與維護(hù)_第2頁(yè)
系統(tǒng)實(shí)現(xiàn)與維護(hù)_第3頁(yè)
系統(tǒng)實(shí)現(xiàn)與維護(hù)_第4頁(yè)
系統(tǒng)實(shí)現(xiàn)與維護(hù)_第5頁(yè)
已閱讀5頁(yè),還剩93頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

系統(tǒng)實(shí)現(xiàn)與維護(hù)2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)2緒言系統(tǒng)設(shè)計(jì)完成后進(jìn)入系統(tǒng)實(shí)施階段。系統(tǒng)實(shí)施就是將系統(tǒng)分析和設(shè)計(jì)的結(jié)果轉(zhuǎn)換為能夠在計(jì)算機(jī)上實(shí)際運(yùn)行的系統(tǒng)的過(guò)程,屬于系統(tǒng)開(kāi)發(fā)周期的后期階段。本章的主要內(nèi)容有:系統(tǒng)實(shí)施的任務(wù)、特點(diǎn)和方法;程序設(shè)計(jì)的原則、標(biāo)準(zhǔn)和方法;軟件開(kāi)發(fā)工具;系統(tǒng)測(cè)試的原則、內(nèi)容和方法;系統(tǒng)轉(zhuǎn)換的主要方式和工作等。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)37.1系統(tǒng)實(shí)施的任務(wù)系統(tǒng)實(shí)施的任務(wù)就是以系統(tǒng)設(shè)計(jì)方案為依據(jù),按照系統(tǒng)實(shí)施方案進(jìn)行具體的實(shí)現(xiàn),最終組建一個(gè)能夠?qū)嶋H運(yùn)行的系統(tǒng)交付用戶(hù)使用。實(shí)現(xiàn)階段的任務(wù)和工作內(nèi)容包括以下4個(gè)方面:硬件準(zhǔn)備;軟件準(zhǔn)備人員培訓(xùn);數(shù)據(jù)準(zhǔn)備。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)47.1系統(tǒng)實(shí)施的任務(wù)系統(tǒng)實(shí)施的特點(diǎn)系統(tǒng)實(shí)施是管理信息系統(tǒng)開(kāi)發(fā)工作的后期階段,是一項(xiàng)涉及各級(jí)管理人員、系統(tǒng)開(kāi)發(fā)技術(shù)人員、系統(tǒng)測(cè)試人員、系統(tǒng)操作和維護(hù)人員的組織協(xié)調(diào),以及系統(tǒng)應(yīng)用場(chǎng)地、設(shè)備和資金的調(diào)配管理,持續(xù)時(shí)間長(zhǎng)且十分復(fù)雜的系統(tǒng)工程。工作量大,投入的人力、物力多,組織管理工作繁重是其主要特點(diǎn)。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)57.2程序設(shè)計(jì)語(yǔ)言分類(lèi)按應(yīng)用特點(diǎn)分類(lèi)面向機(jī)器語(yǔ)言(機(jī)器語(yǔ)言和匯編語(yǔ)言)高級(jí)語(yǔ)言基礎(chǔ)語(yǔ)言(BASIC、Fortran)現(xiàn)代語(yǔ)言(Pascal、C、C++)專(zhuān)用語(yǔ)言(Lisp、Prolog)按語(yǔ)言?xún)?nèi)在特點(diǎn)分類(lèi)系統(tǒng)實(shí)現(xiàn)語(yǔ)言靜態(tài)高級(jí)語(yǔ)言塊結(jié)構(gòu)高級(jí)語(yǔ)言動(dòng)態(tài)高級(jí)語(yǔ)言2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)67.3程序設(shè)計(jì)語(yǔ)言的選擇

理想標(biāo)準(zhǔn)應(yīng)該有理想的模塊化機(jī)制,以及可讀性好的控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),以使程序容易測(cè)試和維護(hù),同時(shí)減少軟件生存周期的總成本。應(yīng)有良好的獨(dú)立編譯機(jī)制,以降低軟件開(kāi)發(fā)和維護(hù)的成本。應(yīng)該使編譯程序能夠盡可能多地發(fā)現(xiàn)程序中的錯(cuò)誤,以便于調(diào)試和提高軟件的可靠性。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)77.3程序設(shè)計(jì)語(yǔ)言的選擇實(shí)踐標(biāo)準(zhǔn)語(yǔ)言自身的功能系統(tǒng)用戶(hù)的要求編碼和維護(hù)成本軟件的兼容性可以使用的軟件工具軟件的可移植性開(kāi)發(fā)系統(tǒng)的規(guī)模程序設(shè)計(jì)人員的水平2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)87.4程序設(shè)計(jì)風(fēng)格編碼階段的任務(wù)是把詳細(xì)設(shè)計(jì)階段中用偽代碼寫(xiě)成的程序轉(zhuǎn)換成用程序設(shè)計(jì)語(yǔ)言實(shí)現(xiàn)的程序。程序設(shè)計(jì)語(yǔ)言的特性和程序設(shè)計(jì)風(fēng)格會(huì)深刻地影響軟件的質(zhì)量和可維護(hù)性。為保證編碼的質(zhì)量,程序員必須深刻理解、熟練掌握并正確地運(yùn)用程序設(shè)計(jì)語(yǔ)言的特性。此外,還要求源程序具有良好的結(jié)構(gòu)性和良好的程序設(shè)計(jì)風(fēng)格。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)97.4程序設(shè)計(jì)風(fēng)格好程序的代碼邏輯簡(jiǎn)明清晰、易讀易懂:程序的內(nèi)部文檔;數(shù)據(jù)說(shuō)明;語(yǔ)句構(gòu)造;輸入/輸出方法;2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)107.4程序設(shè)計(jì)風(fēng)格程序的內(nèi)部文檔標(biāo)識(shí)符的命名:標(biāo)識(shí)符即符號(hào)名,包括模塊名、變量名、常量名、標(biāo)號(hào)名、子程序名、數(shù)據(jù)區(qū)名以及緩沖區(qū)名等。這些名字應(yīng)能反映它所代表的實(shí)際東西,應(yīng)有一定實(shí)際意義。名字不是越長(zhǎng)越好,應(yīng)當(dāng)選擇精煉的意義明確的名字。必要時(shí)可使用縮寫(xiě)名字,但這時(shí)要注意縮寫(xiě)規(guī)則要一致,并且要給每一個(gè)名字加注釋。在一個(gè)程序中,一個(gè)變量只應(yīng)用于一種用途。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)117.4程序設(shè)計(jì)風(fēng)格程序的內(nèi)部文檔C#、Java等語(yǔ)言編碼命名規(guī)范對(duì)字段、變量、類(lèi)、方法和屬性等指定了統(tǒng)一的命名形式:類(lèi)名、方法名和屬性名均使用Pascal命名法,即所有單詞連寫(xiě),每個(gè)單詞的第一個(gè)字母大寫(xiě),其它字母小寫(xiě)。例如:GetData、HelloWorld等。變量名、對(duì)象名以及方法的參數(shù)名均使用Camel命名法,即所有單詞連寫(xiě),第一個(gè)單詞全部小寫(xiě),其它每個(gè)單詞的第一個(gè)字母大寫(xiě)。例如:userName、userAge等等。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)127.4程序設(shè)計(jì)風(fēng)格這里需要強(qiáng)調(diào)一點(diǎn),對(duì)于一名合格的程序員來(lái)說(shuō),不論是練習(xí)還是實(shí)際開(kāi)發(fā),一定不要養(yǎng)成隨意命名的壞習(xí)慣。良好的命名習(xí)慣會(huì)給項(xiàng)目開(kāi)發(fā)帶來(lái)很多益處。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)137.4程序設(shè)計(jì)風(fēng)格程序的內(nèi)部文檔程序的注釋?zhuān)簥A在程序中的注釋是程序員與日后的程序讀者之間通信的重要手段。注釋決不是可有可無(wú)的。一些正規(guī)的程序文本中,注釋行的數(shù)量占到整個(gè)源程序的1/3到1/2,甚至更多。注釋分為序言性注釋和功能性注釋。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)147.4程序設(shè)計(jì)風(fēng)格序言性注釋?zhuān)和ǔV糜诿總€(gè)程序模塊的開(kāi)頭部分,它應(yīng)當(dāng)給出程序的整體說(shuō)明,對(duì)于理解程序本身具有引導(dǎo)作用。有些軟件開(kāi)發(fā)部門(mén)對(duì)序言性注釋做了明確而嚴(yán)格的規(guī)定,要求程序編制者逐項(xiàng)列出。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)157.4程序設(shè)計(jì)風(fēng)格序言性注釋有關(guān)項(xiàng)目包括:程序標(biāo)題;有關(guān)本模塊功能和目的的說(shuō)明;主要算法;接口說(shuō)明:包括調(diào)用形式,參數(shù)描述,子程序清單;有關(guān)數(shù)據(jù)描述:重要的變量及其用途,約束或限制條件,以及其它有關(guān)信息;模塊位置:在哪一個(gè)源文件中,或隸屬于哪一個(gè)軟件包;開(kāi)發(fā)簡(jiǎn)歷:模塊設(shè)計(jì)者,復(fù)審者,復(fù)審日期,修改日期及有關(guān)說(shuō)明等。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)167.4程序設(shè)計(jì)風(fēng)格功能性注釋?zhuān)汗δ苄宰⑨屒对谠闯绦蝮w中,用以描述其后的語(yǔ)句或程序段是在做什么工作,或是執(zhí)行了下面的語(yǔ)句而會(huì)怎么樣。而不要解釋下面怎么做。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)177.4程序設(shè)計(jì)風(fēng)格程序的內(nèi)部文檔:視覺(jué)組織空格、空行和縮進(jìn)。恰當(dāng)?shù)乩每崭瘢梢酝怀鲞\(yùn)算的優(yōu)先性。自然的程序段之間可用空行隔開(kāi)??s進(jìn)也叫做向右縮格或移行。它是指程序中的各行不必都在左端對(duì)齊,都從第一格起排列。這樣做使程序完全分不清層次關(guān)系。對(duì)于選擇語(yǔ)句和循環(huán)語(yǔ)句,把其中的程序段語(yǔ)句向右做階梯式移行。使程序的邏輯結(jié)構(gòu)更加清晰。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)187.4程序設(shè)計(jì)風(fēng)格數(shù)據(jù)說(shuō)明在設(shè)計(jì)階段已經(jīng)確定了數(shù)據(jù)結(jié)構(gòu)的組織及其復(fù)雜性。在編寫(xiě)程序時(shí),則需要注意數(shù)據(jù)說(shuō)明的風(fēng)格。為了使程序中數(shù)據(jù)說(shuō)明更易于理解和維護(hù),必須注意以下幾點(diǎn):數(shù)據(jù)說(shuō)明的次序應(yīng)當(dāng)規(guī)范化;說(shuō)明語(yǔ)句中變量安排有序化;使用注釋說(shuō)明復(fù)雜數(shù)據(jù)結(jié)構(gòu)。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)197.4程序設(shè)計(jì)風(fēng)格數(shù)據(jù)說(shuō)明的次序應(yīng)當(dāng)規(guī)范化:數(shù)據(jù)說(shuō)明次序規(guī)范化,使數(shù)據(jù)屬性容易查找,也有利于測(cè)試,排錯(cuò)和維護(hù)。原則上,數(shù)據(jù)說(shuō)明的次序與語(yǔ)法無(wú)關(guān),其次序是任意的。但出于閱讀、理解和維護(hù)的需要,最好使其規(guī)范化,使說(shuō)明的先后次序固定。例如,在類(lèi)型說(shuō)明中可按如下順序排列:①整型量說(shuō)明②實(shí)型量說(shuō)明③字符量說(shuō)明④邏輯量說(shuō)明2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)207.4程序設(shè)計(jì)風(fēng)格說(shuō)明語(yǔ)句中變量安排有序化當(dāng)多個(gè)變量名在一個(gè)說(shuō)明語(yǔ)句中說(shuō)明時(shí),應(yīng)當(dāng)對(duì)這些變量按字母的順序排列。例如:把integersize,length,width,cost,price寫(xiě)成integercost,length,price,size,width2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)217.4程序設(shè)計(jì)風(fēng)格使用注釋說(shuō)明復(fù)雜數(shù)據(jù)結(jié)構(gòu)如果設(shè)計(jì)了一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu),應(yīng)當(dāng)使用注釋來(lái)說(shuō)明在程序?qū)崿F(xiàn)時(shí)這個(gè)數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)227.4程序設(shè)計(jì)風(fēng)格語(yǔ)句構(gòu)造在設(shè)計(jì)階段確定了軟件的邏輯流結(jié)構(gòu),但構(gòu)造單個(gè)語(yǔ)句則是編碼階段的任務(wù)。語(yǔ)句構(gòu)造力求簡(jiǎn)單、直接,不能為了片面追求效率而使語(yǔ)句復(fù)雜化。在一行內(nèi)只寫(xiě)一條語(yǔ)句。避免采用過(guò)于復(fù)雜的條件測(cè)試。盡量減少“非”條件的測(cè)試。避免大量使用循環(huán)嵌套和條件嵌套。利用括號(hào)使邏輯表達(dá)式或算術(shù)表達(dá)式的運(yùn)算次序清晰直觀。除非對(duì)效率有特殊的要求,程序編寫(xiě)要做到清晰第一,效率第二。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)237.4程序設(shè)計(jì)風(fēng)格語(yǔ)句構(gòu)造比較下面兩段代碼,哪一段更好?A[I]=A[I]+A[T];A[T]=A[I]-A[T];A[I]=A[I]-A[T];WORK=A[T];A[T]=A[I];A[I]=WORK;2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)247.4程序設(shè)計(jì)風(fēng)格語(yǔ)句構(gòu)造程序要能直截了當(dāng)?shù)卣f(shuō)明程序員的用意。比較下面兩段代碼,哪一段更好?for(i=1;i<=n;i++)for(j=1;j<=n;j++)

V[i][j]=(i

/j)*(j/i);for(i=1;i<=n;i++)for(j=1;j<=n;j++)if(i==j)V[i][j]=1;elseV[i][j]=0;

2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)257.4程序設(shè)計(jì)風(fēng)格語(yǔ)句構(gòu)造首先要保證程序正確,然后才要求提高速度。反過(guò)來(lái)說(shuō),在使程序高速運(yùn)行時(shí),首先要保證它是正確的。讓編譯程序做簡(jiǎn)單的優(yōu)化。盡可能使用庫(kù)函數(shù)。避免使用臨時(shí)變量而使可讀性下降。避免不必要的轉(zhuǎn)移。同時(shí)如果能保持程序可讀性,則不必用GOTO語(yǔ)句。盡量只采用三種基本的控制結(jié)構(gòu)來(lái)編寫(xiě)程序。避免使用空的ELSE語(yǔ)句和IF…

…THEN語(yǔ)句。這種結(jié)構(gòu)容易使讀者產(chǎn)生誤解?!叭绻也皇蔷幋a的人,那么能看懂它嗎?”2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)267.4程序設(shè)計(jì)風(fēng)格輸入與輸出關(guān)于輸入和輸出有下列的啟發(fā)規(guī)則:對(duì)所有的輸入數(shù)據(jù)都要進(jìn)行檢驗(yàn),識(shí)別錯(cuò)誤的輸入,以保證每個(gè)數(shù)據(jù)的有效性;檢查輸入項(xiàng)的各種重要組合的合理性,必要時(shí)報(bào)告輸入狀態(tài)信息;使得輸入的步驟和操作盡可能簡(jiǎn)單,并保持簡(jiǎn)單的輸入格式;輸入數(shù)據(jù)時(shí),應(yīng)允許使用自由格式輸入;應(yīng)允許缺省值;輸入一批數(shù)據(jù)時(shí),最好使用輸入結(jié)束標(biāo)志,而不要由用戶(hù)指定輸入數(shù)據(jù)數(shù)目;2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)277.4程序設(shè)計(jì)風(fēng)格輸入與輸出關(guān)于輸入和輸出有下列的啟發(fā)規(guī)則:在交互式輸入時(shí),要在屏幕上使用提示符明確提示交互輸入的請(qǐng)求,指明可使用選擇項(xiàng)的種類(lèi)和取值范圍。同時(shí),在數(shù)據(jù)輸入的過(guò)程中和輸入結(jié)束時(shí),也要在屏幕上給出狀態(tài)信息;當(dāng)程序設(shè)計(jì)語(yǔ)言對(duì)輸入/輸出格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式與輸入語(yǔ)句要求的一致性;給所有的輸出加注解,并設(shè)計(jì)輸出報(bào)表格式。輸入/輸出風(fēng)格還受到許多其它因素的影響。如輸入/輸出設(shè)備(例如終端的類(lèi)型,圖形設(shè)備,數(shù)字化轉(zhuǎn)換設(shè)備等)、用戶(hù)的熟練程度以及通信環(huán)境等。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)287.4程序設(shè)計(jì)風(fēng)格程序效率的準(zhǔn)則效率是一個(gè)性能要求,目標(biāo)值應(yīng)當(dāng)在需求分析階段給出,軟件效率應(yīng)以需求為準(zhǔn)。好的軟件設(shè)計(jì)可以提高效率。程序的效率與程序的簡(jiǎn)單性相關(guān)。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)297.4程序設(shè)計(jì)風(fēng)格算法對(duì)效率的影響盡可能簡(jiǎn)化相關(guān)的表達(dá)式;仔細(xì)檢查算法中的嵌套循環(huán),將某些語(yǔ)句移到循環(huán)外;盡量避免使用多維數(shù)組;盡量避免使用指針和復(fù)雜的表達(dá)式;采用“快速”的算術(shù)運(yùn)算;不要混淆數(shù)據(jù)結(jié)構(gòu),避免類(lèi)型混雜;盡量采用整數(shù)算術(shù)表達(dá)式和布爾表達(dá)式;選用高效算法;2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)307.5系統(tǒng)測(cè)試基礎(chǔ)軟件測(cè)試目的:測(cè)試是程序的執(zhí)行過(guò)程,目的在于發(fā)現(xiàn)錯(cuò)誤;一個(gè)好的測(cè)試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤;一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)317.5系統(tǒng)測(cè)試基礎(chǔ)軟件測(cè)試的準(zhǔn)則:所有測(cè)試都應(yīng)該能追溯到用戶(hù)需求。應(yīng)該遠(yuǎn)在測(cè)試開(kāi)始之前就制定出測(cè)試計(jì)劃。把Pareto原理應(yīng)用到軟件測(cè)試中。Pareto原理說(shuō)明,測(cè)試發(fā)現(xiàn)的錯(cuò)誤中的80%很可能是由程序中20%的模塊造成的。應(yīng)該從“小規(guī)?!睖y(cè)試開(kāi)始,并逐步進(jìn)行“

“大規(guī)模”測(cè)試。窮舉測(cè)試是不可能的。為了達(dá)到最佳的測(cè)試效果,應(yīng)該由獨(dú)立的第三方從事測(cè)試工作。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)327.5系統(tǒng)測(cè)試基礎(chǔ)軟件測(cè)試步驟:模塊測(cè)試(單元測(cè)試):把每個(gè)模塊作為一個(gè)單獨(dú)的實(shí)體來(lái)測(cè)試,發(fā)現(xiàn)的往往是編碼和詳細(xì)設(shè)計(jì)的錯(cuò)誤。子系統(tǒng)測(cè)試(集成測(cè)試):把經(jīng)過(guò)單元測(cè)試的模塊放在一起形成一個(gè)子系統(tǒng)來(lái)測(cè)試,著重測(cè)試模塊的接口。系統(tǒng)測(cè)試(集成測(cè)試):把經(jīng)過(guò)測(cè)試的子系統(tǒng)裝配成一個(gè)完整的系統(tǒng)來(lái)測(cè)試。發(fā)現(xiàn)的往往是軟件設(shè)計(jì)中的錯(cuò)誤,也可能發(fā)現(xiàn)需求說(shuō)明中的錯(cuò)誤。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)337.5系統(tǒng)測(cè)試基礎(chǔ)軟件測(cè)試步驟:驗(yàn)收測(cè)試(確認(rèn)測(cè)試):把軟件系統(tǒng)作為單一的實(shí)體進(jìn)行測(cè)試,是在用戶(hù)積極參與下進(jìn)行的,而且可能主要使用實(shí)際數(shù)據(jù)(系統(tǒng)將來(lái)要處理的信息)進(jìn)行測(cè)試。目的是驗(yàn)證系統(tǒng)確實(shí)能夠滿(mǎn)足用戶(hù)的需要。發(fā)現(xiàn)的往往是系統(tǒng)需求說(shuō)明書(shū)中的錯(cuò)誤。平行運(yùn)行:是同時(shí)運(yùn)行新開(kāi)發(fā)出來(lái)的系統(tǒng)和將被它取代的舊系統(tǒng),以便比較新舊兩個(gè)系統(tǒng)的處理結(jié)果。這樣做的具體目的有如下幾點(diǎn):可以在準(zhǔn)生產(chǎn)環(huán)境中運(yùn)行新系統(tǒng)而又不冒風(fēng)險(xiǎn);用戶(hù)能有一段熟悉新系統(tǒng)的時(shí)間;可以驗(yàn)證用戶(hù)指南和使用手冊(cè)之類(lèi)的文檔;能夠以準(zhǔn)生產(chǎn)模式對(duì)新系統(tǒng)進(jìn)行全負(fù)荷測(cè)試,可以用測(cè)試結(jié)果驗(yàn)證性能指標(biāo)。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)347.5系統(tǒng)測(cè)試基礎(chǔ)2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)357.5系統(tǒng)測(cè)試基礎(chǔ)測(cè)試階段的信息流程:軟件配置:軟件需求規(guī)格說(shuō)明、軟件設(shè)計(jì)規(guī)格說(shuō)明、源代碼等;測(cè)試配置:測(cè)試計(jì)劃、測(cè)試方案、測(cè)試數(shù)據(jù)等;測(cè)試結(jié)果分析:比較實(shí)測(cè)結(jié)果與預(yù)期結(jié)果,評(píng)價(jià)錯(cuò)誤是否發(fā)生。排錯(cuò)(調(diào)試):對(duì)已經(jīng)發(fā)現(xiàn)的錯(cuò)誤進(jìn)行錯(cuò)誤定位和確定出錯(cuò)性質(zhì),并改正這些錯(cuò)誤,同時(shí)修改相關(guān)的文檔。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)367.6單元測(cè)試測(cè)試重點(diǎn):模塊接口。主要檢查下述幾個(gè)方面:參數(shù)的數(shù)目、次序、屬性或單位系統(tǒng)與變?cè)欠褚恢?;是否修改了只作輸入用的變?cè)?;全局變量的定義和用法在各個(gè)模塊中是否一致。局部數(shù)據(jù)結(jié)構(gòu):發(fā)現(xiàn)局部數(shù)據(jù)說(shuō)明、初始化、默認(rèn)值等方面的錯(cuò)誤。重要的執(zhí)行通路:選擇最有代表性、最可能發(fā)現(xiàn)錯(cuò)誤的執(zhí)行通路進(jìn)行測(cè)試。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)377.6單元測(cè)試測(cè)試重點(diǎn):出錯(cuò)處理通路。當(dāng)評(píng)價(jià)出錯(cuò)處理通路時(shí),應(yīng)該著重測(cè)試下述一些可能發(fā)生的錯(cuò)誤:對(duì)錯(cuò)誤的描述是難以理解的;記下的錯(cuò)誤與實(shí)際遇到的錯(cuò)誤不同;在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件已經(jīng)引起系統(tǒng)干預(yù);對(duì)錯(cuò)誤的處理不正確;描述錯(cuò)誤的信息不足以幫助確定造成錯(cuò)誤的位置。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)387.6單元測(cè)試測(cè)試重點(diǎn):邊界條件。軟件常常在它的邊界上失效。使用剛好小于、剛好等于和剛好大于最大值或最小值的數(shù)據(jù)結(jié)構(gòu)、控制量和數(shù)據(jù)值的測(cè)試方案,非??赡馨l(fā)現(xiàn)軟件中的錯(cuò)誤。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)397.6單元測(cè)試代碼檢測(cè)由審查小組對(duì)源程序正式進(jìn)行人工測(cè)試。審查之前,小組成員應(yīng)該先研究設(shè)計(jì)說(shuō)明書(shū),力求理解這個(gè)設(shè)計(jì)。審查會(huì)上傾聽(tīng)程序編寫(xiě)者的解釋?zhuān)⒘D發(fā)現(xiàn)其中的錯(cuò)誤。對(duì)照類(lèi)似于上一小節(jié)中介紹的程序設(shè)計(jì)常見(jiàn)錯(cuò)誤清單,分析審查這個(gè)程序。預(yù)排:由一個(gè)人扮演“測(cè)試者”,其他人扮演“計(jì)算機(jī)”。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)407.7集成測(cè)試測(cè)試重點(diǎn):恢復(fù)測(cè)試:通過(guò)各種方式強(qiáng)制地讓系統(tǒng)發(fā)生故障并驗(yàn)證其能適當(dāng)恢復(fù)的一種測(cè)試。(初始化、重啟、平均恢復(fù)時(shí)間等等)安全測(cè)試:驗(yàn)證建立在系統(tǒng)內(nèi)的保護(hù)機(jī)制是否能夠?qū)嶋H保護(hù)系統(tǒng)不受非法入侵。壓力測(cè)試:以一種要求反常數(shù)量、頻率和容量的方式執(zhí)行系統(tǒng)。性能測(cè)試:常與壓力測(cè)試一起進(jìn)行,需要軟件和硬件配合。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)417.7集成測(cè)試代表工具:OTF:由MCGSoftware開(kāi)發(fā)QADirector:由CompuwareCrop開(kāi)發(fā)TestWorks:由SoftwareResearch開(kāi)發(fā),包含完整的、集成的成套測(cè)試工具,包括測(cè)試管理和測(cè)試報(bào)告。C++Test:是一個(gè)單元測(cè)試工具,用于C或C++代碼測(cè)試。CodeMedic、BugColllectorPro、GNATS2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)427.7集成測(cè)試集成測(cè)試是測(cè)試和組裝軟件的系統(tǒng)化技術(shù)。由模塊組裝成程序時(shí)有兩類(lèi)方法:非漸增式測(cè)試:先分別測(cè)試每個(gè)模塊,再一下子把所有模塊按設(shè)計(jì)要求放在一起結(jié)合成所要的程序。漸增式測(cè)試:把下一個(gè)要測(cè)試的模塊同已測(cè)試好的那些模塊結(jié)合起來(lái)進(jìn)行測(cè)試,依次類(lèi)推,每次增加一個(gè)模塊。這種方法實(shí)質(zhì)上同時(shí)完成單元測(cè)試和集成測(cè)試。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)437.7集成測(cè)試非漸增式測(cè)試方法漸增式測(cè)試方法需要分別測(cè)試每個(gè)模塊,編寫(xiě)的測(cè)試軟件(驅(qū)動(dòng)模塊和支持模塊)較多,工作量較大;可利用已測(cè)試過(guò)的模塊最后才把模塊相連在一起,接口錯(cuò)誤發(fā)現(xiàn)得晚??梢暂^早發(fā)現(xiàn)模塊之間的接口錯(cuò)誤一次組合所有模塊,如果發(fā)現(xiàn)錯(cuò)誤難以判斷定位。如果發(fā)生錯(cuò)誤則通常和最新加進(jìn)來(lái)的模塊有關(guān);可以并行測(cè)試所有模塊,能充分利用人力,加快工程進(jìn)度。占用機(jī)時(shí)多,測(cè)試每個(gè)新加入模塊時(shí),已經(jīng)測(cè)試完的模塊也都要一起運(yùn)行。但測(cè)試更徹底2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)447.7集成測(cè)試四種集成策略:一次性集成自頂向下集成自底向上集成三明治集成2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)457.8確認(rèn)測(cè)試確認(rèn)測(cè)試目標(biāo)是驗(yàn)證軟件的有效性。軟件有效性的簡(jiǎn)單定義:如果軟件的功能和性能如同用戶(hù)所合理期待的那樣,軟件就是有效的。因此,需求階段產(chǎn)生的需求規(guī)格說(shuō)明書(shū)或類(lèi)似文檔是軟件有效性的標(biāo)準(zhǔn),也是進(jìn)行確認(rèn)測(cè)試的基礎(chǔ)。確認(rèn)測(cè)試以用戶(hù)為主來(lái)進(jìn)行。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)467.8確認(rèn)測(cè)試確認(rèn)測(cè)試的范圍保證軟件能滿(mǎn)足所有功能要求。能達(dá)到每個(gè)性能要求。文檔資料是準(zhǔn)確而完整的。應(yīng)該保證軟件能滿(mǎn)足其他預(yù)定的要求(例如,安全性、可移植性、兼容性和可維護(hù)性等)。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)477.8確認(rèn)測(cè)試軟件配置復(fù)查復(fù)查的目的是保證軟件配置的所有成分都齊全,質(zhì)量符合要求,文檔與程序完全一致,具有完成軟件維護(hù)所必須的細(xì)節(jié),而且已經(jīng)編好目錄。在確認(rèn)測(cè)試過(guò)程中應(yīng)該嚴(yán)格遵循用戶(hù)手冊(cè)及其他操作程序的說(shuō)明和要求,從而檢驗(yàn)用戶(hù)使用手冊(cè)的完整性和正確性。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)487.8確認(rèn)測(cè)試Alpha和Beta測(cè)試Alpha測(cè)試由用戶(hù)在開(kāi)發(fā)者的場(chǎng)所進(jìn)行,并且在開(kāi)發(fā)者對(duì)用戶(hù)的“指導(dǎo)”下進(jìn)行測(cè)試。開(kāi)發(fā)者負(fù)責(zé)記錄發(fā)現(xiàn)的錯(cuò)誤和使用中遇到的問(wèn)題。總之,Alpha測(cè)試是在受控的環(huán)境中進(jìn)行的。Beta測(cè)試由軟件的最終用戶(hù)們?cè)谝粋€(gè)或多個(gè)客戶(hù)場(chǎng)所進(jìn)行。與Alpha測(cè)試不同,開(kāi)發(fā)者通常不在測(cè)試的現(xiàn)場(chǎng),因此,Beta測(cè)試是軟件在開(kāi)發(fā)者不能控制的環(huán)境中的“真實(shí)”應(yīng)用。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)497.9測(cè)試技術(shù)白盒測(cè)試:把測(cè)試對(duì)象看做一個(gè)透明盒子,它允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序的所有邏輯路徑進(jìn)行測(cè)試。通過(guò)在不同點(diǎn)檢查程序的狀態(tài),確定實(shí)際的狀態(tài)是否與預(yù)期的狀態(tài)一致。白盒測(cè)試又稱(chēng)為結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試。黑盒測(cè)試:把測(cè)試對(duì)象看做一個(gè)黑盒子,測(cè)試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說(shuō)明書(shū),檢查程序的功能是否符合它的功能說(shuō)明。黑盒測(cè)試又叫做功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)507.9.1白盒測(cè)試技術(shù)軟件人員使用白盒測(cè)試方法,主要想對(duì)程序模塊進(jìn)行如下的檢查:對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑至少測(cè)試一次;對(duì)所有的邏輯判定,取“真”與取“假”的兩種情況都至少測(cè)試一次;在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體;測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等;“錯(cuò)誤潛伏在角落里,聚集在邊界上”2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)517.9.1白盒測(cè)試技術(shù)邏輯覆蓋:邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計(jì)測(cè)試用例的技術(shù)。語(yǔ)句覆蓋;判定覆蓋;條件覆蓋;判定/條件覆蓋;條件組合覆蓋;點(diǎn)覆蓋;邊覆蓋;路徑覆蓋;2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)527.9.1白盒測(cè)試技術(shù)語(yǔ)句覆蓋:語(yǔ)句覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得每一可執(zhí)行語(yǔ)句至少執(zhí)行一次。判斷覆蓋:判定覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判定的取真分支和取假分支至少經(jīng)歷一次。判定覆蓋又稱(chēng)為分支覆蓋。條件覆蓋:條件覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判定中的每個(gè)條件的可能取值至少執(zhí)行一次。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)537.9.1白盒測(cè)試技術(shù)判定/條件覆蓋:選取足夠多的測(cè)試數(shù)據(jù),使得判定表達(dá)式中的每個(gè)條件都取到各種可能的值,而且每個(gè)判定表達(dá)式也都取到各種可能的結(jié)果。條件組合覆蓋:條件組合覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,運(yùn)行被測(cè)程序,使得每個(gè)判定中條件的所有可能組合至少出現(xiàn)一次。滿(mǎn)足條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù),也一定滿(mǎn)足判定覆蓋、條件覆蓋和判定/條件覆蓋標(biāo)準(zhǔn)。因此,條件組合覆蓋是前述幾種覆蓋標(biāo)準(zhǔn)中最強(qiáng)的。但是,滿(mǎn)足條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù)并不一定能使程序中的每條路徑都執(zhí)行到。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)547.9.1白盒測(cè)試技術(shù)點(diǎn)覆蓋:要求選取足夠多的測(cè)試數(shù)據(jù),使得程序執(zhí)行路徑至少經(jīng)過(guò)流圖的每個(gè)結(jié)點(diǎn)一次,由于流圖的每個(gè)結(jié)點(diǎn)與一條或多條語(yǔ)句相對(duì)應(yīng),顯然,點(diǎn)覆蓋標(biāo)準(zhǔn)和語(yǔ)句覆蓋標(biāo)準(zhǔn)是相同的。邊覆蓋:要求選取足夠多測(cè)試數(shù)據(jù),使得程序執(zhí)行路徑至少經(jīng)過(guò)流圖中每條邊一次。通常邊覆蓋和判定覆蓋是一致的。路徑覆蓋:路徑覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,程序的每條可能路徑都至少執(zhí)行一次(如果程序圖中有環(huán),則要求每個(gè)環(huán)至少經(jīng)過(guò)一次)。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)557.9.2黑盒測(cè)試技術(shù)黑盒測(cè)試力圖發(fā)現(xiàn)下述類(lèi)型的錯(cuò)誤:①功能不正確或遺漏了功能;②界面錯(cuò)誤;③數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)錯(cuò)誤;④性能錯(cuò)誤;⑤初始化和終止錯(cuò)誤。黑盒測(cè)試法與白盒測(cè)試法不能互相代替,兩者應(yīng)互為補(bǔ)充。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)567.9.2黑盒測(cè)試技術(shù)黑盒測(cè)試的主要方法有:等價(jià)劃分;邊界值分析;錯(cuò)誤推測(cè);因果圖。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)577.9.2黑盒測(cè)試技術(shù)等價(jià)值劃分等價(jià)劃分方法把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分,然后從每一部分中選取少數(shù)有代表性的數(shù)據(jù)做為測(cè)試用例。等價(jià)類(lèi)的劃分有兩種不同的情況:有效等價(jià)類(lèi):是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合。無(wú)效等價(jià)類(lèi):是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是不合理的,無(wú)意義的輸入數(shù)據(jù)構(gòu)成的集合。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)587.9.2黑盒測(cè)試技術(shù)劃分等價(jià)類(lèi)的原則:如果輸入條件規(guī)定了取值范圍或值的個(gè)數(shù),則可以確立一個(gè)有效等價(jià)類(lèi)和兩個(gè)無(wú)效等價(jià)類(lèi)。如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了“必須如何”的條件,這時(shí)可確立一個(gè)有效等價(jià)類(lèi)和一個(gè)無(wú)效等價(jià)類(lèi)。如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序要對(duì)每個(gè)輸入值分別進(jìn)行處理。這時(shí)可為每一個(gè)輸入值確立一個(gè)有效等價(jià)類(lèi),此外針對(duì)這組值確立一個(gè)無(wú)效等價(jià)類(lèi),它是所有不允許的輸入值的集合。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)597.9.2黑盒測(cè)試技術(shù)劃分等價(jià)類(lèi)的原則:如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則,則可以確立一個(gè)有效等價(jià)類(lèi)(符合規(guī)則)和若干個(gè)無(wú)效等價(jià)類(lèi)(從不同角度違反規(guī)則)。如果規(guī)定了輸入數(shù)據(jù)為整型,則可以劃分出正整數(shù)、零和負(fù)整數(shù)等3個(gè)有效類(lèi)。如果程序的處理對(duì)象是表格,則應(yīng)該使用空表,以及含一項(xiàng)或多項(xiàng)的表。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)607.9.2黑盒測(cè)試技術(shù)確定測(cè)試用例設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類(lèi),重復(fù)這一步,直到所有的有效等價(jià)類(lèi)都被覆蓋為止;設(shè)計(jì)一個(gè)新的測(cè)試用例,使其僅覆蓋一個(gè)尚未被覆蓋的無(wú)效等價(jià)類(lèi),重復(fù)這一步,直到所有的無(wú)效等價(jià)類(lèi)都被覆蓋為止。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)617.9.2黑盒測(cè)試技術(shù)等價(jià)劃分實(shí)例:假設(shè)有一個(gè)把數(shù)字串轉(zhuǎn)變成整數(shù)的函數(shù)。被處理的數(shù)字串是右對(duì)齊的,也就是說(shuō),如果數(shù)字串比6個(gè)字符短,則在它的左邊補(bǔ)空格。如果數(shù)字串是負(fù)的,則負(fù)號(hào)和最高位數(shù)字緊相鄰(負(fù)號(hào)在最高位數(shù)字左邊一位)。且只能轉(zhuǎn)化-32768~32767之間的整數(shù)。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)627.9.2黑盒測(cè)試技術(shù)分析這個(gè)程序的規(guī)格說(shuō)明,劃分出有效輸入的等價(jià)類(lèi)有:l~6個(gè)數(shù)字字符組成的數(shù)字串(最高位數(shù)字不是零);最高位數(shù)字是零的數(shù)字串;最高位數(shù)字左鄰是負(fù)號(hào)的數(shù)字串;2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)637.9.2黑盒測(cè)試技術(shù)無(wú)效輸入的等價(jià)類(lèi)有:空字符串(全是空格);左部填充的字符既不是零也不是空格;最高位數(shù)字右面由數(shù)字和空格混合組成;最高位數(shù)字右面由數(shù)字和其他字符混合組成;負(fù)號(hào)與最高位數(shù)字之間有空格;2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)647.9.2黑盒測(cè)試技術(shù)合法輸出的等價(jià)類(lèi)有:在計(jì)算機(jī)能表示的最小負(fù)整數(shù)和零之間的負(fù)整數(shù);零;在零和計(jì)算機(jī)能表示的最大正整數(shù)之間的正整數(shù);非法輸出的等價(jià)類(lèi)有:比計(jì)算機(jī)能表示的最小負(fù)整數(shù)還小的負(fù)整數(shù);比計(jì)算機(jī)能表示的最大正整數(shù)還大的正整數(shù)。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)657.9.2黑盒測(cè)試技術(shù)根據(jù)上面劃分出的等價(jià)類(lèi),可以設(shè)計(jì)出下述測(cè)試方案:1~6個(gè)數(shù)字組成的數(shù)字串,輸出是合法的正整數(shù)。輸入:‘1’預(yù)期的輸出:1。最高位數(shù)字是零的數(shù)字串,輸出是合法的正整數(shù)。輸入:‘00000l’預(yù)期的輸出:12023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)667.9.2黑盒測(cè)試技術(shù)最高位是負(fù)號(hào)的數(shù)字串,輸出是合法的負(fù)整數(shù)。輸入:‘-1’預(yù)期的輸出:-1。全部是零,輸出也是零。輸入:‘000000’預(yù)期的輸出:預(yù)期的輸出:0太小的負(fù)整數(shù)。輸入:‘-67561’預(yù)期的輸出:“錯(cuò)誤—

—無(wú)效輸入”太大的正整數(shù)。輸入:‘132767’預(yù)期的輸出:“錯(cuò)誤—

—無(wú)效輸入”2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)677.9.2黑盒測(cè)試技術(shù)空字符串。輸入:‘

’預(yù)期的輸出:“錯(cuò)誤——

沒(méi)有數(shù)字”字符串左部字符既不是零也不是空格輸入:‘XXXXXl’預(yù)期的輸出:“錯(cuò)誤——填充錯(cuò)”最高位數(shù)字后面有空格。輸入:‘12’預(yù)期的輸出:“錯(cuò)誤——

無(wú)效輸入”2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)687.9.2黑盒測(cè)試技術(shù)最高位數(shù)字后面有其他字符。輸入:‘1XX2’預(yù)期的輸出:“錯(cuò)誤——無(wú)效輸入”

負(fù)號(hào)和最高位數(shù)字之間有空格。輸入:‘

-12’預(yù)期的輸出:“錯(cuò)誤——負(fù)號(hào)位置錯(cuò)”2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)697.9.2黑盒測(cè)試技術(shù)邊界值分析人們從長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)得知,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。因此針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,可以查出更多的錯(cuò)誤。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)707.9.2黑盒測(cè)試技術(shù)補(bǔ)充下述測(cè)試方案:使輸出剛好等于最小的負(fù)整數(shù)。輸入:‘

-32768’預(yù)期的輸出為:-32768使輸出剛好等于最大的正整數(shù)。輸入:‘32767’預(yù)期的輸出:32767原來(lái)用等價(jià)劃分法設(shè)計(jì)出來(lái)的測(cè)試方案5最好改為:使輸出剛剛小于最小的負(fù)整數(shù)。輸入:‘

-32769’預(yù)期的輸出:“錯(cuò)誤——無(wú)效輸入”2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)717.9.2黑盒測(cè)試技術(shù)補(bǔ)充下述測(cè)試方案:原來(lái)的測(cè)試方案6最好改為:使輸出剛剛大于最大的正整數(shù)。輸入:‘

32768’預(yù)期的輸出:“錯(cuò)誤——無(wú)效輸入”2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)727.9.2黑盒測(cè)試技術(shù)錯(cuò)誤推測(cè)法人們也可以靠經(jīng)驗(yàn)和直覺(jué)推測(cè)程序中可能存在的各種錯(cuò)誤,從而有針對(duì)性地編寫(xiě)檢查這些錯(cuò)誤的例子。這就是錯(cuò)誤推測(cè)法。錯(cuò)誤推測(cè)法的基本想法是:列舉出程序中所有可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,根據(jù)它們選擇測(cè)試用例。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)737.9.2黑盒測(cè)試技術(shù)Myers提出了使用各種測(cè)試方法的綜合策略:在任何情況下都必須使用邊界值分析方法。經(jīng)驗(yàn)表明用這種方法設(shè)計(jì)出測(cè)試用例發(fā)現(xiàn)程序錯(cuò)誤的能力最強(qiáng)。必要時(shí)用等價(jià)類(lèi)劃分方法補(bǔ)充一些測(cè)試用例。用錯(cuò)誤推測(cè)法再追加一些測(cè)試用例。對(duì)照程序邏輯,檢查已設(shè)計(jì)出的測(cè)試用例的邏輯覆蓋程度。如果沒(méi)有達(dá)到要求的覆蓋標(biāo)準(zhǔn),應(yīng)當(dāng)再補(bǔ)充足夠的測(cè)試用例。如果程序的功能說(shuō)明中含有輸入條件的組合情況,則一開(kāi)始就可選用因果圖法。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)747.10軟件調(diào)試技術(shù)軟件調(diào)試是在進(jìn)行了成功的測(cè)試之后才開(kāi)始的工作。它與軟件測(cè)試不同,調(diào)試的任務(wù)是進(jìn)一步診斷和改正程序中潛在的錯(cuò)誤。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)757.10軟件調(diào)試技術(shù)從技術(shù)角度來(lái)看,查找錯(cuò)誤的難度在于:現(xiàn)象與原因所處的位置可能相距甚遠(yuǎn)。當(dāng)其它錯(cuò)誤得到糾正時(shí),這一錯(cuò)誤所表現(xiàn)出的現(xiàn)象可能會(huì)暫時(shí)消失,但并未實(shí)際排除?,F(xiàn)象實(shí)際上是由一些非錯(cuò)誤原因(例如,舍入不精確)引起的?,F(xiàn)象可能是由于一些不容易發(fā)現(xiàn)的人為錯(cuò)誤引起的。錯(cuò)誤是由于時(shí)序問(wèn)題引起的,與處理過(guò)程無(wú)關(guān)?,F(xiàn)象是由于難于精確再現(xiàn)的輸入狀態(tài)(例如,實(shí)時(shí)應(yīng)用中輸入順序不確定)引起?,F(xiàn)象可能是周期出現(xiàn)的。在軟、硬件結(jié)合的嵌入式系統(tǒng)中常常遇到?,F(xiàn)象可能是由分布在許多任務(wù)中的原因引起的,這些任務(wù)運(yùn)行在不同的處理機(jī)上。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)767.10軟件調(diào)試技術(shù)幾種主要的調(diào)試方法蠻干法:這種調(diào)試方法目前使用較多,效率較低。它不需要過(guò)多的思考,比較省腦筋。例如:通過(guò)內(nèi)存全部打印來(lái)調(diào)試;在程序特定部位設(shè)置打印語(yǔ)句;2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)777.10軟件調(diào)試技術(shù)幾種主要的調(diào)試方法回溯法調(diào)試這是在小程序中常用的一種有效的調(diào)試方法。一旦發(fā)現(xiàn)了錯(cuò)誤,人們先分析錯(cuò)誤征兆,確定最先發(fā)現(xiàn)“癥狀”的位置。人工沿程序的控制流程,向回追蹤源程序代碼,直到找到錯(cuò)誤根源或確定錯(cuò)誤產(chǎn)生的范圍。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)787.10軟件調(diào)試技術(shù)原因排除法對(duì)分查找法如果已經(jīng)知道每個(gè)變量在程序內(nèi)若干個(gè)關(guān)鍵點(diǎn)的正確值,則可以用賦值語(yǔ)句或輸入語(yǔ)句在程序中點(diǎn)附近“注入”這些變量的正確值,然后運(yùn)行程序并檢查所得到的輸出。如果輸出結(jié)果是正確的,則錯(cuò)誤原因在程序的前半部分;反之,錯(cuò)誤原因在程序的后半部分。對(duì)錯(cuò)誤原因所在的那部分再重復(fù)使用這個(gè)方法,直到把出錯(cuò)范圍縮小到容易診斷的程度為止。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)797.10軟件調(diào)試技術(shù)原因排除法歸納法是從個(gè)別現(xiàn)象推斷出一般性結(jié)論的思維方法。使用這種方法調(diào)試程序時(shí),首先把和錯(cuò)誤有關(guān)的數(shù)據(jù)組織起來(lái)進(jìn)行分析,以便發(fā)現(xiàn)可能的錯(cuò)誤原因。然后導(dǎo)出對(duì)錯(cuò)誤原因的一個(gè)或多個(gè)假設(shè),并利用已有的數(shù)據(jù)來(lái)證明或排除這些假設(shè)。當(dāng)然,如果已有的數(shù)據(jù)尚不足以證明或排除這些假設(shè),則需設(shè)計(jì)并執(zhí)行一些新的測(cè)試用例,以獲得更多的數(shù)據(jù)。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)807.10軟件調(diào)試技術(shù)原因排除法演繹法是一種從一般原理或前提出發(fā),經(jīng)過(guò)排除和精化的過(guò)程來(lái)推導(dǎo)出結(jié)論的思考方法。演繹法排錯(cuò)是測(cè)試人員首先根據(jù)已有的測(cè)試用例,設(shè)想及枚舉出所有可能出錯(cuò)的原因做為假設(shè);然后再用原始測(cè)試數(shù)據(jù)或新的測(cè)試,從中逐個(gè)排除不可能正確的假設(shè);最后,再用測(cè)試數(shù)據(jù)驗(yàn)證余下的假設(shè)確是出錯(cuò)的原因。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)817.10軟件調(diào)試技術(shù)在動(dòng)手改正錯(cuò)誤之前,軟件工程師應(yīng)該仔細(xì)考慮下述3個(gè)問(wèn)題:是否同樣的錯(cuò)誤也在程序其他地方存在?將要進(jìn)行的修改可能會(huì)引入的“下一個(gè)錯(cuò)誤”是什么?為防止今后出現(xiàn)類(lèi)似的錯(cuò)誤,應(yīng)該做什么?2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)827.11軟件維護(hù)軟件維護(hù):就是在軟件已經(jīng)交付使用之后,為了改正錯(cuò)誤或滿(mǎn)足新的需要而修改軟件的過(guò)程。軟件維護(hù)的分類(lèi):改正性維護(hù)(Correctivemaintenance)適應(yīng)性維護(hù)(Adaptivemaintenance)完善性維護(hù)(Perfectivemaintenance)預(yù)防性維護(hù)(Preventivemaintenance)2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)837.11軟件維護(hù)2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)847.11軟件維護(hù)結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)差別巨大維護(hù)的代價(jià)高昂維護(hù)的問(wèn)題很多2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)857.11軟件維護(hù)結(jié)構(gòu)化維護(hù):有完整的軟件配置,能夠提高維護(hù)的整體質(zhì)量。非結(jié)構(gòu)化維護(hù):缺少相關(guān)文檔使得維護(hù)的代價(jià)巨大。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)867.11軟件維護(hù)有形的維護(hù)代價(jià):費(fèi)用。無(wú)形的維護(hù)代價(jià)有更大的影響:貽誤良機(jī);一些合理的修復(fù)或修改請(qǐng)求不能及時(shí)安排,使得客戶(hù)不滿(mǎn)意;變更的結(jié)果引入新的故障,使得軟件整體質(zhì)量下降;把軟件人員抽調(diào)到維護(hù)工作中,干擾了軟件開(kāi)發(fā)工作。2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)877.11軟件維護(hù)生產(chǎn)率大幅下降:維護(hù)工作量包括生產(chǎn)性活動(dòng)(如分析和評(píng)價(jià)、設(shè)計(jì)修改和實(shí)現(xiàn))和非生產(chǎn)性活動(dòng)(如力圖理解代碼功能、解釋數(shù)據(jù)結(jié)構(gòu)、接口特性、性能限度等)2023/3/13第7章系統(tǒng)實(shí)現(xiàn)與維護(hù)887.11軟件維護(hù)維護(hù)工作量的模型:M是維護(hù)中消耗的總工作量

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論