软件工程逻辑覆盖测试
邏輯覆蓋測試包括的方法有:語句覆蓋、路徑覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋。
? 接下來通過對下面子程序進(jìn)行各個方法的測試用例設(shè)計:
[cpp]?view plain?copy
程序?qū)?yīng)的流程圖如下:
- 語句覆蓋:所有語句至少執(zhí)行一次。即執(zhí)行路徑sabcde即可,測試用例如表所示。
| 測試數(shù)據(jù) | 預(yù)期結(jié)果 |
| x = 4, y= 2, z = 0 | x = 3 |
- 路徑覆蓋:所有可能被執(zhí)行到的路徑至少執(zhí)行一次。本題需執(zhí)行路徑有:sabcde、sace、sabce、sacde,測試用例如表所示。
???? ? ???
| 執(zhí)行路徑 | 測試數(shù)據(jù) | 預(yù)期結(jié)果 |
| sabcde | x = 4, y= 2, z = 0 | x=3 |
| sace | x=1,y=1,z=1 | x=1 |
| sabce | x=1,y=3,z=0 | x=0 |
| sacde | x=1,y=2,z=1 | x=2 |
- 判定覆蓋:每個判定結(jié)果至少執(zhí)行一次。本題需滿足a=true且c=false,a=false且c=true兩種情況即可,即執(zhí)行路徑sabce、sacde,測試用例如表所示。
| 判定 | 執(zhí)行路徑 | 測試用例 | 預(yù)期結(jié)果 |
| a=t,c=f | sabce | x=1,y=3,z=0 | x=0 |
| a=f,c=t | sacde | x=1,y=2,z=1 | x=2 |
- 條件覆蓋:每個判定中的每個條件可能出現(xiàn)的結(jié)果至少出現(xiàn)一次。本題判定a可能出現(xiàn)的結(jié)果:y>1,y<=1,z=0,z≠0,判定c可能出現(xiàn)的結(jié)果:y=2,y≠2,x>1,x<=1,可執(zhí)行的路徑為sabcde,sace,測試用例如表所示。
| 覆蓋的條件 | 執(zhí)行路徑 | 測試數(shù)據(jù) | 預(yù)期結(jié)果 |
| y>1,y=2,z=0,x>1 | sabcde | x=2,y=2,z=0 | x=1 |
| y<=1,y≠2,z≠0,x<=1 | sace | x=1,y=1,z=1 | x=2 |
- 判定/條件覆蓋:每個判定結(jié)果至少出現(xiàn)一次,每個判定中的條件可能出現(xiàn)的結(jié)果至少出現(xiàn)一次。可執(zhí)行路徑為sabcde,sace,測試用例如表所示。
| 判定 | 覆蓋的條件 | 執(zhí)行路徑 | 測試數(shù)據(jù) | 預(yù)期結(jié)果 |
| a=t,c=t | y>1,y=2,z=0,x>1 | sabcde | x=2,y=2,z=0 | x=1 |
| a=f,c=f | y<=1,y≠2,z≠0,x<=1 | sace | x=1,y=1,z=1 | x=2 |
- 條件組合覆蓋:每個判定的每個條件的可能出現(xiàn)的結(jié)果的所有可能的組合至少出現(xiàn)一次。本題中判定a可能出現(xiàn)的條件組合為:(1)?y>1,z=0; (2) y<=1,z=0; (3)y>1,z≠0; (4) y<=1,z≠0 ; 判定才可能出現(xiàn)的條件組合為:(1) y=2,x >1; (2)y≠2,x >1; (3) y=2,x<=1; (4)y≠ 2,x<=1。測試用例如表所示。
| 條件組合 | 執(zhí)行路徑 | 測試用例 | 預(yù)期結(jié)果 |
| y>1,z=0,y=2,x>1 | sabcde | x=4,y=2,z=0 | x=3 |
| y<=1,z=0,y≠2,x<=1 | sace | x=1,y=1,z=1 | x=1 |
| y>1,z≠0,y=2,x<=1 | sace | x=1,y=2,z=1 | x=1 |
| y<=1,z≠0,y≠2,x>1 | sacde | x=2,y=1,z=1 | x=3 |
??總結(jié):測試代碼時所執(zhí)行的路徑占總路徑數(shù)越高,則覆蓋程度越大。所以覆蓋率由高——低:路徑覆蓋-條件組合覆蓋-判定/條件覆蓋-條件覆蓋-判定覆蓋-語句覆蓋。
總結(jié)
以上是生活随笔為你收集整理的软件工程逻辑覆盖测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python手记(四):pillow(四
- 下一篇: 大型鱼类数据集