版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、如何編寫單元測試用例(白盒測試)。一、 單元測試的概念 單元通俗的說就是指一個實現(xiàn)簡單功能的函數(shù)。單元測試就是只用一組特定的輸入(測試用例)測試函數(shù)是否功能正常,并且返回了正確的輸出。 測試的覆蓋種類 1.語句覆蓋:語句覆蓋就是設(shè)計若干個測試用例,運行被測試程序,使得每一條可執(zhí)行語句至少執(zhí)行一次。 2.判定覆蓋(也叫分支覆蓋):設(shè)計若干個測試用例,運行所測程序,使程序中每個判斷的取真分支和取假分支至少執(zhí)行一次。 3.條件覆蓋:設(shè)計足夠的測試用例,運行所測程序,使程序中每個判斷的每個條件的每個可能取值至少執(zhí)行一次。 4.判定條件覆蓋:設(shè)計足夠的測試用例,運行所測程序,使程序中每個判斷的每個條件的
2、每個可能取值至少執(zhí)行一次,并且每個可能的判斷結(jié)果也至少執(zhí)行一次。 5.條件組合測試:設(shè)計足夠的測試用例,運行所測程序,使程序中每個判斷的所有條件取值組合至少執(zhí)行一次。 6.路徑測試:設(shè)計足夠的測試用例,運行所測程序,要覆蓋程序中所有可能的路徑。 用例的設(shè)計方案主要的有下面幾種:條件測試,基本路徑測試,循環(huán)測試。通過上面的方法可以實現(xiàn)測試用例對程序的邏輯覆蓋,和路徑覆蓋。二、開始測試前的準備 在開始測試時,要先聲明一下,無論你設(shè)計多少測試用例,無論你的測試方案多么完美,都不可能完全100%的發(fā)現(xiàn)所有bug,我們所需要做的是用最少的資源,做最多測試檢查,尋找一個平衡點保證程序的正確性。窮舉測試是不
3、可能的。 所以現(xiàn)在進行單元測試我選用的是現(xiàn)在一般用的比較多的基本路徑測試法。三、開始測試 基本路徑測試法:設(shè)計出的測試用例要保證每一個基本獨立路徑至少要執(zhí)行一次。 函數(shù)說明 :當i_flag=0;返回 i_count+100 當i_flag=1;返回 i_count *10 否則 返回 i_count *20 輸入?yún)?shù):int i_count , int i_flag 輸出參數(shù): int i_return; 代碼: 1 int test(int i_count, int i_flag) 2 3 int i_temp = 1; 4 while (i_count0) 5 6 if (0 = i_f
4、lag) 7 8 i_temp = i_count + 100; 9 break;10 11 else12 13 if (1 = i_flag)14 15 i_temp = i_temp * 10;16 17 else18 19 i_temp = i_temp * 20;20 21 22 i_count-;23 24 return i_temp;25 1.畫出程序控制流程圖 圖例: 事例程序流程圖: 圈中的數(shù)字代表的是語句的行號,也許有人問為什么選4,6,13,8.作為結(jié)點,第2行,第3行為什么不是結(jié)點,因為選擇結(jié)點是有規(guī)律的。讓我們看程序中;第2行,第3行是按順序執(zhí)行下來的。直到第4行才出現(xiàn)
5、了循環(huán)操作。而2,3行沒有什么判斷,選擇等分支操作,所以我們把2,3,4全部合并成一個結(jié)點。其他的也是照這個規(guī)則合并,然后就有了上面的流程圖。 2.計算圈復(fù)雜度 有了圖以后我們要知道到底我們有寫多少個測試用例,才能滿足基本路徑測試。 這里有有了一個新概念圈復(fù)雜度 圈復(fù)雜度是一種為程序邏輯復(fù)雜性提供定量測試的軟件度量。將該度量用于計算程序的基本獨立路徑數(shù)目。為確保所有語句至少執(zhí)行一次的測試數(shù)量的上界。 公式圈復(fù)雜度v(g)=e-n+2,e是流圖中邊的數(shù)量,n是流圖中結(jié)點的數(shù)量。 公式圈復(fù)雜度v(g)=p+1 ,p是流圖g中判定結(jié)點的數(shù)量。 通俗的說圈負責度就是判斷單元是不是復(fù)雜,是不是好測試的標
6、準。一般來說如果圈復(fù)雜度如果大于20就表示這個單元的可測試性不好,太復(fù)雜(也許有人覺得無所謂,但是如果公司實行了cmmi5的話,對這個是有規(guī)定的)。 從圖中我們可以看到, v(g)=10條邊-8結(jié)點+2=4 v(g)=3個判定結(jié)點+1=4 上圖的圈復(fù)雜圖是4。這個結(jié)果對我們來說有什么意義呢?它表示我們只要最多4個測試用例就可以達到基本路徑覆蓋。 3.導出程序基本路徑。 現(xiàn)在我們知道了起碼要寫4個測試用例,但是怎么設(shè)計這4個測試用例? 導出程序基本路徑,根據(jù)程序基本路徑設(shè)計測試用例子。 程序基本路徑:基本獨立路徑就是從程序的開始結(jié)點到結(jié)束可以選擇任何的路徑遍歷,但是每條路徑至少應(yīng)該包含一條已定義
7、路徑不曾用到的邊。(看起來不好理解,讓我們看例子)。 讓我們看上面的流程圖:從結(jié)點4到24有幾條路徑呢? 1 b(4,24) 2 c,e,j(4,6,8,24) 3 c,d,f,h,a,b(4,6,13,15,22,4,24) 4 c,d,g,i,a,b(4,6,13,19,22,4,24) 還有嗎? 5 c,d,c,i,a,c,e,j(4,6,13,19,22,4,6,8,24)算嗎? 不算,為什么?因為上面的4條路徑已經(jīng)包括了所有的邊。第5條路徑已經(jīng)不包含沒有用過的邊了。所有的路徑都遍歷過了。 好了,現(xiàn)在我們有了4條基本獨立路徑根據(jù)獨立路徑我們可以設(shè)計測試用例。 1 b(4,24) 輸入數(shù)
8、據(jù):i_count=0,或者是i_count0的某一個值。 預(yù)期結(jié)果:i_temp=0. 2 c,e,j(4,6,8,24) 輸入數(shù)據(jù): i_count =1;i_flag=0 預(yù)期結(jié)果:i_temp=101. 3 c,d,f,h,a,b(4,6,13,15,22,4,24) 輸入數(shù)據(jù): i_count =1;i_flag=1 預(yù)期結(jié)果:i_temp=10. 4 c,d,g,i,a,b(4,6,13,19,22,4,24) 輸入數(shù)據(jù): i_count =1;i_flag=2 預(yù)期結(jié)果:i_temp=20. 這里的輸入數(shù)據(jù)是由路徑和程序推論出來的。而要注意的是預(yù)期結(jié)果是從函數(shù)說明中導出,不能根據(jù)程序結(jié)構(gòu)中導出。 為什么這么說? 讓我們看程序中的第3行。 int i_temp=1;假如開發(fā)人員一不小心寫錯了,變成了inti_temp=0;根據(jù)程序?qū)С龅念A(yù)期結(jié)果就會是一個錯誤的值,但是單元測試不出來問題。 那單元測試就失去了意義。 有人也許會問這么簡單的函數(shù)就有4個測試用例,如果還復(fù)雜一些的怎么辦?上面的測試用例還可以簡化嗎?答案是可以。 我們來看 路徑 1 b(4,24)和 4 c,d,g,i,a,b(4,6,13,19,22,4,24),路徑1是路徑4的真子集, 所以1是可以不必要的。上圖的圈復(fù)雜度是4。這個結(jié)果對我們來說有什么意義呢
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 地圖主題課程設(shè)計案例
- 2022-2023學年遼寧沈陽和平區(qū)五年級上冊語文期末試卷及答案
- 烘焙課程設(shè)計 方案
- 電壓報警器課程設(shè)計
- 2021-2022學年山東省濟南市市中區(qū)人教版小學三年級下冊數(shù)學期末試題及答案
- 2024年大學外籍教師聘請合同及國際教育項目資助協(xié)議3篇
- 2022-2023學年河北省唐山市灤州市四年級上學期期末科學真題及答案
- 瀝青路課程設(shè)計
- 2024年學校清潔工崗位職責與待遇聘用合同3篇
- 2024年人事代理員工勞動合同-環(huán)保行業(yè)監(jiān)測工程師服務(wù)協(xié)議3篇
- 2023年中小學生勵志主題班會
- 實驗報告評語大全
- 車輛滅失承諾書
- 唐詩宋詞鑒賞(第二版)PPT完整全套教學課件
- 微機保護裝置改造施工方案
- 門診病歷書寫模板全
- 煤油(火油)的理化性質(zhì)及危險特性表MSDS
- 鍋爐延期檢驗申請書
- 國開大學2023年01月11067《知識產(chǎn)權(quán)法》期末考試答案
- 直接打印800字作文紙
- (完整word版)人教版高中數(shù)學大綱
評論
0/150
提交評論