软件工程实验

来源:互联网 发布:广场舞下载软件 编辑:程序博客网 时间:2024/06/05 04:52

实验一:白盒测试

一、实验目的

巩固白盒测试知识,对于给定的待测程序,能熟练应用基本控制流覆盖方法。

二、实验内容

白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试,一般用来分析程序的内部结构。测试规划基于产品内部结构进行测试,检查内部操作是否按规定执行,软件各个部分功能是否得到充分使用,则这种测试方法称为白盒测试方法。
白盒测试将被测程序看做一个打开的盒子,测试者能够看到被测源程序,可以分析被测程序的内部结构,此时测试的焦点集中在根据其内部结构设计测试用例。白盒测试要求是对某些程序的结构特性做到一定程度的覆盖,或者说这种测试是“基于覆盖率的测试”。
测试内容包括语句覆盖测试、分支覆盖测试、条件覆盖测试、分支/条件覆盖测试、条件组合覆盖测试和基本路径测试。

三、实验过程

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)要满足语句覆盖,执行路径通过:1→2 →8 和 1→5→6→8 即可。可设计测试用例:
1:A=1 B=1 X=0 (路径1→2→8 )
2:A=0 B=3 X=0 (路径1→5→6→8 )
(2)要满足分支覆盖,两个分支表达式的取真和取假分支都要走到,执行路径为: 1→2 →8 、 1→5→8 和 1→5→6→8 ,可设计测试用例:
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。观察前面设计测试用例:
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个条件产生的8种情况。
可见,这组测试用例同时覆盖了两个分支的取真分支和取假分支以及4个条件产生的8种情况,所以它们满足分支-条件覆盖的标准。
(5)要满足条件组合覆盖,每个分支中各条件的每一种组合至少要出现一次,在两个分支中有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
沿用前面设计测试用例:
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.条件组合覆盖测试

这里写图片描述

实验二:黑盒测试

一、实验目的

巩固黑盒测试知识,黑盒测试能够发现下述错误,功能不正确或遗漏了功能;界面错误;数据结构错误或外部数据库访问错误;性能错误;初始化和终止错误。

二、实验内容

测试规划是基于产品的功能,目的是检查程序各个功能是否能够实现,并检查其中的功能错误,这种策试方法称为黑盒测试方法。
黑盒测试又称为功能测试、数据驱动测试和基于规格说明的测试。它是一种从用户观点出发的测试,一般被用来确认软件功能的正确性和可操作性。
黑盒测试的基本观点是:任何程序都可以看作是从输入定义域映射到输出值域的函数过程,被测程序被认为是一个打不开的黑盒子,黑盒中的内容完全不知道,只明确要做到什么。
黑盒测试主要根据规格说明书设计测试用例,并不涉及程序内部构造和内部特性,只依靠被测程序输入和输出之间的关系或程序的功能设计测试用例。
黑盒测试技术包括: 等价划分法、边界值分析法、错误推测法、因果图法等

三、实验过程

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) /*判断是否能构成三角形*/        {            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之间的数!\n");    }     return 0;       }

2.分析测试

1)边界值分析法:

根据题目要求可知边的有效取值范围是[1,100],分析可得出:
a、边界值是:1,100
b、次边界值是:0,101,2,99

2)等价类划分法:

(1)传统等价类划分测试用例设计
在三角形问题中,输入条件为:
a、 整数
b、 三个数
c、 取值为1~100
这里写图片描述
(2)标准和稳健等价类划分测试用例设计
三角形问题有四种可能输出:等边三角形、等腰三角形、直角三角形、一般三角形和非三角形。利用这些信息可确定下列输出(值域)等价类。

R1={<a,b,c>:边为a,b,c的等边三角形}R2={<a,b,c>:边为a,b,c的等腰三角形}R3={<a,b,c>:边为a,b,c的一般三角形}R4={<a,b,c>:边为a,b,c不能形成三角形}R5={<a,b,c>:边为a,b,c的直角三角形 }

4个标准等价类划分测试用例,如表:
这里写图片描述
考虑a,b,c的无效值产生了下面7个稳健等价类划分测试用例,如表所示:
这里写图片描述

四、实验验证

这里写图片描述

这里写图片描述

输入3、4、5

这里写图片描述

输入 6 、7、8

这里写图片描述

输入6、6、6

这里写图片描述

输入6、6、9

这里写图片描述

输入1、2、5

这里写图片描述


附录本篇报告下载链接

原创粉丝点击