![如何編寫單元測試用例(白盒測試)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/6/9cfc3060-13e3-4a26-9225-a91fcdbbcf54/9cfc3060-13e3-4a26-9225-a91fcdbbcf541.gif)
![如何編寫單元測試用例(白盒測試)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/6/9cfc3060-13e3-4a26-9225-a91fcdbbcf54/9cfc3060-13e3-4a26-9225-a91fcdbbcf542.gif)
![如何編寫單元測試用例(白盒測試)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/6/9cfc3060-13e3-4a26-9225-a91fcdbbcf54/9cfc3060-13e3-4a26-9225-a91fcdbbcf543.gif)
![如何編寫單元測試用例(白盒測試)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/6/9cfc3060-13e3-4a26-9225-a91fcdbbcf54/9cfc3060-13e3-4a26-9225-a91fcdbbcf544.gif)
![如何編寫單元測試用例(白盒測試)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/6/9cfc3060-13e3-4a26-9225-a91fcdbbcf54/9cfc3060-13e3-4a26-9225-a91fcdbbcf545.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、如何編寫單元測試用例(白盒測試)。一、 單元測試的概念 單元通俗的說就是指一個實現(xiàn)簡單功能的函數(shù)。單元測試就是只用一組特定的輸入(測試用例)測試函數(shù)是否功能正常,并且返回了正確的輸出。 測試的覆蓋種類 1.語句覆蓋:語句覆蓋就是設計若干個測試用例,運行被測試程序,使得每一條可執(zhí)行語句至少執(zhí)行一次。 2.判定覆蓋(也叫分支覆蓋):設計若干個測試用例,運行所測程序,使程序中每個判斷的取真分支和取假分支至少執(zhí)行一次。 3.條件覆蓋:設計足夠的測試用例,運行所測程序,使程序中每個判斷的每個條件的每個可能取值至少執(zhí)行一次。 4.判定條件覆蓋:設計足夠的測試用例,運行所測程序,使程序中每個判斷的每個條件的
2、每個可能取值至少執(zhí)行一次,并且每個可能的判斷結果也至少執(zhí)行一次。 5.條件組合測試:設計足夠的測試用例,運行所測程序,使程序中每個判斷的所有條件取值組合至少執(zhí)行一次。 6.路徑測試:設計足夠的測試用例,運行所測程序,要覆蓋程序中所有可能的路徑。 用例的設計方案主要的有下面幾種:條件測試,基本路徑測試,循環(huán)測試。通過上面的方法可以實現(xiàn)測試用例對程序的邏輯覆蓋,和路徑覆蓋。二、開始測試前的準備 在開始測試時,要先聲明一下,無論你設計多少測試用例,無論你的測試方案多么完美,都不可能完全100%的發(fā)現(xiàn)所有bug,我們所需要做的是用最少的資源,做最多測試檢查,尋找一個平衡點保證程序的正確性。窮舉測試是不
3、可能的。 所以現(xiàn)在進行單元測試我選用的是現(xiàn)在一般用的比較多的基本路徑測試法。三、開始測試 基本路徑測試法:設計出的測試用例要保證每一個基本獨立路徑至少要執(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.作為結點,第2行,第3行為什么不是結點,因為選擇結點是有規(guī)律的。讓我們看程序中;第2行,第3行是按順序執(zhí)行下來的。直到第4行才出現(xiàn)
5、了循環(huán)操作。而2,3行沒有什么判斷,選擇等分支操作,所以我們把2,3,4全部合并成一個結點。其他的也是照這個規(guī)則合并,然后就有了上面的流程圖。 2.計算圈復雜度 有了圖以后我們要知道到底我們有寫多少個測試用例,才能滿足基本路徑測試。 這里有有了一個新概念圈復雜度 圈復雜度是一種為程序邏輯復雜性提供定量測試的軟件度量。將該度量用于計算程序的基本獨立路徑數(shù)目。為確保所有語句至少執(zhí)行一次的測試數(shù)量的上界。 公式圈復雜度v(g)=e-n+2,e是流圖中邊的數(shù)量,n是流圖中結點的數(shù)量。 公式圈復雜度v(g)=p+1 ,p是流圖g中判定結點的數(shù)量。 通俗的說圈負責度就是判斷單元是不是復雜,是不是好測試的標
6、準。一般來說如果圈復雜度如果大于20就表示這個單元的可測試性不好,太復雜(也許有人覺得無所謂,但是如果公司實行了cmmi5的話,對這個是有規(guī)定的)。 從圖中我們可以看到, v(g)=10條邊-8結點+2=4 v(g)=3個判定結點+1=4 上圖的圈復雜圖是4。這個結果對我們來說有什么意義呢?它表示我們只要最多4個測試用例就可以達到基本路徑覆蓋。 3.導出程序基本路徑。 現(xiàn)在我們知道了起碼要寫4個測試用例,但是怎么設計這4個測試用例? 導出程序基本路徑,根據(jù)程序基本路徑設計測試用例子。 程序基本路徑:基本獨立路徑就是從程序的開始結點到結束可以選擇任何的路徑遍歷,但是每條路徑至少應該包含一條已定義
7、路徑不曾用到的邊。(看起來不好理解,讓我們看例子)。 讓我們看上面的流程圖:從結點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ù)獨立路徑我們可以設計測試用例。 1 b(4,24) 輸入數(shù)
8、據(jù):i_count=0,或者是i_count0的某一個值。 預期結果:i_temp=0. 2 c,e,j(4,6,8,24) 輸入數(shù)據(jù): i_count =1;i_flag=0 預期結果: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 預期結果: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 預期結果:i_temp=20. 這里的輸入數(shù)據(jù)是由路徑和程序推論出來的。而要注意的是預期結果是從函數(shù)說明中導出,不能根據(jù)程序結構中導出。 為什么這么說? 讓我們看程序中的第3行。 int i_temp=1;假如開發(fā)人員一不小心寫錯了,變成了inti_temp=0;根據(jù)程序?qū)С龅念A期結果就會是一個錯誤的值,但是單元測試不出來問題。 那單元測試就失去了意義。 有人也許會問這么簡單的函數(shù)就有4個測試用例,如果還復雜一些的怎么辦?上面的測試用例還可以簡化嗎?答案是可以。 我們來看 路徑 1 b(4,24)和 4 c,d,g,i,a,b(4,6,13,19,22,4,24),路徑1是路徑4的真子集, 所以1是可以不必要的。上圖的圈復雜度是4。這個結果對我們來說有什么意義呢
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五四制小學四年級小數(shù)口算卡
- 蘇教版一年級數(shù)學下冊期末復習口算練習題二
- 華東師大版八年級上冊數(shù)學聽評課記錄《等腰三角形的性質(zhì)》
- 八年級數(shù)學聽評課記錄本
- 星球版地理八年級下冊《第三節(jié) 黃土高原》聽課評課記錄1
- 四年級英語聽評課記錄
- 五年級數(shù)學下冊聽評課記錄-《4 約分1》蘇教版
- 星球版地理八年級下冊《第一節(jié) 區(qū)域特征》聽課評課記錄4
- 八年級道德與法治下冊第一單元堅持憲法至上第一課維護憲法權威第1框公民權利的保障書(第1課時國家權力屬于人民)聽課評課記錄(新人教版)
- 2025年冷拔鋼合作協(xié)議書
- 醫(yī)學專題-脛骨高位截骨術
- 中國減肥行業(yè)市場分析與發(fā)展趨勢講義
- 海通食品集團楊梅汁產(chǎn)品市場營銷
- 印章管理辦法(公安部)
- 圍術期下肢深靜脈血栓預防的術中護理
- 教學設計 分數(shù)的再認識 省賽一等獎
- DBJ51-T 151-2020 四川省海綿城市建設工程評價標準
- GB/T 31329-2014循環(huán)冷卻水節(jié)水技術規(guī)范
- GB/T 12996-2012電動輪椅車
- 小象學院深度學習-第7講遞歸神經(jīng)網(wǎng)絡
- 京東1+X理論考試試題及答案
評論
0/150
提交評論