軟件工程0課件_第1頁(yè)
軟件工程0課件_第2頁(yè)
軟件工程0課件_第3頁(yè)
軟件工程0課件_第4頁(yè)
軟件工程0課件_第5頁(yè)
已閱讀5頁(yè),還剩185頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟件工程

第七章軟件測(cè)試7.1測(cè)試的目的和原則7.2測(cè)試方法與測(cè)試用例設(shè)計(jì)7.3軟件測(cè)試的策略7.4軟件測(cè)試的種類(lèi)7.5程序的靜態(tài)測(cè)試7.6程序調(diào)試1軟件工程7.1軟件測(cè)試的目的和原則7.1.1軟件測(cè)試的目的基于不同的立場(chǎng),存在著兩種完全不同的測(cè)試目的。從用戶的角度出發(fā),普遍希望通過(guò)軟件測(cè)試暴露軟件中隱藏的錯(cuò)誤和缺陷,以考慮是否可接受該產(chǎn)品。從軟件開(kāi)發(fā)者的角度出發(fā),則希望測(cè)試成為表明軟件產(chǎn)品中不存在錯(cuò)誤的過(guò)程,驗(yàn)證該軟件已正確地實(shí)現(xiàn)了用戶的要求。2軟件工程鑒于以上觀點(diǎn),IEEE在其軟件工程術(shù)語(yǔ)標(biāo)準(zhǔn)中給軟件測(cè)試下的定義是“用人工或自動(dòng)的手段來(lái)執(zhí)行和評(píng)價(jià)系統(tǒng)或系統(tǒng)部件的過(guò)程,以檢驗(yàn)它是否滿足規(guī)定的需求,或識(shí)別期望的結(jié)果和實(shí)際的結(jié)果之間有無(wú)差別”。在以上兩個(gè)目的中,通常測(cè)試專(zhuān)家更側(cè)重后一個(gè)。他們普遍將軟件測(cè)試視為“根據(jù)軟件開(kāi)發(fā)各階段的規(guī)格說(shuō)明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試用例,并利用這些測(cè)試用例去執(zhí)行檢查并發(fā)現(xiàn)軟件錯(cuò)誤的過(guò)程”。3軟件工程換言之,測(cè)試的目的是想以最少的時(shí)間和人力,系統(tǒng)地找出軟件中潛在的各種錯(cuò)誤和缺陷。如果我們成功地實(shí)施了測(cè)試,我們就能夠發(fā)現(xiàn)軟件中的錯(cuò)誤。測(cè)試的附帶收獲是,它能夠證明軟件的功能和性能與需求說(shuō)明相符合。實(shí)施測(cè)試收集到的測(cè)試結(jié)果數(shù)據(jù)為可靠性分析提供了依據(jù)。測(cè)試不能表明軟件中不存在錯(cuò)誤,它只能說(shuō)明軟件中存在錯(cuò)誤。5軟件工程7.1.2軟件測(cè)試的原則應(yīng)當(dāng)把“盡早地和不斷地進(jìn)行軟件測(cè)試”作為軟件開(kāi)發(fā)者的座右銘。測(cè)試用例應(yīng)由測(cè)試輸入數(shù)據(jù)和對(duì)應(yīng)的預(yù)期輸出結(jié)果這兩部分組成。程序員應(yīng)避免檢查自己的程序。在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)包括合理的輸入條件和不合理的輸入條件。所有的測(cè)試都應(yīng)當(dāng)追溯到用戶要求,導(dǎo)致程序不能滿足用戶要求的錯(cuò)誤是嚴(yán)重錯(cuò)誤。6軟件工程充分注意測(cè)試中的群集現(xiàn)象。經(jīng)驗(yàn)表明,測(cè)試發(fā)現(xiàn)錯(cuò)誤的80%很可能出自20%的模塊,換句話說(shuō),測(cè)試后程序中殘存的錯(cuò)誤數(shù)目與該程序中已發(fā)現(xiàn)的錯(cuò)誤數(shù)目成正比。嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性。應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果做全面檢查。妥善保存測(cè)試計(jì)劃,測(cè)試用例,出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便。7軟件工程驗(yàn)證(Verification),檢查軟件生存期各個(gè)階段過(guò)程活動(dòng)的結(jié)果是否滿足規(guī)格說(shuō)明的描述,證實(shí)各階段和階段之間的邏輯協(xié)調(diào)性、完備性和正確性。確認(rèn)(Validation),是比驗(yàn)證更廣泛的過(guò)程活動(dòng)。目的是想證實(shí)在一個(gè)給定的外部環(huán)境中軟件的邏輯正確性,即是否滿足用戶的要求。Boehm給出兩者的區(qū)分:驗(yàn)證:我們是否在正確地建造一個(gè)產(chǎn)品確認(rèn):我們是否在建成一個(gè)正確的產(chǎn)品9軟件工程用戶要求用戶:我要什么?需求說(shuō)明書(shū)分析員我可以提供什么?運(yùn)行結(jié)果計(jì)算機(jī):程序運(yùn)行得到的結(jié)果相符嗎?源程序程序員我要讓計(jì)算機(jī)怎么做?設(shè)計(jì)說(shuō)明書(shū)設(shè)計(jì)員我要讓軟件做什么?理解正確性表達(dá)正確性理解正確性設(shè)計(jì)正確性表達(dá)正確性理解正確性編碼正確性運(yùn)行正確性輸入正確性10軟件工程在整個(gè)生存周期中各個(gè)階段都必須應(yīng)用V&V技術(shù)。兩個(gè)主要目標(biāo)是:發(fā)現(xiàn)系統(tǒng)中的缺陷;判斷在給定的操作環(huán)境下系統(tǒng)是否可用;V&V技術(shù)分為兩種:軟件檢查:對(duì)系統(tǒng)的各種表示進(jìn)行靜態(tài)分析,以發(fā)現(xiàn)問(wèn)題。這些檢查可以借助工具進(jìn)行文檔和代碼分析。軟件測(cè)試:通過(guò)執(zhí)行測(cè)試數(shù)據(jù)觀察系統(tǒng)的操作特征(行為)是否符合要求。11軟件工程7.1.4測(cè)試信息流可靠性分析測(cè)試結(jié)果分析預(yù)期結(jié)果預(yù)測(cè)的可靠性調(diào)試修改后的軟件軟件配置測(cè)試配置測(cè)試工具測(cè)試結(jié)果出錯(cuò)率數(shù)據(jù)錯(cuò)誤13軟件工程軟件配置:軟件需求規(guī)格說(shuō)明、軟件設(shè)計(jì)規(guī)格說(shuō)明、源代碼等;測(cè)試配置:測(cè)試計(jì)劃、測(cè)試用例、測(cè)試程序等;測(cè)試工具:測(cè)試數(shù)據(jù)自動(dòng)生成程序、靜態(tài)分析程序、動(dòng)態(tài)分析程序、測(cè)試結(jié)果分析程序、以及驅(qū)動(dòng)測(cè)試的測(cè)試數(shù)據(jù)庫(kù)等等。測(cè)試結(jié)果分析:比較實(shí)測(cè)結(jié)果與預(yù)期結(jié)果,評(píng)價(jià)錯(cuò)誤是否發(fā)生。14軟件工程排錯(cuò)(調(diào)試):對(duì)已經(jīng)發(fā)現(xiàn)的錯(cuò)誤進(jìn)行錯(cuò)誤定位和確定出錯(cuò)性質(zhì),并改正這些錯(cuò)誤,同時(shí)修改相關(guān)的文檔。修正后的文檔再測(cè)試:直到通過(guò)測(cè)試為止。通過(guò)收集和分析測(cè)試結(jié)果數(shù)據(jù),對(duì)軟件建立可靠性模型利用可靠性分析,評(píng)價(jià)軟件質(zhì)量。如果測(cè)試發(fā)現(xiàn)不了錯(cuò)誤,可以肯定,測(cè)試配置考慮得不夠細(xì)致充分,錯(cuò)誤仍然潛伏在軟件中。15軟件工程可行性研究需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼與調(diào)試單元測(cè)試組裝測(cè)試確認(rèn)測(cè)試運(yùn)行

詳細(xì)設(shè)計(jì)說(shuō)明書(shū)概要設(shè)計(jì)說(shuō)明書(shū)需求規(guī)格說(shuō)明書(shū)可行性報(bào)告·項(xiàng)目實(shí)施計(jì)劃測(cè)試過(guò)程是依相反順序安排的自底向上,逐步集成的過(guò)程。17軟件工程7.1.6軟件測(cè)試計(jì)劃軟件測(cè)試計(jì)劃是制定測(cè)試過(guò)程的標(biāo)準(zhǔn),而不是描述具體的測(cè)試內(nèi)容。測(cè)試計(jì)劃給所有相關(guān)人員一個(gè)總的系統(tǒng)測(cè)試的概貌,安排測(cè)試人員參加到測(cè)試中來(lái)。測(cè)試計(jì)劃結(jié)構(gòu):測(cè)試過(guò)程描述測(cè)試過(guò)程的主要階段,如單元和模塊測(cè)試、子系統(tǒng)集成測(cè)試,…需求跟蹤對(duì)每一項(xiàng)需求分別進(jìn)行確認(rèn)測(cè)試測(cè)試項(xiàng)目定義在軟件過(guò)程中需要進(jìn)行的測(cè)試18軟件工程測(cè)試計(jì)劃不是一個(gè)不變的文檔。測(cè)試時(shí)間安排給出總的測(cè)試時(shí)間安排并相應(yīng)地安排資源分配。這與整個(gè)項(xiàng)目的時(shí)間安排有關(guān)。測(cè)試記錄規(guī)程系統(tǒng)地記錄測(cè)試結(jié)果。然后對(duì)測(cè)試結(jié)果和測(cè)試過(guò)程進(jìn)行檢查,看測(cè)試用例是否得到正常的執(zhí)行。硬件與軟件需求列出測(cè)試所使用的軟件工具和硬件設(shè)施。約束預(yù)料可能影響測(cè)試過(guò)程的約束(如人員短缺等)19軟件工程黑盒測(cè)試(Black-BoxTest)這種方法是把測(cè)試對(duì)象看做一個(gè)黑盒,測(cè)試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求和功能規(guī)格說(shuō)明,檢查程序的功能是否符合它的功能說(shuō)明。黑盒測(cè)試叫做功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試。一種特殊的黑盒測(cè)試叫做接口測(cè)試,它不管程序的需求和實(shí)現(xiàn)細(xì)節(jié),僅依據(jù)程序與其外部環(huán)境的接口來(lái)選擇測(cè)試數(shù)據(jù)。21軟件工程黑盒測(cè)試方法是在程序接口上進(jìn)行測(cè)試,主要是為了發(fā)現(xiàn)以下錯(cuò)誤:是否有不正確或遺漏了的功能?在接口上,輸入能否正確地接受?能否輸出正確的結(jié)果?是否有數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息(例如數(shù)據(jù)文件)訪問(wèn)錯(cuò)誤?性能上是否能夠滿足要求?是否有初始化或終止性錯(cuò)誤?22軟件工程用黑盒測(cè)試發(fā)現(xiàn)程序錯(cuò)誤,必須在所有可能的輸入條件和輸出條件中確定測(cè)試數(shù)據(jù),檢查程序能否產(chǎn)生正確的輸出。但這是不可能的。例如,設(shè)一個(gè)程序P有輸入量X和Y及輸出量Z。在字長(zhǎng)為32位的計(jì)算機(jī)上運(yùn)行。若X、Y取整數(shù),按黑盒方法進(jìn)行窮舉測(cè)試:可能采用的測(cè)試數(shù)據(jù)組個(gè)數(shù):

232×232=264

如果測(cè)試一組數(shù)據(jù)需要1毫秒,一年工作365×24小時(shí),完成所有測(cè)試需5億年。23軟件工程軟件人員使用白盒測(cè)試方法,主要想對(duì)程序模塊進(jìn)行如下的檢查:對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑至少測(cè)試一次—路徑覆蓋測(cè)試;對(duì)所有的邏輯判定,取“真”與取“假”的兩種情況都至少測(cè)試一次—邏輯覆蓋測(cè)試;在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體—控制流測(cè)試;測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性—數(shù)據(jù)流測(cè)試、領(lǐng)域測(cè)試等。25軟件工程對(duì)一個(gè)具有多重選擇和循環(huán)嵌套的程序,不同的路徑數(shù)目可能是天文數(shù)字。給出一個(gè)小程序的流程圖,它包括了一個(gè)執(zhí)行20次的循環(huán)。包含的不同執(zhí)行路徑數(shù)達(dá)520

條,對(duì)每一條路徑進(jìn)行測(cè)試需要1毫秒,假定一年工作365×24小時(shí),要想把所有路徑測(cè)試完,需3170年。26軟件工程(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFabdce29軟件工程L1(ace)={(A>1)and(B=0)}and{(A=2)or(X/A>1)}=(A>1)and(B=0)and(A=2)or(A>1)and(B=0)and(X/A>1)=(A=2)and(B=0)

or

(A>1)and(B=0)and(X/A>1)L2(abd)=not{(A>1)and(B=0)}

andnot{(A=2)or(X>1)}={not(A>1)ornot(B=0)}and{not(A=2)andnot(X>1)}=

not(A>1)andnot(A=2)andnot(X>1)

or

not(B=0)and

not(A=2)andnot(X>1)30軟件工程L3(abe)=not{(A>1)and(B=0)}and{(A=2)or(X>1)}={not(A>1)ornot(B=0)}and{(A=2)or(X>1)}=not(A>1)and(A=2)

ornot(A>1)and

(X>1)

or

not(B=0)and(A=2)L4(acd)={(A>1)and(B=0)}

andnot

{(A=2)or(X/A>1)}=(A>1)and(B=0)andnot(A=2)and

not(X/A>1)31軟件工程1.語(yǔ)句覆蓋語(yǔ)句覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得每一可執(zhí)行語(yǔ)句至少執(zhí)行一次。在圖例中,正好所有的可執(zhí)行語(yǔ)句都在路徑L1上,所以選擇路徑L1設(shè)計(jì)測(cè)試用例,就可以覆蓋所有的可執(zhí)行語(yǔ)句。

32軟件工程測(cè)試用例的設(shè)計(jì)格式如下

【輸入的(A,B,X),輸出的(A,B,X)】為圖例設(shè)計(jì)滿足語(yǔ)句覆蓋的測(cè)試用例是:

【(2,0,4),(2,0,3)】覆蓋ace【L1】。“語(yǔ)句覆蓋是最弱的邏輯覆蓋準(zhǔn)則”—如果第一個(gè)判斷“and”錯(cuò)為“or”,第二個(gè)判斷“or”錯(cuò)為“and”,使用以上測(cè)試用例,查不出問(wèn)題。(A=2)and(B=0)

or

(A>1)and(B=0)and(X/A>1)

33軟件工程

2.判定覆蓋判定覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次。判定覆蓋又稱(chēng)為分支覆蓋。對(duì)于圖例,如果選擇路徑L1和L2,就可得滿足要求的測(cè)試用例:34軟件工程【(2,0,4),(2,0,3)】覆蓋ace【L1】

【(1,1,1),(1,1,1)】覆蓋abd【L2】(A=2)and(B=0)

or

(A>1)and(B=0)and(X/A>1)

not(A>1)andnot(A=2)andnot(X>1)

ornot(B=0)and

not(A=2)andnot(X>1)35軟件工程如果選擇路徑L3和L4,還可得另一組可用的測(cè)試用例:

【(2,1,1),(2,1,2)】覆蓋abe【L3】

【(3,0,3),(3,0,1)】覆蓋acd【L4】

not(A>1)and(X>1)

ornot(B=0)and

(A=2)

ornot(B=0)and(X>1)(A>1)and(B=0)andnot(A=2)and

not(X/A>1)36軟件工程3.條件覆蓋條件覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的每個(gè)條件的可能取值至少執(zhí)行一次。在圖例中,我們事先可對(duì)所有條件的取值加以標(biāo)記。例如,對(duì)于第一個(gè)判斷:條件A>1取真為,取假為

條件B=0取真為,取假為

37軟件工程對(duì)于第二個(gè)判斷:條件A=2取真為,取假為

條件X>1取真為,取假為測(cè)試用例

覆蓋分支

條件取值【(2,0,4),(2,0,3)】L1(c,e)

【(1,1,1),(1,1,1)】L2(b,d)

【(3,1,2),(3,1,3)】L3(b,e)需要注意的是,在測(cè)試用例中可能有些條件取值在執(zhí)行時(shí)覆蓋不到,需要增加測(cè)試用例。38軟件工程判定-條件覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,使得判斷中每個(gè)條件的可能取值至少執(zhí)行一次,每個(gè)判斷中的每個(gè)分支至少執(zhí)行一次。

測(cè)試用例 覆蓋分支

條件取值【(2,0,4),(2,0,3)】L1(c,e)【(1,1,1),(1,1,1)】L2(b,d)【(3,1,2),(3,1,3)】L3(b,e)4.判定-條件覆蓋39軟件工程orA>1TB=0TX=X/ATFFA=2TFX>1FX=X+1and40軟件工程5.條件組合覆蓋條件組合覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,運(yùn)行被測(cè)程序,使得每個(gè)判斷的所有可能的條件取值組合至少執(zhí)行一次。記 ①A>1,B=0作

②A>1,B≠0作

③A≯1,B=0作 ④A≯1,B≠0作41軟件工程

⑤A=2,X>1作

⑥A=2,X≯1作

⑦A≠2,X>1作

⑧A≠2,X≯1作

測(cè)試用例

覆蓋條件

覆蓋組合【(2,0,4),(2,0,3)】(L1) ①,⑤【(2,1,1),(2,1,2)】(L3) ②,⑥【(1,0,3),(1,0,4)】(L3) ③,⑦【(1,1,1),(1,1,1)】(L2) ④,⑧42軟件工程6.路徑測(cè)試路徑測(cè)試就是設(shè)計(jì)足夠的測(cè)試用例,覆蓋程序中所有可能的路徑。

測(cè)試用例

通過(guò)路徑

覆蓋條件【(2,0,4),(2,0,3)】ace(L1)

【(1,1,1),(1,1,1)】abd

(L2)

【(1,1,2),(1,1,3)】abe

(L3)

【(3,0,3),(3,0,1)】acd

(L4)43軟件工程7.2.2判定結(jié)構(gòu)分析當(dāng)程序中判定多于一個(gè)時(shí),形成的分支結(jié)構(gòu)可以分為兩類(lèi):嵌套型分支結(jié)構(gòu)和連鎖型分支結(jié)構(gòu)。對(duì)于嵌套型分支結(jié)構(gòu),若有n個(gè)判定語(yǔ)句,則存在n+1條路徑,需要n+1個(gè)測(cè)試用例;對(duì)于連鎖型分支結(jié)構(gòu),若有n個(gè)判定語(yǔ)句,則存在2n條路徑,需要有2n個(gè)測(cè)試用例,覆蓋所有的路徑。44軟件工程嵌套型分支結(jié)構(gòu)連鎖型分支結(jié)構(gòu)s1s2s3s4p1p2p3s1s2s3s4s5s6p1p2p345軟件工程對(duì)于連鎖型分支結(jié)構(gòu),當(dāng)n較大時(shí)將無(wú)法測(cè)試。為減少測(cè)試用例的數(shù)目,可采用試驗(yàn)設(shè)計(jì)法,抽取部分路徑進(jìn)行測(cè)試。由于抽樣服從均勻分布,因此,在假定各條路徑的重要性相同,或暫不明確各條路徑的重要性的情況下可以做到均勻抽樣。如果明確了各條路徑的重要性,還可以采取加權(quán)的辦法,篩選掉部分路徑,再用如下的措施進(jìn)行抽樣。46軟件工程設(shè)連鎖型分支結(jié)構(gòu)中有

n個(gè)判定,計(jì)算滿足關(guān)系式

n+1≤2m

的最小自然數(shù)m;設(shè)t=2m,取正交表Lt,并利用它設(shè)計(jì)測(cè)試數(shù)據(jù)。例如,一個(gè)連鎖型分支結(jié)構(gòu)中有三個(gè)判定語(yǔ)句p1,p2,p3。全部路徑是23=8條。先計(jì)算3+1≤2m=t的t,得t=4。取正交表L4,把每一列當(dāng)做一個(gè)判定,每一行當(dāng)做可取的測(cè)試用例,可得4個(gè)測(cè)試用例。

47軟件工程用各個(gè)判定的取假分支取代正交表L4中的“0”,用取真分支取代正交表中的“1”,就建立起一個(gè)測(cè)試路徑矩陣。這樣,測(cè)試路徑數(shù)目從23=8條減少到3+1=4條。

L40001010111101231234用例s1s3s5s2s3s6s1s4s6s2s4s5p1p2p31234s1–s3–s5s2–s3–s6s1–s4–s6s2–s4–s5路徑48軟件工程s1s3s5p1p2p3s2s3s6p1p2p3s1s4s6p1p2p3s2s4s5p1p2p349軟件工程L201112L40001010111101231234L8000000010101010110011100110000111101101001111001101001123456712345678L2L450軟件工程7.2.3循環(huán)結(jié)構(gòu)分析循環(huán)分為4種不同類(lèi)型:簡(jiǎn)單循環(huán)、連鎖循環(huán)、嵌套循環(huán)和非結(jié)構(gòu)循環(huán)。

(1)簡(jiǎn)單循環(huán)①零次循環(huán):從循環(huán)入口到出口

②一次循環(huán):檢查循環(huán)初始值

③二次循環(huán):檢查多次循環(huán)

④m次循環(huán):檢查在多次循環(huán)

⑤最大次數(shù)循環(huán)、比最大次數(shù)多一次、少一次的循環(huán)。51軟件工程單重循環(huán)嵌套循環(huán)連鎖循環(huán)非結(jié)構(gòu)循環(huán)52軟件工程簡(jiǎn)單循環(huán)設(shè)計(jì)測(cè)試用例的例子:求最小值k=i;for(j=i+1;j<=n;j++)if(A[j]<A[k])k=j;

k=i;j=i+1;j<=n?A[j]<A[k]?k=jj

++fdcabe53軟件工程測(cè)試用例選擇54軟件工程

①對(duì)最內(nèi)層循環(huán)做簡(jiǎn)單循環(huán)的全部測(cè)試。所有其他層的循環(huán)變量置為最小值;

②逐步外推,對(duì)其外面一層循環(huán)進(jìn)行測(cè)試。測(cè)試時(shí)保持所有外層循環(huán)的循環(huán)變量取最小值,所有其他嵌套內(nèi)層循環(huán)的循環(huán)變量取“典型”值。

反復(fù)進(jìn)行,直到所有各層循環(huán)測(cè)試完畢。

④對(duì)全部各層循環(huán)同時(shí)取最小循環(huán)次數(shù),或者同時(shí)取最大循環(huán)次數(shù)。(2)嵌套循環(huán)55軟件工程(3)連鎖循環(huán)

如果各個(gè)循環(huán)互相獨(dú)立,則可以用與簡(jiǎn)單循環(huán)相同的方法進(jìn)行測(cè)試。但如果幾個(gè)循環(huán)不是互相獨(dú)立的,則需要使用測(cè)試嵌套循環(huán)的辦法來(lái)處理。(4)非結(jié)構(gòu)循環(huán)

這一類(lèi)循環(huán)應(yīng)該使用結(jié)構(gòu)化程序設(shè)計(jì)方法重新設(shè)計(jì)測(cè)試用例。56軟件工程7.2.4基本路徑測(cè)試基本路徑測(cè)試方法把覆蓋的路徑數(shù)壓縮到一定限度內(nèi),程序中的循環(huán)體最多只執(zhí)行一次。它是在程序控制流圖的基礎(chǔ)上,分析控制構(gòu)造的環(huán)路復(fù)雜性導(dǎo)出基本可執(zhí)行路徑集合針對(duì)每條路經(jīng)設(shè)計(jì)測(cè)試用例設(shè)計(jì)出的測(cè)試用例要保證在測(cè)試中,程序的每一個(gè)可執(zhí)行語(yǔ)句至少要執(zhí)行一次。

57軟件工程1.程序的控制流圖符號(hào)○為控制流圖的一個(gè)結(jié)點(diǎn),表示一個(gè)或多個(gè)無(wú)分支的PDL語(yǔ)句或源程序語(yǔ)句。箭頭為邊,表示控制流的方向。在選擇或多分支結(jié)構(gòu)中,分支的匯聚處應(yīng)有一個(gè)匯聚結(jié)點(diǎn)。順序結(jié)構(gòu)IF兩分支選擇結(jié)構(gòu)while-do先判斷重復(fù)結(jié)構(gòu)do-while后判斷重復(fù)結(jié)構(gòu)switch多分支選擇結(jié)構(gòu)58軟件工程邊和結(jié)點(diǎn)圈定的部分叫做區(qū)域,當(dāng)對(duì)區(qū)域計(jì)數(shù)時(shí),圖形外的區(qū)域也應(yīng)記為一個(gè)區(qū)域。如果判斷中的條件表達(dá)式是由一個(gè)或多個(gè)邏輯運(yùn)算符(or,and,...)連接的復(fù)合條件表達(dá)式,則需改為一系列只有單個(gè)條件的嵌套的判斷。abyxif(aorb)thendoxelsedoy;TT59軟件工程36578111091244,5R32,3168791011R1R2R460軟件工程2.程序環(huán)路復(fù)雜性程序環(huán)路復(fù)雜性給出了程序基本路徑集中的獨(dú)立路徑條數(shù),這是確保程序中每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次所必需的測(cè)試用例數(shù)目的上界。從控制流圖來(lái)看,一條獨(dú)立路徑是至少包含有一條在其他獨(dú)立路徑中從未有過(guò)的邊的路徑。例如,在圖示的控制流圖中,一組獨(dú)立的路徑是

path1:1-11

path2:1-2-3-4-5-10-1-11

path3:1-2-3-6-8-9-10-1-11

path4:1-2-3-6-7-9-10-1-1161軟件工程路徑path1,path2,path3,path4組成了控制流圖的一個(gè)基本路徑集。導(dǎo)出測(cè)試用例,確保基本路徑集中的每一條路徑的執(zhí)行。根據(jù)判斷結(jié)點(diǎn)給出的條件,選擇適當(dāng)?shù)臄?shù)據(jù)以保證某一條路徑可以被測(cè)試到—用邏輯覆蓋的方法。3.導(dǎo)出測(cè)試用例62軟件工程每個(gè)測(cè)試用例執(zhí)行之后,與預(yù)期結(jié)果進(jìn)行比較。如果所有測(cè)試用例都執(zhí)行完畢,則可以確信程序中所有的可執(zhí)行語(yǔ)句至少被執(zhí)行了一次。必須注意,一些獨(dú)立的路徑(如例中的path1),往往不是完全孤立的,有時(shí)它是程序正常的控制流的一部分,這時(shí),這些路徑的測(cè)試可以是另一條路徑測(cè)試的一部分。63軟件工程voidSelectSort(intV[],intn){inti,j,k;for(i=0;i<n-1;i++){ k=i; for(j=i+1;j<n;j++) if(V[j]<V[k])k=j; if(k!=i)Swap(V[i],V[k]);}}舉例:選擇排序(C++描述)6464軟件工程區(qū)域數(shù)=5123456789i=0;i<n-1k=i;j=i+1;j<nV[j]<V[k]k=j;j=j+1;returni<>ki=i+1;V[i]<->V[k]65軟件工程基本路徑集

path1:1-3path2:1-2-5-8……path3:1-2-5-9……path4:1-2-4-6……path5:1-2-4-7…………表示后面剩下的路徑是可以選擇的。測(cè)試用例

Path1:1-3取n=1Path2:1-2-5-8-3取n=2

預(yù)期結(jié)果:路徑5-8-3不可到達(dá)66軟件工程Path3:1-2-5-9-3取n=2

預(yù)期結(jié)果:路徑5-9-3不可到達(dá)path4:1-2-4-6-5-8-3取n=2,v[0]=2,v[1]=1

預(yù)期結(jié)果:k=1,v[0]=1,v[1]=2path4:1-2-4-6-5-9-3

取n=2,v[0]=2,v[1]=1

預(yù)期結(jié)果:k=1,路徑9-3不可到達(dá)path5:1-2-4-7-5-8-3

取n=2,v[0]=2,v[1]=1

預(yù)期結(jié)果:k=0,路徑8-3不可到達(dá)path5:1-2-4-7-5-9-3

取n=2,v[0]=2,v[1]=1預(yù)期結(jié)果:k=0,v[0]=1,v[1]=267軟件工程7.2.5等價(jià)類(lèi)劃分等價(jià)類(lèi)劃分是一種典型的黑盒測(cè)試方法,使用這一方法時(shí),完全不考慮程序的內(nèi)部結(jié)構(gòu),只依據(jù)程序的規(guī)格說(shuō)明來(lái)設(shè)計(jì)測(cè)試用例。等價(jià)類(lèi)劃分方法把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分,然后從每一部分中選取少數(shù)代表性的數(shù)據(jù)做為測(cè)試用例。使用這一方法設(shè)計(jì)測(cè)試用例要經(jīng)歷劃分等價(jià)類(lèi)(列出等價(jià)類(lèi)表)和選取測(cè)試用例兩步。68軟件工程1. 劃分等價(jià)類(lèi)

等價(jià)類(lèi)是指某個(gè)輸入域的子集合。在該子集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的。測(cè)試某等價(jià)類(lèi)的代表值就等價(jià)于對(duì)這一類(lèi)其他值的測(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)成的集合。69軟件工程在設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮有效等價(jià)類(lèi)和無(wú)效等價(jià)類(lèi)的設(shè)計(jì)。劃分等價(jià)類(lèi)等價(jià)類(lèi)的原則。(1) 如果輸入條件規(guī)定了取值范圍,或值的個(gè)數(shù),則可確立一個(gè)有效等價(jià)類(lèi)和兩個(gè)無(wú)效等價(jià)類(lèi)。如,在程序規(guī)格說(shuō)明中對(duì)輸入條件有一句話:

“……項(xiàng)數(shù)可以從1到999……”

則有效等價(jià)類(lèi)是“1≤項(xiàng)數(shù)≤999”兩個(gè)無(wú)效等價(jià)類(lèi)是“項(xiàng)數(shù)<1”或“項(xiàng)數(shù)>999”。70軟件工程在數(shù)軸上表示成:(2) 如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了“必須如何”的條件,這時(shí)可確立一個(gè)有效等價(jià)類(lèi)和一個(gè)無(wú)效等價(jià)類(lèi)。例如,在Pascal語(yǔ)言中對(duì)變量標(biāo)識(shí)符規(guī)定為“以字母打頭的……串”。那么所有以字母打頭的構(gòu)成有效等價(jià)類(lèi),而不在此集合內(nèi)(不以字母打頭)的歸于無(wú)效等價(jià)類(lèi)。無(wú)效等價(jià)類(lèi)有效等價(jià)類(lèi)無(wú)效等價(jià)類(lèi)199971軟件工程(3) 如果輸入條件是一個(gè)布爾量,則可以確定一個(gè)有效等價(jià)類(lèi)和一個(gè)無(wú)效等價(jià)類(lèi)。(4) 如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序要對(duì)每個(gè)輸入值分別進(jìn)行處理。這時(shí)可為每一個(gè)輸入值確立一個(gè)有效等價(jià)類(lèi),此外針對(duì)這組值確立一個(gè)無(wú)效等價(jià)類(lèi),它是所有不允許的輸入值的集合。例如,在教師上崗方案中規(guī)定對(duì)教授、副教授、講師和助教分別計(jì)算分?jǐn)?shù),做相應(yīng)的處理。72軟件工程

因此可以確定4個(gè)有效等價(jià)類(lèi)為教授、副教授、講師和助教,一個(gè)無(wú)效等價(jià)類(lèi),它是所有不符合以上身分的人員的輸入值的集合。(5) 如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則,則可以確立一個(gè)有效等價(jià)類(lèi)(符合規(guī)則)和若干個(gè)無(wú)效等價(jià)類(lèi)(從不同角度違反規(guī)則)。

例如,Pascal語(yǔ)言規(guī)定“一個(gè)語(yǔ)句必須以分號(hào)‘;’結(jié)束”。這時(shí)可以確定一個(gè)有效等價(jià)類(lèi)“以‘;’結(jié)束”,若干個(gè)無(wú)效等價(jià)類(lèi)“以‘:’結(jié)束”、“以‘,’結(jié)束”、“以‘’結(jié)束”、“以LF結(jié)束”。73軟件工程2.確立測(cè)試用例在確立了等價(jià)類(lèi)之后,建立等價(jià)類(lèi)表,列出所有劃分出的等價(jià)類(lèi)。輸入條件有效等價(jià)類(lèi)無(wú)效等價(jià)類(lèi)………………………………………………………………再?gòu)膭澐殖龅牡葍r(jià)類(lèi)中按以下原則選擇測(cè)試用例:74軟件工程為每一個(gè)等價(jià)類(lèi)規(guī)定一個(gè)唯一編號(hào);設(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)都被覆蓋為止。75軟件工程

用等價(jià)類(lèi)劃分法設(shè)計(jì)測(cè)試用例的實(shí)例 在某一PASCAL語(yǔ)言版本中規(guī)定: “標(biāo)識(shí)符是由字母開(kāi)頭,后跟字母或數(shù)字的任意組合構(gòu)成。有效字符數(shù)為8個(gè),最大字符數(shù)為80個(gè)?!?并且規(guī)定:“標(biāo)識(shí)符必須先說(shuō)明,再使用。”“在同一說(shuō)明語(yǔ)句中,標(biāo)識(shí)符至少必須有一個(gè)。”

76軟件工程用等價(jià)類(lèi)劃分方法,建立輸入等價(jià)類(lèi)表:輸入條件有效等價(jià)類(lèi)無(wú)效等價(jià)類(lèi)說(shuō)明語(yǔ)句中標(biāo)識(shí)符個(gè)數(shù)1個(gè)(1),多個(gè)(2)0個(gè)(3)標(biāo)識(shí)符中字符數(shù)1~8個(gè)(4)0個(gè)(5),>8個(gè)(6),>80個(gè)(7)標(biāo)識(shí)符組成字母(8),數(shù)字(9)非字母數(shù)字字符(10),保留字(11)標(biāo)識(shí)符第一個(gè)字符字母(12)非字母(13)標(biāo)識(shí)符使用先說(shuō)明后使用(14)未說(shuō)明就使用(15)77軟件工程下面選取了9個(gè)測(cè)試用例,它們覆蓋了所有的等價(jià)類(lèi)。①VARx,T1234567:REAL;

BEGINx:=3.414;T1234567:=2.732;...…

(1),(2),(4),(8),(9),(12),(14)

②VAR:REAL;

(3)

③VARx,:REAL;

(5)

④VART12345678:REAL;

(6)78軟件工程⑤VART12345......:REAL;

(7)

多于80個(gè)字符⑥VART$:CHAR;

(10)⑦VARGOTO:INTEGER;

(11)⑧VAR2T:REAL;

(13)⑨VARPAR:REAL;

(15)

BEGIN......

PAP:=SIN(3.14*0.8)/6;79軟件工程7.2.6邊界值分析邊界值分析也是一種黑盒測(cè)試方法,是對(duì)等價(jià)類(lèi)劃分方法的補(bǔ)充。人們從長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)得知,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。因此針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,可以查出更多的錯(cuò)誤。例如,有一段用C編寫(xiě)的小程序:

intA[20];inti;for(i=1;i<=10;i++)A[i]=-1;

80軟件工程因?yàn)镃語(yǔ)言中數(shù)組下標(biāo)從0開(kāi)始,而本程序中從1開(kāi)始賦值,如果以后用戶不了解,可能從0開(kāi)始使用,就會(huì)出錯(cuò)。所以邊界值可能查出更多的問(wèn)題來(lái)。如何確定邊界?通常的邊界檢查原則:類(lèi)型:數(shù)字、字符、位置、質(zhì)量、大小、速度、方位、尺寸、空間等。邊界值:最大/最小、首位/末位、上/下、最大/最小、最快/最慢、最高/最低、最短/最長(zhǎng)、空/滿等。81軟件工程使用邊界值分析,最重要的是確定正確的邊界值域。對(duì)于輸入/輸出等價(jià)類(lèi),選取正好等于、剛剛大于和剛剛小于邊界值的數(shù)據(jù)作為測(cè)試數(shù)據(jù)。選取測(cè)試用例的原則:(1)

如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛剛到達(dá)這個(gè)范圍邊界的值,以及剛剛超過(guò)這個(gè)范圍邊界的值作為測(cè)試輸入數(shù)據(jù)。 例如,某數(shù)據(jù)的取值范圍為-1.0~1.0,測(cè)試數(shù)據(jù)可取-1.0、1.0,以及-1.1、1.1。82軟件工程(2) 如果輸入條件規(guī)定了值的個(gè)數(shù),則應(yīng)取最大個(gè)數(shù)、最小個(gè)數(shù)、比最大個(gè)數(shù)多1,比最小個(gè)數(shù)少1的數(shù)作為測(cè)試輸入數(shù)據(jù)。 例如,某文件有255個(gè)記錄,測(cè)試數(shù)據(jù)可取1、255,以及0、256。根據(jù)規(guī)格說(shuō)明和每個(gè)輸出條件,使用原則(1)。 例如,研究生錄取分?jǐn)?shù)范圍84~150,測(cè)試數(shù)據(jù)可取84、150,以及83、151。根據(jù)規(guī)格說(shuō)明和每個(gè)輸出條件,使用原則(2)。 例如,研究生錄取人數(shù)34人,測(cè)試數(shù)據(jù)可取1、83軟件工程 34、以及0、35。(5) 如果程序的規(guī)格說(shuō)明給出的輸入域或輸出域是有序集合(如有序表),則選取集合的第一個(gè)元素和最后一個(gè)元素作為測(cè)試用例。 例如,學(xué)生文件的學(xué)生記錄按學(xué)號(hào)存放,班上總共30人,測(cè)試數(shù)據(jù)可取第1、第30個(gè)學(xué)生。如果程序中使用了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)選擇此數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測(cè)試用例。分析規(guī)格說(shuō)明,找出其他可能的邊界條件。84軟件工程7.2.7錯(cuò)誤推測(cè)法人們也可以靠經(jīng)驗(yàn)和直覺(jué)推測(cè)程序中可能存在的各種錯(cuò)誤,從而有針對(duì)性地編寫(xiě)檢查這些錯(cuò)誤的例子。這就是錯(cuò)誤推測(cè)法。錯(cuò)誤推測(cè)法的基本想法是:列舉出程序中所有可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,根據(jù)它們選擇測(cè)試用例??梢岳貌煌瑴y(cè)試階段的經(jīng)驗(yàn)和對(duì)軟件系統(tǒng)的認(rèn)識(shí)來(lái)設(shè)計(jì)測(cè)試用例。例如,在單元測(cè)試中某程序模塊已經(jīng)遇到錯(cuò)誤,85軟件工程

在系統(tǒng)測(cè)試中可以在這些可能出現(xiàn)問(wèn)題的地方再組織測(cè)試用例。在前一個(gè)版本中發(fā)現(xiàn)的常見(jiàn)錯(cuò)誤在下一個(gè)版本的測(cè)試中有針對(duì)性地設(shè)計(jì)測(cè)試用例。根據(jù)以上想法,測(cè)試用例的設(shè)計(jì)原則:客觀因素:產(chǎn)品以前版本已出現(xiàn)的問(wèn)題。已經(jīng)因素:語(yǔ)言、操作系統(tǒng)、瀏覽器的限制可能帶來(lái)的問(wèn)題。經(jīng)驗(yàn):由模塊之間關(guān)聯(lián)所聯(lián)想到的測(cè)試;由修復(fù)軟件的錯(cuò)誤可能會(huì)帶來(lái)的問(wèn)題。86軟件工程7.2.8因果圖因果圖的適用范圍如果在測(cè)試時(shí)必須考慮輸入條件的各種組合,可使用一種適合于描述對(duì)于多種條件的組合,相應(yīng)產(chǎn)生多個(gè)動(dòng)作的形式來(lái)設(shè)計(jì)測(cè)試用例,這就需要利用因果圖。因果圖方法最終生成的就是判定表。它適合于檢查程序輸入條件的各種組合情況。用因果圖生成測(cè)試用例的基本步驟分析軟件規(guī)格說(shuō)明描述中,哪些是原因(即87軟件工程

輸入條件或輸入條件的等價(jià)類(lèi)),哪些是結(jié)果(即輸出條件),并給每個(gè)原因和結(jié)果賦予一個(gè)標(biāo)識(shí)符。分析軟件規(guī)格說(shuō)明描述的語(yǔ)義,找出原因與結(jié)果之間對(duì)應(yīng)的關(guān)系?根據(jù)這些關(guān)系,畫(huà)出因果圖。由于語(yǔ)法或環(huán)境限制,有些原因與原因之間,結(jié)果與結(jié)果之間的組合情況不可能出現(xiàn)。為表明這些特殊情況,在因果圖上用一些記號(hào)標(biāo)明約束或限制條件。把因果圖轉(zhuǎn)換成判定表。

88軟件工程把判定表的每一列拿出來(lái)作為依據(jù),設(shè)計(jì)測(cè)試用例。在因果圖中出現(xiàn)的基本符號(hào)通常在因果圖中用Ci表示原因,用Ei表示結(jié)果,各結(jié)點(diǎn)表示狀態(tài),可取值“0”或“1”?!?”表示某狀態(tài)不出現(xiàn),“1”表示某狀態(tài)出現(xiàn)。主要的原因和結(jié)果之間的關(guān)系有:恒等非C1E1C1E189軟件工程c)或C1E1C2d)與C1E1C2表示約束條件的符號(hào)

為了表示原因與原因之間,結(jié)果與結(jié)果之間可能存在的約束條件,在因果圖中可以附加一些表示約束條件的符號(hào)。abEabI(1)E(互斥)(2)I(包含)(3)O(唯一)(4)R(要求)(5)M(屏蔽)abOabRabM90軟件工程

例如,有一個(gè)處理單價(jià)為5角錢(qián)的飲料的自動(dòng)售貨機(jī)軟件測(cè)試用例的設(shè)計(jì)。其規(guī)格說(shuō)明如下:

若投入5角錢(qián)或1元錢(qián)的硬幣,押下〖橙汁〗或〖啤酒〗的按鈕,則相應(yīng)的飲料就送出來(lái)。若售貨機(jī)沒(méi)有零錢(qián)找,則一個(gè)顯示〖零錢(qián)找完〗的紅燈亮,這時(shí)在投入1元硬幣并押下按鈕后,飲料不送出來(lái)而且1元硬幣也退出來(lái);若有零錢(qián)找,則顯示〖零錢(qián)找完〗的紅燈滅,在送出飲料的同時(shí)退還5角硬幣。”91軟件工程1)分析這一段說(shuō)明,列出原因和結(jié)果

原因: 1.售貨機(jī)有零錢(qián)找

2.投入1元硬幣

3.投入5角硬幣

4.押下橙汁按鈕

5.押下啤酒按鈕 結(jié)果: 21.售貨機(jī)〖零錢(qián)找完〗燈亮

22.退還1元硬幣

23.退還5角硬幣

24.送出橙汁飲料

25.送出啤酒飲料92軟件工程畫(huà)出因果圖。所有原因結(jié)點(diǎn)列在左邊,所有結(jié)果結(jié)點(diǎn)列在右邊。建立中間結(jié)點(diǎn),表示中間狀態(tài):

11.投入1元硬幣且押下飲料按鈕

12.押下〖橙汁〗或〖啤酒〗的按鈕

13.應(yīng)找5角零錢(qián)且售貨機(jī)有零錢(qián)找

14.錢(qián)已付清由于2與3,4與5不能同時(shí)發(fā)生,分別加上約束條件E。因果圖轉(zhuǎn)換成判定表。在判定表中選擇測(cè)試用例。93軟件工程

22售貨機(jī)有零錢(qián)找售貨機(jī)“零錢(qián)找完”的燈亮投入1元硬幣退還1元硬幣找回5角硬幣投入5角硬幣按下橙汁按鈕送出橙汁飲料按下啤酒按鈕送出啤酒飲料按下按鈕錢(qián)付清可找5角該找5角235423112524211214113EE94軟件工程

1234567891011121314151617181111111111000000000條21110000001110000003000111000000111000件41001001001001001005010010010010010010中11110000000110000000間12110110110110110110條13110000000000000000件1411011100000011100021000000000111111111結(jié)2200000000011000000023110000000000000000果2410010000000010000025010010000000010000測(cè)試用例√√√√√√√√√√√√√√√√95軟件工程使用各種測(cè)試方法的綜合策略在任何情況下都必須使用邊界值分析法。用這種方法設(shè)計(jì)出測(cè)試用例發(fā)現(xiàn)程序錯(cuò)誤的能力最強(qiáng)。必要時(shí)用等價(jià)類(lèi)劃分法補(bǔ)充一些測(cè)試用例。用錯(cuò)誤推測(cè)法再追加一些測(cè)試用例。對(duì)照程序邏輯,檢查已有測(cè)試用例的邏輯覆蓋程度。如果未達(dá)到要求的覆蓋標(biāo)準(zhǔn),應(yīng)再補(bǔ)充足夠的測(cè)試用例。如果程序的功能說(shuō)明中含有輸入條件的組合情況,則一開(kāi)始就可選用因果圖法。96軟件工程7.2.9功能圖測(cè)試功能圖測(cè)試是一種黑盒測(cè)試方法,它是基于狀態(tài)遷移圖和判定表來(lái)設(shè)計(jì)測(cè)試用例的。狀態(tài)遷移圖是一種動(dòng)態(tài)說(shuō)明,它由輸入條件和當(dāng)前狀態(tài)決定輸出數(shù)據(jù)和后續(xù)狀態(tài)。判定表則是一種靜態(tài)說(shuō)明,它用于表示在狀態(tài)中輸入與輸出的對(duì)應(yīng)關(guān)系。在這種環(huán)境下,測(cè)試用例是由測(cè)試中經(jīng)過(guò)的一系列狀態(tài)和在每個(gè)狀態(tài)中必須依靠輸入/輸出數(shù)據(jù)滿足的一對(duì)條件組成。下面是簡(jiǎn)化的自動(dòng)取款機(jī)ATM的狀態(tài)圖。97軟件工程初始時(shí)ATM顯示“請(qǐng)插入卡片”。當(dāng)插入卡片后ATM顯示“請(qǐng)輸入密碼”。ATM檢查輸入的密碼與文件中保存的密碼。若相同,則ATM顯示“請(qǐng)輸入金額”;若不同,ATM檢查是否三次都打錯(cuò)了:如是,則ATM顯示“停止處理”,消去這個(gè)記錄,重新顯示“請(qǐng)插入卡片”;若未達(dá)到三次,則ATM顯示“請(qǐng)輸入密碼”。打入一個(gè)錢(qián)數(shù)后ATM檢查它是否小于等于余額,若大于余額,ATM顯示“請(qǐng)輸入金額”,等待再次輸入金額;否則ATM付給要求的現(xiàn)金,報(bào)告余額,顯示“請(qǐng)插入卡片”。98軟件工程

判定表TS0S1S2S3T“請(qǐng)插入卡片”“請(qǐng)輸入密碼”“請(qǐng)輸入金額”給付錢(qián)款顯示余額M1:插入卡片M2M3M4M5M6M7密碼=記錄YNN錯(cuò)輸=三次NYNM2M3M4S0S1S2輸出輸入狀態(tài)輸入金額后判斷if

(金額>余額)M5elseM6M1:插入卡片M2:輸入密碼M3:密碼匹配M4:錯(cuò)輸三次M5:輸入金額M6:金額不多于余額M7:回歸初始狀態(tài)99軟件工程從狀態(tài)圖生成測(cè)試用例若用結(jié)點(diǎn)表示狀態(tài),用弧表示遷移,則狀態(tài)遷移圖就可以轉(zhuǎn)換為一個(gè)程序的控制流圖,問(wèn)題就轉(zhuǎn)化為程序的路徑測(cè)試問(wèn)題。狀態(tài)圖的覆蓋準(zhǔn)則有覆蓋所有狀態(tài)(C0覆蓋)和覆蓋所有遷移(C1覆蓋)。通常采用基本路徑覆蓋方法設(shè)計(jì)測(cè)試用例。對(duì)于循環(huán),應(yīng)包含0次循環(huán)(先判斷循環(huán)情形)和1次循環(huán)的情形。在計(jì)算路徑時(shí)要注意狀態(tài)圖本身已經(jīng)構(gòu)成強(qiáng)連通圖,區(qū)域外的部分不計(jì)入環(huán)路復(fù)雜性。100軟件工程測(cè)試路徑S0S1S2S3S0S0S1S0S0S0S1S1S2S3S0S0S1S2S2S3S0S1S2S3TM3M4M5M6M7M2101軟件工程基于圖的測(cè)試方法黑盒測(cè)試的一個(gè)重要思想是首先創(chuàng)建描述重要的程序?qū)ο螅K或語(yǔ)句集)及其相互關(guān)系的圖,然后導(dǎo)出測(cè)試序列以檢查對(duì)象及其關(guān)系并發(fā)現(xiàn)錯(cuò)誤。圖中用結(jié)點(diǎn)表示對(duì)象,用邊(或連接)表示對(duì)象間的關(guān)系,用結(jié)點(diǎn)權(quán)值表示結(jié)點(diǎn)的屬性,用邊上的權(quán)值表示連接的特征。在基本路徑測(cè)試方法就有這樣的圖。使用圖進(jìn)行行為測(cè)試的方法有:102軟件工程事務(wù)流建模結(jié)點(diǎn)是事務(wù)的每一步驟,邊是步驟之間的邏輯連接。有限狀態(tài)建模結(jié)點(diǎn)是用戶可見(jiàn)的軟件的不同狀態(tài),邊是狀態(tài)之間的轉(zhuǎn)換。(可利用狀態(tài)遷移圖輔助建立這種圖)數(shù)據(jù)流建模結(jié)點(diǎn)是數(shù)據(jù)對(duì)象,邊是將數(shù)據(jù)對(duì)象轉(zhuǎn)換為其他數(shù)據(jù)對(duì)象時(shí)發(fā)生的變換。時(shí)序建模結(jié)點(diǎn)是程序?qū)ο?,邊是?duì)象間的順序連接。邊上權(quán)值用于表示執(zhí)行時(shí)間。103軟件工程基于圖的測(cè)試可以仿照基本路徑測(cè)試的方法設(shè)計(jì)測(cè)試用例。但圖中可能有環(huán),可能要考慮循環(huán)測(cè)試。對(duì)于圖中的傳遞關(guān)系、對(duì)稱(chēng)(雙向的有向邊)關(guān)系、自反關(guān)系也需要進(jìn)行檢查。在設(shè)計(jì)測(cè)試用例時(shí),第一個(gè)目標(biāo)是結(jié)點(diǎn)的覆蓋度。必須確保不遺漏某個(gè)結(jié)點(diǎn),而且結(jié)點(diǎn)的權(quán)值(對(duì)象屬性)是正確的。第二個(gè)目標(biāo)是邊的覆蓋度。要設(shè)計(jì)測(cè)試以證實(shí)權(quán)值是否有效,最后加入循環(huán)測(cè)試。104軟件工程7.2.10接口測(cè)試當(dāng)模塊或子系統(tǒng)集成為更大的系統(tǒng)時(shí)就需要進(jìn)行接口測(cè)試。接口測(cè)試的目的是檢測(cè)那些由于接口有誤或?qū)涌谧龀隽藷o(wú)效假設(shè)而造成的系統(tǒng)缺陷。程序構(gòu)件的接口類(lèi)型有:參數(shù)接口共享內(nèi)存接口程序接口消息傳遞接口105軟件工程接口錯(cuò)誤是常見(jiàn)的系統(tǒng)錯(cuò)誤,有3種接口錯(cuò)誤:接口誤用:構(gòu)件調(diào)用時(shí)接口使用不當(dāng)造成的錯(cuò)誤。例如,在參數(shù)接口情形,使用的參數(shù)類(lèi)型、排列順序或參數(shù)個(gè)數(shù)不匹配。接口誤解:調(diào)用者構(gòu)件誤解了被調(diào)用構(gòu)件的接口描述,或?qū)Ρ徽{(diào)用者的行為作了錯(cuò)誤的假設(shè)而造成的錯(cuò)誤。例如,調(diào)用折半搜索例程時(shí)使用了未排序的數(shù)組導(dǎo)致搜索失敗。計(jì)時(shí)錯(cuò)誤:在實(shí)時(shí)系統(tǒng)中,系統(tǒng)使用了共享內(nèi)存接口或消息傳遞接口可能產(chǎn)生的錯(cuò)誤。原因在于數(shù)據(jù)的生產(chǎn)和消費(fèi)的速度可能不同。106軟件工程接口測(cè)試的一般準(zhǔn)則檢查接口并明確地列出對(duì)外部構(gòu)件的調(diào)用。設(shè)計(jì)一組測(cè)試用例,為傳送給其他構(gòu)件的參數(shù)選擇緊靠取值范圍邊界的值,以暴露接口的不一致錯(cuò)誤。當(dāng)有指針通過(guò)接口傳遞時(shí),可用空指針參數(shù)來(lái)測(cè)試。當(dāng)通過(guò)程序接口來(lái)調(diào)用一個(gè)構(gòu)件時(shí),設(shè)計(jì)一些容易引起構(gòu)件執(zhí)行失效的假設(shè)進(jìn)行測(cè)試,以檢查接口誤解的錯(cuò)誤。107軟件工程在有消息傳遞的系統(tǒng)中進(jìn)行強(qiáng)度測(cè)試,即加大消息傳遞的量,增加系統(tǒng)的負(fù)荷。因此,設(shè)計(jì)測(cè)試用例,產(chǎn)生比平時(shí)多得多的消息,以暴露計(jì)時(shí)錯(cuò)誤。當(dāng)構(gòu)件之間通過(guò)共享內(nèi)存交互時(shí),可以設(shè)計(jì)一種測(cè)試,改變正常的激活構(gòu)件的順序。通過(guò)這些測(cè)試用以暴露程序員暗自對(duì)共享數(shù)據(jù)的生產(chǎn)和消費(fèi)順序所做的假設(shè)。在接口測(cè)試方面,利用程序靜態(tài)分析的方法比動(dòng)態(tài)測(cè)試更有效。108軟件工程7.3軟件測(cè)試的策略測(cè)試過(guò)程按4個(gè)步驟進(jìn)行,即單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試。開(kāi)始是單元測(cè)試,集中對(duì)用源代碼實(shí)現(xiàn)的每一個(gè)程序單元進(jìn)行測(cè)試,檢查各個(gè)程序模塊是否正確地實(shí)現(xiàn)了規(guī)定的功能。集成測(cè)試把已測(cè)試過(guò)的模塊組裝起來(lái),主要對(duì)與設(shè)計(jì)相關(guān)的軟件體系結(jié)構(gòu)的構(gòu)造進(jìn)行測(cè)試。確認(rèn)測(cè)試則是要檢查已實(shí)現(xiàn)的軟件是否滿足了需求規(guī)格說(shuō)明中確定了的各種需求,以及軟件配置109軟件工程被測(cè)模塊單元測(cè)試集成測(cè)試被測(cè)模塊單元測(cè)試被測(cè)模塊單元測(cè)試確認(rèn)測(cè)試系統(tǒng)測(cè)試系統(tǒng)其他元素軟件需求設(shè)計(jì)信息已集成的軟件已確認(rèn)的軟件可交付的軟件已經(jīng)過(guò)測(cè)試的模塊110軟件工程 是否完全、正確。系統(tǒng)測(cè)試把已經(jīng)經(jīng)過(guò)確認(rèn)的軟件納入實(shí)際運(yùn)行環(huán)境中,與其他系統(tǒng)成份組合在一起進(jìn)行測(cè)試。單元測(cè)試又稱(chēng)模塊測(cè)試,是針對(duì)軟件設(shè)計(jì)的最小單位─程序模塊,進(jìn)行正確性檢驗(yàn)的測(cè)試工作。其目的在于發(fā)現(xiàn)模塊內(nèi)部可能存在的各種差錯(cuò)。單元測(cè)試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例。多個(gè)模塊可以平行地獨(dú)立進(jìn)行單元測(cè)試。7.3.1單元測(cè)試(UnitTesting)111軟件工程1.單元測(cè)試的內(nèi)容在單元測(cè)試時(shí),測(cè)試者需要依據(jù)詳細(xì)設(shè)計(jì)說(shuō)明書(shū)和源程序清單,了解該模塊的I/O條件和模塊的邏輯結(jié)構(gòu),主要采用白盒測(cè)試的測(cè)試用例,輔之以黑盒測(cè)試的測(cè)試用例,使之對(duì)任何合理的輸入和不合理的輸入,都能鑒別和響應(yīng)。

112軟件工程模塊出錯(cuò)處理獨(dú)立路徑模塊接口局部數(shù)據(jù)結(jié)構(gòu)邊界條件113軟件工程(1)模塊接口測(cè)試在單元測(cè)試的開(kāi)始,應(yīng)對(duì)通過(guò)被測(cè)模塊的數(shù)據(jù)流進(jìn)行測(cè)試。測(cè)試項(xiàng)目包括:調(diào)用本模塊的輸入?yún)?shù)是否正確;本模塊調(diào)用子模塊時(shí)輸入給子模塊的參數(shù)是否正確;全局量的定義在各模塊中是否一致;在做內(nèi)外存交換時(shí)要考慮:文件屬性是否正確;OPEN與CLOSE語(yǔ)句是否正確;114軟件工程緩沖區(qū)容量與記錄長(zhǎng)度是否匹配;在進(jìn)行讀寫(xiě)操作之前是否打開(kāi)了文件;在結(jié)束文件處理時(shí)是否關(guān)閉了文件;正文書(shū)寫(xiě)/輸入錯(cuò)誤,I/O錯(cuò)誤是否檢查并做了處理。(2)局部數(shù)據(jù)結(jié)構(gòu)測(cè)試不正確或不一致的數(shù)據(jù)類(lèi)型說(shuō)明使用尚未賦值或尚未初始化的變量錯(cuò)誤的初始值或錯(cuò)誤的缺省值115軟件工程變量名拼寫(xiě)錯(cuò)或書(shū)寫(xiě)錯(cuò)不一致的數(shù)據(jù)類(lèi)型全局?jǐn)?shù)據(jù)對(duì)模塊的影響

(3)路徑測(cè)試選擇適當(dāng)?shù)臏y(cè)試用例,對(duì)模塊中重要的執(zhí)行路徑進(jìn)行測(cè)試。應(yīng)當(dāng)設(shè)計(jì)測(cè)試用例查找由于錯(cuò)誤的計(jì)算、不正確的比較或不正常的控制流而導(dǎo)致的錯(cuò)誤。對(duì)基本執(zhí)行路徑和循環(huán)進(jìn)行測(cè)試可以發(fā)現(xiàn)大量的路徑錯(cuò)誤。116軟件工程(4)錯(cuò)誤處理測(cè)試出錯(cuò)的描述是否難以理解出錯(cuò)的描述是否能夠?qū)﹀e(cuò)誤定位顯示的錯(cuò)誤與實(shí)際的錯(cuò)誤是否相符對(duì)錯(cuò)誤條件的處理正確與否在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件是否已經(jīng)引起系統(tǒng)的干預(yù)等注意數(shù)據(jù)流、控制流中剛好等于、大于或小(5)邊界測(cè)試117軟件工程 于確定的比較值時(shí)出錯(cuò)的可能性。對(duì)這些地方要仔細(xì)地選擇測(cè)試用例,認(rèn)真加以測(cè)試。如果對(duì)模塊運(yùn)行時(shí)間有要求的話,還要專(zhuān)門(mén)進(jìn)行關(guān)鍵路徑測(cè)試,以確定最壞情況下和平均意義下影響模塊運(yùn)行時(shí)間的因素。模塊并不是一個(gè)獨(dú)立的程序,在考慮測(cè)試模塊時(shí),同時(shí)要考慮它和外界的聯(lián)系,用一些輔助模塊去模擬與被測(cè)模塊相聯(lián)系的其他模塊。2.單元測(cè)試的步驟118軟件工程驅(qū)動(dòng)模塊(driver)樁模塊(stub)──存根模塊被測(cè)模塊驅(qū)動(dòng)模塊樁模塊樁模塊樁模塊測(cè)試用例測(cè)試用例119軟件工程如果一個(gè)模塊要完成多種功能,可以將這個(gè)模塊看成由幾個(gè)小程序組成。必須對(duì)其中的每個(gè)小程序先進(jìn)行單元測(cè)試要做的工作,對(duì)關(guān)鍵模塊還要做性能測(cè)試。對(duì)支持某些標(biāo)準(zhǔn)規(guī)程的程序,更要著手進(jìn)行互聯(lián)測(cè)試。有人把這種情況特別稱(chēng)為模塊測(cè)試,以區(qū)別單元測(cè)試。120軟件工程7.3.2集成測(cè)試(IntegratedTesting)集成測(cè)試又稱(chēng)組裝測(cè)試、綜合測(cè)試。通常,在單元測(cè)試的基礎(chǔ)上,需要將所有模塊按照設(shè)計(jì)要求組裝成為系統(tǒng)。這時(shí)需要考慮的問(wèn)題是:在把各個(gè)模塊連接起來(lái)的時(shí)侯,穿越模塊接口的數(shù)據(jù)是否會(huì)丟失;一個(gè)模塊的功能是否會(huì)對(duì)另一個(gè)模塊的功能產(chǎn)生不利的影響;全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問(wèn)題;121軟件工程

各個(gè)子功能組合起來(lái),能否達(dá)到預(yù)期要求的父功能;單個(gè)模塊的誤差累積起來(lái),是否會(huì)放大,從而達(dá)到不能接受的程度。在單元測(cè)試的同時(shí)可進(jìn)行集成測(cè)試,發(fā)現(xiàn)并排除在模塊連接中可能出現(xiàn)的問(wèn)題,最終構(gòu)成要求的軟件系統(tǒng)。子系統(tǒng)的集成測(cè)試特別稱(chēng)為部件測(cè)試,它所做的工作是要找出集成后的子系統(tǒng)與系統(tǒng)需求規(guī)格說(shuō)明之間的不一致。122軟件工程

通常,把模塊組裝成為系統(tǒng)的方式有兩種:一次性集成方式增量式集成方式1.一次性集成方式(bigbang)它是一種非增量式集成方式。也叫做整體拼裝。使用這種方式,首先對(duì)每個(gè)模塊分別進(jìn)行模塊測(cè)試,然后再把所有模塊集成在一起進(jìn)行測(cè)試,最終得到要求的軟件系統(tǒng)。123軟件工程ACDBEFd1Bs1d2Ds2d3Cd4Ed5FAs4s5s3ACDBEF原來(lái)結(jié)構(gòu)分模塊測(cè)試一次性集成124軟件工程2.增量式集成方式這種集成方式又稱(chēng)漸增式組裝。首先對(duì)一個(gè)個(gè)模塊進(jìn)行模塊測(cè)試,然后將這些模塊逐步組裝成較大的系統(tǒng)在組裝的過(guò)程中邊連接邊測(cè)試,以發(fā)現(xiàn)連接過(guò)程中產(chǎn)生的問(wèn)題通過(guò)增量逐步加入,組裝成為要求的軟件系統(tǒng)。

125軟件工程(1)自頂向下的增量方式這種集成方式將模塊按系統(tǒng)程序結(jié)構(gòu),沿控制層次自頂向下進(jìn)行組裝。自頂向下的增量方式在測(cè)試過(guò)程中較早地驗(yàn)證了主要的控制和判斷點(diǎn)。選用按深度方向集成的方式,可以首先實(shí)現(xiàn)和驗(yàn)證一個(gè)完整的軟件功能。126軟件工程As2s3s1As2s3Bs4ACs3Bs4ACDBs4s5ACDBEs5ACDBEF127軟件工程(2)自底向上的增量方式這種集成的方式是從程序模塊結(jié)構(gòu)的最底層的模塊開(kāi)始集成和測(cè)試。因?yàn)槟K是自底向上進(jìn)行組裝,對(duì)于一個(gè)給定層次的模塊,它的子模塊(包括子模塊的所有下屬模塊)已經(jīng)集成并測(cè)試完成,所以不再需要樁模塊。在模塊的測(cè)試過(guò)程中需要從子模塊得到的信息可以直接運(yùn)行子模塊得到。

128軟件工程自頂向下增量的方式和自底向上增量的方式各有優(yōu)缺點(diǎn)。一般來(lái)講,一種方式的優(yōu)點(diǎn)是另一種方式的缺點(diǎn)。d4BEd2DFd1Ed2Cd3FACDBEF129軟件工程(3)混合增量式測(cè)試衍變的自頂向下的增量測(cè)試首先對(duì)輸入/輸出模塊和引入新算法模塊進(jìn)行測(cè)試;再自底向上組裝成為功能相當(dāng)完整且相對(duì)獨(dú)立的子系統(tǒng);然后由主模塊開(kāi)始自頂向下進(jìn)行增量測(cè)試。130軟件工程自底向上自頂向下的增量測(cè)試首先對(duì)含讀操作的子系統(tǒng)自底向上直至根結(jié)點(diǎn)模塊進(jìn)行集成和測(cè)試;然后對(duì)含寫(xiě)操作的子系統(tǒng)做自頂向下的集成與測(cè)試?;貧w測(cè)試這種方式采取自頂向下的方式測(cè)試被修改的模塊及其子模塊;然后將這一部分視為子系統(tǒng),再自底向上測(cè)試。131軟件工程關(guān)鍵模塊問(wèn)題在集成測(cè)試時(shí),應(yīng)當(dāng)確定關(guān)鍵模塊,對(duì)這些關(guān)鍵模塊及早進(jìn)行測(cè)試。關(guān)鍵模塊的特征:滿足某些軟件需求;在程序的模塊結(jié)構(gòu)中位于較高的層次(高層控制模塊);較復(fù)雜、較易發(fā)生錯(cuò)誤;有明確定義的性能要求。132軟件工程7.3.3確認(rèn)測(cè)試(ValidationTesting)確認(rèn)測(cè)試又稱(chēng)可用性測(cè)試。任務(wù)是驗(yàn)證軟件的功能和性能及其他特性是否與用戶的要求一致。對(duì)軟件的功能和性能要求在軟件需求規(guī)格說(shuō)明書(shū)中已經(jīng)明確規(guī)定。它包含的信息就是軟件確認(rèn)測(cè)試的基礎(chǔ)。133軟件工程選擇測(cè)試人員構(gòu)造測(cè)試用例實(shí)際運(yùn)行測(cè)試軟件計(jì)劃用戶文檔開(kāi)發(fā)文檔源程序文本支持環(huán)境軟件配置審查可用性測(cè)試管理機(jī)構(gòu)裁決軟件配置測(cè)試報(bào)告專(zhuān)家鑒定會(huì)交付用戶運(yùn)行維護(hù)134軟件工程1.進(jìn)行可用性測(cè)試(黑盒測(cè)試)可用性測(cè)試是在模擬的環(huán)境(可能就是開(kāi)發(fā)的環(huán)境)下,運(yùn)用黑盒測(cè)試的方法,驗(yàn)證被測(cè)軟件是否滿足需求規(guī)格說(shuō)明書(shū)列出的需求。首先制定測(cè)試計(jì)劃,規(guī)定要做測(cè)試的種類(lèi)。還需要制定一組測(cè)試步驟,描述具體的測(cè)試用例。通過(guò)實(shí)施預(yù)定的測(cè)試計(jì)劃和測(cè)試步驟,確定軟件的特性是否與需求相符;所有的文檔都是正確且便于使用;135軟件工程同時(shí),對(duì)其他軟件需求,例如可移植性、兼容性、出錯(cuò)自動(dòng)恢復(fù)、可維護(hù)性等,也都要進(jìn)行測(cè)試在全部軟件測(cè)試的測(cè)試用例運(yùn)行完后,所有的測(cè)試結(jié)果可以分為兩類(lèi):測(cè)試結(jié)果與預(yù)期的結(jié)果相符。這說(shuō)明軟件的這部分功能或性能特征與需求規(guī)格說(shuō)明書(shū)相符合,從而這部分程序被接受。測(cè)試結(jié)果與預(yù)期的結(jié)果不符。這說(shuō)明軟件的這部分功能或性能特征與需求規(guī)格說(shuō)明不一致,因此要為它提交一份問(wèn)題報(bào)告。136軟件工程2.軟件配置復(fù)查軟件配置復(fù)查的目的是保證所有按合同或標(biāo)準(zhǔn)必須交付的:軟件配置的所有成分都齊全;各方面的質(zhì)量都符合要求;具有維護(hù)階段所必需的細(xì)節(jié);而且已經(jīng)編排好分類(lèi)的目錄。應(yīng)當(dāng)嚴(yán)格遵守用戶手冊(cè)和操作手冊(cè)中規(guī)定的使用步驟,以便檢查這些文檔資料的完整性和正確性。137軟件工程3.驗(yàn)收測(cè)試(AcceptanceTesting)在通過(guò)了系統(tǒng)的可用性測(cè)試及軟件配置審查之后,就應(yīng)開(kāi)始系統(tǒng)的驗(yàn)收測(cè)試。驗(yàn)收測(cè)試是以用戶為主的測(cè)試。軟件開(kāi)發(fā)人員和QA(質(zhì)量保證)人員也應(yīng)參加。由用戶參加設(shè)計(jì)測(cè)試用例,使用生產(chǎn)中的實(shí)際數(shù)據(jù)進(jìn)行測(cè)試。在測(cè)試過(guò)程中,除了考慮軟件的功能和性能外,還應(yīng)對(duì)軟件的可移植性、兼容性、可維護(hù)性、錯(cuò)誤的恢復(fù)功能等進(jìn)行確認(rèn)。138軟件工程確認(rèn)測(cè)試應(yīng)交付的文檔有:確認(rèn)測(cè)試分析報(bào)告最終的用戶手冊(cè)和操作手冊(cè)項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告

139軟件工程7.3.4系統(tǒng)測(cè)試(SystemTesting)系統(tǒng)測(cè)試,是將通過(guò)確認(rèn)測(cè)試的軟件,作為整個(gè)基于計(jì)算機(jī)系統(tǒng)的一個(gè)元素,與計(jì)算機(jī)硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其他系統(tǒng)元素結(jié)合在一起,在實(shí)際運(yùn)行環(huán)境下,對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的組裝測(cè)試和確認(rèn)測(cè)試。系統(tǒng)測(cè)試的目的在于通過(guò)與系統(tǒng)的需求定義作比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合或與之矛盾的地方。140軟件工程α測(cè)試和β測(cè)試在軟件交付使用后,用戶將如何實(shí)際使用程序,對(duì)于開(kāi)發(fā)者來(lái)說(shuō)是無(wú)法預(yù)測(cè)的。α測(cè)試是由一個(gè)用戶在開(kāi)發(fā)環(huán)境下進(jìn)行的測(cè)試,也可以是公司內(nèi)部的用戶在模擬實(shí)際操作環(huán)境下進(jìn)行的測(cè)試。α測(cè)試的目的是評(píng)價(jià)軟件產(chǎn)品的FURPS(即功能、可使用性、可靠性、性能和支持)。尤其注重產(chǎn)品的界面和特色。141軟件工程α測(cè)試可以從軟件產(chǎn)品編碼結(jié)束之時(shí)開(kāi)始,或在模塊(子系統(tǒng))測(cè)試完成之后開(kāi)始,也可以在確認(rèn)測(cè)試過(guò)程中產(chǎn)品達(dá)到一定的穩(wěn)定和可靠程度之后再開(kāi)始。β測(cè)試是由軟件的多個(gè)用戶在實(shí)際使用環(huán)境下進(jìn)行的測(cè)試。這些用戶返回有關(guān)錯(cuò)誤信息給開(kāi)發(fā)者。測(cè)試時(shí),開(kāi)發(fā)者通常不在測(cè)試現(xiàn)場(chǎng)。因而,β測(cè)試是在開(kāi)發(fā)者無(wú)法控制的環(huán)境下進(jìn)行的軟件現(xiàn)場(chǎng)應(yīng)用。142軟件工程在β測(cè)試中,由用戶記下遇到的所有問(wèn)題,包括真實(shí)的以及主觀認(rèn)定的,定期向開(kāi)發(fā)者報(bào)告。

β測(cè)試主要衡量產(chǎn)品的FURPS。著重于產(chǎn)品的支持性,包括文檔、客戶培訓(xùn)和支持產(chǎn)品生產(chǎn)能力。只有當(dāng)α測(cè)試達(dá)到一定的可靠程度時(shí),才能開(kāi)始β測(cè)試。它處在整個(gè)測(cè)試的最后階段。同時(shí),產(chǎn)品的所有手冊(cè)文本也應(yīng)該在此階段完全定稿。143軟件工程7.4軟件測(cè)試的種類(lèi)軟件測(cè)試是由一系列不同的測(cè)試組成。主要目的是對(duì)以計(jì)算機(jī)為基礎(chǔ)的系統(tǒng)進(jìn)行充分的測(cè)試。1.功能測(cè)試功能測(cè)試是在規(guī)定的一段時(shí)間內(nèi)運(yùn)行軟件系統(tǒng)的所有功能,以驗(yàn)證這個(gè)軟件系統(tǒng)有無(wú)嚴(yán)重錯(cuò)誤。144軟件工程2.可靠性測(cè)試如果系統(tǒng)需求說(shuō)明書(shū)中有對(duì)可靠性的要求,則需進(jìn)行可靠性測(cè)試。 ①平均失效間隔時(shí)間MTBF

(MeanTimeBetweenFailures)是否超過(guò)規(guī)定時(shí)限?

②因故障而停機(jī)的時(shí)間MTTR

(MeanTimeToRepairs)在一年中應(yīng)不超過(guò)多少時(shí)間。

145軟件工程3.壓力測(cè)試壓力測(cè)試是要檢查在系統(tǒng)運(yùn)行環(huán)境不正常乃至發(fā)生故障的情況下,系統(tǒng)可以運(yùn)行到何種程度的測(cè)試。例如:把輸入數(shù)據(jù)速率提高一個(gè)數(shù)量級(jí),確定輸入功能將如何響應(yīng)。設(shè)計(jì)需要占用最大存儲(chǔ)量或其他資源的測(cè)試用例進(jìn)行測(cè)試。設(shè)計(jì)出在虛擬存儲(chǔ)管理機(jī)制中引起“顛簸”的測(cè)試用例進(jìn)行測(cè)試。146軟件工程設(shè)計(jì)出會(huì)對(duì)磁盤(pán)常駐內(nèi)存的數(shù)據(jù)過(guò)度訪問(wèn)的測(cè)試用例進(jìn)行測(cè)試。壓力測(cè)試的一個(gè)變種就是敏感性測(cè)試。在程序有效數(shù)據(jù)界限內(nèi)一個(gè)小范圍內(nèi)的一組數(shù)據(jù)可能引起極端的或不平穩(wěn)的錯(cuò)誤處理出現(xiàn),或者導(dǎo)致極度的性能下降的情況發(fā)生。此測(cè)試用以發(fā)現(xiàn)可能引起這種不穩(wěn)定性或不正常處理的某些數(shù)據(jù)組合。147軟件工程4.性能測(cè)試性能測(cè)試是要檢查系統(tǒng)是否滿足在需求說(shuō)明書(shū)中規(guī)定的性能。特別是對(duì)于實(shí)時(shí)系統(tǒng)或嵌入式系統(tǒng)。性能測(cè)試常需要與壓力測(cè)試結(jié)合起來(lái)進(jìn)行,并常要求同時(shí)進(jìn)行硬件和軟件檢測(cè)。通常,對(duì)軟件性能的檢測(cè)表現(xiàn)在以下幾個(gè)方面:響應(yīng)時(shí)間、吞吐量、輔助存儲(chǔ)區(qū)(例如緩沖區(qū),工作區(qū)的大?。?、處理精度等。148軟件工程5.恢復(fù)測(cè)試恢復(fù)測(cè)試是要證實(shí)在克服硬件故障(包括掉電、硬件或網(wǎng)絡(luò)出錯(cuò)等)后,系統(tǒng)能否正常地繼續(xù)進(jìn)行工作,不對(duì)系統(tǒng)造成任何損害。為此,可采用各種人工干預(yù)的手段,模擬硬件故障,故意造成軟件出錯(cuò)。并由此檢查:錯(cuò)誤探測(cè)功能──系統(tǒng)能否發(fā)現(xiàn)硬件失效與故障;在故障發(fā)生時(shí)能否保護(hù)正在運(yùn)行的作業(yè)和系統(tǒng)狀態(tài);149軟件工程能否切換或啟動(dòng)備用的硬件;在系統(tǒng)恢復(fù)后能否從最后記錄下來(lái)的無(wú)錯(cuò)誤狀態(tài)開(kāi)始繼續(xù)執(zhí)行作業(yè),等等。掉電測(cè)試:其目的是測(cè)試軟件系統(tǒng)在發(fā)生電源中斷時(shí)能否保護(hù)當(dāng)時(shí)的狀態(tài)且不毀壞數(shù)據(jù),然后在電源恢復(fù)時(shí)從保留的斷點(diǎn)處重新進(jìn)行操作。

150軟件工程6.配置測(cè)試這類(lèi)測(cè)試是要檢查計(jì)算機(jī)系統(tǒng)內(nèi)各個(gè)設(shè)備或各種資源之間的相互聯(lián)結(jié)和功能分配中的錯(cuò)誤。它主要包括以下幾種:配置命令測(cè)試:驗(yàn)證全部配置命令的可操作性(有效性);特別對(duì)最大配置和最小配置要做測(cè)試。軟件配置和硬件配置都要測(cè)試。循環(huán)配置測(cè)試:證明對(duì)每個(gè)設(shè)備物理與邏輯的,邏輯與功能的每次循環(huán)置換配置都能正常工作。151軟件工程修復(fù)測(cè)試:檢查每種配置狀態(tài)及哪個(gè)設(shè)備是壞的。并用自動(dòng)的或手工的方式進(jìn)行配置狀態(tài)間的轉(zhuǎn)換。7.啟動(dòng)/停止測(cè)試這類(lèi)測(cè)試的目的是驗(yàn)證在機(jī)器啟動(dòng)及關(guān)機(jī)階段,軟件系統(tǒng)正確處理的能力。這類(lèi)測(cè)試包括反復(fù)啟動(dòng)軟件系統(tǒng)(例如,操作系統(tǒng)自舉、網(wǎng)絡(luò)的啟動(dòng)、應(yīng)用程序的調(diào)用等)在盡可能多的情況下關(guān)機(jī)。152軟件工程8.安全性測(cè)試安全性測(cè)試是要檢驗(yàn)在系統(tǒng)中已經(jīng)存在的系統(tǒng)安全性、保密性措施是否發(fā)揮作用,有無(wú)漏洞。力圖破壞系統(tǒng)的保護(hù)機(jī)構(gòu)以進(jìn)入系統(tǒng)的主要方法有以下幾種:正面攻擊或從側(cè)面、背面攻擊系統(tǒng)中易受損壞的那些部分;以系統(tǒng)輸入為突破口,利用輸入的容錯(cuò)性進(jìn)行正面攻擊;153軟件工程申請(qǐng)和占用過(guò)多的資源壓垮系統(tǒng),以破壞安全措施,從而進(jìn)入系統(tǒng);故意使系統(tǒng)出錯(cuò),利用系統(tǒng)恢復(fù)的過(guò)程,竊取用戶口令及其他有用的信息;通過(guò)瀏覽殘留在計(jì)算機(jī)各種資源中的垃圾(無(wú)用信息),以獲取如口令,安全碼,譯碼關(guān)鍵字等信息;瀏覽全局?jǐn)?shù)據(jù),期望從中找到進(jìn)入系統(tǒng)的關(guān)鍵字;瀏覽那些邏輯上不存在,但物理上還存在的各種記錄和資料等。

154軟件工程9.可使用性測(cè)試可使用性測(cè)試主要從使用的合理性和方便性等角度對(duì)軟件系統(tǒng)進(jìn)行檢查,發(fā)現(xiàn)人為因素或使用上的問(wèn)題。要保證在足夠詳細(xì)的程度下,用戶界面便于使用;對(duì)輸入量可容錯(cuò)、響應(yīng)時(shí)間和響應(yīng)方式合理可行、輸出信息有意義、正確并前后一致;出錯(cuò)信息能夠引導(dǎo)用戶去解決問(wèn)題;軟件文檔全面、正規(guī)、確切。155軟件工程10.可支持性測(cè)試這類(lèi)測(cè)試是要驗(yàn)證系統(tǒng)的支持策略對(duì)于公司與用戶方面是否切實(shí)可行。它所采用的方法是試運(yùn)行支持過(guò)程(如對(duì)有錯(cuò)部分打補(bǔ)丁的過(guò)程,熱線界面等);對(duì)其結(jié)果進(jìn)行質(zhì)量分析;評(píng)審診斷工具;維護(hù)過(guò)程、內(nèi)部維護(hù)文檔;修復(fù)一個(gè)錯(cuò)誤所需平均最少時(shí)間。156軟件工程11.安裝測(cè)試安裝測(cè)試的目的不是找軟件錯(cuò)誤,而是找安裝錯(cuò)誤。在安裝軟件系統(tǒng)時(shí),會(huì)有多種選擇。要分配和裝入文件與程序庫(kù)布置適用的硬件配置進(jìn)行程序的聯(lián)結(jié)。而安裝測(cè)試就是要找出在這些安裝過(guò)程中出現(xiàn)的錯(cuò)誤。157軟件工程安裝測(cè)試是在系統(tǒng)安裝之后進(jìn)行測(cè)試。它要檢驗(yàn):用戶選擇的一套任選方案是否相容;系統(tǒng)的每一部分是否都齊全;所有文件是否都已產(chǎn)生并確有所需要的內(nèi)容;硬件的配置是否合理,等等。

158軟件工程12.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論