第7章-軟件測(cè)試技術(shù)-普通高等院校計(jì)算機(jī)類專業(yè)系列教材-軟件工程教學(xué)課件_第1頁(yè)
第7章-軟件測(cè)試技術(shù)-普通高等院校計(jì)算機(jī)類專業(yè)系列教材-軟件工程教學(xué)課件_第2頁(yè)
第7章-軟件測(cè)試技術(shù)-普通高等院校計(jì)算機(jī)類專業(yè)系列教材-軟件工程教學(xué)課件_第3頁(yè)
第7章-軟件測(cè)試技術(shù)-普通高等院校計(jì)算機(jī)類專業(yè)系列教材-軟件工程教學(xué)課件_第4頁(yè)
第7章-軟件測(cè)試技術(shù)-普通高等院校計(jì)算機(jī)類專業(yè)系列教材-軟件工程教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩263頁(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)介

第7章軟件測(cè)試技術(shù)7.1軟件測(cè)試基礎(chǔ)7.2白盒測(cè)試技術(shù)7.3黑盒測(cè)試技術(shù)7.4軟件測(cè)試計(jì)劃和測(cè)試分析報(bào)告7.5軟件測(cè)試策略7.6小結(jié)第7章軟件測(cè)試技術(shù)7.1軟件測(cè)試基礎(chǔ)17.1軟件測(cè)試基礎(chǔ)7.1.1軟件測(cè)試的概念、目的和原則1.軟件測(cè)試的概念軟件測(cè)試是在軟件投入運(yùn)行前對(duì)軟件需求分析、軟件設(shè)計(jì)規(guī)格說(shuō)明和軟件編碼進(jìn)行查錯(cuò)和糾錯(cuò)(包括代碼執(zhí)行活動(dòng)與人工活動(dòng))。找錯(cuò)的活動(dòng)稱測(cè)試,糾錯(cuò)的活動(dòng)稱調(diào)試??梢哉f(shuō),軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程?;蛘哒f(shuō),軟件測(cè)試是根據(jù)軟件開(kāi)發(fā)各階段的規(guī)格說(shuō)明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測(cè)試用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤的過(guò)程。7.1軟件測(cè)試基礎(chǔ)7.1.1軟件測(cè)試的概念、目的和原則2

2.軟件測(cè)試的目的GlenMyers在他的軟件測(cè)試著作中就軟件測(cè)試的目的提出下列觀點(diǎn):(1)測(cè)試是一個(gè)為了尋找錯(cuò)誤而運(yùn)行程序的過(guò)程。(2)一個(gè)好的測(cè)試用例是指很可能找到迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的用例。(3)一個(gè)成功的測(cè)試是指揭示了迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。2.軟件測(cè)試的目的3正確認(rèn)識(shí)測(cè)試的目的是十分重要的,只有這樣,才能設(shè)計(jì)出最能暴露錯(cuò)誤的測(cè)試方案。測(cè)試的目的應(yīng)從用戶角度出發(fā),通過(guò)軟件測(cè)試暴露軟件中潛在的錯(cuò)誤和缺陷,而不是從軟件開(kāi)發(fā)者的角度出發(fā),希望測(cè)試成為表明軟件產(chǎn)品不存在錯(cuò)誤,驗(yàn)證軟件已正確實(shí)現(xiàn)用戶的要求的過(guò)程。否則,開(kāi)發(fā)者測(cè)試時(shí)會(huì)選擇不易測(cè)試出錯(cuò)誤和缺陷的用例,這與上述測(cè)試目的相違背。一個(gè)成功的測(cè)試是指揭示了迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。測(cè)試的目標(biāo)是能夠以耗費(fèi)最少時(shí)間與最小工作量找出軟件系統(tǒng)中潛在的各種錯(cuò)誤與缺陷。另外,我們應(yīng)該認(rèn)識(shí)到:測(cè)試只能證明程序中錯(cuò)誤的存在,但不能證明程序中沒(méi)有錯(cuò)誤。因?yàn)榧词箤?shí)施了最嚴(yán)格的測(cè)試,仍然可能還有尚未被發(fā)現(xiàn)的錯(cuò)誤或缺陷存在于程序當(dāng)中,因而測(cè)試不能證明程序沒(méi)有錯(cuò)誤,但可能查出程序中的錯(cuò)誤。正確認(rèn)識(shí)測(cè)試的目的是十分重要的,只有這樣,才能設(shè)計(jì)出4

3.軟件測(cè)試的基本原則人們?yōu)榱颂岣邷y(cè)試的效率,在長(zhǎng)期測(cè)試實(shí)驗(yàn)中積累了不少經(jīng)驗(yàn),下面列出了人們?cè)趯?shí)踐中總結(jié)的主要基本原則:(1)盡早地并不斷地進(jìn)行軟件測(cè)試。實(shí)際問(wèn)題的復(fù)雜性、軟件本身的復(fù)雜性與抽象性以及開(kāi)發(fā)期各層人員工作的配合關(guān)系等各種錯(cuò)綜復(fù)雜的因素使得軟件開(kāi)發(fā)的各個(gè)階段都可能存在錯(cuò)誤及潛在的缺陷。所以,軟件開(kāi)發(fā)的各階段都應(yīng)當(dāng)進(jìn)行測(cè)試。錯(cuò)誤發(fā)現(xiàn)得越早,后階段耗費(fèi)的人力、財(cái)力就越少,軟件質(zhì)量相對(duì)就高一些。3.軟件測(cè)試的基本原則5(2)程序員或程序設(shè)計(jì)機(jī)構(gòu)應(yīng)避免測(cè)試自己設(shè)計(jì)的程序。測(cè)試是為了找錯(cuò),而程序員大多對(duì)自己所編的程序存有偏見(jiàn),總認(rèn)為自己編的程序問(wèn)題不大或無(wú)錯(cuò)誤存在,因此很難查出錯(cuò)誤。此外,設(shè)計(jì)機(jī)構(gòu)在測(cè)試自己程序時(shí),由于開(kāi)發(fā)周期和經(jīng)費(fèi)等問(wèn)題的限制,要采用客觀的態(tài)度是十分困難的。從工作效率來(lái)講,最好由與原程序無(wú)關(guān)的程序員和程序設(shè)計(jì)機(jī)構(gòu)進(jìn)行測(cè)試。(2)程序員或程序設(shè)計(jì)機(jī)構(gòu)應(yīng)避免測(cè)試自己設(shè)計(jì)的程序6(3)測(cè)試用例中不僅要有輸入數(shù)據(jù),還要有與之對(duì)應(yīng)的預(yù)期結(jié)果。測(cè)試前應(yīng)當(dāng)設(shè)定合理的測(cè)試用例。測(cè)試用例不僅要有輸入數(shù)據(jù),而且還要有與之對(duì)應(yīng)的預(yù)期結(jié)果。如果在程序執(zhí)行前無(wú)法確定預(yù)期的測(cè)試結(jié)果,由于人們的心理作用,可能把實(shí)際上是錯(cuò)誤的結(jié)果當(dāng)成是正確的。(3)測(cè)試用例中不僅要有輸入數(shù)據(jù),還要有與之對(duì)應(yīng)的7(4)測(cè)試用例的設(shè)計(jì)不僅要有合法的輸入數(shù)據(jù),還要有非法的輸入數(shù)據(jù)。在設(shè)計(jì)測(cè)試用例時(shí),不僅要有合法的輸入測(cè)試用例,還要有非法的輸入測(cè)試用例。在測(cè)試程序時(shí),人們常忽視不合法的和預(yù)想不到的輸入條件,傾向于考慮合法的和預(yù)期的輸入條件。而在軟件的實(shí)際使用過(guò)程中,由于各種因素的存在,用戶可能會(huì)使用一些非法的輸入,比如常會(huì)按錯(cuò)鍵或使用不合法的命令。對(duì)于一個(gè)功能較完善的軟件來(lái)說(shuō),不僅當(dāng)輸入是合法的時(shí)候能正確運(yùn)行,而且當(dāng)有非法輸入時(shí),也應(yīng)當(dāng)能對(duì)非法的輸入拒絕接受,同時(shí)給出對(duì)應(yīng)的提示信息,使得軟件便于使用。(4)測(cè)試用例的設(shè)計(jì)不僅要有合法的輸入數(shù)據(jù),還要有8(5)在對(duì)程序修改之后要進(jìn)行回歸測(cè)試。在修改程序的同時(shí)時(shí)常又會(huì)引進(jìn)新的錯(cuò)誤,因而在對(duì)程序修改完之后,還應(yīng)用以前的測(cè)試用例進(jìn)行回歸測(cè)試,有助于發(fā)現(xiàn)因修改程序而引進(jìn)的新的錯(cuò)誤。(5)在對(duì)程序修改之后要進(jìn)行回歸測(cè)試。9(6)程序中尚未發(fā)現(xiàn)的錯(cuò)誤的數(shù)量通常與該程序中已發(fā)現(xiàn)的錯(cuò)誤的數(shù)量成正比。經(jīng)驗(yàn)表明:一段程序中若發(fā)現(xiàn)錯(cuò)誤的數(shù)目越多,則此段程序中殘存的錯(cuò)誤數(shù)目也較多。例如:在美國(guó)的IBM/370的一個(gè)操作系統(tǒng)中,47%的錯(cuò)誤(由用戶發(fā)現(xiàn)的錯(cuò)誤)僅與該系統(tǒng)的4%的程序模塊有關(guān)。據(jù)此規(guī)律,在實(shí)際測(cè)驗(yàn)時(shí),為了提高測(cè)試效率,要花較多的時(shí)間和代價(jià)來(lái)測(cè)試那些容易出錯(cuò)即出錯(cuò)多的程序段。而不要以為找到了幾個(gè)錯(cuò)誤,就認(rèn)為問(wèn)題已解決,不再需要繼續(xù)測(cè)試了。(6)程序中尚未發(fā)現(xiàn)的錯(cuò)誤的數(shù)量通常與該程序中已發(fā)10(7)妥善保留測(cè)試計(jì)劃、全部測(cè)試用例、出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,并把它們作為軟件的組成部分之一,為維護(hù)提供方便。設(shè)計(jì)測(cè)試用例要耗費(fèi)相當(dāng)大的工作量,若測(cè)試完隨意丟棄,以后一旦程序改錯(cuò)后需重新測(cè)試時(shí),將重復(fù)設(shè)計(jì)測(cè)試用例,這會(huì)造成很大的浪費(fèi),因而妥善保留與測(cè)試有關(guān)的資料,能為后期的維護(hù)工作帶來(lái)方便。(8)應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果做全面檢查。這條重要的原則時(shí)常被人們忽視。不仔細(xì)、全面地檢查測(cè)試結(jié)果,就會(huì)使得有錯(cuò)誤征兆的輸出結(jié)果被漏掉。(7)妥善保留測(cè)試計(jì)劃、全部測(cè)試用例、出錯(cuò)統(tǒng)計(jì)和最11(9)嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性。測(cè)試計(jì)劃內(nèi)容應(yīng)包括:所測(cè)軟件的功能、輸入和輸出、測(cè)試內(nèi)容、各項(xiàng)測(cè)試的進(jìn)度安排、資源要求、測(cè)試資料、測(cè)試工具、測(cè)試用例的選擇、測(cè)試的控制方式和過(guò)程、系統(tǒng)組裝方式、跟蹤規(guī)程、調(diào)試規(guī)程、回歸測(cè)試的規(guī)定以及評(píng)價(jià)標(biāo)準(zhǔn)等。(9)嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性。127.1.2軟件測(cè)試的過(guò)程圖7.1測(cè)試的過(guò)程7.1.2軟件測(cè)試的過(guò)程圖7.1測(cè)試的過(guò)程13測(cè)試過(guò)程有三類輸入:軟件配置、測(cè)試配置和測(cè)試工具。軟件配置包括軟件需求說(shuō)明書(shū)、設(shè)計(jì)說(shuō)明書(shū)、源程序清單等文檔。測(cè)試配置包括測(cè)試方案、測(cè)試計(jì)劃、測(cè)試用例、測(cè)試驅(qū)動(dòng)程序等文檔。測(cè)試工具包括支持測(cè)試的軟件。輸出信息有修正軟件的文件和預(yù)測(cè)可靠性或得出糾錯(cuò)后可交付使用的正確軟件。測(cè)試的信息流是不斷遞歸的過(guò)程,也是相對(duì)有限的測(cè)試過(guò)程,而不是無(wú)限的過(guò)程。(1)軟件配置:指被測(cè)試軟件的文件,如軟件需求規(guī)格說(shuō)明書(shū)、軟件設(shè)計(jì)說(shuō)明書(shū)和源程序清單等文檔。測(cè)試過(guò)程有三類輸入:軟件配置、測(cè)試配置和測(cè)試工具。軟14(2)測(cè)試配置:指測(cè)試方案、測(cè)試計(jì)劃、測(cè)試用例、測(cè)試驅(qū)動(dòng)程序等文檔。實(shí)際上,在整個(gè)軟件工程過(guò)程中,測(cè)試配置只是軟件配置的一個(gè)子集。(3)測(cè)試工具:是為了提高測(cè)試效率而設(shè)計(jì)的支持軟件測(cè)試的軟件。例如,測(cè)試數(shù)據(jù)自動(dòng)生成程序、靜態(tài)分析程序、動(dòng)態(tài)分析程序、測(cè)試結(jié)果分析程序以及驅(qū)動(dòng)測(cè)試的測(cè)試數(shù)據(jù)庫(kù)等。(4)測(cè)試評(píng)價(jià):由測(cè)試出的錯(cuò)誤跡象,分析、找出錯(cuò)誤的原因和位置,以便糾正和積累軟件設(shè)計(jì)的經(jīng)驗(yàn)。(2)測(cè)試配置:指測(cè)試方案、測(cè)試計(jì)劃、測(cè)試用例、測(cè)15(5)糾錯(cuò)(調(diào)試):是指找到出錯(cuò)的原因與位置并糾錯(cuò),包括修正文件直到軟件正確為止。糾錯(cuò)過(guò)程是測(cè)試過(guò)程中最無(wú)法預(yù)料的部分。為了診斷和糾正一個(gè)錯(cuò)誤,可能需要一小時(shí)、一天、甚至幾個(gè)月的時(shí)間。正是因?yàn)榧m錯(cuò)本身所具有的不確定性,常常難以準(zhǔn)確地安排測(cè)試日程表。(5)糾錯(cuò)(調(diào)試):是指找到出錯(cuò)的原因與位置并糾錯(cuò)16(6)可靠性模型:通過(guò)對(duì)測(cè)試出的軟件出錯(cuò)率的分析,建立模型,得出可靠的數(shù)據(jù),指導(dǎo)軟件的設(shè)計(jì)與維護(hù)。對(duì)測(cè)試結(jié)果進(jìn)行收集和評(píng)價(jià)后,軟件可靠性能夠達(dá)到的質(zhì)量指標(biāo)也就清楚了。若出現(xiàn)一些有規(guī)律的、嚴(yán)重的、要求修改設(shè)計(jì)的錯(cuò)誤,軟件的質(zhì)量和可靠性值得懷疑,應(yīng)作進(jìn)一步測(cè)試。另外,若軟件功能看來(lái)完成得很好且遇到錯(cuò)誤也容易糾正,從而可以得到兩種不同的結(jié)論:一種是軟件質(zhì)量和可靠性是可以接受的;另一種是所進(jìn)行的測(cè)試尚不足以發(fā)現(xiàn)嚴(yán)重的錯(cuò)誤。若沒(méi)有發(fā)現(xiàn)任何錯(cuò)誤,可能是由于測(cè)試配置不夠周到,依然有潛在的錯(cuò)誤存在。若將錯(cuò)誤放過(guò),在維護(hù)階段被用戶發(fā)現(xiàn)時(shí)再糾正的話,所需費(fèi)用將可能是開(kāi)發(fā)階段的40~60倍。(6)可靠性模型:通過(guò)對(duì)測(cè)試出的軟件出錯(cuò)率的分析,177.1.3軟件測(cè)試的方法軟件測(cè)試的目的是以最少的測(cè)試用例集合測(cè)試出更多的程序中潛在錯(cuò)誤。如何測(cè)試的徹底,怎樣設(shè)計(jì)測(cè)試用例是測(cè)試的關(guān)鍵技術(shù)。依據(jù)測(cè)試過(guò)程是否在實(shí)際應(yīng)用環(huán)境中來(lái)分,軟件測(cè)試技術(shù)分為靜態(tài)分析技術(shù)與動(dòng)態(tài)測(cè)試技術(shù)兩種。測(cè)試方法有分析方法(包括靜態(tài)分析法與白盒法)與非分析方法(稱黑盒法)之分。有關(guān)白盒法與黑盒法的內(nèi)容將在后兩節(jié)中介紹,在此節(jié)中僅介紹靜態(tài)分析技術(shù)與動(dòng)態(tài)測(cè)試技術(shù)。7.1.3軟件測(cè)試的方法18

1.靜態(tài)分析技術(shù)靜態(tài)分析技術(shù)不執(zhí)行被測(cè)試軟件,可對(duì)需求分析說(shuō)明書(shū)、軟件設(shè)計(jì)說(shuō)明書(shū)、源程序做結(jié)構(gòu)檢查、流圖分析、符號(hào)執(zhí)行等來(lái)找出軟件錯(cuò)誤。可以人工進(jìn)行分析,也可以用測(cè)試工具靜態(tài)分析程序來(lái)進(jìn)行,被測(cè)試程序的正文作為輸入,經(jīng)靜態(tài)分析程序分析得出分析結(jié)果。(1)結(jié)構(gòu)檢查是手工分析技術(shù),由一組人員對(duì)程序設(shè)計(jì)、需求分析、編碼測(cè)試工作進(jìn)行評(píng)議,虛擬執(zhí)行程序,并在評(píng)議中作錯(cuò)誤檢驗(yàn)。此方法能找出典型程序30%~70%有關(guān)邏輯設(shè)計(jì)與編碼的錯(cuò)誤。1.靜態(tài)分析技術(shù)19(2)流圖分析是通過(guò)分析程序流程圖的代碼結(jié)構(gòu),來(lái)檢查程序的語(yǔ)法錯(cuò)誤信息、語(yǔ)句中標(biāo)識(shí)符引用狀況、子程序和函數(shù)調(diào)用狀況及無(wú)法執(zhí)行到的代碼段。此方法便于分析編碼實(shí)現(xiàn)與測(cè)試結(jié)果分析。(3)符號(hào)執(zhí)行是一種符號(hào)化定義數(shù)據(jù),并為程序每條路徑給出符號(hào)表達(dá)式,對(duì)特定路徑輸入符號(hào),經(jīng)處理輸出符號(hào),從而判斷程序行為是否錯(cuò)誤,達(dá)到分析錯(cuò)誤目的的方法。這種方法比數(shù)值計(jì)算復(fù)雜得多,易出錯(cuò),又不適于非數(shù)值計(jì)算,故使用較少。(2)流圖分析是通過(guò)分析程序流程圖的代碼結(jié)構(gòu),來(lái)檢查20

2.動(dòng)態(tài)測(cè)試技術(shù)動(dòng)態(tài)分析是執(zhí)行被測(cè)程序,由執(zhí)行結(jié)果分析程序可能出現(xiàn)的錯(cuò)誤。可以人工設(shè)計(jì)程序測(cè)試用例,也可以由測(cè)試工具動(dòng)態(tài)分析程序來(lái)做檢查與分析。動(dòng)態(tài)測(cè)試包括功能測(cè)試和結(jié)構(gòu)測(cè)試。它把程序看作為一個(gè)函數(shù),輸入的全體稱為函數(shù)的定義域,輸出的全體稱為函數(shù)的值域,函數(shù)則描述了輸入的定義域與輸出值域的關(guān)系。這樣動(dòng)態(tài)測(cè)試的算法可歸納為2.動(dòng)態(tài)測(cè)試技術(shù)21(1)選取定義域中的有效值,或定義域外無(wú)效值。(2)對(duì)已選取值決定預(yù)期的結(jié)果。(3)用選取值執(zhí)行程序。(4)觀察程序行為,記錄執(zhí)行結(jié)果。(5)將(4)的結(jié)果與(2)的結(jié)果相比較,不吻合則程序有錯(cuò)。動(dòng)態(tài)測(cè)試既可以采用白盒法對(duì)模塊進(jìn)行邏輯結(jié)構(gòu)的測(cè)試,又可以用黑盒法做功能結(jié)構(gòu)的測(cè)試。接口的測(cè)試,都是以執(zhí)行程序并分析執(zhí)行結(jié)果來(lái)查錯(cuò)的。(1)選取定義域中的有效值,或定義域外無(wú)效值。227.2白盒測(cè)試技術(shù)7.2.1白盒測(cè)試概念如果已知產(chǎn)品的內(nèi)部活動(dòng)方式,就可以測(cè)試它的內(nèi)部活動(dòng)是否都符合設(shè)計(jì)要求。這種方法稱白盒測(cè)試(White-boxTesting),它是對(duì)軟件的過(guò)程性細(xì)節(jié)做細(xì)致的檢查。白盒測(cè)試又稱為結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,此方法是將測(cè)試對(duì)象比作一個(gè)打開(kāi)的盒子,它允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)和相關(guān)信息來(lái)設(shè)計(jì)或選擇測(cè)試用例,對(duì)穿過(guò)軟件的邏輯路徑進(jìn)行測(cè)試,可以在不同點(diǎn)檢查程序的狀態(tài),以確定實(shí)際狀態(tài)與預(yù)期狀態(tài)是否一致。7.2白盒測(cè)試技術(shù)7.2.1白盒測(cè)試概念23軟件人員使用白盒方法測(cè)試程序模塊的檢查點(diǎn)主要包括:對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑應(yīng)至少測(cè)試一次;對(duì)所有的邏輯判定,取“真”與取“假”兩種情況都能至少測(cè)試一次;在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體;測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等。表面看來(lái),白盒測(cè)試是可以進(jìn)行完全的測(cè)試的,從理論上講也應(yīng)該如此。只要能確定測(cè)試模塊的所有邏輯路徑,并為每一條邏輯路徑設(shè)計(jì)測(cè)試用例,并評(píng)價(jià)所得到的結(jié)果,就可得到100%正確的程序。但實(shí)際測(cè)試中,這種窮舉法是無(wú)法實(shí)現(xiàn)的,因?yàn)榧词故呛苄〉某绦?,也可能?huì)出現(xiàn)數(shù)目驚人的邏輯路徑。如圖7-2所示是一個(gè)小程序的流程圖。軟件人員使用白盒方法測(cè)試程序模塊的檢查點(diǎn)主要包括:對(duì)24圖中,一個(gè)圓圈代表一行源程序代碼(或一個(gè)語(yǔ)句塊)。其中有五條通路,左邊曲線箭頭表示執(zhí)行次數(shù)不超過(guò)20次循環(huán)。這樣的執(zhí)行路徑就有520個(gè),近似為1014個(gè)可能的路徑。如果1ms完成一個(gè)測(cè)試,由此測(cè)試程序需3170年。由此看出,即使精確地實(shí)現(xiàn)了白盒測(cè)試,也不能斷言測(cè)試過(guò)的程序全正確,因?yàn)閷?shí)行窮舉測(cè)試,由于工作量過(guò)大,需用時(shí)間過(guò)長(zhǎng),實(shí)施起來(lái)是不現(xiàn)實(shí)的。這就是程序測(cè)試的經(jīng)濟(jì)學(xué)問(wèn)題。既然在測(cè)試階段窮舉法測(cè)試是不可行的,那么為了節(jié)省時(shí)間和資源,提高測(cè)試效率,就必須精心設(shè)計(jì)測(cè)試用例。需從大量的可用測(cè)試用例中精選出少量的測(cè)試數(shù)據(jù),使得采用這些測(cè)試數(shù)據(jù)能夠達(dá)到最佳的測(cè)試效果,即能高效地、盡可能多地發(fā)現(xiàn)隱藏的錯(cuò)誤。測(cè)試只能發(fā)現(xiàn)錯(cuò)誤,并不能保證程序沒(méi)有錯(cuò)誤。圖中,一個(gè)圓圈代表一行源程序代碼(或一個(gè)語(yǔ)句塊)。其25圖7.2白盒測(cè)試中的窮舉測(cè)試圖7.2白盒測(cè)試中的窮舉測(cè)試267.2.2白盒測(cè)試的測(cè)試用例設(shè)計(jì)測(cè)試用例設(shè)計(jì)的基本目的是確定一組最有可能發(fā)現(xiàn)某個(gè)錯(cuò)誤或某類錯(cuò)誤的測(cè)試數(shù)據(jù)。無(wú)論是黑盒測(cè)試(下節(jié)內(nèi)容介紹),還是白盒測(cè)試都不可能進(jìn)行窮舉測(cè)試,所以測(cè)試用例的設(shè)計(jì)只能在周期和經(jīng)費(fèi)允許的條件下,使用最少數(shù)目的測(cè)試用例,發(fā)現(xiàn)最大數(shù)目可能的錯(cuò)誤。實(shí)際工作中,采用黑盒與白盒相結(jié)合的技術(shù)是較為合理的做法,可以選取并測(cè)試數(shù)量有限的重要邏輯路徑,對(duì)一些重要數(shù)據(jù)結(jié)構(gòu)的正確性進(jìn)行完全的檢查。這樣不僅能證實(shí)軟件接口的正確性,同時(shí)在某種程度上能保證軟件內(nèi)部工作也是正確的。7.2.2白盒測(cè)試的測(cè)試用例設(shè)計(jì)27現(xiàn)在已經(jīng)提出了許多測(cè)試用例的設(shè)計(jì)技術(shù)。下面只對(duì)白盒測(cè)試的重要測(cè)試方法進(jìn)行介紹,黑盒測(cè)試的方法將在下節(jié)內(nèi)容中介紹。邏輯覆蓋是以程序內(nèi)部邏輯為基礎(chǔ)的測(cè)試技術(shù),屬白盒測(cè)試。這一測(cè)試考慮測(cè)試用例對(duì)程序內(nèi)部邏輯覆蓋的程度。當(dāng)然,最徹底的覆蓋是覆蓋程序中的每一條路徑,但是由于程序中可能會(huì)含有循環(huán),路徑的數(shù)目將極大,要執(zhí)行每一條路徑是不可能的,所以只希望覆蓋的程度盡可能高些。目前常用的一些覆蓋技術(shù)有以下八種。現(xiàn)在已經(jīng)提出了許多測(cè)試用例的設(shè)計(jì)技術(shù)。下面只對(duì)白盒測(cè)28

1.語(yǔ)句覆蓋語(yǔ)句覆蓋的含義是選擇足夠多的測(cè)試用例,使得被測(cè)程序中的每條語(yǔ)句至少執(zhí)行一次。圖7.3是測(cè)試的一段程序的流程圖對(duì)應(yīng)的C源程序(用C語(yǔ)言書(shū)寫(xiě))。floatA,B,X;

if(A>1&&B==0)X=X/A;if(A==2||X>1)X=X+1;……1.語(yǔ)句覆蓋……29為了使每條語(yǔ)句都執(zhí)行一次,程序應(yīng)該按sacbed路徑執(zhí)行,為實(shí)現(xiàn)此路徑而選取下面的一組輸入數(shù)據(jù)(實(shí)際上X可以是任意實(shí)數(shù)):A=2,B=0,X=2為了使每條語(yǔ)句都執(zhí)行一次,程序應(yīng)該按sacbed路徑30通過(guò)上例可以看出,這組數(shù)據(jù)只測(cè)試了條件為真的情況,若實(shí)際輸入的條件為假時(shí)有錯(cuò)誤顯然測(cè)試不出來(lái)。事實(shí)上,語(yǔ)句覆蓋對(duì)程序的邏輯覆蓋很少,語(yǔ)句覆蓋只關(guān)心判定表達(dá)式的值,而沒(méi)有分別測(cè)試判定表達(dá)式中每個(gè)條件取不同值的情況。在上例中,為了執(zhí)行sacbed路徑以測(cè)試每個(gè)語(yǔ)句,只需兩個(gè)判定表達(dá)(A>1)AND(B=0)和(A=2)OR(X>1)都取真值,上例中測(cè)試數(shù)據(jù)足夠滿足要求。但是,若程序中第一個(gè)判斷表達(dá)式中的邏輯運(yùn)算符“AND”錯(cuò)寫(xiě)成“OR”,或把第二個(gè)判定表達(dá)式中的條件“X>1”誤寫(xiě)成“X<1”,上組測(cè)試數(shù)據(jù)則不符要求,不能查出這些錯(cuò)誤。與后面所介紹的其他覆蓋相比,語(yǔ)句覆蓋是最弱的邏輯覆蓋準(zhǔn)則。通過(guò)上例可以看出,這組數(shù)據(jù)只測(cè)試了條件為真的情況,若31

2.判定覆蓋判定覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行所測(cè)程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次。判定覆蓋又稱為分支覆蓋。判定覆蓋的每個(gè)語(yǔ)句至少經(jīng)歷一次。例如對(duì)于圖7.3來(lái)說(shuō),能夠分別覆蓋路徑sacbed和sabd的一組測(cè)試數(shù)據(jù),或者覆蓋路徑sacbd和sabed的兩組測(cè)試數(shù)據(jù)均可滿足判定覆蓋標(biāo)準(zhǔn)。例如,以兩組測(cè)試數(shù)據(jù)就可做到判定覆蓋:(1)A=4,B=0,X=1(覆蓋sacbd);(2)A=2,B=1,X=3(覆蓋sabed)。判定覆蓋的缺點(diǎn)仍然是覆蓋的不全,只覆蓋了路徑的一半,如將X>1誤寫(xiě)成X<1,上組(1)數(shù)據(jù)仍覆蓋sacbd,可見(jiàn)判定覆蓋仍然很弱,但比語(yǔ)句覆蓋強(qiáng)。2.判定覆蓋32圖7.3語(yǔ)句覆蓋圖7.3語(yǔ)句覆蓋33

3.條件覆蓋條件覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行所測(cè)程序,使得程序中每個(gè)判斷的每個(gè)條件的可能取值至少執(zhí)行一次。條件覆蓋使得每個(gè)語(yǔ)句至少執(zhí)行一次。例如對(duì)于圖7.3來(lái)說(shuō),共有兩個(gè)判定表達(dá)式,每個(gè)表達(dá)式中有兩個(gè)條件。為滿足條件覆蓋,在a點(diǎn)有以下幾種情況出現(xiàn):A>1,A≤1,B=0,B≠0;在b點(diǎn)有以下幾種情況出現(xiàn):A=2,A≠2,X>1,X≤1。因而,只需要使用下面兩組測(cè)試數(shù)據(jù)就可達(dá)到上述覆蓋標(biāo)準(zhǔn)。3.條件覆蓋34(1)A=2,B=0,X=3(滿足A>1,B=0,A=2和X>1的條件,執(zhí)行路徑sacbed);(2)A=0,B=1,X=0(滿足A≤1,B≠0,A≠2和X≤1的條件執(zhí)行路徑sabd)。(1)A=2,B=0,X=3(滿足A>1,B=035條件覆蓋一般比判定覆蓋強(qiáng),因?yàn)闂l件覆蓋使判定表達(dá)式中每個(gè)條件都取到了兩個(gè)不同的結(jié)果,判定覆蓋卻只關(guān)心整個(gè)判定表達(dá)式的值。上例兩組測(cè)試數(shù)據(jù)也同時(shí)滿足判定覆蓋標(biāo)準(zhǔn)。但是,也可能有相反情況:雖然每個(gè)條件都取到了兩個(gè)不同的結(jié)果,判定表達(dá)式卻始終只取一個(gè)值。例如,若使用以下兩組測(cè)試數(shù)據(jù),則只滿足條件覆蓋標(biāo)準(zhǔn)并不滿足判定覆蓋標(biāo)準(zhǔn)。(1)A=2,B=0,X=1(滿足A>1,B=0,A=2和X≤1的條件,執(zhí)行路徑sacbed);(2)A=1,B=1,X=2(滿足A≤1,B≠0,A≠2和X>1的條件,執(zhí)行路徑sabed)。上述例子的第二個(gè)判定表達(dá)式的值總為真,不滿足判定覆蓋的要求,為解決這一矛盾,需要對(duì)條件和分支兼顧。條件覆蓋一般比判定覆蓋強(qiáng),因?yàn)闂l件覆蓋使判定表達(dá)式中36

4.判定/條件覆蓋判定/條件覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,使得判斷中每個(gè)條件的所有可能取值至少執(zhí)行一次,同時(shí)每個(gè)判斷的所有可能判斷結(jié)果至少執(zhí)行一次。即要求各個(gè)判斷的所有可能的條件取值組合至少執(zhí)行一次。對(duì)于圖7.3的例子而言,下述兩組測(cè)試數(shù)據(jù)滿足判定/條件覆蓋標(biāo)準(zhǔn)。(1)A=2,B=0,X=4;(2)A=1,B=1,X=1。4.判定/條件覆蓋37判定/條件覆蓋也有缺陷。從表面來(lái)看,它測(cè)試了所有條件的取值。但實(shí)際并不是這樣。因?yàn)橐恍l件往往掩蓋了另一些條件。對(duì)于條件表達(dá)式(A>1)AND(B=0)來(lái)說(shuō),只要(A>1)的測(cè)試為真,才需測(cè)試(B=0)的值來(lái)確定此表達(dá)式的值,但是若(A>1)的測(cè)試值為假時(shí),不需再測(cè)(B=0)的值就可確定此表達(dá)式的值為假,因而B(niǎo)=0沒(méi)有被檢查。同理,對(duì)于(A=2)OR(X>1)這個(gè)表達(dá)式來(lái)說(shuō),只要(A=2)測(cè)試結(jié)果為真,不必測(cè)試(X>1)的結(jié)果就可確定表達(dá)式的值為真。所以對(duì)于判定/條件覆蓋來(lái)說(shuō),邏輯表達(dá)式中的錯(cuò)誤不一定能夠查得出來(lái)。判定/條件覆蓋也有缺陷。從表面來(lái)看,它測(cè)試了所有條件38

5.條件組合覆蓋條件組合覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,運(yùn)行所測(cè)程序,使得每個(gè)判斷的所有可能的條件取值組合至少執(zhí)行一次。對(duì)于圖7.3的例子來(lái)說(shuō),共有以下八種可能的條件組合:(1)A>1,B=0屬第一個(gè)判斷的取真分支;(2)A>1,B≠0屬第一個(gè)判斷的取假分支;(3)A≤1,B=0屬第一個(gè)判斷的取假分支;5.條件組合覆蓋39(4)A≤1,B≠0屬第一個(gè)判斷的取假分支;(5)A=2,X>1屬第二個(gè)判斷的取真分支;(6)A=2,X≤1屬第二個(gè)判斷的取真分支;(7)A≠2,X>1屬第二個(gè)判斷的取真分支;(8)A≠2,X≤1屬第二個(gè)判斷的取假分支。(4)A≤1,B≠0屬第一個(gè)判斷的取假分支;40對(duì)于每個(gè)判斷,要求所有可能的條件的取值組合都必須取到。在圖7.3中,每個(gè)判斷各有兩個(gè)條件,所以各有四個(gè)條件取值的組合。下面的四組測(cè)試數(shù)據(jù)可以使上面列出的八種組合每種至少出現(xiàn)一次:(1)A=2,B=0,X=4(針對(duì)(1),(5)兩種組合,執(zhí)行路徑sacbed);(2)A=2,B=1,X=1(針對(duì)(2),(6)兩種組合,執(zhí)行路徑sabed);(3)A=1,B=0,X=2(針對(duì)(3),(7)兩種組合,執(zhí)行路徑sabed);(4)A=1,B=1,X=1(針對(duì)(4),(8)兩種組合,執(zhí)行路徑sabd)。對(duì)于每個(gè)判斷,要求所有可能的條件的取值組合都必須取到41必須明確:在此例中條件組合覆蓋并未要求第一個(gè)判定的四個(gè)組合與第二個(gè)判定的四個(gè)組合再進(jìn)行組合,要那樣的話,就需42=16個(gè)測(cè)試用例了。顯然,滿足條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù),也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋標(biāo)準(zhǔn)。因此,條件組合覆蓋是前述幾種覆蓋標(biāo)準(zhǔn)中最強(qiáng)的。但是,滿足條件覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù)并不一定能使程序中的每條路徑都執(zhí)行到,如上述四組測(cè)試數(shù)據(jù)都沒(méi)有測(cè)試到路徑sacbd。以上簡(jiǎn)單介紹了幾種邏輯覆蓋標(biāo)準(zhǔn)。在上述過(guò)程中,實(shí)現(xiàn)了多次涉及到測(cè)試數(shù)據(jù)執(zhí)行的路徑測(cè)試。顯然,測(cè)試數(shù)據(jù)可檢測(cè)的程序路徑的多少也反映了對(duì)程序測(cè)試的詳盡程度。從對(duì)程序路徑的覆蓋程度分析,下面提出一些主要的邏輯覆蓋標(biāo)準(zhǔn)。必須明確:在此例中條件組合覆蓋并未要求第一個(gè)判定的四42

6.點(diǎn)覆蓋點(diǎn)覆蓋是設(shè)計(jì)足夠的測(cè)試數(shù)據(jù),使程序執(zhí)行時(shí)至少經(jīng)過(guò)程序圖中每個(gè)節(jié)點(diǎn)一次。圖論中,點(diǎn)覆蓋的概念定義如下:如果連通圖G的子圖G"是連通的,且包含G的所有節(jié)點(diǎn),則稱G"是G的點(diǎn)覆蓋。在正常情況下,程序圖是連通的有向圖,圖中每個(gè)節(jié)點(diǎn)相當(dāng)于程序流程圖中的一框(一個(gè)或多個(gè)語(yǔ)句),所以點(diǎn)覆蓋相當(dāng)于語(yǔ)句覆蓋。6.點(diǎn)覆蓋43

7.邊覆蓋邊覆蓋是設(shè)計(jì)足夠的測(cè)試數(shù)據(jù),使得程序執(zhí)行路徑至少經(jīng)過(guò)程序圖中每一個(gè)邊一次,相應(yīng)的圖論中的定義是:如果連通圖G和子圖G"是連通的,而且G"包含G的所有邊,則稱G"是G的邊覆蓋。圖7.4是由圖7.3得出的程序圖。為了使程序執(zhí)行路徑經(jīng)過(guò)程序圖的邊覆蓋(1,2,3,4,5,6,7),至少需要兩組測(cè)試數(shù)據(jù)(分別執(zhí)行路徑1-2-3和1-4-5-6-7,或分別執(zhí)行路徑1-4-5-3和1-2-6-7)。7.邊覆蓋44一般情況下,邊覆蓋和判定覆蓋是一致的。例如,上述中滿足判定覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù)同時(shí)滿足邊覆蓋的標(biāo)準(zhǔn)。(1)A=4,B=0,X=1(執(zhí)行路徑1-4-5-3,即覆蓋sacbd);(2)A=2,B=1,X=3(執(zhí)行路徑1-2-6-7,即覆蓋sacbd)。一般情況下,邊覆蓋和判定覆蓋是一致的。例如,上述中滿45圖7.4和圖7.3對(duì)應(yīng)的程序圖圖7.4和圖7.3對(duì)應(yīng)的程序圖46

8.路徑覆蓋路徑覆蓋是選取足夠多測(cè)試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)行一次(若程序圖中存在環(huán),則要求每個(gè)環(huán)至少經(jīng)過(guò)一次)。對(duì)于圖7.4而言,共有四條可執(zhí)行的路徑:1-2-3;1-2-6-7;1-4-5-3和1-4-5-6-7。對(duì)應(yīng)于這四條路徑,下面四組測(cè)試數(shù)據(jù)可以滿足路徑覆蓋標(biāo)準(zhǔn):(1)A=1,B=1,X=1(執(zhí)行路徑1-2-3);(2)A=1,B=1,X=2(執(zhí)行路徑1-2-6-7);(3)A=3,B=0,X=1(執(zhí)行路徑1-4-5-3);(4)A=2,B=0,X=4(執(zhí)行路徑1-4-5-6-7)。8.路徑覆蓋47路徑覆蓋相對(duì)來(lái)說(shuō)是相當(dāng)強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn)。測(cè)試數(shù)據(jù)暴露程序錯(cuò)誤的能力比較強(qiáng),有一定的代表性,它能夠保證程序中每條可能的路徑都至少執(zhí)行一次。但是路徑覆蓋并沒(méi)有檢驗(yàn)表達(dá)式中條件的各種組合情況,而只考慮每個(gè)判定表達(dá)式的取值。若把路徑覆蓋和條件覆蓋組合起來(lái),可以設(shè)計(jì)出檢錯(cuò)能力更強(qiáng)的測(cè)試數(shù)據(jù)。路徑覆蓋相對(duì)來(lái)說(shuō)是相當(dāng)強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn)。測(cè)試數(shù)據(jù)暴露487.3黑盒測(cè)試技術(shù)7.3.1黑盒測(cè)試概念黑盒測(cè)試方法是在已知產(chǎn)品應(yīng)該具有的功能的情況下,通過(guò)測(cè)試來(lái)檢驗(yàn)是否每個(gè)功能都能正常使用的測(cè)試方法。對(duì)于軟件測(cè)試而言,黑盒測(cè)試法把程序看成一個(gè)黑盒子,完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過(guò)程。黑盒測(cè)試是在程序接口進(jìn)行的測(cè)試,它只檢查程序功能是否能按照規(guī)格說(shuō)明書(shū)的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)產(chǎn)生正確的輸出信息,并且保持外部信息(如數(shù)據(jù)庫(kù)或文件)的完整性。黑盒測(cè)試又稱功能測(cè)試。使用黑盒測(cè)試法,為了做到窮盡測(cè)試,至少必須對(duì)所有輸入數(shù)據(jù)的各種可能值的排列組合都進(jìn)行測(cè)試。與白盒法相似,由此得到的應(yīng)測(cè)試的情況數(shù)往往大到實(shí)際上根本無(wú)法測(cè)試的程度,即黑盒測(cè)試使用所有有效和無(wú)效的輸入數(shù)據(jù)來(lái)測(cè)試程序是不現(xiàn)實(shí)的。所以,黑盒測(cè)試同樣不能做到窮盡測(cè)試,只能選取少量最有代表性的輸入數(shù)據(jù),以期用較少的代價(jià)暴露出較多的程序錯(cuò)誤。7.3黑盒測(cè)試技術(shù)7.3.1黑盒測(cè)試概念497.3.2黑盒測(cè)試的測(cè)試用例設(shè)計(jì)1.等價(jià)類劃分1)劃分等價(jià)類等價(jià)類劃分是黑盒法設(shè)計(jì)測(cè)試方案的一種典型的、實(shí)用的重要測(cè)試方法。等價(jià)類劃分是根據(jù)數(shù)據(jù)測(cè)試的等效性原理來(lái)進(jìn)行劃分的。數(shù)據(jù)測(cè)試的等效性是指將分類的數(shù)據(jù)取其子集中一個(gè)數(shù)據(jù)做測(cè)試與子集中其他數(shù)據(jù)測(cè)試的效果是等效的,即子集中的一個(gè)數(shù)據(jù)能測(cè)出軟件錯(cuò)誤,那么子集中的其余數(shù)據(jù)也能測(cè)出錯(cuò)誤;相反,子集中的一個(gè)數(shù)據(jù)測(cè)試不出程序錯(cuò)誤,子集中的其余數(shù)據(jù)也測(cè)不出錯(cuò)誤。7.3.2黑盒測(cè)試的測(cè)試用例設(shè)計(jì)50等價(jià)類劃分是把程序的輸入數(shù)據(jù)集合按輸入條件劃分為若干個(gè)等價(jià)類,每一個(gè)等價(jià)類相對(duì)于輸入條件表示為一組有效或無(wú)效的輸入,然后為每一等價(jià)類設(shè)計(jì)一個(gè)測(cè)試用例。如果某個(gè)等價(jià)類中的一個(gè)輸入條件作為測(cè)試數(shù)據(jù)查出了錯(cuò)誤,那么使用這一等價(jià)類中的其他輸入條件,也會(huì)查出同樣的錯(cuò)誤;反之,若使用某個(gè)等價(jià)類中的一個(gè)輸入條件作為數(shù)據(jù)進(jìn)行測(cè)試沒(méi)有查出錯(cuò)誤,則使用這個(gè)等價(jià)類中的其他輸入條件也同樣查不出錯(cuò)誤。簡(jiǎn)單地講,有效等價(jià)類是指程序的合理輸入數(shù)據(jù),利用它可檢驗(yàn)程序是否能實(shí)現(xiàn)預(yù)期的功能和性能。無(wú)效等價(jià)類是指其他不合理、無(wú)意義的數(shù)據(jù),利用它可檢查程序中功能和性能的實(shí)現(xiàn)是否不符合規(guī)格說(shuō)明要求。在確定輸入等價(jià)類時(shí)還需要分析輸出數(shù)據(jù)的等價(jià)類,以便根據(jù)輸出數(shù)據(jù)的等價(jià)類導(dǎo)出對(duì)應(yīng)的輸入等價(jià)類。等價(jià)類的劃分在很大程度上是一個(gè)探索性的過(guò)程,主要依靠的是測(cè)試人員的經(jīng)驗(yàn),下面幾點(diǎn)僅供參考。等價(jià)類劃分是把程序的輸入數(shù)據(jù)集合按輸入條件劃分為若干51(1)如果某個(gè)輸入條件規(guī)定了輸入值的范圍(其數(shù)值為1~999),則可劃分為一個(gè)合理等價(jià)類(大于等于1而小于等于999的數(shù))和兩個(gè)不合理的等價(jià)類(小于1和大于999的數(shù))。(2)如果某個(gè)輸入條件規(guī)定了輸入數(shù)據(jù)的個(gè)數(shù)(如每名學(xué)生一學(xué)期內(nèi)只能選修1~3門(mén)課程),則可劃分為一個(gè)高效等價(jià)類(選修1~3門(mén)課程)和兩個(gè)無(wú)效等價(jià)類(不選修和選修超過(guò)3門(mén))。(3)如果某個(gè)輸入條件規(guī)定了一組可能的值,而且程序可以對(duì)每個(gè)輸入值分別進(jìn)行處理(如出差時(shí)交通工具的類型必須是火車、汽車或輪船),那么可以為每一組確定一個(gè)有效等價(jià)類(如火車、汽車和輪船三種),同時(shí)對(duì)一組值確定一個(gè)無(wú)效等價(jià)類(如飛機(jī))。(1)如果某個(gè)輸入條件規(guī)定了輸入值的范圍(其數(shù)值為52(4)如果某個(gè)輸入條件規(guī)定了必須成立的條件(比如標(biāo)識(shí)符的第一個(gè)字符必須是字母),則可劃分為一個(gè)有效等價(jià)類(第一個(gè)字符是字母)和一個(gè)無(wú)效等價(jià)類(第一個(gè)字符不是字母)。(5)如果認(rèn)為程序?qū)床煌姆绞絹?lái)處理某個(gè)等價(jià)類中的各種測(cè)試用例,則應(yīng)將這個(gè)等價(jià)類再分成幾個(gè)更小的等價(jià)類。如上面第③點(diǎn)就將一個(gè)有效的等價(jià)類又分成火車、汽車和輪船三個(gè)等價(jià)類。(6)如果輸入條件是一個(gè)布爾量,則可以確定一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。(7)如果規(guī)定了輸入數(shù)據(jù)為整數(shù),則可以劃分為正整數(shù)、零和負(fù)整數(shù)三個(gè)有效等價(jià)類為測(cè)試數(shù)據(jù)。(4)如果某個(gè)輸入條件規(guī)定了必須成立的條件(比如標(biāo)532)確定測(cè)試用例根據(jù)等價(jià)類來(lái)設(shè)計(jì)測(cè)試用例,其過(guò)程如下:(1)為每個(gè)等價(jià)類規(guī)定一個(gè)惟一的編號(hào)。(2)設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋未被覆蓋的有效等價(jià)類,此項(xiàng)工作重復(fù)進(jìn)行,直到所有的有效等價(jià)類都被覆蓋為止。(3)設(shè)計(jì)一個(gè)新的測(cè)試用例,使其覆蓋一個(gè)(而且僅僅一個(gè))尚未被覆蓋的無(wú)效等價(jià)類,此項(xiàng)工作重復(fù)進(jìn)行,直到所有的無(wú)效等價(jià)類都被覆蓋為止。2)確定測(cè)試用例54之所以要這樣做,是因?yàn)槟承┏绦蛑袑?duì)某一輸入錯(cuò)誤的檢查往往會(huì)屏蔽對(duì)其他輸入錯(cuò)誤的檢查,因此,必須針對(duì)每一個(gè)無(wú)效等價(jià)類,分別設(shè)計(jì)測(cè)試用例。例如,某程序的功能說(shuō)明規(guī)定:輸入書(shū)的類型分別為精裝本、平裝本或線裝本,書(shū)的數(shù)量為1~999冊(cè)。若測(cè)試用例的輸入數(shù)據(jù)類型為“活頁(yè)”,且書(shū)目的數(shù)量為“0”,此情況覆蓋了兩個(gè)不合理的條件(類型和數(shù)量都是錯(cuò)誤的)。當(dāng)程序檢查到書(shū)的類型錯(cuò)誤時(shí),就可能不再去檢查數(shù)量是否也是錯(cuò)誤的。之所以要這樣做,是因?yàn)槟承┏绦蛑袑?duì)某一輸入錯(cuò)誤的檢查553)用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例的案例某Pascal語(yǔ)言將數(shù)字串轉(zhuǎn)換為整數(shù)的函數(shù)說(shuō)明如下:Functionstroint(dstr:shorstr):integer;typeshorstr=array[1··]ofchar其中,參數(shù)為shorstr,被處理的數(shù)字串是右對(duì)齊的,也就是說(shuō),當(dāng)數(shù)字串比六個(gè)字符短,則在它的左邊補(bǔ)空格;如果數(shù)字串是負(fù)的,則負(fù)號(hào)和最高位數(shù)字緊相鄰,負(fù)號(hào)在最高位數(shù)字左邊一列?!?)用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例的案例…56由于Pascal編譯程序有檢測(cè)字符串超界的功能,所以數(shù)字串不等于六的數(shù)組可不設(shè)計(jì)測(cè)試用例,又由于Pascal編譯能檢測(cè)數(shù)組類型,所以也不需要為非字符數(shù)組類型做測(cè)試數(shù)據(jù)。由于所用計(jì)算機(jī)字長(zhǎng)16位,所以用二進(jìn)制數(shù)表示的范圍為-32768~32767。依據(jù)輸入/輸出的有效與無(wú)效等價(jià)類劃分如下。由于Pascal編譯程序有檢測(cè)字符串超界的功能,所以57有效輸入等價(jià)類有:①1~6個(gè)數(shù)字組成的數(shù)字串(最高位數(shù)字不是零)②最高位數(shù)字是零的數(shù)字串③最高位數(shù)字左鄰是負(fù)號(hào)的數(shù)字串有效輸出的等價(jià)類:①在計(jì)算機(jī)能表示的最小負(fù)整數(shù)和零之間的負(fù)整數(shù)②零③在零和計(jì)算機(jī)能表示的最大正整數(shù)之間的正整數(shù)有效輸入等價(jià)類有:58無(wú)效輸入等價(jià)類:①空字符串(全是空格)②左部填充的字符,既不是零也不是空格③最高位數(shù)后面,由數(shù)字和空格混合組成④負(fù)號(hào)與取高位數(shù)之間的空格⑤最高位數(shù)字右面,由數(shù)字和其他字符混合組成無(wú)效輸入等價(jià)類:59無(wú)效輸出的等價(jià)類:①比計(jì)算機(jī)能表示的最小負(fù)數(shù)還小的負(fù)整數(shù)②比計(jì)算機(jī)能表示的最大正整數(shù)還大的正整數(shù)依據(jù)上面劃分出的等價(jià)類,可以設(shè)計(jì)下述測(cè)試方案(每個(gè)測(cè)試方案由三部分內(nèi)容組成):(1)輸入是1~6個(gè)數(shù)字組成的數(shù)字串,輸出是合法的正整數(shù)。例如:輸入:‘1’預(yù)期的輸出:1(2)輸入是最高位數(shù)字為零的數(shù)字串,輸出是合法的正整數(shù)。例如:輸入:‘000001’預(yù)期的輸出:1無(wú)效輸出的等價(jià)類:60(3)輸入是負(fù)號(hào)與最高位數(shù)字緊相鄰的數(shù)字串,輸出是合法的負(fù)整數(shù)。例如:輸入:‘-00001’預(yù)期的輸出:-1(4)輸入是計(jì)算機(jī)能表示的最小負(fù)整數(shù)與零之間的負(fù)整數(shù),輸出為合法的負(fù)整數(shù)。例如:輸入‘-02768’預(yù)期的輸出:-2768(5)輸入是零字符串,輸出為零。例如:輸入:‘000000’預(yù)期的輸出:0(3)輸入是負(fù)號(hào)與最高位數(shù)字緊相鄰的數(shù)字串,輸出是61(6)輸入是在零和計(jì)算機(jī)能表示的最大正整數(shù)之間的正整數(shù),輸出為合法的正整數(shù)。例如:輸入:‘032754’預(yù)期的輸出:32754(7)輸入為空字符串。例如:輸入:‘’預(yù)期的輸出:“錯(cuò)誤——無(wú)效輸入”(8)輸入的左部非零非空格。例如:輸入:‘?????1’預(yù)期的輸出:“錯(cuò)誤——填充錯(cuò)”(9)輸入的最高位數(shù)字右面由數(shù)字與空格混合。例如:輸入:‘12’預(yù)期的輸出:“錯(cuò)誤——無(wú)效輸入”(6)輸入是在零和計(jì)算機(jī)能表示的最大正整數(shù)之間的正62(10)輸入的負(fù)號(hào)與最高位有空格。例如:輸入:‘-13’預(yù)期的輸出:“錯(cuò)誤——負(fù)號(hào)位錯(cuò)”(11)輸入的最高位數(shù)字右面由數(shù)字與其他字符混合。例如:輸入:‘12?x3’預(yù)期的輸出:“錯(cuò)誤——無(wú)效輸入”(12)輸入為比最小負(fù)整數(shù)小的負(fù)整數(shù)。例如:輸入:‘-56889’預(yù)期的輸出:“錯(cuò)誤--無(wú)效輸入”(13)輸入為比最大正整數(shù)還大的正整數(shù)。例如:輸入:‘133867’預(yù)期的輸出:“錯(cuò)誤——無(wú)效輸入”(10)輸入的負(fù)號(hào)與最高位有空格。例如:63

2.邊界值分析1)邊界值分析從長(zhǎng)期的實(shí)踐中得知,處理邊界情況時(shí),程序最容易發(fā)生錯(cuò)誤。所以,在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)該選擇一些邊界值,這就是邊界值分析的測(cè)試技術(shù)。邊界值分析也是一種黑盒測(cè)試方法,是對(duì)等價(jià)類劃分方法的補(bǔ)充。2.邊界值分析64使用邊界值分析方法設(shè)計(jì)測(cè)試用例時(shí),首先要確定邊界情況,這需要經(jīng)驗(yàn)和創(chuàng)造性。通常,輸入等價(jià)類和輸出等價(jià)類的邊界就是應(yīng)該著重測(cè)試的程序邊界情況。選取的測(cè)試數(shù)據(jù)應(yīng)該剛好等于、剛好小于和剛好大于邊界值,而不是先取每個(gè)等價(jià)類內(nèi)的典型值或任意值作為測(cè)試數(shù)據(jù)。例如,對(duì)于上述將數(shù)串轉(zhuǎn)換為整數(shù)的例子來(lái)說(shuō),從邊界值角度考慮應(yīng)再補(bǔ)加下述測(cè)試方案。使用邊界值分析方法設(shè)計(jì)測(cè)試用例時(shí),首先要確定邊界情況65(1)使輸出剛好等于最小的負(fù)整數(shù)。例如:輸入:‘-32768’預(yù)期的輸出:-32768(2)使輸出剛好等于最大的正整數(shù)。例如:輸入:‘32767’預(yù)期的輸出:32767(3)使輸出剛好小于最小的負(fù)整數(shù)。例如:輸入:‘-32769’預(yù)期的輸出:“錯(cuò)誤——無(wú)效輸入”(4)使輸出剛好大于最大的正整數(shù)。例如:輸入:‘32768’預(yù)期的輸出:“錯(cuò)誤——無(wú)效輸入”(1)使輸出剛好等于最小的負(fù)整數(shù)。例如:66另外,依據(jù)邊界值分析法的要求,應(yīng)該分別使用長(zhǎng)度為0,1和6的數(shù)字串作為測(cè)試數(shù)據(jù)。通常,設(shè)計(jì)測(cè)試方案時(shí)總是把等價(jià)類劃分和邊界值分析兩種技術(shù)聯(lián)合起來(lái)使用,使得測(cè)試用例有所減少。另外,依據(jù)邊界值分析法的要求,應(yīng)該分別使用長(zhǎng)度為0,672)確定測(cè)試用例(1)邊界值分析不是從等價(jià)類中隨便選一個(gè)數(shù)據(jù)作為代表,而是選一個(gè)或幾個(gè)特定值,使這個(gè)等價(jià)類的每個(gè)邊界都作為測(cè)試的目標(biāo)。(2)邊界值分析不僅要考慮輸入條件,而且要考慮輸出情況(即輸出等價(jià)類)。邊界值分析法選擇測(cè)試用例的原則如下:2)確定測(cè)試用例68●如果某個(gè)輸入條件規(guī)定了數(shù)據(jù)的大小,可以選擇正好等于邊界值的數(shù)據(jù)作為合理的測(cè)試用例,同時(shí)還要選擇正好越過(guò)邊界值的數(shù)據(jù)作為不合理的測(cè)試用例。例如,若輸入值的范圍是“-1.0~1.0”,則可選取“-1.0”,“1.0”,“-1.001”,“1.001”作為測(cè)試輸入數(shù)據(jù)?!袢绻硞€(gè)輸入條件規(guī)定了數(shù)據(jù)的個(gè)數(shù),則可分別設(shè)計(jì)邊界值和超過(guò)邊界值的測(cè)試用例。如某輸入文件有1~255個(gè)記錄,則可選擇0個(gè),1個(gè),255個(gè)和256個(gè)記錄作為測(cè)試的輸入數(shù)據(jù)?!袢绻硞€(gè)輸入條件規(guī)定了數(shù)據(jù)的大小,可以選擇正好等69●根據(jù)規(guī)格說(shuō)明的每個(gè)輸出條件,使用前面的原則(1)。例如,設(shè)計(jì)每月工資的折扣數(shù)程序,最低額為0元,最高額為500元,這時(shí)可選擇0元、500元、負(fù)值和大于500元的測(cè)試用例?!窀鶕?jù)規(guī)格說(shuō)明的每個(gè)輸出條件,使用前面的原則(2)。例如,某一情報(bào)檢索系統(tǒng),根據(jù)某一輸入的請(qǐng)求,要求顯示幾項(xiàng)最新報(bào)道,但不能多于5條,這時(shí)可選擇使程序分別顯示0、1和5項(xiàng)報(bào)道作為測(cè)試用例,另外還要設(shè)計(jì)使程序顯示6項(xiàng)報(bào)導(dǎo)的錯(cuò)誤測(cè)試用例?!袢绻绦虻妮斎牖蜉敵鍪怯行蚣?如有序表、線性表),則應(yīng)把注意力放在集合內(nèi)的第一個(gè)和最后一個(gè)元素上。●根據(jù)規(guī)格說(shuō)明的每個(gè)輸出條件,使用前面的原則(1)70●如果程序中使用了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測(cè)試用例。例如,程序中定義了一個(gè)數(shù)組,其元素下標(biāo)的上界和下界分別為200和0,則應(yīng)選擇0與200作為測(cè)試用例?!穹治鲆?guī)格說(shuō)明,找出其他可能的邊界條件?!袢绻绦蛑惺褂昧艘粋€(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個(gè)71

3.因果圖法因果圖是設(shè)計(jì)測(cè)試用例的一種工具,它主要檢查各種輸入條件的組合。等價(jià)類劃分、邊界值分析的測(cè)試用例設(shè)計(jì)方法還不能考慮到組合輸入條件可能引起軟件錯(cuò)誤,而因果圖法則彌補(bǔ)了這個(gè)不足之處。3.因果圖法721)設(shè)計(jì)測(cè)試用例因果圖的測(cè)試用例設(shè)計(jì)步驟如下:(1)分析規(guī)格說(shuō)明中的輸入作為因,輸出作為果。(2)依據(jù)因果的處理語(yǔ)義畫(huà)出因果圖。(3)標(biāo)出因果圖的約束條件。(4)將因果圖轉(zhuǎn)換為因果圖所對(duì)應(yīng)的判定表。(5)根據(jù)判定表設(shè)計(jì)測(cè)試用例。1)設(shè)計(jì)測(cè)試用例73圖7.5因果圖定義符號(hào)恒等;(b)非;(c)或;(d)與;(e)異約束;(f)或約束;(g)惟一約束;(h)要求約束;(i)強(qiáng)制約束圖7.5因果圖定義符號(hào)74其中,(a)圖表示恒等:表示原因與結(jié)果之間是一對(duì)一的對(duì)應(yīng)關(guān)系。若原因出現(xiàn),則結(jié)果出現(xiàn)。若原因不出現(xiàn),則結(jié)果也不出現(xiàn)。(b)圖表示非:表示原因與結(jié)果之間的一種否定關(guān)系。若原因出現(xiàn),則結(jié)果不出現(xiàn)。若原因不出現(xiàn),則結(jié)果出現(xiàn)。(c)圖表示或(∨):表示若幾個(gè)原因中有一個(gè)出現(xiàn),則結(jié)果出現(xiàn),只有當(dāng)這幾個(gè)原因都不出現(xiàn)時(shí),結(jié)果才不出現(xiàn)。(d)圖表示與(∧):表示若幾個(gè)原因都出現(xiàn),結(jié)果才出現(xiàn)。若幾個(gè)原因中有一個(gè)不出現(xiàn),結(jié)果就不出現(xiàn)。(e)圖表示異約束:表示a,b兩個(gè)原因不會(huì)同時(shí)成立,兩個(gè)中最多有一個(gè)可能成立。(f)圖表示或約束:表示a,b,c三個(gè)原因中至少有一個(gè)必須成立。(g)圖表示惟一約束:表示a和b原因當(dāng)中必須有一個(gè),且僅有一個(gè)成立。(h)圖表示要求約束:表示當(dāng)a出現(xiàn)時(shí),b必須也出現(xiàn),不可能a出現(xiàn),b不出現(xiàn)。(i)圖表示強(qiáng)制約束:它表示當(dāng)a是1時(shí),b必須是0,而當(dāng)a為0時(shí),b的值不定。其中,(a)圖表示恒等:表示原因與結(jié)果之間是一對(duì)一的752)利用因果圖設(shè)計(jì)測(cè)試用例的實(shí)例某規(guī)格說(shuō)明:“第一列字符必須是A或者B,第二列字符必須是一個(gè)數(shù)字,第一、二兩列都滿足時(shí)修改文件,第一列不正確時(shí)給出信息L,第二列不正確時(shí)給出信息M。”(1)分析規(guī)格說(shuō)明并編號(hào)。因:第一列字符是A①第一列字符是B②約束①②只有一個(gè)為1,不能同時(shí)為12)利用因果圖設(shè)計(jì)測(cè)試用例的實(shí)例約束①②只有一個(gè)為76第二列字符是數(shù)字③果:一列正確E①②1111=①∨②∨修改文件=∧③即(①∨②)∧③給出L信息=即①∨②給出M信息=③2111112223第二列字符是數(shù)字③果:一列正確E①②1111=①∨②∨修77圖7.6因果圖例圖7.6因果圖例78(3)將因果圖轉(zhuǎn)換為判定表(如表7.1所示):遇到E約束記為X;條件和輸出結(jié)果編號(hào)成立時(shí)記為1,否則記為0;表中每一列視為測(cè)試規(guī)則。表7.1判定表?③組合條件12345678?①條件原因②

111X110X101110010111010100100000XXXXXX010001010001100X0X③11動(dòng)作結(jié)果222123(3)將因果圖轉(zhuǎn)換為判定表(如表7.1所示):遇到79(4)根據(jù)判定表的3~8列編寫(xiě)測(cè)試用例如下:根據(jù)3列輸入:A3,A8輸出:修改文件根據(jù)5列輸入:B4,B5輸出:修改文件根據(jù)4列輸入:AM,A?給出信息M根據(jù)6列輸入:BB,BC給出信息M根據(jù)7列輸入:M1,X6給出信息L根據(jù)8列輸入:XY,MN給出信息M與L(4)根據(jù)判定表的3~8列編寫(xiě)測(cè)試用例如下:80

4.錯(cuò)誤推測(cè)法測(cè)試工作是一項(xiàng)十分艱巨和復(fù)雜的工作,它具有創(chuàng)造性。通過(guò)對(duì)程序出錯(cuò)的共性分析,黑盒法中的等價(jià)類劃分、邊界值分析、因果圖法已經(jīng)可以達(dá)到用較少用例測(cè)試較多軟件錯(cuò)誤的目的。但是,各種程序由于其自身特點(diǎn)(如開(kāi)發(fā)環(huán)境的不同及應(yīng)用環(huán)境的不同等),通常又有各自特定的容易出錯(cuò)的地方。例如,財(cái)務(wù)管理系統(tǒng)和工廠的機(jī)床控制系統(tǒng)由于其各自的開(kāi)發(fā)工具、應(yīng)用環(huán)境的不同,因而程序中容易出錯(cuò)的地方也不相同。因而,在設(shè)計(jì)測(cè)試用例時(shí),需考慮程序自身的特點(diǎn),設(shè)計(jì)出相應(yīng)的測(cè)試用例。當(dāng)然,這主要依靠測(cè)試人員的經(jīng)驗(yàn)和直覺(jué)。人們?cè)陂L(zhǎng)期的軟件測(cè)試中積累了許多豐富的測(cè)試經(jīng)驗(yàn),已掌握了那些最容易測(cè)出軟件的錯(cuò)誤的數(shù)據(jù),用這樣的數(shù)據(jù)測(cè)試效率會(huì)更快。這種根據(jù)經(jīng)驗(yàn)來(lái)設(shè)計(jì)程序測(cè)試用例的方法稱錯(cuò)誤推測(cè)法。常用的方法如下:4.錯(cuò)誤推測(cè)法81(1)零作為測(cè)試數(shù)據(jù)往往容易使程序發(fā)生錯(cuò)誤。(2)分析規(guī)格說(shuō)明書(shū)中的漏洞,編寫(xiě)測(cè)試數(shù)據(jù)。(3)根據(jù)尚未發(fā)現(xiàn)的軟件錯(cuò)誤與已發(fā)現(xiàn)軟件錯(cuò)誤成正比的統(tǒng)計(jì)規(guī)律,進(jìn)一步測(cè)試時(shí)重點(diǎn)測(cè)試已發(fā)現(xiàn)錯(cuò)誤的程序段。(4)等價(jià)類劃分與邊界值分析容易忽略組合的測(cè)試數(shù)據(jù),因而,可采用判定表或判定樹(shù)列出測(cè)試數(shù)據(jù)。(5)與人工代碼審查相結(jié)合,兩個(gè)模塊中共享的變量已被做修改的,可用來(lái)做測(cè)試用例。因?yàn)閷?duì)一個(gè)模塊測(cè)試出錯(cuò),同樣會(huì)引起另一模塊的錯(cuò)誤。(1)零作為測(cè)試數(shù)據(jù)往往容易使程序發(fā)生錯(cuò)誤。827.4軟件測(cè)試計(jì)劃和測(cè)試分析報(bào)告軟件測(cè)試是軟件生命周期中一個(gè)非常重要的階段,是保證程序質(zhì)量的必不可少的操作步驟。為了提高軟件的測(cè)試效率,必須使軟件測(cè)試有計(jì)劃的、有條不紊地進(jìn)行,因而須編制相應(yīng)的測(cè)試文檔。測(cè)試文檔主要由測(cè)試計(jì)劃和測(cè)試分析報(bào)告組成。根據(jù)GB8567-88《計(jì)算機(jī)軟件產(chǎn)品開(kāi)發(fā)文件編制指南書(shū)》中的《測(cè)試計(jì)劃》、《測(cè)試分析報(bào)告》以及GB9386-88《計(jì)算機(jī)軟件測(cè)試文件編制規(guī)范》,測(cè)試計(jì)劃可細(xì)化為測(cè)試計(jì)劃、測(cè)試設(shè)計(jì)說(shuō)明、測(cè)試用例說(shuō)明和測(cè)試規(guī)格說(shuō)明。測(cè)試分析報(bào)告可細(xì)化為測(cè)試項(xiàng)傳遞報(bào)告、測(cè)試日志、測(cè)試事件報(bào)告和測(cè)試總結(jié)報(bào)告。7.4軟件測(cè)試計(jì)劃和測(cè)試分析報(bào)告軟件測(cè)試是軟件生命83軟件測(cè)試計(jì)劃的內(nèi)容如下:1.引言1.1編寫(xiě)目的1.2背景1.3定義1.4參考資料軟件測(cè)試計(jì)劃的內(nèi)容如下:842.計(jì)劃2.1軟件說(shuō)明2.2測(cè)試內(nèi)容2.3測(cè)試1(標(biāo)識(shí)符)2.3.1進(jìn)度安排2.3.2條件a.設(shè)備b.軟件c.人員2.計(jì)劃852.3.3測(cè)試資料a.有關(guān)本項(xiàng)任務(wù)的文件b.被測(cè)試程序及其所在的媒體c.測(cè)試的輸入和輸出舉例d.有關(guān)控制此項(xiàng)測(cè)試的方法、過(guò)程的圖表2.3.4測(cè)試培訓(xùn)2.4測(cè)試2(標(biāo)識(shí)符)2.3.3測(cè)試資料863.測(cè)試設(shè)計(jì)說(shuō)明3.1測(cè)試1(標(biāo)識(shí)符)3.1.1控制3.1.2輸入3.1.3輸出3.2測(cè)試2(標(biāo)識(shí)符)…3.測(cè)試設(shè)計(jì)說(shuō)明…874.評(píng)價(jià)準(zhǔn)則4.1范圍4.2數(shù)據(jù)整理4.3尺寸4.評(píng)價(jià)準(zhǔn)則88測(cè)試分析報(bào)告的內(nèi)容如下:1.引言1.1編寫(xiě)目的1.2背景1.3定義1.4參考資料2.測(cè)試概要3.測(cè)試結(jié)果及發(fā)現(xiàn)3.1測(cè)試1(標(biāo)識(shí)符)3.2測(cè)試2(標(biāo)識(shí)符)測(cè)試分析報(bào)告的內(nèi)容如下:894.對(duì)軟件功能的結(jié)論4.1功能1(標(biāo)識(shí)符)4.1.1能力4.1.2限制4.2功能2(標(biāo)識(shí)符)

5.分析摘要5.1能力5.2缺限和限制5.3建議a.各項(xiàng)修改可采用的修改方法程度b.各項(xiàng)修改的緊迫程度c.各項(xiàng)修改預(yù)定的工作量d.各項(xiàng)修改的負(fù)責(zé)人5.4評(píng)價(jià)6.測(cè)試資源消耗4.對(duì)軟件功能的結(jié)論907.5軟件測(cè)試策略前面幾節(jié)內(nèi)容簡(jiǎn)述了設(shè)計(jì)測(cè)試方法的各種技術(shù)。實(shí)踐表明,使用每種方法均可設(shè)計(jì)出一組有用的測(cè)試方案,但沒(méi)有一種方法足以產(chǎn)生一組完善的測(cè)試方案。對(duì)每種方法而言,均有自身特長(zhǎng),因而用一種方法設(shè)計(jì)出的測(cè)試方案對(duì)某些類型的錯(cuò)誤可能容易發(fā)現(xiàn),但對(duì)另一些類型的錯(cuò)誤不一定容易發(fā)現(xiàn)。所以,在實(shí)際工作中,總是把它們結(jié)合起來(lái)使用,形成綜合的測(cè)試策略,以滿足不同測(cè)試階段和不同程序的需要。一般的做法是,用黑盒法設(shè)計(jì)基本的測(cè)試方案,再利用白盒法補(bǔ)充一些必要的測(cè)試方案。具體地說(shuō),可用以下策略結(jié)合各種方法:7.5軟件測(cè)試策略前面幾節(jié)內(nèi)容簡(jiǎn)述了設(shè)計(jì)測(cè)試方法的91(1)在任何情況下都應(yīng)該使用邊界值分析的方法。(2)必要時(shí)用等價(jià)劃分法補(bǔ)充測(cè)試方案。(3)必要時(shí)用錯(cuò)誤推測(cè)法補(bǔ)充測(cè)試方案。(4)如果在程序的功能說(shuō)明中含有輸入條件的組合,最好在一開(kāi)始就用因果圖法,然后再按以上(1)、(2)、(3)步聚進(jìn)行。(5)對(duì)照程序邏輯,檢查已設(shè)計(jì)出的設(shè)計(jì)方案??梢愿鶕?jù)對(duì)程序可靠性的要求采用不同的邏輯覆蓋標(biāo)準(zhǔn),如果現(xiàn)有測(cè)試方案的邏輯覆蓋程度沒(méi)達(dá)到要求的覆蓋標(biāo)準(zhǔn),則應(yīng)再補(bǔ)充一些測(cè)試方案。(1)在任何情況下都應(yīng)該使用邊界值分析的方法。92以上的綜合策略在實(shí)際應(yīng)用當(dāng)中,相對(duì)來(lái)說(shuō)較為有效,但它依然不能保證測(cè)試時(shí)發(fā)現(xiàn)一切程序錯(cuò)誤,因?yàn)檐浖y(cè)試是一項(xiàng)十分艱巨復(fù)雜的工作。軟件測(cè)試過(guò)程必須分步驟進(jìn)行,每個(gè)步驟在邏輯上是前一個(gè)步驟的繼續(xù)。大型軟件系統(tǒng)通常由若干個(gè)子系統(tǒng)組成,每個(gè)子系統(tǒng)又由許多模塊組成。大型軟件系統(tǒng)的測(cè)試步驟基本由以下四個(gè)步驟組成:?jiǎn)卧獪y(cè)試、集成測(cè)試(組裝測(cè)試)、確認(rèn)測(cè)試和系統(tǒng)測(cè)試,如圖7.7所示。以上的綜合策略在實(shí)際應(yīng)用當(dāng)中,相對(duì)來(lái)說(shuō)較為有效,但它93圖7.7測(cè)試步驟圖7.7測(cè)試步驟947.5.1單元測(cè)試單元測(cè)試的目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯(cuò)。單元測(cè)試又稱模塊測(cè)試、邏輯測(cè)試或結(jié)構(gòu)測(cè)試。測(cè)試的方法一般采用白盒法,以路徑覆蓋為最佳準(zhǔn)則,且系統(tǒng)內(nèi)多個(gè)模塊可以并行地進(jìn)行測(cè)試。單元測(cè)試在編碼中就進(jìn)行了,其測(cè)試策略包括:?jiǎn)卧獪y(cè)試設(shè)計(jì)測(cè)試用例要測(cè)試哪幾方面的問(wèn)題,針對(duì)這幾方面問(wèn)題各自測(cè)試什么內(nèi)容,測(cè)試的具體步驟及實(shí)用測(cè)試策略。7.5.1單元測(cè)試951.單元測(cè)試的內(nèi)容單元測(cè)試主要是對(duì)模塊的五個(gè)基本特性進(jìn)行評(píng)價(jià)。1)模塊接口在其他測(cè)試開(kāi)始之前,首先要對(duì)通過(guò)模塊接口的數(shù)據(jù)進(jìn)行測(cè)試。若數(shù)據(jù)不能正確地輸入和輸出,則所有其他測(cè)試都是不切實(shí)際的。1.單元測(cè)試的內(nèi)容96Myers提出了接口測(cè)試要點(diǎn):(1)實(shí)際參數(shù)與形式參數(shù)的個(gè)數(shù)是否相等。(2)實(shí)際參數(shù)與形式參數(shù)的屬性是否匹配。(3)實(shí)際參數(shù)與形式參數(shù)的單位是否匹配。(4)調(diào)用其他模塊時(shí)所給實(shí)際參數(shù)的個(gè)數(shù)是否與被調(diào)模塊的形參數(shù)個(gè)數(shù)相等。(5)調(diào)用其他模塊時(shí)所給實(shí)際參數(shù)的屬性是否與被調(diào)模塊的形參屬性匹配。Myers提出了接口測(cè)試要點(diǎn):97(6)調(diào)用其他模塊時(shí)所給實(shí)際參數(shù)的單位是否與被調(diào)模塊的形參單位匹配。(7)調(diào)用內(nèi)部函數(shù)所用參數(shù)的個(gè)數(shù)、屬性和次序是否正確。(8)是否存在與當(dāng)前入口點(diǎn)無(wú)關(guān)的參數(shù)引用。(9)輸入是否僅改變了形式參數(shù)。(10)全程變量在各模塊中的定義是否一致。(11)常數(shù)是否當(dāng)作變量傳送。(6)調(diào)用其他模塊時(shí)所給實(shí)際參數(shù)的單位是否與被調(diào)模98若一個(gè)模塊需要完成外部的輸入或輸出時(shí),還應(yīng)檢查下述各點(diǎn):(1)文件屬性是否正確。(2)OPEN/CLOSE語(yǔ)句是否正確。(3)格式說(shuō)明與I/O語(yǔ)句是否匹配。(4)緩沖器大小與記錄長(zhǎng)度是否匹配。(5)文件是否先打開(kāi)后使用。(6)文件結(jié)束的條件是否處理過(guò)。(7)I/O的錯(cuò)誤是否處理過(guò)。(8)輸出信息中是否有正文的錯(cuò)誤。若一個(gè)模塊需要完成外部的輸入或輸出時(shí),還應(yīng)檢查下述各點(diǎn):992)局部數(shù)據(jù)結(jié)構(gòu)檢查局部數(shù)據(jù)結(jié)構(gòu)是為了保證臨時(shí)存儲(chǔ)在模塊內(nèi)的數(shù)據(jù)在程序執(zhí)行過(guò)程中完整、正確。局部數(shù)據(jù)結(jié)構(gòu)往往是錯(cuò)誤的根源。應(yīng)仔細(xì)設(shè)計(jì)測(cè)試用例,力求發(fā)現(xiàn)下面幾類錯(cuò)誤:(1)不正確或不一致的說(shuō)明。(2)錯(cuò)誤的初始化或錯(cuò)誤的缺省值。(3)拼寫(xiě)錯(cuò)或截短的變量名。(4)不一致的數(shù)據(jù)類型。(5)上溢、下溢和地址錯(cuò)誤。除了局部數(shù)據(jù)結(jié)構(gòu)外,如有可能,單元測(cè)試期間還應(yīng)考慮全局?jǐn)?shù)據(jù)(例如FORTRAN的公用區(qū))對(duì)模塊的影響。2)局部數(shù)據(jù)結(jié)構(gòu)1003)重要的執(zhí)行路徑在模塊中應(yīng)對(duì)每一條獨(dú)立的執(zhí)行路徑進(jìn)行測(cè)試,單元測(cè)試的基本任務(wù)是保證模塊中每條語(yǔ)句至少執(zhí)行一次。此時(shí),設(shè)計(jì)測(cè)試用例是為了發(fā)現(xiàn)因錯(cuò)誤計(jì)算、不正確的比較和不適當(dāng)?shù)目刂屏髟斐傻腻e(cuò)誤。此時(shí),基本路徑測(cè)試和循環(huán)測(cè)試是最常用、最有效的測(cè)試技術(shù)。計(jì)算中常見(jiàn)的錯(cuò)誤如下:(1)算術(shù)運(yùn)算優(yōu)先次序不正確或理解錯(cuò)誤。(2)運(yùn)算方式不正確。(3)初始化不正確。(4)精度不夠。(5)表達(dá)式的符號(hào)表示錯(cuò)誤。3)重要的執(zhí)行路徑101比較判斷與控制流常常緊密相關(guān),因而,測(cè)試用例還應(yīng)致力于發(fā)現(xiàn)下列錯(cuò)誤:(1)不同的數(shù)據(jù)類型比較。(2)邏輯運(yùn)算不正確或優(yōu)先次序錯(cuò)誤。(3)因?yàn)榫日`差造成本應(yīng)相等的量不相等。(4)比較不正確,或變量不正確。(5)循環(huán)不終止或循環(huán)終止不正確。(6)當(dāng)遇到分支循環(huán)時(shí),出口錯(cuò)誤。(7)錯(cuò)誤地修改循環(huán)變量。比較判斷與控制流常常緊密相關(guān),因而,測(cè)試用例還應(yīng)致力1024)錯(cuò)誤處理一個(gè)好的設(shè)計(jì)應(yīng)能預(yù)見(jiàn)各種出錯(cuò)條件,并預(yù)設(shè)各種出錯(cuò)處理通路。出錯(cuò)處理通路同樣需要認(rèn)真測(cè)試,測(cè)試應(yīng)著重檢查下列問(wèn)題:(1)錯(cuò)誤描述難以理解。(2)錯(cuò)誤提示與實(shí)際錯(cuò)誤不相符。(3)在程序自定義的出錯(cuò)處理段運(yùn)行之前,系統(tǒng)已介入。(4)對(duì)錯(cuò)誤的處理不正確。(5)提供的錯(cuò)誤信息不足,無(wú)法確定錯(cuò)誤位置和查錯(cuò)。4)錯(cuò)誤處理1035)邊界測(cè)試邊界測(cè)試是單元測(cè)試步驟中的最后一步,也是最重要的一項(xiàng)任務(wù)。眾所周知,軟件通常容易在邊界上失效,因而,采用邊界值分析技術(shù),針對(duì)邊界值及其左、右值設(shè)計(jì)測(cè)試用例,很有可能發(fā)現(xiàn)新的錯(cuò)誤。5)邊界測(cè)試104

2.單元測(cè)試步驟單元測(cè)試的步驟如下:(1)按照?qǐng)D7.8配置測(cè)試環(huán)境,設(shè)計(jì)輔助測(cè)試模塊。驅(qū)動(dòng)模塊相當(dāng)于所測(cè)模塊的主程序,主要用來(lái)接收測(cè)試數(shù)據(jù),啟動(dòng)被測(cè)模塊,打印測(cè)試結(jié)果。樁模塊(也稱存根模塊)接收被測(cè)試模塊的調(diào)用和輸出數(shù)據(jù),是被測(cè)模塊的調(diào)用模塊。驅(qū)動(dòng)模塊類似子程序模塊,是單元測(cè)試中重要的成本開(kāi)銷。2.單元測(cè)試步驟105圖7.8單元模塊測(cè)試環(huán)境圖7.8單元模塊測(cè)試環(huán)境106(2)編寫(xiě)測(cè)試數(shù)據(jù)。根據(jù)邏輯覆蓋及上述關(guān)于單元測(cè)試要解決的測(cè)試問(wèn)題的考慮原則,設(shè)計(jì)測(cè)試用例。(3)進(jìn)行多個(gè)單元的并行測(cè)試。經(jīng)過(guò)編譯之后,先做靜態(tài)代碼復(fù)審,由人工測(cè)試模塊中的錯(cuò)誤,由程序設(shè)計(jì)者、程序編寫(xiě)者和程序測(cè)試者參與,由軟件設(shè)計(jì)能力很強(qiáng)的高級(jí)程序員任組長(zhǎng),在研究軟件設(shè)計(jì)文檔基礎(chǔ)上召開(kāi)審查會(huì),分析程序邏輯與錯(cuò)誤清單,測(cè)試預(yù)演,人工測(cè)試,代碼復(fù)審后再進(jìn)入計(jì)算機(jī)代碼執(zhí)行活動(dòng)的動(dòng)態(tài)測(cè)試,最后做單元測(cè)試報(bào)告。(2)編寫(xiě)測(cè)試數(shù)據(jù)。根據(jù)邏輯覆蓋及上述關(guān)于單元測(cè)試1077.5.2集成測(cè)試集成測(cè)試也稱組裝測(cè)試,綜合測(cè)試或聯(lián)合測(cè)試。集成測(cè)試是按設(shè)計(jì)要求把通過(guò)單元測(cè)試的各個(gè)模塊組裝在一起之后進(jìn)行測(cè)試,以便發(fā)現(xiàn)與接口有關(guān)的各種錯(cuò)誤。在進(jìn)行集成測(cè)試時(shí),常需考慮的有關(guān)問(wèn)題有:數(shù)據(jù)經(jīng)過(guò)接口是否會(huì)丟失;一個(gè)模塊對(duì)另一模塊是否造成不應(yīng)有的影響;幾個(gè)子功能組合起來(lái)能否實(shí)現(xiàn)主功能;誤差不斷積累是否達(dá)到不可接受的程度;全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問(wèn)題。集成測(cè)試分為非漸增式測(cè)試和漸增式測(cè)試。7.5.2集成測(cè)試108

1.非漸增式測(cè)試非漸增式測(cè)試方法是先分別測(cè)試每個(gè)模塊,再把所有模塊按設(shè)計(jì)要求放在一起,結(jié)合成所要的程序再進(jìn)行測(cè)試。

2.漸增式測(cè)試漸增式測(cè)試是把下一個(gè)要測(cè)試的模塊同已經(jīng)測(cè)試好的那些模塊結(jié)合起來(lái)進(jìn)行測(cè)試,測(cè)試完以后再把下下一個(gè)應(yīng)該測(cè)試的模塊結(jié)合進(jìn)來(lái)測(cè)試,這種測(cè)試每次增加一個(gè)模塊。這種方法實(shí)際上同時(shí)完成單元測(cè)試和集成測(cè)試。1.非漸增式測(cè)試1091)自頂向下結(jié)合自頂向下結(jié)合是一種遞增的裝配軟件結(jié)構(gòu)的方法。這種方法被日益廣泛地采用,它需要連接程序,但不需要驅(qū)動(dòng)程序。它是從主控制模塊(“主程序”)開(kāi)始,沿著軟件的控制層次向下移動(dòng),從而逐漸把各個(gè)模塊結(jié)合起來(lái)。把主控模塊所屬的那些模塊都裝配到結(jié)構(gòu)中去時(shí),有兩種方法可供選擇。

深度優(yōu)先策略參看圖7.9,深度優(yōu)先策略先組裝在軟件結(jié)構(gòu)的一條主控制通路上的所有模塊。主控路徑的選擇決定于軟件的應(yīng)用特性。如,選取最左邊的路徑,先結(jié)合模塊M1、M2和M5,接著是M8,如果M2的某個(gè)功能需要,可結(jié)合M6,然后再構(gòu)造中央和右側(cè)的控制通路。1)自頂向下結(jié)合110圖7.9自頂向下結(jié)合圖7.9自頂向下結(jié)合111

寬度優(yōu)先策略寬度優(yōu)先策略是沿軟件結(jié)構(gòu)水平地移動(dòng),把處于同一個(gè)控制層次上的所有模塊組裝起來(lái)。對(duì)于圖7.9來(lái)說(shuō),先結(jié)合模塊M2、M3和M4(代替存根程序S4),接著是M5、M6和M7(代替存根程序S7)這一層,如此繼續(xù)進(jìn)行下去,直到所有模塊都被結(jié)合進(jìn)來(lái)為止。寬度優(yōu)先策略112自頂向下綜合測(cè)試可歸納為以下五個(gè)步驟:(1)用主控制模塊做測(cè)試驅(qū)動(dòng)程序,用連接程序代替所有直接附屬于主控制模塊的模塊。(2)依據(jù)所選的集成策略(深度優(yōu)先或?qū)挾葍?yōu)先),每次只用一個(gè)實(shí)際模塊替換一個(gè)樁模塊。(3)每集成一個(gè)模塊立即測(cè)試一遍。(4)只有每組測(cè)試完成后,才用實(shí)際模塊替換下一個(gè)樁模塊。(5)為避免引入新錯(cuò)誤,須不斷進(jìn)行回歸測(cè)試(即全部或部分地重復(fù)已做過(guò)的測(cè)試)。自頂向下綜合測(cè)試可歸納為以下五個(gè)步驟:113這一過(guò)程從第二步開(kāi)始就不斷進(jìn)行,直到整個(gè)程序結(jié)構(gòu)構(gòu)造完畢。在圖7.9中,實(shí)線表示已部分完成的結(jié)構(gòu),若采用深度優(yōu)先策略,下一步就要用M7來(lái)替代樁模塊S7。S7本身可能又帶樁模塊,隨后將被對(duì)應(yīng)的實(shí)際模塊一一替代。自頂向下集成的優(yōu)點(diǎn)在于能盡早地對(duì)程序的主要控制和決策機(jī)制進(jìn)行檢驗(yàn),因而能較早發(fā)現(xiàn)錯(cuò)誤。其缺點(diǎn)在于測(cè)試較高層模塊時(shí),低層處理采用樁模塊替代,這并不能夠反映實(shí)際情況,重要數(shù)據(jù)不能及時(shí)回送到上層模塊,因而測(cè)試并不充分和完善。所以這種方法有它的局限性,若遇到此類問(wèn)題,測(cè)試人員可選擇以下幾種方法解決之:這一過(guò)程從第二步開(kāi)始就不斷進(jìn)行,直到整個(gè)程序結(jié)構(gòu)構(gòu)造114(1)把某些測(cè)試推遲到用真實(shí)模塊替代樁模塊之后進(jìn)行。這將使我們對(duì)一些特定的測(cè)試和特定模塊的裝配之間的對(duì)應(yīng)關(guān)系失去某些控制,在確定錯(cuò)誤原因時(shí)會(huì)比較困難。(2)開(kāi)發(fā)能模擬真實(shí)模塊的樁模塊。此法無(wú)疑要大大增加開(kāi)銷。(3)從層次結(jié)構(gòu)的底部向上裝配軟件。此種方法較切實(shí)可行,下面專門(mén)介紹。(1)把某些測(cè)試推遲到用真實(shí)模塊替代樁模塊之后進(jìn)行1152)自底向上結(jié)合自底向上測(cè)試是從軟件結(jié)構(gòu)最低層的模塊開(kāi)始組裝和測(cè)試,當(dāng)測(cè)試到較高層模塊時(shí),所需的下層模塊均已具備,因而不再需要樁模塊。自底向上綜合測(cè)試可歸納為以下四個(gè)步驟:(1)把低層模塊組合成實(shí)現(xiàn)一個(gè)特定軟件子功能的族,見(jiàn)圖7.10中模塊族1、2、3。2)自底向上結(jié)合116圖7.10自底向上結(jié)合圖7.10自底向上結(jié)合117(2)為每個(gè)族設(shè)計(jì)一個(gè)驅(qū)動(dòng)軟件,作為測(cè)試的控制程序,以協(xié)調(diào)測(cè)試用例的輸入和輸出。圖7.10中,虛線接的框D1、D2、D3是各個(gè)族的驅(qū)動(dòng)程序。(3)對(duì)模塊族進(jìn)行測(cè)試。(4)按結(jié)構(gòu)向上次序,用實(shí)際模塊替換驅(qū)動(dòng)程序,將模塊族結(jié)合起來(lái)組裝成新的模塊族,再進(jìn)行測(cè)試,直至全部完成。例如,在圖7.10中,族1、族2上屬于Ma,因而去掉D1和D2將這兩個(gè)族直接與Ma接口;同樣族3與Mb接口前將D3去掉;Ma與Mb最后與Mc接口。(2)為每個(gè)族設(shè)計(jì)一個(gè)驅(qū)動(dòng)軟件,作為測(cè)試的控制程序118采用自底向上方法,越向上層分別測(cè)試,所需驅(qū)動(dòng)程序越少。而且,若軟件結(jié)構(gòu)的最上兩層用自頂向下結(jié)合的方法進(jìn)行裝配,則將大大減少驅(qū)動(dòng)程序的數(shù)目,同時(shí)族的組裝也會(huì)大大簡(jiǎn)化。自頂向下方法不需驅(qū)動(dòng)模塊的設(shè)計(jì),可在程序測(cè)試的早期實(shí)現(xiàn)并驗(yàn)證系統(tǒng)的主要功能,及早發(fā)現(xiàn)上層模塊的接口錯(cuò)誤。但自頂向下方法必須設(shè)計(jì)存根模塊,使低層關(guān)鍵模塊中錯(cuò)誤發(fā)現(xiàn)較晚,并且不能在早期很快且充分地展開(kāi)測(cè)試的人力。自底向上方法與自頂向下方法相比較,它的優(yōu)缺點(diǎn)與自頂向下方法恰恰相反。一般在實(shí)際應(yīng)用中,采用兩種方法相結(jié)合的混合法,即對(duì)軟件結(jié)構(gòu)的較上層使用自頂向下的結(jié)合方法,對(duì)下層使用自底向上的結(jié)合方法,以充分發(fā)揮兩種方法的優(yōu)點(diǎn),盡量避免其缺點(diǎn)。采用自底向上方法,越向上層分別測(cè)試,所需驅(qū)動(dòng)程序越少1197.5.3確認(rèn)測(cè)試確認(rèn)測(cè)試又稱有效性測(cè)試、合格測(cè)試或驗(yàn)收測(cè)試。模塊組裝后已成為完整的軟件包,消除了接口的錯(cuò)誤。確認(rèn)測(cè)試主要由使用用戶參加測(cè)試,檢驗(yàn)軟件規(guī)格說(shuō)明的技術(shù)標(biāo)準(zhǔn)的符合程度,是保證軟件質(zhì)量的最后關(guān)鍵環(huán)節(jié)。7.5.3確認(rèn)測(cè)試120

1.確認(rèn)測(cè)試標(biāo)準(zhǔn)軟件確認(rèn)測(cè)試是通過(guò)一系列黑盒測(cè)試來(lái)證實(shí)軟件功能與用戶需求是否一致的。在測(cè)試計(jì)劃中,規(guī)定了測(cè)試的種類和測(cè)試進(jìn)度,測(cè)試過(guò)程定義了用于證實(shí)與需求一致的具體測(cè)試用例。測(cè)試計(jì)劃和測(cè)試過(guò)程的設(shè)計(jì)都應(yīng)考慮軟件是否符合所有功能和性能的要求,文檔資料是否正確完整以及人機(jī)界面和其他方面(如可移植性、兼容性、錯(cuò)誤恢復(fù)能力和可維護(hù)性等)是否令用戶滿意。確認(rèn)測(cè)試有兩種可能結(jié)果:一種是功能與性能規(guī)格說(shuō)明一致,用戶可以接受;另一種是軟件不滿足軟件需求的要求,用戶無(wú)法接受。若要在此時(shí)進(jìn)行修改,工作量很大,因而必須與用戶協(xié)商,尋找一個(gè)妥善解決問(wèn)題的辦法。1.確認(rèn)測(cè)試標(biāo)準(zhǔn)121

2.配置復(fù)審配置復(fù)審是確認(rèn)測(cè)試的另一個(gè)重要環(huán)節(jié)。復(fù)審的目的在于保證程序和文檔配置齊全、分類有序,兩者要一致,并且包括軟件維護(hù)所必須的細(xì)節(jié)。2.配置復(fù)審122

3.測(cè)試實(shí)際上,對(duì)于軟件開(kāi)發(fā)人員來(lái)說(shuō),不可能完全預(yù)見(jiàn)用戶實(shí)際使用程序的情況。如,用戶可能曲解指令,可能常使用一些奇怪的數(shù)據(jù)組合,也可能對(duì)設(shè)計(jì)者自認(rèn)為明確的輸出信息難以理解等等。因而,當(dāng)開(kāi)發(fā)者為用戶建立起軟件后,還要由用戶進(jìn)行一系列的驗(yàn)收測(cè)試,以確保用戶的所有需求有效。驗(yàn)收測(cè)試既可以是非正式的測(cè)試,也可是有計(jì)劃、有系統(tǒng)進(jìn)行的測(cè)試。有時(shí),驗(yàn)收測(cè)試從數(shù)周可達(dá)數(shù)月,不斷暴露出錯(cuò)誤,使得開(kāi)發(fā)期延長(zhǎng)。讓每個(gè)用戶都進(jìn)行測(cè)試是不實(shí)際的。大多數(shù)軟件產(chǎn)品的開(kāi)發(fā)者使用一種稱為測(cè)試和測(cè)試(Alpha-testingandBefa-testing)的過(guò)程來(lái)發(fā)現(xiàn)只有用戶才能發(fā)現(xiàn)的錯(cuò)誤。3.測(cè)試123測(cè)試是由一個(gè)用戶在開(kāi)發(fā)環(huán)境下進(jìn)行測(cè)試,也可以是開(kāi)發(fā)機(jī)構(gòu)內(nèi)部的人員在模擬實(shí)際操作環(huán)境下進(jìn)行的測(cè)試。測(cè)試的關(guān)鍵在于盡可能逼真地模擬實(shí)際運(yùn)行環(huán)境和對(duì)用戶軟件產(chǎn)品的操作,并盡最大努力涵蓋所有可能的用戶操作方式。測(cè)試是在一個(gè)受控制環(huán)境下的測(cè)試。測(cè)試是由一個(gè)用戶在開(kāi)發(fā)環(huán)境下進(jìn)行測(cè)試,也可以是開(kāi)124測(cè)試是由軟件的多個(gè)用戶在一個(gè)或多個(gè)用戶的實(shí)際使用環(huán)境下進(jìn)行的測(cè)試。與測(cè)試不同的是,開(kāi)發(fā)者一般不在現(xiàn)場(chǎng)。因此,測(cè)試是軟件不在開(kāi)發(fā)者控制的環(huán)境下的“活的”應(yīng)用。用戶記錄在測(cè)試過(guò)程中遇到的所有問(wèn)題,包括真實(shí)的以及主觀認(rèn)定的,定期向開(kāi)發(fā)者報(bào)告。開(kāi)發(fā)者在綜合用戶報(bào)告之后,必須做出相應(yīng)的修改,然后才能將軟件產(chǎn)品交付給全體用戶使用。測(cè)試是由軟件的多個(gè)用戶在一個(gè)或多個(gè)用戶的實(shí)際使用1257.5.4系統(tǒng)測(cè)試系統(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è)試。對(duì)這些測(cè)試的詳細(xì)討論已超過(guò)軟件工程范圍,這些測(cè)試也不可能僅由軟件開(kāi)發(fā)人員完成。在系統(tǒng)測(cè)試實(shí)施之前,軟件工程師應(yīng)完成以下工作:為測(cè)試軟件系統(tǒng)的輸入信息設(shè)計(jì)出錯(cuò)處理通路;設(shè)計(jì)測(cè)試用例,模擬錯(cuò)誤數(shù)據(jù)和軟件界面可能發(fā)生的錯(cuò)誤,記錄測(cè)試結(jié)果,為系統(tǒng)測(cè)試提供經(jīng)驗(yàn)和幫助;參與系統(tǒng)測(cè)試的規(guī)劃和設(shè)計(jì),保證軟件測(cè)試的合理性。7.5.4系統(tǒng)測(cè)試126系統(tǒng)測(cè)試實(shí)質(zhì)上是由一系列不同測(cè)試組成的,其主要目的是充分運(yùn)行系統(tǒng),驗(yàn)證系統(tǒng)各個(gè)部件是否都能正常工作并完成所分配的功能。以下,我們將討論用于系統(tǒng)的幾種軟件系統(tǒng)測(cè)試類型。系統(tǒng)測(cè)試實(shí)質(zhì)上是由一系列不同測(cè)試組成的,其主要目的是127

1.恢復(fù)測(cè)試恢復(fù)測(cè)試主要檢查系統(tǒng)的容錯(cuò)能力。當(dāng)系統(tǒng)出錯(cuò)時(shí),能否在指定的時(shí)間間隔內(nèi)修正錯(cuò)誤并重新啟動(dòng)系統(tǒng)。恢復(fù)測(cè)試首先要采用不同的方式強(qiáng)迫系統(tǒng)出現(xiàn)故障,然后驗(yàn)證系統(tǒng)是否能盡快恢復(fù)。如果恢復(fù)是自動(dòng)的(由系統(tǒng)自身完成),則重新初始化、檢測(cè)點(diǎn)設(shè)置、數(shù)據(jù)恢復(fù)以

溫馨提示

  • 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)論