軟件測(cè)試與質(zhì)量保證_第1頁(yè)
軟件測(cè)試與質(zhì)量保證_第2頁(yè)
軟件測(cè)試與質(zhì)量保證_第3頁(yè)
軟件測(cè)試與質(zhì)量保證_第4頁(yè)
軟件測(cè)試與質(zhì)量保證_第5頁(yè)
已閱讀5頁(yè),還剩26頁(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)介

1、軟件測(cè)試與質(zhì)量保證一、軟件測(cè)試的定義 定義:軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程。或者說(shuō)軟件測(cè)試是根據(jù)軟件開發(fā)各階段的規(guī)格說(shuō)明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試用例,并利用這些測(cè)試用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤的過(guò)程。二、測(cè)試的目的 基于不同的立場(chǎng),存在著兩種完全不同的測(cè)試目的。 從用戶的角度出發(fā),普遍希望通過(guò)軟件測(cè)試暴露軟件中隱藏的錯(cuò)誤和缺陷,以考慮是否可接受該產(chǎn)品。 從軟件開發(fā)者的角度出發(fā),則希望測(cè)試成為表明軟件產(chǎn)品中不存在錯(cuò)誤的過(guò)程,驗(yàn)證該軟件已正確地實(shí)現(xiàn)了用戶的要求,確立人們對(duì)軟件質(zhì)量的信心。Grenford Myers軟件測(cè)試目的(1) 測(cè)試是程序的執(zhí)行過(guò)程,目的在于發(fā)現(xiàn)錯(cuò)誤;(2

2、) 一個(gè)好的測(cè)試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤;(3) 一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試換言之,測(cè)試的目的是 系統(tǒng)地找出軟件中潛在的各種錯(cuò)誤和缺陷。 能夠證明軟件的功能和性能與需求說(shuō)明相符合。 測(cè)試不能表明軟件中不存在錯(cuò)誤,它只能說(shuō)明軟件中存在錯(cuò)誤。三、軟件測(cè)試的原則 1. 應(yīng)當(dāng)把“盡早地和不斷地進(jìn)行軟件測(cè)試”作為軟件開發(fā)者的座右銘。2. 測(cè)試用例應(yīng)由測(cè)試輸入數(shù)據(jù)和對(duì)應(yīng)的預(yù)期輸出結(jié)果這兩部分組成。3. 程序員應(yīng)避免檢查自己的程序。4. 在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)當(dāng)包括合理的輸入條件和不合理的輸入條件。5. 充分注意測(cè)試中的群集現(xiàn)象。經(jīng)驗(yàn)表明,測(cè)試后程序中殘存的錯(cuò)誤數(shù)目與該程序中已發(fā)現(xiàn)的錯(cuò)

3、誤數(shù)目成正比 。6. 嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性。7. 應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果做全面檢查。8. 妥善保存測(cè)試計(jì)劃,測(cè)試用例,出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便。四、軟件測(cè)試的對(duì)象 軟件測(cè)試并不等于程序測(cè)試。軟件測(cè)試應(yīng)貫穿于軟件定義與開發(fā)的整個(gè)期間。 需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)以及程序編碼等各階段所得到的文檔,包括需求規(guī)格說(shuō)明、概要設(shè)計(jì)規(guī)格說(shuō)明、詳細(xì)設(shè)計(jì)規(guī)格說(shuō)明以及源程序,都應(yīng)成為軟件測(cè)試的對(duì)象。五、確認(rèn)和驗(yàn)證 為把握軟件開發(fā)各個(gè)環(huán)節(jié)的正確性,需要進(jìn)行各種確認(rèn)和驗(yàn)證工作。 確認(rèn)(Validation),是一系列的活動(dòng)和過(guò)程,目的是想證實(shí)在一個(gè)給定的外部環(huán)境中軟件的邏輯正確性。 需求規(guī)

4、格說(shuō)明的確認(rèn) 程序的確認(rèn) 驗(yàn)證(Verification),試圖證明在軟件生存期各個(gè)階段,以及階段間的邏輯協(xié)調(diào)性、完備性和正確性。七、測(cè)試信息流測(cè)試信息流: 軟件配置:軟件需求規(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ā)生。 排錯(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ì)軟件建

5、立可靠性模型 利用可靠性分析,評(píng)價(jià)軟件質(zhì)量: 軟件的質(zhì)量和可靠性達(dá)到可以接受的程度; 所做的測(cè)試不足以發(fā)現(xiàn)嚴(yán)重的錯(cuò)誤; 如果測(cè)試發(fā)現(xiàn)不了錯(cuò)誤,可以肯定,測(cè)試配置考慮得不夠細(xì)致充分,錯(cuò)誤仍然潛伏在軟件中。八、測(cè)試與軟件開發(fā)各階段的關(guān)系 軟件開發(fā)過(guò)程是一個(gè)自頂向下,逐步細(xì)化的過(guò)程 軟件計(jì)劃階段定義軟件作用域 軟件需求分析建立軟件信息域、功能和性能需求、約束等 軟件設(shè)計(jì)把設(shè)計(jì)用某種程序設(shè)計(jì)語(yǔ)言轉(zhuǎn)換成程序代碼 測(cè)試過(guò)程是依相反順序安排的自底向上,逐步集成的過(guò)程。九、軟件測(cè)試用例設(shè)計(jì) 兩種常用的測(cè)試方法 黑盒測(cè)試 白盒測(cè)試(一)黑盒測(cè)試 這種方法是把測(cè)試對(duì)象看做一個(gè)黑盒子,測(cè)試人員完全不考慮程序內(nèi)部的邏

6、輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說(shuō)明書,檢查程序的功能是否符合它的功能說(shuō)明。 黑盒測(cè)試又叫做功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試。 黑盒測(cè)試方法是在程序接口上進(jìn)行測(cè)試,主要是為了發(fā)現(xiàn)以下錯(cuò)誤: 是否有不正確或遺漏了的功能? 在接口上,輸入能否正確地接受? 能否輸出正確的結(jié)果? 是否有數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息(例如數(shù)據(jù)文件)訪問(wèn)錯(cuò)誤? 性能上是否能夠滿足要求? 是否有初始化或終止性錯(cuò)誤? 用黑盒測(cè)試發(fā)現(xiàn)程序中的錯(cuò)誤,必須在所有可能的輸入條件和輸出條件中確定測(cè)試數(shù)據(jù),來(lái)檢查程序是否都能產(chǎn)生正確的輸出。 但這是不可能的。 假設(shè)一個(gè)程序P有輸入量X和Y及輸出量Z。在字長(zhǎng)為32位的計(jì)算機(jī)上運(yùn)行。若X、Y取整數(shù),按

7、黑盒方法進(jìn)行窮舉測(cè)試: 可能采用的 測(cè)試數(shù)據(jù)組: 232232264 如果測(cè)試一組數(shù)據(jù)需要1毫秒,一年工作365 24小時(shí),完成所有測(cè)試需5億年(二)白盒測(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è)試又稱為結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試。 軟件人員使用白盒測(cè)試方法,主要想對(duì)程序模塊進(jìn)行如下的檢查: 對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑至少測(cè)試一次; 對(duì)所有的邏輯判定,取“真”與取“假”的兩種情況都至少測(cè)試一次; 在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循

8、環(huán)體; 測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性,等。 對(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年十、白盒測(cè)試的測(cè)試用例設(shè)計(jì)(一)邏輯覆蓋邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計(jì)測(cè)試用例的技術(shù)。它屬白盒測(cè)試。 語(yǔ)句覆蓋 判定覆蓋 條件覆蓋 判定條件覆蓋 條件組合覆蓋 路徑覆蓋。舉例:所有路徑為:L1(a-c-e) ,L2(a-b-d), L3(a-b-e), L4(a-c-d)依據(jù)以上推導(dǎo)出來(lái)的結(jié)果就可

9、以設(shè)計(jì)滿足要求的測(cè)試用例。(二)語(yǔ)句覆蓋 語(yǔ)句覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得每一可執(zhí)行語(yǔ)句至少執(zhí)行一次。 在圖例中,正好所有的可執(zhí)行語(yǔ)句都在路徑L1上,所以選擇路徑 L1設(shè)計(jì)測(cè)試用例,就可以覆蓋所有的可執(zhí)行語(yǔ)句。 測(cè)試用例的設(shè)計(jì)格式如下【輸入的(A, B, X),輸出的(A, B, X)】 為圖例設(shè)計(jì)滿足語(yǔ)句覆蓋的測(cè)試用例是:【(2, 0, 4),(2, 0, 3)】 覆蓋 ace【L1】(三)判定覆蓋 判定覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次。 判定覆蓋又稱為分支覆蓋。 對(duì)于圖例,如果選擇路徑L1和L2,就可得滿足要求的

10、測(cè)試用例 【(2, 0, 4),(2, 0, 3)】覆蓋 ace【L1】【(1, 1, 1),(1, 1, 1)】覆蓋 abd【L2】 如果選擇路徑L3和L4,還可得另一組可用的測(cè)試用例:【(2, 1, 1),(2, 1, 2)】覆蓋 abe【L3】【(3, 0, 3),(3, 1, 1)】覆蓋 acd【L4】 (四)條件覆蓋 條件覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的每個(gè)條件的可能取值至少執(zhí)行一次。在圖例中,我們事先可對(duì)所有條件的取值加以標(biāo)記。例如, 對(duì)于第一個(gè)判斷: 條件 A1 取真為 ,取假為 條件 B0 取真為 ,取假為 對(duì)于第二個(gè)判斷: 條件A2 取真為 ,取

11、假為 條件X1 取真為 ,取假為測(cè)試用例 覆蓋分支 條件取值【(2, 0, 4),(2, 0, 3)】 L1(c, e) 【(1, 0, 1),(1, 0, 1)】 L2(b, d) 【(2, 1, 1),(2, 1, 2)】 L3(b, e) 或測(cè) 試 用 例 覆蓋分支條件取值【(1, 0, 3),(1, 0, 4)】 L3(b, e) 【(2, 1, 1),(2, 1, 2)】 L3(b, e) (五)判定條件覆蓋 判定條件覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,使得判斷中每個(gè)條件的所有可能取值至少執(zhí)行一次,同時(shí)每個(gè)判斷中的每個(gè)條件的可能取值至少執(zhí)行一次。測(cè) 試 用例 覆蓋分支 條件取值【(2, 0,

12、 4),(2, 0, 3)】 L1(c, e) 【(1, 1, 1),(1, 1, 1)】 L2(b, d) 由多個(gè)基本判斷組成的流程圖(六)條件組合覆蓋 條件組合覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,運(yùn)行被測(cè)程序,使得每個(gè)判斷的所有可能的條件取值組合至少執(zhí)行一次。 記 A1, B0 作 A1, B0 作 A1, B0 作 A1, B0 作 A2, X1 作 A2, X1 作 A2, X1 作 A2, X1 作 測(cè) 試 用 例 覆蓋條件 覆蓋組合【(2, 0, 4), (2, 0, 3)】(L1) , 【(2, 1, 1), (2, 1, 2)】(L3) , 【(1, 0, 3), (1, 0, 4)】

13、(L3) , 【(1, 1, 1), (1, 1, 1)】(L2) , (七)路徑測(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 (L3) (八)基本路徑集測(cè)試 覆蓋關(guān)鍵路徑。 得到程序的控制流程圖/程序圖Sequence If While 計(jì)算環(huán)路復(fù)雜性的方法: -V(G)=簡(jiǎn)單判定節(jié)點(diǎn)數(shù)+ 1 V(

14、G) = E-N+2 (E 是邊數(shù),N是定點(diǎn)數(shù)) V(G)=封閉區(qū)域數(shù)+ 1 V(G)=4根據(jù)環(huán)路復(fù)雜性產(chǎn)生基本路徑集Path 1: 1-2-3-8Path 2: 1-2-3-8-1-2-3Path 3: 1-2-4-5-7-8 Path 4: 1-2-4-6-7-8準(zhǔn)備測(cè)試用例覆蓋所有基本路徑十一、黑盒測(cè)試的測(cè)試用例設(shè)計(jì) 等價(jià)類劃分 邊界值分析 錯(cuò)誤推測(cè)法 因果圖(一)等價(jià)類劃分 等價(jià)類劃分是一種典型的黑盒測(cè)試方法,使用這一方法時(shí),完全不考慮程序的內(nèi)部結(jié)構(gòu),只依據(jù)程序的規(guī)格說(shuō)明來(lái)設(shè)計(jì)測(cè)試用例。 等價(jià)類劃分方法把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分,然后從每一部分中選取少數(shù)有代表性

15、的數(shù)據(jù)做為測(cè)試用例。 使用這一方法設(shè)計(jì)測(cè)試用例要經(jīng)歷劃分等價(jià)類(列出等價(jià)類表)和選取測(cè)試用例兩步。 劃分等價(jià)類等價(jià)類是指某個(gè)輸入域的子集合。在該子集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的。測(cè)試某等價(jià)類的代表值就等價(jià)于對(duì)這一類其它值的測(cè)試。 等價(jià)類的劃分有兩種不同的情況: 有效等價(jià)類:是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合。 無(wú)效等價(jià)類:是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是不合理的,無(wú)意義的輸入數(shù)據(jù)構(gòu)成的集合。 在設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮有效等價(jià)類和無(wú)效等價(jià)類的設(shè)計(jì)。 劃分等價(jià)類的原則。(1) 如果輸入條件規(guī)定了取值范圍,或值的個(gè)數(shù),則可以確立一個(gè)有效等價(jià)類和兩個(gè)

16、無(wú)效等價(jià)類。例如,在程序的規(guī)格說(shuō)明中,對(duì)輸入條件有一句話: “ 項(xiàng)數(shù)可以從1到999 ” 則有效等價(jià)類是“1項(xiàng)數(shù)999”兩個(gè)無(wú)效等價(jià)類是“項(xiàng)數(shù)1”或“項(xiàng)數(shù)999”。在數(shù)軸上表示成: (2) 如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了“必須如何”的條件,這時(shí)可確立一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。例如,在Pascal語(yǔ)言中對(duì)變量標(biāo)識(shí)符規(guī)定為“以字母打頭的串”。那么所有以字母打頭的構(gòu)成有效等價(jià)類,而不在此集合內(nèi)(不以字母打頭)的歸于無(wú)效等價(jià)類。(3) 如果輸入條件是一個(gè)布爾量,則可以確定一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。(4) 如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序要對(duì)每個(gè)輸入值分別進(jìn)行處理。這時(shí)可為

17、 每一個(gè)輸入值確立一個(gè)有效等價(jià)類,此外針對(duì)這組值確立一個(gè)無(wú)效等價(jià)類,它是所有不允許的輸入值的集合。 例如,在教師上崗方案中規(guī)定對(duì)教授、副教授、講師和助教分別計(jì)算分?jǐn)?shù),做相應(yīng)的處理。因此可以確定4個(gè)有效等價(jià)類為教授、副教授、講師和助教,一個(gè)無(wú)效等價(jià)類,它是所有不符合以上身分的人員的輸入值的集合。(5) 如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則,則可以確立一個(gè)有效等價(jià)類(符合規(guī)則)和若干個(gè)無(wú)效等價(jià)類(從不同角度違反規(guī)則)。 例如,Pascal語(yǔ)言規(guī)定 “一個(gè)語(yǔ)句必須以分號(hào);結(jié)束”。這時(shí),可以確定一個(gè)有效等價(jià)類 “以;結(jié)束”,若干個(gè)無(wú)效等價(jià)類 “以:結(jié)束”、“以,結(jié)束”、“以 結(jié)束”、“以LF結(jié)束”等。 確

18、立測(cè)試用例在確立了等價(jià)類之后,建立等價(jià)類表,列出所有劃分出的等價(jià)類。 再?gòu)膭澐殖龅牡葍r(jià)類中按以下原則選擇測(cè)試用例:(1) 為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一編號(hào);(2) 設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類,重復(fù)這一步,直到所有的有效等價(jià)類都被覆蓋為止;(3)設(shè)計(jì)一個(gè)新的測(cè)試用例,使其僅覆蓋一個(gè)尚未被覆蓋的無(wú)效等價(jià)類,重復(fù)這一步,直到所有的無(wú)效等價(jià)類都被覆蓋為止。 用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例的實(shí)例在某一PASCAL語(yǔ)言版本中規(guī)定:“標(biāo)識(shí)符是由字母開頭,后跟字母或數(shù)字的任意組合構(gòu)成。有效字符數(shù)為8個(gè),最大字符數(shù)為80個(gè)?!辈⑶乙?guī)定:“標(biāo)識(shí)符必須先說(shuō)明,再使用。” “在同一說(shuō)明語(yǔ)

19、句中,標(biāo)識(shí)符至少必須有一個(gè)。”用等價(jià)類劃分的方法,建立輸入等價(jià)類表: 下面選取了9個(gè)測(cè)試用例,它們覆蓋了所有的等價(jià)類。 VAR x,T:REAL; BEGIN x := 3.414; T := 2.732; . (1), (2), (4), (8), (9), (12), (14) VAR :REAL; (3) VAR x,:REAL; (5) VAR T:REAL; (6) VAR T12345.:REAL; (7) 多于80個(gè)字符 VAR T$:CHAR; (10) VAR GOTO:INTEGER; (11) VAR 2T:REAL; (13) VAR PAR:REAL; (15) BE

20、GIN . PAP := SIN (3.14 * 0.8) / 6; (二)邊界值分析 邊界值分析也是一種黑盒測(cè)試方法,是對(duì)等價(jià)類劃分方法的補(bǔ)充。 人們從長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)得知,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。因此針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,可以查出更多的錯(cuò)誤。 比如,在做三角形計(jì)算時(shí),要輸入三角形的三個(gè)邊長(zhǎng):A、B和C。 我們應(yīng)注意到這三個(gè)數(shù)值應(yīng)當(dāng)滿足 A0、B0、C0、 ABC、ACB、BCA,才能構(gòu)成三角形。但如果把六個(gè)不等式中的任何一個(gè)大于號(hào)“”錯(cuò)寫成大于等于號(hào)“”,那就不能構(gòu)成三角形。問(wèn)題恰出現(xiàn)在容易被疏忽的邊界附近。 這里所說(shuō)的邊界是指,相當(dāng)于輸

21、入等價(jià)類和輸出等價(jià)類而言,稍高于其邊界值及稍低于其邊界值的一些特定情況。 使用邊界值分析方法設(shè)計(jì)測(cè)試用例,首先應(yīng)確定邊界情況。應(yīng)當(dāng)選取正好等于,剛剛大于,或剛剛小于邊界的值做為測(cè)試數(shù)據(jù),而不是選取等價(jià)類中的典型值或任意值做為測(cè)試數(shù)據(jù)。 (三)錯(cuò)誤推測(cè)法 人們也可以靠經(jīng)驗(yàn)和直覺推測(cè)程序中可能存在的各種錯(cuò)誤,從而有針對(duì)性地編寫檢查這些錯(cuò)誤的例子。這就是錯(cuò)誤推測(cè)法。 錯(cuò)誤推測(cè)法的基本想法是:列舉出程序中所有可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,根據(jù)它們選擇測(cè)試用例。十二、軟件測(cè)試的策略 測(cè)試過(guò)程按4個(gè)步驟進(jìn)行,即單元測(cè)試、組裝測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試。 開始是單元測(cè)試,集中對(duì)用源代碼實(shí)現(xiàn)的每一個(gè)程序

22、單元進(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ō)明中確定了的各種需求,以及軟件配置是否完全、正確。 系統(tǒng)測(cè)試:把已經(jīng)經(jīng)過(guò)確認(rèn)的軟件納入實(shí)際運(yùn)行環(huán)境中,與其它系統(tǒng)成份組合在一起進(jìn)行測(cè)試。(一)單元測(cè)試 (Unit Testing) 單元測(cè)試又稱模塊測(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è)試。1. 單元測(cè)

23、試的內(nèi)容 在單元測(cè)試時(shí),測(cè)試者需要依據(jù)詳細(xì)設(shè)計(jì)說(shuō)明書和源程序清單,了解該模塊的I/O條件和模塊的邏輯結(jié)構(gòu),主要采用白盒測(cè)試的測(cè)試用例,輔之以黑盒測(cè)試的測(cè)試用例,使之對(duì)任何合理的輸入和不合理的輸入,都能鑒別和響應(yīng)。(1) 模塊接口測(cè)試 在單元測(cè)試的開始,應(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ǔ)句是否正確; 緩沖區(qū)容量與記錄長(zhǎng)度是否匹配; 在進(jìn)行讀寫操作之前是否打開了文件; 在結(jié)束文件處理時(shí)是否關(guān)閉了文件; 正

24、文書寫輸入錯(cuò)誤, IO錯(cuò)誤是否檢查并做了處理。(2) 局部數(shù)據(jù)結(jié)構(gòu)測(cè)試 不正確或不一致的數(shù)據(jù)類型說(shuō)明 使用尚未賦值或尚未初始化的變量 錯(cuò)誤的初始值或錯(cuò)誤的缺省值 變量名拼寫錯(cuò)或書寫錯(cuò) 不一致的數(shù)據(jù)類型 全局?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ò)誤。(4) 錯(cuò)誤處理測(cè)試 出錯(cuò)的描述是否難以理解 出錯(cuò)的描述是否能夠?qū)﹀e(cuò)誤定位 顯示的錯(cuò)誤與實(shí)際的錯(cuò)誤是否相符 對(duì)錯(cuò)誤條件的處理正確與否 在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件是否已經(jīng)

25、引起系統(tǒng)的干預(yù)等(5) 邊界測(cè)試 注意數(shù)據(jù)流、控制流中剛好等于、大于或小于確定的比較值時(shí)出錯(cuò)的可能性。對(duì)這些地方要仔細(xì)地選擇測(cè)試用例,認(rèn)真加以測(cè)試。 如果對(duì)模塊運(yùn)行時(shí)間有要求的話,還要專門進(jìn)行關(guān)鍵路徑測(cè)試,以確定最壞情況下和平均意義下影響模塊運(yùn)行時(shí)間的因素。2. 單元測(cè)試的步驟 模塊并不是一個(gè)獨(dú)立的程序,在考慮測(cè)試模塊時(shí),同時(shí)要考慮它和外界的聯(lián)系,用一些輔助模塊去模擬與被測(cè)模塊相聯(lián)系的其它模塊。 驅(qū)動(dòng)模塊 (driver) 樁模塊 (stub) 存根模塊驅(qū)動(dòng)模塊 (driver) 相當(dāng)于所測(cè)模塊的主程序。它接收測(cè)試數(shù)據(jù),把這些數(shù)據(jù)傳送給所測(cè)模塊,最后再輸出實(shí)測(cè)結(jié)果。 樁模塊 (stub) 存根

26、模塊。用以代替所測(cè)模塊調(diào)用的子模塊。 如果一個(gè)模塊要完成多種功能,可以將這個(gè)模塊看成由幾個(gè)小程序組成。必須對(duì)其中的每個(gè)小程序先進(jìn)行單元測(cè)試要做的工作,對(duì)關(guān)鍵模塊還要做性能測(cè)試。 對(duì)支持某些標(biāo)準(zhǔn)規(guī)程的程序,更要著手進(jìn)行互聯(lián)測(cè)試。有人把這種情況特別稱為模塊測(cè)試,以區(qū)別單元測(cè)試。(二)組裝測(cè)試(Integrated Testing) 組裝測(cè)試 (集成測(cè)試、聯(lián)合測(cè)試) 通常,在單元測(cè)試的基礎(chǔ)上,需要將所有模塊按照設(shè)計(jì)要求組裝成為系統(tǒng)。這時(shí)需要考慮的問(wèn)題是: 在把各個(gè)模塊連接起來(lái)的時(shí)侯,穿越模塊接口的數(shù)據(jù)是否會(huì)丟失; 一個(gè)模塊的功能是否會(huì)對(duì)另一個(gè)模塊的功能產(chǎn)生不利的影響; 各個(gè)子功能組合起來(lái),能否達(dá)到預(yù)

27、期要求的父功能; 全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問(wèn)題; 單個(gè)模塊的誤差累積起來(lái),是否會(huì)放大,從而達(dá)到不能接受的程度。在單元測(cè)試的同時(shí)可進(jìn)行組裝測(cè)試,發(fā)現(xiàn)并排除在模塊連接中可能出現(xiàn)的問(wèn)題,最終構(gòu)成要求的軟件系統(tǒng)。 子系統(tǒng)的組裝測(cè)試特別稱為部件測(cè)試,它所做的工作是要找出組裝后的子系統(tǒng)與系統(tǒng)需求規(guī)格說(shuō)明之間的不一致。 通常,把模塊組裝成為系統(tǒng)的方式有兩種 一次性組裝方式 增殖式組裝方式1. 一次性組裝方式 (big bang)l 它是一種非增殖式組裝方式。也叫做整體拼裝。l 使用這種方式,首先對(duì)每個(gè)模塊分別進(jìn)行模塊測(cè)試,然后再把所有模塊組裝在一起進(jìn)行測(cè)試,最終得到要求的軟件系統(tǒng)。2. 增殖式組裝方式 這種組裝方

28、式又稱漸增式組裝 首先對(duì)一個(gè)個(gè)模塊進(jìn)行模塊測(cè)試,然后將這些模塊逐步組裝成較大的系統(tǒng) 在組裝的過(guò)程中邊連接邊測(cè)試,以發(fā)現(xiàn)連接過(guò)程中產(chǎn)生的問(wèn)題 通過(guò)增殖逐步組裝成為要求的軟件系統(tǒng)。(1) 自頂向下的增殖方式 這種組裝方式將模塊按系統(tǒng)程序結(jié)構(gòu),沿控制層次自頂向下進(jìn)行組裝。 自頂向下的增殖方式在測(cè)試過(guò)程中較早地驗(yàn)證了主要的控制和判斷點(diǎn)。 選用按深度方向組裝的方式,可以首先實(shí)現(xiàn)和驗(yàn)證一個(gè)完整的軟件功能。(2) 自底向上的增殖方式 這種組裝的方式是從程序模塊結(jié)構(gòu)的最底層的模塊開始組裝和測(cè)試。 因?yàn)槟K是自底向上進(jìn)行組裝,對(duì)于一個(gè)給定層次的模塊,它的子模塊(包括子模塊的所有下屬模塊)已經(jīng)組裝并測(cè)試完成,所以

29、不再需要樁模塊。在模塊的測(cè)試過(guò)程中需要從子模塊得到的信息可以直接運(yùn)行子模塊得到。 自頂向下增殖的方式和自底向上增殖的方式各有優(yōu)缺點(diǎn)。 一般來(lái)講,一種方式的優(yōu)點(diǎn)是另一種方式的缺點(diǎn)。(3) 混合增殖式測(cè)試l 衍變的自頂向下的增殖測(cè)試 首先對(duì)輸入輸出模塊和引入新算法模塊進(jìn)行測(cè)試; 再自底向上組裝成為功能相當(dāng)完整且相對(duì)獨(dú)立的子系統(tǒng); 然后由主模塊開始自頂向下進(jìn)行增殖測(cè)試。l 自底向上-自頂向下的增殖測(cè)試 首先對(duì)含讀操作的子系統(tǒng)自底向上直至根結(jié)點(diǎn)模塊進(jìn)行組裝和測(cè)試; 然后對(duì)含寫操作的子系統(tǒng)做自頂向下的組裝與測(cè)試。l 回歸測(cè)試 這種方式采取自頂向下的方式測(cè)試被修改的模塊及其子模塊; 然后將這一部分視為子系

30、統(tǒng),再自底向上測(cè)試。關(guān)鍵模塊問(wèn)題l 在組裝測(cè)試時(shí),應(yīng)當(dāng)確定關(guān)鍵模塊,對(duì)這些關(guān)鍵模塊及早進(jìn)行測(cè)試。l 關(guān)鍵模塊的特征: 滿足某些軟件需求; 在程序的模塊結(jié)構(gòu)中位于較高的層次(高層控制模塊); 較復(fù)雜、較易發(fā)生錯(cuò)誤; 有明確定義的性能要求(三)確認(rèn)測(cè)試(Validation Testing)l 確認(rèn)測(cè)試又稱有效性測(cè)試。任務(wù)是驗(yàn)證軟件的功能和性能及其它特性是否與用戶的要求一致。l 對(duì)軟件的功能和性能要求在軟件需求規(guī)格說(shuō)明書中已經(jīng)明確規(guī)定。它包含的信息就是軟件確認(rèn)測(cè)試的基礎(chǔ)。1. 進(jìn)行有效性測(cè)試(黑盒測(cè)試) 有效性測(cè)試是在模擬的環(huán)境 (可能就是開發(fā)的環(huán)境) 下,運(yùn)用黑盒測(cè)試的方法,驗(yàn)證被測(cè)軟件是否滿足

31、需求規(guī)格說(shuō)明書列出的需求。 首先制定測(cè)試計(jì)劃,規(guī)定要做測(cè)試的種類。還需要制定一組測(cè)試步驟,描述具體的測(cè)試用例。 通過(guò)實(shí)施預(yù)定的測(cè)試計(jì)劃和測(cè)試步驟,確定 軟件的特性是否與需求相符; 所有的文檔都是正確且便于使用; 同時(shí),對(duì)其它軟件需求,例如可移植性、兼容性、出錯(cuò)自動(dòng)恢復(fù)、可維護(hù)性等,也都要進(jìn)行測(cè)試 在全部軟件測(cè)試的測(cè)試用例運(yùn)行完后,所有的測(cè)試結(jié)果可以分為兩類: 測(cè)試結(jié)果與預(yù)期的結(jié)果相符。這說(shuō)明軟件的這部分功能或性能特征與需求規(guī)格說(shuō)明書相符合,從而這部分程序被接受。 測(cè)試結(jié)果與預(yù)期的結(jié)果不符。這說(shuō)明軟件的這部分功能或性能特征與需求規(guī)格說(shuō)明不一致,因此要為它提交一份問(wèn)題報(bào)告。2. 軟件配置復(fù)查 軟件

32、配置復(fù)查的目的是保證 軟件配置的所有成分都齊全; 各方面的質(zhì)量都符合要求; 具有維護(hù)階段所必需的細(xì)節(jié); 而且已經(jīng)編排好分類的目錄。 應(yīng)當(dāng)嚴(yán)格遵守用戶手冊(cè)和操作手冊(cè)中規(guī)定的使用步驟,以便檢查這些文檔資料的完整性和正確性。3.測(cè)試和測(cè)試 在軟件交付使用之后,用戶將如何實(shí)際使用程序,對(duì)于開發(fā)者來(lái)說(shuō)是無(wú)法預(yù)測(cè)的。 測(cè)試是由一個(gè)用戶在開發(fā)環(huán)境下進(jìn)行的測(cè)試,也可以是公司內(nèi)部的用戶在模擬實(shí)際操作環(huán)境下進(jìn)行的測(cè)試。 測(cè)試的目的是評(píng)價(jià)軟件產(chǎn)品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。尤其注重產(chǎn)品的界面和特色。 測(cè)試可以從軟件產(chǎn)品編碼結(jié)束之時(shí)開始,或在模塊(子系統(tǒng))測(cè)試完成之后開始,也可以在

33、確認(rèn)測(cè)試過(guò)程中產(chǎn)品達(dá)到一定的穩(wěn)定和可靠程度之后再開始。 測(cè)試是由軟件的多個(gè)用戶在實(shí)際使用環(huán)境下進(jìn)行的測(cè)試。這些用戶返回有關(guān)錯(cuò)誤信息給開發(fā)者。 測(cè)試時(shí),開發(fā)者通常不在測(cè)試現(xiàn)場(chǎng)。因而,測(cè)試是在開發(fā)者無(wú)法控制的環(huán)境下進(jìn)行的軟件現(xiàn)場(chǎng)應(yīng)用。 在測(cè)試中,由用戶記下遇到的所有問(wèn)題,包括真實(shí)的以及主觀認(rèn)定的,定期向開發(fā)者報(bào)告。 測(cè)試主要衡量產(chǎn)品的FLURPS。著重于產(chǎn)品的支持性,包括文檔、客戶培訓(xùn)和支持產(chǎn)品生產(chǎn)能力。 只有當(dāng)測(cè)試達(dá)到一定的可靠程度時(shí),才能開始測(cè)試。它處在整個(gè)測(cè)試的最后階段。同時(shí),產(chǎn)品的所有手冊(cè)文本也應(yīng)該在此階段完全定稿。4.驗(yàn)收測(cè)試(Acceptance Testing)l 在通過(guò)了系統(tǒng)的有效

34、性測(cè)試及軟件配置審查之后,就應(yīng)開始系統(tǒng)的驗(yàn)收測(cè)試。l 驗(yàn)收測(cè)試是以用戶為主的測(cè)試。軟件開發(fā)人員和QA(質(zhì)量保證)人員也應(yīng)參加。l 由用戶參加設(shè)計(jì)測(cè)試用例,使用生產(chǎn)中的實(shí)際數(shù)據(jù)進(jìn)行測(cè)試。l 在測(cè)試過(guò)程中,除了考慮軟件的功能和性能外,還應(yīng)對(duì)軟件的可移植性、兼容性、可維護(hù)性、錯(cuò)誤的恢復(fù)功能等進(jìn)行確認(rèn)。l 確認(rèn)測(cè)試應(yīng)交付的文檔有: 確認(rèn)測(cè)試分析報(bào)告 最終的用戶手冊(cè)和操作手冊(cè) 項(xiàng)目開發(fā)總結(jié)報(bào)告。(四)系統(tǒng)測(cè)試(System Testing) 系統(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ī)

35、系統(tǒng)進(jìn)行一系列的組裝測(cè)試和確認(rèn)測(cè)試。 系統(tǒng)測(cè)試的目的在于通過(guò)與系統(tǒng)的需求定義作比較, 發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合或與之矛盾的地方。十三、測(cè)試種類 軟件測(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ò)誤。2、可靠性測(cè)試如果系統(tǒng)需求說(shuō)明書中有對(duì)可靠性的要求,則需進(jìn)行可靠性測(cè)試。 平均失效間隔時(shí)間 MTBF (Mean Time Between Failures) 是否超過(guò)規(guī)定時(shí)限? 因故障而停機(jī)的時(shí)間 MTTR (Mean Time To Repairs) 在一年中應(yīng)不超過(guò)多少

36、時(shí)間。3、強(qiáng)度測(cè)試強(qiáng)度測(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è)試。 設(shè)計(jì)出會(huì)對(duì)磁盤常駐內(nèi)存的數(shù)據(jù)過(guò)度訪問(wèn)的測(cè)試用例進(jìn)行測(cè)試。 強(qiáng)度測(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ù)組合4、性能測(cè)試性能測(cè)試是要檢查系統(tǒng)是否滿足在需求說(shuō)明

37、書中規(guī)定的性能。特別是對(duì)于實(shí)時(shí)系統(tǒng)或嵌入式系統(tǒng)。性能測(cè)試常常需要與強(qiáng)度測(cè)試結(jié)合起來(lái)進(jìn)行,并常常要求同時(shí)進(jìn)行硬件和軟件檢測(cè)。 通常,對(duì)軟件性能的檢測(cè)表現(xiàn)在以下幾個(gè)方面:響應(yīng)時(shí)間、吞吐量、輔助存儲(chǔ)區(qū),例如緩沖區(qū),工作區(qū)的大小等、處理精度,等等。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)硬件失效與故障; 能否切換或啟動(dòng)備用的硬件; 在故障發(fā)生時(shí)能否保護(hù)正在運(yùn)行的作業(yè)和系統(tǒng)狀態(tài); 在系統(tǒng)恢復(fù)后能否從最后記錄下來(lái)的無(wú)

38、錯(cuò)誤狀態(tài)開始繼續(xù)執(zhí)行作業(yè),等等。 掉電測(cè)試:其目的是測(cè)試軟件系統(tǒng)在發(fā)生電源中斷時(shí)能否保護(hù)當(dāng)時(shí)的狀態(tài)且不毀壞數(shù)據(jù),然后在電源恢復(fù)時(shí)從保留的斷點(diǎn)處重新進(jìn)行操作。6、啟動(dòng)停止測(cè)試這類測(cè)試的目的是驗(yàn)證在機(jī)器啟動(dòng)及關(guān)機(jī)階段,軟件系統(tǒng)正確處理的能力。這類測(cè)試包括 反復(fù)啟動(dòng)軟件系統(tǒng) (例如,操作系統(tǒng)自舉、網(wǎng)絡(luò)的啟動(dòng)、應(yīng)用程序的調(diào)用等) 在盡可能多的情況下關(guān)機(jī)。7、配置測(cè)試l 這類測(cè)試是要檢查計(jì)算機(jī)系統(tǒng)內(nèi)各個(gè)設(shè)備或各種資源之間的相互聯(lián)結(jié)和功能分配中的錯(cuò)誤。l 它主要包括以下幾種: 配置命令測(cè)試:驗(yàn)證全部配置命令的可操作性(有效性);特別對(duì)最大配置和最小配置要進(jìn)行測(cè)試。軟件配置和硬件配置都要測(cè)試。 循環(huán)配置測(cè)試

39、:證明對(duì)每個(gè)設(shè)備物理與邏輯的,邏輯與功能的每次循環(huán)置換配置都能正常工作。 修復(fù)測(cè)試:檢查每種配置狀態(tài)及哪個(gè)設(shè)備是壞的。并用自動(dòng)的或手工的方式進(jìn)行配置狀態(tài)間的轉(zhuǎn)換。8、安全性測(cè)試安全性測(cè)試是要檢驗(yàn)在系統(tǒng)中已經(jīng)存在的系統(tǒng)安全性、保密性措施是否發(fā)揮作用,有無(wú)漏洞。l 力圖破壞系統(tǒng)的保護(hù)機(jī)構(gòu)以進(jìn)入系統(tǒng)的主要方法有以下幾種: 正面攻擊或從側(cè)面、背面攻擊系統(tǒng)中易受損壞的那些部分; 以系統(tǒng)輸入為突破口,利用輸入的容錯(cuò)性進(jìn)行正面攻擊; 申請(qǐng)和占用過(guò)多的資源壓垮系統(tǒng),以破壞安全措施,從而進(jìn)入系統(tǒng); 故意使系統(tǒng)出錯(cuò),利用系統(tǒng)恢復(fù)的過(guò)程,竊取用戶口令及其它有用的信息; 通過(guò)瀏覽殘留在計(jì)算機(jī)各種資源中的垃圾(無(wú)用信息

40、),以獲取如口令,安全碼,譯碼關(guān)鍵字等信息; 瀏覽全局?jǐn)?shù)據(jù),期望從中找到進(jìn)入系統(tǒng)的關(guān)鍵字; 瀏覽那些邏輯上不存在,但物理上還存在的各種記錄和資料等。 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ī)、確切。10、可支持性測(cè)試這類測(cè)試是要驗(yàn)證系統(tǒng)的支持策略對(duì)于公司與用戶方面是否切實(shí)可行。 它所采用的方法是 試運(yùn)行支持過(guò)程(如對(duì)有錯(cuò)部分打補(bǔ)丁的過(guò)程,熱線界面等); 對(duì)

41、其結(jié)果進(jìn)行質(zhì)量分析; 評(píng)審診斷工具; 維護(hù)過(guò)程、內(nèi)部維護(hù)文檔; 修復(fù)一個(gè)錯(cuò)誤所需平均最少時(shí)間11、安裝測(cè)試安裝測(cè)試的目的不是找軟件錯(cuò)誤,而是找安裝錯(cuò)誤。 在安裝軟件系統(tǒng)時(shí),會(huì)有多種選擇。 要分配和裝入文件與程序庫(kù) 布置適用的硬件配置 進(jìn)行程序的聯(lián)結(jié)。 而安裝測(cè)試就是要找出在這些安裝過(guò)程中出現(xiàn)的錯(cuò)誤。 安裝測(cè)試是在系統(tǒng)安裝之后進(jìn)行測(cè)試。它要檢驗(yàn): 用戶選擇的一套任選方案是否相容; 系統(tǒng)的每一部分是否都齊全; 所有文件是否都已產(chǎn)生并確有所需要的內(nèi)容; 硬件的配置是否合理,等等。12、過(guò)程測(cè)試 在一些大型的系統(tǒng)中,部分工作由軟件自動(dòng)完成,其它工作則需由各種人員,包括操作員,數(shù)據(jù)庫(kù)管理員,終端用戶等,

42、按一定規(guī)程同計(jì)算機(jī)配合,靠人工來(lái)完成。 指定由人工完成的過(guò)程也需經(jīng)過(guò)仔細(xì)的檢查,這就是所謂的過(guò)程測(cè)試。13、互連測(cè)試 互連測(cè)試是要驗(yàn)證兩個(gè)或多個(gè)不同的系統(tǒng)之間的互連性。14、兼容性測(cè)試 這類測(cè)試主要想驗(yàn)證軟件產(chǎn)品在不同版本之間的兼容性。有兩類基本的兼容性測(cè)試: 向下兼容 交錯(cuò)兼容15、容量測(cè)試 容量測(cè)試是要檢驗(yàn)系統(tǒng)的能力最高能達(dá)到什么程度。例如, 對(duì)于編譯程序,讓它處理特別長(zhǎng)的源程序; 對(duì)于操作系統(tǒng),讓它的作業(yè)隊(duì)列“滿員”; 對(duì)于信息檢索系統(tǒng),讓它使用頻率達(dá)到最大。在使系統(tǒng)的全部資源達(dá)到“滿負(fù)荷”的情形下,測(cè)試系統(tǒng)的承受能力。16、文檔測(cè)試這種測(cè)試是檢查用戶文檔(如用戶手冊(cè))的清晰性和精確性。

43、 用戶文檔中所使用的例子必須在測(cè)試中一一試過(guò),確保敘述正確無(wú)誤。十四、調(diào)試(Debug) 軟件調(diào)試是在進(jìn)行了成功的測(cè)試之后才開始的工作。它與軟件測(cè)試不同,調(diào)試的任務(wù)是進(jìn)一步診斷和改正程序中潛在的錯(cuò)誤。 調(diào)試活動(dòng)由兩部分組成: 確定程序中可疑錯(cuò)誤的確切性質(zhì)和位置。 對(duì)程序(設(shè)計(jì),編碼)進(jìn)行修改,排除這個(gè)錯(cuò)誤。 調(diào)試工作是一個(gè)具有很強(qiáng)技巧性的工作。 軟件運(yùn)行失效或出現(xiàn)問(wèn)題,往往只是潛在錯(cuò)誤的外部表現(xiàn),而外部表現(xiàn)與內(nèi)在原因之間常常沒(méi)有明顯的聯(lián)系。如果要找出真正的原因,排除潛在的錯(cuò)誤,不是一件易事。 可以說(shuō),調(diào)試是通過(guò)現(xiàn)象,找出原因的一個(gè)思維分析的過(guò)程。(一)調(diào)試的步驟(1) 從錯(cuò)誤的外部表現(xiàn)形式入手

44、,確定程序中出錯(cuò)位置;(2) 研究有關(guān)部分的程序,找出錯(cuò)誤的內(nèi)在原因;(3) 修改設(shè)計(jì)和代碼,以排除這個(gè)錯(cuò)誤;(4) 重復(fù)進(jìn)行暴露了這個(gè)錯(cuò)誤的原始測(cè)試或某些有關(guān)測(cè)試。 從技術(shù)角度來(lái)看,查找錯(cuò)誤的難度在于: 現(xiàn)象與原因所處的位置可能相距甚遠(yuǎn)。 當(dāng)其它錯(cuò)誤得到糾正時(shí),這一錯(cuò)誤所表現(xiàn)出的現(xiàn)象可能會(huì)暫時(shí)消失,但并未實(shí)際排除。 現(xiàn)象實(shí)際上是由一些非錯(cuò)誤原因(例如,舍入不精確)引起的。 現(xiàn)象可能是由于一些不容易發(fā)現(xiàn)的人為錯(cuò)誤引起的。 錯(cuò)誤是由于時(shí)序問(wèn)題引起的,與處理過(guò)程無(wú)關(guān)。 現(xiàn)象是由于難于精確再現(xiàn)的輸入狀態(tài)(例如,實(shí)時(shí)應(yīng)用中輸入順序不確定)引起。 現(xiàn)象可能是周期出現(xiàn)的。在軟、硬件結(jié)合的嵌入式系統(tǒng)中常常遇

45、到。(二)幾種主要的調(diào)試方法調(diào)試的關(guān)鍵在于推斷程序內(nèi)部的錯(cuò)誤位置及原因。可以采用以下方法:1、強(qiáng)行排錯(cuò)這種調(diào)試方法目前使用較多,效率較低。它不需要過(guò)多的思考,比較省腦筋。例如: 通過(guò)內(nèi)存全部打印來(lái)調(diào)試,在這大量的數(shù)據(jù)中尋找出錯(cuò)的位置。 在程序特定部位設(shè)置打印語(yǔ)句,把打印語(yǔ)句插在出錯(cuò)的源程序的各個(gè)關(guān)鍵變量改變部位、重要分支部位、子程序調(diào)用部位,跟蹤程序的執(zhí)行,監(jiān)視重要變量的變化。 自動(dòng)調(diào)試工具。利用某些程序語(yǔ)言的調(diào)試功能或?qū)iT的交互式調(diào)試工具,分析程序的動(dòng)態(tài)過(guò)程,而不必修改程序。應(yīng)用以上任一種方法之前,都應(yīng)當(dāng)對(duì)錯(cuò)誤的征兆進(jìn)行全面徹底的分析,得出對(duì)出錯(cuò)位置及錯(cuò)誤性質(zhì)的推測(cè),再使用一種適當(dāng)?shù)恼{(diào)試方法

46、來(lái)檢驗(yàn)推測(cè)的正確性。2、回溯法調(diào)試這是在小程序中常用的一種有效的調(diào)試方法。一旦發(fā)現(xiàn)了錯(cuò)誤,人們先分析錯(cuò)誤征兆,確定最先發(fā)現(xiàn)“癥狀”的位置。然后,人工沿程序的控制流程,向回追蹤源程序代碼,直到找到錯(cuò)誤根源或確定錯(cuò)誤產(chǎn)生的范圍。 例如,程序中發(fā)現(xiàn)錯(cuò)誤處是某個(gè)打印語(yǔ)句。通過(guò)輸出值可推斷程序在這一點(diǎn)上變量的值。再?gòu)倪@一點(diǎn)出發(fā),回溯程序的執(zhí)行過(guò)程,反復(fù)考慮:“如果程序在這一點(diǎn)上的狀態(tài)(變量的值)是這樣,那么程序在上一點(diǎn)的狀態(tài)一定是這樣.”, 直到找到錯(cuò)誤的位置。3、歸納法調(diào)試 歸納法是一種從特殊推斷一般的系統(tǒng)化思考方法。歸納法調(diào)試的基本思想是:從一些線索(錯(cuò)誤征兆)著手,通過(guò)分析它們之間的關(guān)系來(lái)找出錯(cuò)誤

47、。 收集有關(guān)的數(shù)據(jù) 列出所有已知的測(cè)試用例和程序執(zhí)行結(jié)果??茨男┹斎霐?shù)據(jù)的運(yùn)行結(jié)果是正確的,哪些輸入數(shù)據(jù)的運(yùn)行結(jié)果有錯(cuò)誤。 組織數(shù)據(jù) 由于歸納法是從特殊到一般的推斷過(guò)程,所以需要組織整理數(shù)據(jù),以發(fā)現(xiàn)規(guī)律。 常以3W1H形式組織可用的數(shù)據(jù):“What” 列出一般現(xiàn)象;“Where”說(shuō)明發(fā)現(xiàn)現(xiàn)象的地點(diǎn);“When” 列出現(xiàn)象發(fā)生時(shí)所有已知情況;“How” 說(shuō)明現(xiàn)象的范圍和量級(jí);“Yes”描述出現(xiàn)錯(cuò)誤的3W1H;“No”作為比較,描述了沒(méi)有錯(cuò)誤的3W1H。通過(guò)分析找出矛盾來(lái)。 提出假設(shè)分析線索之間的關(guān)系,利用在線索結(jié)構(gòu)中觀察到的矛盾現(xiàn)象,設(shè)計(jì)一個(gè)或多個(gè)關(guān)于出錯(cuò)原因的假設(shè)。如果一個(gè)假設(shè)也提不出來(lái),歸納

48、過(guò)程就需要收集更多的數(shù)據(jù)。此時(shí),應(yīng)當(dāng)再設(shè)計(jì)與執(zhí)行一些測(cè)試用例,以獲得更多的數(shù)據(jù)。 證明假設(shè)把假設(shè)與原始線索或數(shù)據(jù)進(jìn)行比較,若它能完全解釋一切現(xiàn)象,則假設(shè)得到證明;否則,就認(rèn)為假設(shè)不合理,或不完全,或是存在多個(gè)錯(cuò)誤,以致只能消除部分錯(cuò)誤。4、 演繹法調(diào)試演繹法是一種從一般原理或前提出發(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ò)的原因。 列舉所有可能出錯(cuò)原因的假設(shè)把所有可能的錯(cuò)誤原因列成表。通過(guò)它們,可以組織、

49、分析現(xiàn)有數(shù)據(jù)。 利用已有的測(cè)試數(shù)據(jù),排除不正確的假設(shè)仔細(xì)分析已有的數(shù)據(jù),尋找矛盾,力求排除前一步列出所有原因。如果所有原因都被排除了,則需要補(bǔ)充一些數(shù)據(jù)(測(cè)試用例),以建立新的假設(shè)。 改進(jìn)余下的假設(shè)利用已知的線索,進(jìn)一步改進(jìn)余下的假設(shè),使之更具體化,以便可以精確地確定出錯(cuò)位置。 證明余下的假設(shè)(三)調(diào)試原則 在調(diào)試方面,許多原則本質(zhì)上是心理學(xué)方面的問(wèn)題。調(diào)試由兩部分組成,調(diào)試原則也分成兩組。 確定錯(cuò)誤的性質(zhì)和位置的原則 用頭腦去分析思考與錯(cuò)誤征兆有關(guān)的信息。 避開死胡同。 只把調(diào)試工具當(dāng)做輔助手段來(lái)使用。利用調(diào)試工具,可以幫助思考,但不能代替思考。 避免用試探法,最多只能把它當(dāng)做最后手段。 修改錯(cuò)誤的原則 在出現(xiàn)錯(cuò)誤的地方,很可能還有別的錯(cuò)誤。 修改錯(cuò)誤的一個(gè)常見失誤是只修改了這個(gè)錯(cuò)誤的征兆或這個(gè)錯(cuò)誤的表現(xiàn),而

溫馨提示

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