版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《軟件工程》軟件測試5.1軟件測試的目標和原則5.2軟件測試的方法5.3軟件測試的步驟和策略5.4停止測試5.5自動化測試工具學習內容:第五章軟件測試第五章軟件測試項目后期階段包括軟件測試、軟件維護、軟件項目后期管理等若干階段。通常軟件開發(fā)的2/3以上時間都處于項目后期階段,其中軟件測試工作量占整個項目開發(fā)工作量的40%左右。
軟件測試是為了發(fā)現錯誤而執(zhí)行程序的過程,軟件測試是保證軟件可靠性的主要手段。測試階段的主要任務是發(fā)現并改正軟件中的錯誤。白盒測試和黑盒測試是軟件測試的兩類基本方法。軟件測試通常至少分為單元測試、集成測試和系統測試三個基本階段。軟件維護的目的是要保證軟件的正常運行,盡可能延長軟件生命周期。軟件測試的目標:GlenMyers(梅爾斯)在他的軟件測試著作中就軟件測試的目的提出下列觀點:
(1)測試是一個為了尋找錯誤而運行程序的過程。(2)一個好的測試用例是指很可能找到迄今為止尚未發(fā)現的錯誤的用例。(3)一個成功的測試是指揭示了迄今為止尚未發(fā)現的錯誤的測試。軟件(程序)測試是為了發(fā)現錯誤而執(zhí)行程序的過程。5.1軟件測試的目標和原則換言之,測試的目的是想以最少的時間和人力,系統地找出軟件中潛在的各種錯誤和缺陷。如果我們成功地實施了測試,我們就能夠發(fā)現軟件中的錯誤。測試的附帶收獲是,它能夠證明軟件的功能和性能與需求說明相符合。實施測試收集到的測試結果數據為可靠性分析提供了依據。
測試不能表明軟件中不存在錯誤,它只能說明軟件中存在錯誤。
基于不同的立場,存在著兩種
完全不同的測試目的從用戶的角度出發(fā),普遍希望通過軟件測試暴露軟件中隱藏的錯誤和缺陷,以考慮是否可接受該產品。從軟件開發(fā)者的角度出發(fā),則希望測試成為表明軟件產品中不存在錯誤的過程,驗證該軟件已正確地實現了用戶的要求,確立人們對軟件質量的信心。軟件測試的原則1.應當把“盡早地和不斷地進行軟件測試”作為軟件開發(fā)者的座右銘。2.測試用例應由測試輸入數據和對應的預期輸出結果這兩部分組成。3.程序員應避免檢查自己的程序。4.在設計測試用例時,應包括合理的輸入條件和不合理的輸入條件。5.充分注意測試中的群集現象。
經驗表明,測試后程序中殘存的錯誤數目與該程序中已發(fā)現的錯誤數目成正比。6.嚴格執(zhí)行測試計劃,排除測試的隨意性。7.應當對每一個測試結果做全面檢查。8.妥善保存測試計劃,測試用例,出錯統計和最終分析報告,為維護提供方便。
軟件測試的對象
軟件測試并不等于程序測試。軟件測試應貫穿于軟件定義與開發(fā)的整個期間。需求分析、概要設計、詳細設計以及程序編碼等各階段所得到的文檔,包括需求規(guī)格說明、概要設計規(guī)格說明、詳細設計規(guī)格說明以及源程序,都應成為軟件測試的對象。5.充分注意測試中的群集現象。
經驗表明,測試后程序中殘存的錯誤數目與該程序中已發(fā)現的錯誤數目成正比。6.嚴格執(zhí)行測試計劃,排除測試的隨意性。7.應當對每一個測試結果做全面檢查。8.妥善保存測試計劃,測試用例,出錯統計和最終分析報告,為維護提供方便。
5.2軟件測試的方法系統分析測試
系統分析測試是測試項目是否能體現整個系統的需求,對用戶的需求從具體到抽象的一個過程的驗證。注意:軟件測試應貫穿于軟件定義與開發(fā)的整個期間。
5.2.1靜態(tài)測試和動態(tài)測試1.靜態(tài)測試:指被測試程序不在機器上運行,而是采用人工測試和計算機輔助靜態(tài)分析的手段對程序進行測試。包括:人工測試和計算機輔助靜態(tài)分析測試.(發(fā)現30%~70%邏輯和編碼錯誤)2.動態(tài)測試:指通過運行程序發(fā)現錯誤。大多測試采用動態(tài)測試。包括白盒測試法和黑盒測試法。測試信息流:軟件配置:軟件需求規(guī)格說明、軟件設計規(guī)格說明、源代碼等;測試配置:測試計劃、測試用例、測試程序等;測試工具:測試數據自動生成程序、靜態(tài)分析程序、動態(tài)分析程序、測試結果分析程序、以及驅動測試的測試數據庫等等。測試結果分析:比較實測結果與預期結果,評價錯誤是否發(fā)生。排錯(調試):對已經發(fā)現的錯誤進行錯誤定位和確定出錯性質,并改正這些錯誤,同時修改相關的文檔。修正后的文檔再測試:直到通過測試為止。5.2.2系統測試用例的設計
1.測試方法(1)黑盒法
該方法把被測試對象看成一個黑盒子,測試人員完全不考慮程序的內部結構和處理過程,只在軟件的接口處進行測試,依據需求規(guī)格說明書,檢查程序是否滿足功能要求。因此,黑盒測試又稱為功能測試或數據驅動測試。通過黑盒測試主要發(fā)現下面錯誤:是否有不正確或遺漏了的功能;在接口上,能否正確地接受輸入數據,能否產生正確的輸出信息;訪問外部信息是否有錯;性能上是否滿足要求等等。(2)白盒法
該方法把被測試對象看成一個白盒子,測試人員須了解程序的內部結構和處理過程,以檢查處理過程的細節(jié)為基礎,對程序中盡可能多的邏輯路徑進行測試,檢驗內部控制結構和數據結構是否有錯,實際的運行狀態(tài)與預期的狀態(tài)是否一致。白盒測試又稱為結構測試或邏輯驅動測試。下圖給出一個白盒測試實例:某軟件研制測試報告圖2.白盒技術測試用例的設計
測試用例設計的基本目的是確定一組最有可能發(fā)現某個錯誤或某類錯誤的測試數據。實際工作中,采用黑盒與白盒相結合的技術是較為合理的做法。
白盒測試屬于結構測試,所以被測對象基本上是源程序,以程序的內部邏輯為基礎來設計測試用例。一、邏輯覆蓋:是以程序內部邏輯為基礎的測試技術,屬白盒測試。這一測試考慮測試用例對程序內部邏輯覆蓋的程度。目前常用的一些覆蓋技術有以下八種。
1).語句覆蓋
語句覆蓋的含義是選擇足夠多的測試用例,使得被測程序中的每條語句至少執(zhí)行一次。下面是測試的一段程序的流程圖對應的C源程序(用C語言書寫)。floatA,B,X;
if(A>1&&B==0)X=X/A;if(A==2||X>1)X=X+1;……
為了使每條語句都執(zhí)行一次,程序應該按sacbed路徑執(zhí)行,為實現此路徑而選取下面的一組輸入數據(實際上X可以是任意實數):A=2,B=0,X=2圖5.1語句覆蓋
通過上例可以看出,這組數據只測試了條件為真的情況,若實際輸入的條件為假時有錯誤顯然測試不出來。事實上,語句覆蓋對程序的邏輯覆蓋很少,語句覆蓋只關心判定表達式的值,而沒有分別測試判定表達式中每個條件取不同值的情況。
與后面所介紹的其他覆蓋相比,語句覆蓋是最弱的邏輯覆蓋準則。
2).判定覆蓋
判定覆蓋就是設計若干個測試用例,運行所測程序,使得程序中每個判斷的取真分支和取假分支至少經歷一次。判定覆蓋又稱為分支覆蓋。判定覆蓋的每個語句至少經歷一次。例如對于圖5.1來說,能夠分別覆蓋路徑sacbed和sabd的一組測試數據,或者覆蓋路徑sacbd和sabed的兩組測試數據均可滿足判定覆蓋標準。例如,以兩組測試數據就可做到判定覆蓋:(1)A=4,B=0,X=1(覆蓋sacbd);(2)A=2,B=1,X=3(覆蓋sabed)。判定覆蓋的缺點仍然是覆蓋的不全,只覆蓋了路徑的一半,如將X>1誤寫成X<1,上組(1)數據仍覆蓋sacbd,可見判定覆蓋仍然很弱,但比語句覆蓋強。
3).條件覆蓋
條件覆蓋就是設計若干個測試用例,運行所測程序,使得程序中每個判斷的每個條件的可能取值至少執(zhí)行一次。(條件覆蓋使得每個語句至少執(zhí)行一次。)例如對于圖5.1來說,共有兩個判定表達式,每個表達式中有兩個條件。為滿足條件覆蓋,在a點有以下幾種情況出現:A>1,A≤1,B=0,B≠0;在b點有以下幾種情況出現:A=2,A≠2,X>1,X≤1。因而,只需要使用下面兩組測試數據就可達到上述覆蓋標準。(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=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)。上述例子的第二個判定表達式的值總為真,不滿足判定覆蓋的要求,為解決這一矛盾,需要對條件和分支兼顧。
4).判定/條件覆蓋
判定/條件覆蓋就是設計足夠的測試用例,使得判斷中每個條件的所有可能取值至少執(zhí)行一次,同時每個判斷的所有可能判斷結果至少執(zhí)行一次。即要求各個判斷的所有可能的條件取值組合至少執(zhí)行一次。
對于圖5.1的例子而言,下述兩組測試數據滿足判定/條件覆蓋標準。(1)A=2,B=0,X=4;(2)A=1,B=1,X=1。
判定/條件覆蓋也有缺陷。從表面來看,它測試了所有條件的取值。但實際并不是這樣。因為一些條件往往掩蓋了另一些條件。對于條件表達式(A>1)AND(B=0)來說,只要(A>1)的測試為真,才需測試(B=0)的值來確定此表達式的值,但是若(A>1)的測試值為假時,不需再測(B=0)的值就可確定此表達式的值為假,因而B=0沒有被檢查。同理,對于(A=2)OR(X>1)這個表達式來說,只要(A=2)測試結果為真,不必測試(X>1)的結果就可確定表達式的值為真。所以對于判定/條件覆蓋來說,邏輯表達式中的錯誤不一定能夠查得出來。
5).條件組合覆蓋
條件組合覆蓋就是設計足夠的測試用例,運行所測程序,使得每個判斷的所有可能的條件取值組合至少執(zhí)行一次。對于圖5.1的例子來說,共有以下八種可能的條件組合:(1)A>1,B=0屬第一個判斷的取真分支;(2)A>1,B≠0屬第一個判斷的取假分支;
A≤1,B=0屬第一個判斷的取假分支;
A≤1,B≠0屬第一個判斷的取假分支;
A=2,X>1屬第二個判斷的取真分支;
A=2,X≤1屬第二個判斷的取真分支;
A≠2,X>1屬第二個判斷的取真分支;
A≠2,X≤1屬第二個判斷的取假分支。對于每個判斷,要求所有可能的條件的取值組合都必須取到。在圖5.1中,每個判斷各有兩個條件,所以各有四個條件取值的組合。下面的四組測試數據可以使上面列出的八種組合每種至少出現一次:
(1)A=2,B=0,X=4(針對(1),(5)兩種組合,執(zhí)行路徑sacbed);(2)A=2,B=1,X=1(針對(2),(6)兩種組合,執(zhí)行路徑sabed);(3)A=1,B=0,X=2(針對(3),(7)兩種組合,執(zhí)行路徑sabed);(4)A=1,B=1,X=1(針對(4),(8)兩種組合,執(zhí)行路徑sabd)。
必須明確:在此例中條件組合覆蓋并未要求第一個判定的四個組合與第二個判定的四個組合再進行組合,若那樣,就需42=16個測試用例了。顯然,滿足條件組合覆蓋標準的測試數據,也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋標準。因此,條件組合覆蓋是前述幾種覆蓋標準中最強的。但是,滿足條件覆蓋標準的測試數據并不一定能使程序中的每條路徑都執(zhí)行到,如上述四組測試數據都沒有測試到路徑sacbd。
總結:在實際的邏輯覆蓋測試中,一般以條件組合覆蓋為主設計測試用例,然后再補充部分用例,以達到路徑覆蓋測試標準。
6).點覆蓋
點覆蓋是設計足夠的測試數據,使程序執(zhí)行時至少經過程序圖中每個節(jié)點一次。圖論中,點覆蓋的概念定義如下:如果連通圖G的子圖G"是連通的,且包含G的所有節(jié)點,則稱G"是G的點覆蓋。在正常情況下,程序圖是連通的有向圖,圖中每個節(jié)點相當于程序流程圖中的一框(一個或多個語句),所以點覆蓋相當于語句覆蓋。
7).邊覆蓋
邊覆蓋是設計足夠的測試數據,使得程序執(zhí)行路徑至少經過程序圖中每一個邊一次,相應的圖論中的定義是:如果連通圖G和子圖G“是連通的,而且G”包含G的所有邊,則稱G“是G的邊覆蓋。(圖5-3(b)程序圖是退化了的程序流程圖(圖5-3(a)),它是放映控制流程的有向圖)。為了使程序執(zhí)行路徑經過程序圖的邊覆蓋(1,2,3,4,5,6,7),至少需要兩組測試數據(分別執(zhí)行路徑1-2-3和1-4-5-6-7,或分別執(zhí)行路徑1-4-5-3和1-2-6-7)。
一般情況下,邊覆蓋和判定覆蓋是一致的。例如,上述中滿足判定覆蓋標準的測試數據同時滿足邊覆蓋的標準。(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)。圖5-2:程序圖
8).路徑覆蓋
路徑覆蓋是選取足夠多測試數據,使程序的每條可能路徑都至少執(zhí)行一次(若程序圖中存在環(huán),則要求每個環(huán)至少經過一次)。對于圖5-3(b)而言,共有四條可執(zhí)行的路徑:1-11;1-2-3-4-5-10-1-11;1-2-3-6-8-9-10-1-11和1-2-3-6-7-9-10-1-11。對應于這四條路徑,
路徑覆蓋相對來說是相當強的邏輯覆蓋標準。測試數據暴露程序錯誤的能力比較強,有一定的代表性,它能夠保證程序中每條可能的路徑都至少執(zhí)行一次。但是路徑覆蓋并沒有檢驗表達式中條件的各種組合情況,而只考慮每個判定表達式的取值。若把路徑覆蓋和條件覆蓋組合起來,可以設計出檢錯能力更強的測試數據。二、循環(huán)覆蓋
在邏輯覆蓋的測試技術中,以上只討論了程序內部有判定存在的邏輯結構的測試用例設計技術。而循環(huán)也是程序的主要結構,要覆蓋含有循環(huán)結構的所有路徑是不可能的,但可通過限制次數來測試,下面給出設計原則供參考:(1)單循環(huán):其中n為可允許執(zhí)行循環(huán)的最大次數。設計以下情況的測試用例:①跳過循環(huán)。②只執(zhí)行循環(huán)一次。③執(zhí)行循環(huán)m次,其中m<n.④執(zhí)行循環(huán)n-1次,n次,n+1次。(2)嵌套循環(huán)①置外循環(huán)處于最小循環(huán)計數值,對于內層進行單循環(huán)測試。②由里向外,進行下一層的循環(huán)測試。三、基本路徑測試基本路徑測試是在程序控制流程圖的基礎上,通過分析控制構造的環(huán)路復雜性,導出基本路徑集合。基本路徑測試的步驟為:(1)以詳細設計或源程序為基礎,導出控制流程圖的拓撲結構-----程序圖。
程序圖是退化了的程序流程圖,它是反映控制流程的有向圖。其中小圓圈成為結點,代表了流程圖中每個處理符號(矩形、菱形框),有箭頭的連線表示控制流向,稱為程序圖中的邊后路徑。圖5.3(a)是一個程序流程圖,可以將它轉換成圖5.3(b)程序圖(假設菱形框表示的判斷內設有覆合的條件)。圖5.3(a)程序流程圖5.3(b)程序圖在轉換時注意以下幾點:①一條邊必須終止于一個結點,在選擇結構中的分支匯聚處即使無語句也應有匯聚結點②若判斷中的邏輯表達式是復合條件,應分解為一系列只有單個條件的嵌套判斷,如對于圖5.4(a)的符合條件的判定應畫成圖5.4(b)所示的程序圖
5.5.(2)計算程序圖G的環(huán)路復雜性V(G).McCabe定義程序圖的環(huán)路復雜性為此平面圖中區(qū)域的個數。區(qū)域個數為邊和結點圈定的封閉區(qū)域數加上圖形的區(qū)域數1。例如圖5.3(b)的V(G)=4也可按另一種方法計算,即V(G)=判定結點數+1(3)確定只包含獨立路徑的基本路徑集
環(huán)路復雜性可導出程序基本路徑基合中的獨立路徑條數,這是確保程序中每個執(zhí)行語句至少執(zhí)行一次所必需的測試用例書目的上界。獨立路徑是指包括一組以前沒有處理的語句或條件的一條路徑。從程序圖來看,一條獨立路徑是至少包含有一條在其他獨立路徑中未有過的邊的路徑,例如,在圖5.3(b)所示的圖中,一組獨立的路徑是:path1:1-11path2:1-2-3-4-5-10-1-11path3:1-2-3-6-8-10-1-11path4:1-2-3-6-7-9-1-11從例中可知,一條新的路徑必須保含有一條新的邊。這四條路徑組成了圖5.3(b)所示的程序圖的一個基本路徑集,4是構成這個基本路徑集的獨立路徑數的上界,這也是設計測試用例的數目。只要測試用例確保這些基本路徑的執(zhí)行,就可以使程序中每個可執(zhí)行語句至少執(zhí)行一次,每個條件的取“真”和取“假”分支也能得到測試?;韭窂郊皇俏ㄒ坏?,對于給定的程序圖,可以得到不同的基本路徑集。(4)設計測試用例,確?;韭窂郊现忻織l路徑的執(zhí)行。3.黑盒技術測試用例的設計
黑盒測試是功能測試,因此設計測試用例時,需要研究需求規(guī)格說明和概要設計說明中有關程序功能或輸入、輸出之間的關系等信息,從而與測試后的結果進行分析比較。
用黑盒技術設計測試用例的方法一般有以下介紹的四種,在實際測試中應該把各種方法結合起來使用。一、等價類劃分用等價類劃分的方法設計測試用例的步驟為:(1)
劃分等價類
從程序的功能說明(如需求規(guī)格說明書)找出一個個輸入條件(通常是一句話或一個短語),然后把每一個輸入條件劃分成兩個或多個等價類,將其列表,其格式為表5.1所示表5.1表中合理等價類是指各種正確的輸入數據,不合理的等價類是其他錯誤的輸入數據。劃分等價類是一個比較復雜的問題,以下提供了幾條經驗以供參考。A如果某個輸入條件規(guī)定了取值范圍或值的個數。則可確定一個合理的等價類(輸入值或數在此范圍內)和兩個不合理等價類(輸入值或個數小于這個范圍的最小值或大于這個范圍)。例如,輸入值是兒童的編號位數,取值范圍為0<編號位數<=8,確定一個合理的等價類為“0<編號位數<=8”,兩個不合理的等價類為“編號位數<0”和“編號位數>8”。B如果規(guī)定了輸入數據的一組值,而且程序對不同的輸入值做不同的處理,則每個允許輸入值是一個合理等價類,此外還有一個不合理等價類(任何一個不允許的輸入值)。例如,輸入條件上說明教師的職稱可為助教、講師、副教授、教授四種職稱之一,則分別取這4個值作為4個合理等價類,另外把4個職稱之外的任何職稱作為不合理等價類。C如果規(guī)定了輸入數據必須遵循的規(guī)則,可確定一個合理等價類(符合規(guī)則)和若干個不合理等價類(從各種不同角度違反規(guī)則)。D如果已劃分的等價類中各元素在程序中的處理方式不同,則應將此等價類進一步劃分為更小的等價類。
以上這些劃分輸入數據等價類的經驗也同樣適用于輸出數據,這些數據也只是測試時可能遇到的情況的很小的部分。為了能正確的劃分等價類,一定要正確分析被測程序的功能。(2)
確定測試用例根據已劃分的等價類,按以下步驟設計測試用例:①
為每一個等價類編號。②
設計一個測試用例,使其盡可能多地覆蓋尚未被覆蓋過的合理等價類。重復這步,直到所有合理等價類被測試用例覆蓋。③
設計一個測試用例,使其只覆蓋一個不合理等價類。重復這一步,直到所有不合理等價類被覆蓋。之所以這樣做,是因為某些程序中對某一輸入錯誤的檢查往往會屏蔽對其他輸入錯誤的檢查。因此必須針對每一個不合理等價類,分別設計測試用例。例5.1:某報表處理系統,要求用戶輸入處理報表的日期。假設日期限制在2000年1月至2008年12月,即系統只能對該段日期由年月的六位數字字符組成,前四位代表年,后兩位代表月?,F用等價劃分法設計測試用例,來測試程序的“日期檢查功能”。劃分等價類并編號。劃分成三個有效等價類,七個無效等價類,如表5.2所示。表5.2“報表日期”輸入條件的等價類表輸入數據合理等價類不合理等價類
報表日期
1六位數字字符2有非數字字符3少于六位數字字符4多于六位數字字符年份范圍
5在2000-2008之間6小于20007大于2008月份范圍
8在1-12之間9等于010大于12A為合理定價類設計測試用例,對于表中編號為1、5、8對應的三個合理等價類,用一個測試用例覆蓋。測試數據期望結果覆蓋范圍200605輸入有效1、5、8B為每一個不合理等價類至少設計一個測試用例。測試數據期望結果覆蓋范圍99MAY輸入無效220005輸入無效32005
005輸入無效4198912輸入無效6200901輸入無效7200700輸入無效9200613輸入無效10注意在七個不合理的測試用例中,不能出現相同的測試用例,否則相當于一個測試用例覆蓋了一個以上不合理等價類,使程序測試不完全。等價類劃分方法比隨機選擇測試用例要好得多,但這個方法的缺點是沒有選擇某些高效的、能夠發(fā)現更多錯誤的測試用例。
二、邊界值分析實踐經驗表明,程序往往在處理邊界情況時發(fā)生錯誤。邊界情況指輸入等價類和輸出等價類邊界上的情況。因此檢查邊界情況的測試用例比較高效的,可以查出更多錯誤。例如,在做三角形設計時,要輸入三角形的三個邊長:A、B和C。這三個數值應當滿足A>0,B>0,C>0,A+B>C,A+C>B,B+C>A,才能構成三角形。但如果把六個不等式中的任何一個“〉”錯寫成“≥”,那樣不能構成三角形的問題恰出現在容易被疏忽的邊界附近。
使用邊界值分析方法設計測試用例時一般與等價類劃分結合起來。但它不是從一個等價類中任選一個例子作為代表,而是將測試邊界情況作為重點目標,選取正好=、剛剛>或剛剛<邊界值的測試數據。下面提供的一些設計原則供參考:(1)如果輸入條件規(guī)定了值的范圍,可以選擇正好等于邊界值的數據作為合理的測試用例,同時還要選擇剛好越過邊界值的數據作為不合理的測試用例。如輸入值位數的范圍是(0,8),可取1,6,8等位數的值作為測試數據。(2)對每個輸入條件指出了輸入數據的個數,則按最大個數、最小個數、比最小個數少1、比最大個數多1等情況分別設計測試用例。如。一個輸入文件可包括1-255個記錄,則分別設計有1個記錄、255個記錄,以及0個記錄和256個記錄的輸入文件的測試用例。(3)對每個輸出文件分別按照以上原則(1)或(2)確定輸出值的邊界情況。假如某社區(qū)衛(wèi)生綜合管理系統規(guī)定,只能查詢入園日期為1995-2004年的孩子信息,可以設計測試用例,使得查詢范圍內的某一年后9年孩子的信息,還需設計查詢1994年、2005年孩子信息的測試用例(不合理輸出等價類)
由于輸出值的邊界不與輸入值的邊界相對應,所以要檢查輸出值的邊界不一定可能,要產生超出輸出值之外的結果也不一定能做到,但必要時還需試一試。(4)如果程序的規(guī)格說明給出輸入或輸出域是個有序集合(如順序文件、線性表、鏈表等),則應選取集合的第一個元素和最后一個元素作為測試用例。例5.2:題意同例5.1,用邊界值分析設計測試用例。程序中判斷輸入日期(年月)是否有效,假設使用如下語句:IF(ReportDate<=MaxDate)AND(ReportDate>=MinDate)THEN產生指定日期報表ELSE顯示錯誤信息ENDIF如果將程序中的“<=”誤寫為“<”,則例5.1中所有測試用例都不能發(fā)現這一錯誤,采用邊界值分析法的測試用例如表5.3所示。表5.3“報表日期”邊界值分析法測試用例輸入等價類測試用例說明測試數據期望結果選取理由報表日期2個數字字符5個數字字符6個數字字符有1個非數字字符全部是非數字字符7個數字字符05200482004082004,8Day---2004018顯示出錯顯示出錯輸出有效顯示出錯顯示出錯顯示出錯僅有兩個合法字符比有效長度少1類型及長度均有效有一個非法字符6個非法字符比有效長度多1日期范圍在有效范圍邊界上選取數據199501200501199500200502輸入有效輸入有效顯示出錯顯示出錯最小日期最大日期剛好小于最小日期剛好大于最大日期月份范圍月份為1月月份為12月月份<1月份為>12199501199512199500199513輸入有效輸入有效顯示出錯顯示出錯最小月份最大月份剛好小于最小月份剛好大于最大月份三、錯誤推測
在測試程序時,人們可能根據經驗或直覺推測程序中可能存在的各種錯誤,從而有針對性的編寫檢查這些錯誤的測試用例,這就是錯誤推測法。
錯誤推測法沒有確定的步驟,憑經驗進行。它的基本思想是列出程序中可能發(fā)生錯誤的情況,根據這些情況選擇測試用例。如輸入、輸出數據為零時容易發(fā)生錯誤的情況,又如,輸入表格為空或輸入表格只有一行是容易出錯的情況等等。例如:對于一個排序程序,列出以下幾項需特別測試的情況:(1)
輸入表為空。(2)
輸入表只含一個元素(3)
輸入表中所有元素均相同(4)
輸入表中已排好序又如,測試一個采用二分法的檢索程序,考慮一下情況:(1)
表中只有一個元素(2)
表長是2的冪(3)
表長是2的冪減1或2的冪加1。等等,要根據具體情況具體分析。四、因果圖等價類劃分和邊界值分析方法都只是孤立地考慮各個輸入數據的測試功能,而沒有考慮多個輸入數據的組合引起的錯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度滑雪場設施裝修安全防護合同3篇
- 2025年度早餐店加盟連鎖承包合同范本4篇
- 2025年度智能車間承包環(huán)保技術改造協議4篇
- 2024-2028年中國無線電接收機行業(yè)發(fā)展前景預測及投資戰(zhàn)略規(guī)劃研究報告
- 中國太陽能空調項目可行性研究報告建議書
- 2025年度個人二手房定金買賣合同書標準化版2篇
- 2025年度個人借款聯保合同(附財產抵押)4篇
- 2025年山東國新抱犢食品有限公司招聘筆試參考題庫含答案解析
- 二零二五版苗木種植基地水資源利用與節(jié)水技術合同4篇
- 2025年寧夏昊陽資產管理有限公司招聘筆試參考題庫含答案解析
- 公司組織架構圖(可編輯模版)
- 1汽輪機跳閘事故演練
- 陜西省銅川市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細
- 禮品(禮金)上交登記臺賬
- 普通高中英語課程標準詞匯表
- 北師大版七年級數學上冊教案(全冊完整版)教學設計含教學反思
- 2023高中物理步步高大一輪 第五章 第1講 萬有引力定律及應用
- 青少年軟件編程(Scratch)練習題及答案
- 浙江省公務員考試面試真題答案及解析精選
- 系統性紅斑狼瘡-第九版內科學
- 全統定額工程量計算規(guī)則1994
評論
0/150
提交評論