软件工程实验
實驗一:白盒測試
二、實驗內(nèi)容
白盒測試又稱為結(jié)構(gòu)測試、邏輯驅(qū)動測試或基于程序的測試,一般用來分析程序的內(nèi)部結(jié)構(gòu)。測試規(guī)劃基于產(chǎn)品內(nèi)部結(jié)構(gòu)進(jìn)行測試,檢查內(nèi)部操作是否按規(guī)定執(zhí)行,軟件各個部分功能是否得到充分使用,則這種測試方法稱為白盒測試方法。
白盒測試將被測程序看做一個打開的盒子,測試者能夠看到被測源程序,可以分析被測程序的內(nèi)部結(jié)構(gòu),此時測試的焦點集中在根據(jù)其內(nèi)部結(jié)構(gòu)設(shè)計測試用例。白盒測試要求是對某些程序的結(jié)構(gòu)特性做到一定程度的覆蓋,或者說這種測試是“基于覆蓋率的測試”。
測試內(nèi)容包括語句覆蓋測試、分支覆蓋測試、條件覆蓋測試、分支/條件覆蓋測試、條件組合覆蓋測試和基本路徑測試。
三、實驗過程
1.測試程序
#include<iostream> using namespace std; int test_X,test_A,test_B; void Do(int &X,int &A,int &B){if((A>0)&&(B<2)){X=X+A;}else{if((A==0)||(X<1)){A=A+1;}} }int main(){int flag = 1;while(flag){cout<<"please input test_A test_B test_X"<<endl;cin>>test_A>>test_B>>test_X;Do(test_X,test_A,test_B);cout<<"test_A = "<<test_A<<endl;cout<<"test_B = "<<test_B<<endl;cout<<"test_X = "<<test_X<<endl;cout<<"Continue(y/n)?"<<endl;char con;cin>>con;switch(con){case 'n': flag = 0;break;case 'y': default : flag = 1;break;}cout<<endl<<endl; }return 0; }2.分析測試
1)程序流程圖
2)樣例分析:
(1)要滿足語句覆蓋,執(zhí)行路徑通過:1→2 →8 和 1→5→6→8 即可。可設(shè)計測試用例:
1:A=1 B=1 X=0 (路徑1→2→8 )
2:A=0 B=3 X=0 (路徑1→5→6→8 )
(2)要滿足分支覆蓋,兩個分支表達(dá)式的取真和取假分支都要走到,執(zhí)行路徑為: 1→2 →8 、 1→5→8 和 1→5→6→8 ,可設(shè)計測試用例:
1:A=1 B=1 X=0 (路徑1→2→8 覆蓋條件: TA)
2:A=0 B=3 X=0 (路徑1→5→6→8 覆蓋條件: ~TA TB)
3:A=-1 B=3 X=2 (路徑1→5→8 覆蓋條件: ~TA ~TB)
(3)程序段控制流圖中只有以上三條路徑,可見這組測試用例也滿足路徑覆蓋。
(4)要滿足條件覆蓋,每個分支中的每個條件的可能取值都要取到,即:T1 T2 T3 T4 ~T1 ~T2 ~T3 ~T4。觀察前面設(shè)計測試用例:
1: A=1 B=1 X=0 (路徑1→2 →8 覆蓋條件: T1 T2)
2: A=0 B=3 X=0 (路徑1→5→6→8 覆蓋條件: ~ T1 ~T2 T3 T4)
3: A=-1 B=3 X=2 (路徑1→5→8 覆蓋條件: ~ T1 ~T2 ~T3 ~T4)
上述測試用例覆蓋了4個條件產(chǎn)生的8種情況。
可見,這組測試用例同時覆蓋了兩個分支的取真分支和取假分支以及4個條件產(chǎn)生的8種情況,所以它們滿足分支-條件覆蓋的標(biāo)準(zhǔn)。
(5)要滿足條件組合覆蓋,每個分支中各條件的每一種組合至少要出現(xiàn)一次,在兩個分支中有8種可能的組合:
① A>0, B<2: T1, T2 ② A>0, B≥2: T1, ~T2
③ A≤0, B<2: ~T1, T2 ④ A≤0, B≥2: ~T1, ~T2
⑤ A=0, X<1: T3, T4 ⑥ A=0, X≥1: T3, ~T4
⑦ A≠0, X<1: ~T3, T4 ⑧ A≠0, X≥1: ~T3, ~T4
沿用前面設(shè)計測試用例:
1: A=1 B=1 X=0 (路徑1→2 →8 覆蓋條件: T1 T2 ①)
2: A=0 B=3 X=0 (路徑1→5→6→8 覆蓋條件: ~T1 ~T2 T3 T4 ④ ⑤)
3: A=-1 B=3 X=2 (路徑1→5→8 覆蓋條件: ~T1 ~T2 ~T3 ~T4 ④ ⑧)
四、實驗驗證
1.語句覆蓋測試
2.分支覆蓋測試、條件覆蓋測試、分支/條件覆蓋測試、路徑覆蓋測試
3.條件組合覆蓋測試
實驗二:黑盒測試
一、實驗?zāi)康?/h2>
鞏固黑盒測試知識,黑盒測試能夠發(fā)現(xiàn)下述錯誤,功能不正確或遺漏了功能;界面錯誤;數(shù)據(jù)結(jié)構(gòu)錯誤或外部數(shù)據(jù)庫訪問錯誤;性能錯誤;初始化和終止錯誤。
二、實驗內(nèi)容
測試規(guī)劃是基于產(chǎn)品的功能,目的是檢查程序各個功能是否能夠?qū)崿F(xiàn),并檢查其中的功能錯誤,這種策試方法稱為黑盒測試方法。
黑盒測試又稱為功能測試、數(shù)據(jù)驅(qū)動測試和基于規(guī)格說明的測試。它是一種從用戶觀點出發(fā)的測試,一般被用來確認(rèn)軟件功能的正確性和可操作性。
黑盒測試的基本觀點是:任何程序都可以看作是從輸入定義域映射到輸出值域的函數(shù)過程,被測程序被認(rèn)為是一個打不開的黑盒子,黑盒中的內(nèi)容完全不知道,只明確要做到什么。
黑盒測試主要根據(jù)規(guī)格說明書設(shè)計測試用例,并不涉及程序內(nèi)部構(gòu)造和內(nèi)部特性,只依靠被測程序輸入和輸出之間的關(guān)系或程序的功能設(shè)計測試用例。
黑盒測試技術(shù)包括: 等價劃分法、邊界值分析法、錯誤推測法、因果圖法等
三、實驗過程
1.測試程序
#include <stdio.h> int main() {float a,b,c;printf("請輸入三角形的三條邊長a,b,c:\n");scanf("%f",&a);scanf("%f",&b);scanf("%f",&c);if((a>=1&&a<=100)&&(b>=1&&b<=100)&&(c>=1&&c<=100)){if(a+b<c||a+c<b||b+c<a) /*判斷是否能構(gòu)成三角形*/{printf("非三角形!\n");} else if((a==b&&(a!=c))||(a==c&&(b!=c))||(b==c&&(a!=c))) /*判斷是否為等腰三角形*/{printf("等腰三角形\n");} else if(a==c && a==b) /*判斷是否為等邊三角形*/{printf("等邊三角形\n");} else if(a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b){printf("直角三角形\n");} else{printf("一般三角形!\n");} }else{printf("請輸入1-100之間的數(shù)!\n");} return 0; }2.分析測試
1)邊界值分析法:
根據(jù)題目要求可知邊的有效取值范圍是[1,100],分析可得出:
a、邊界值是:1,100
b、次邊界值是:0,101,2,99
2)等價類劃分法:
(1)傳統(tǒng)等價類劃分測試用例設(shè)計
在三角形問題中,輸入條件為:
a、 整數(shù)
b、 三個數(shù)
c、 取值為1~100
(2)標(biāo)準(zhǔn)和穩(wěn)健等價類劃分測試用例設(shè)計
三角形問題有四種可能輸出:等邊三角形、等腰三角形、直角三角形、一般三角形和非三角形。利用這些信息可確定下列輸出(值域)等價類。
4個標(biāo)準(zhǔn)等價類劃分測試用例,如表:
考慮a,b,c的無效值產(chǎn)生了下面7個穩(wěn)健等價類劃分測試用例,如表所示:
四、實驗驗證
輸入3、4、5
輸入 6 、7、8
輸入6、6、6
輸入6、6、9
輸入1、2、5
附錄本篇報告下載鏈接
總結(jié)
- 上一篇: 电源输入保护电路:共模电感
- 下一篇: 《工业和信息化领域数据安全管理办法(试行