软件工程实验

实验一:白盒测试

一、实验目的

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

二、实验内容

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

三、实验过程

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

这里写图片描述


附录本篇报告下载链接

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.1编写目的 1.为了让网站开发更具有目的性 2.为了让客户更加清楚软件的开发过程与进度,增加与客户的交流 3.加强项目组内的管理,让工作清晰化 4.可以合理安排组织成员,有效利用时间,以确保项目进度,预见项目风险等活动。 5.项目开发成员通过此计划书明确项目目标以及各自职责 1.2参考资料 《实用软件工程》 《JAVA网络高级编程》 《软件工程》 《信息系统分析与设计》 2.项目概述 2.1工作内容 2.1.1.制作和修订项目开发计划; 2.1.2.进行计划跟踪与监控; 2.1.3.工作产品及时进行受控管理; 2.1.4.按计划提请阶段评审; 2.1.5.提交测试部门评测开发产品; 2.1.6.交付最终工作产品。 2.1.7.项目实施总结 2.1.8.项目验收 2.2条件与制约 2.2.1.能够存储大量图书和读者信息,并方便有效的进行相应的图书操作和管理,这主要包括: A.能够通过书籍基本信息查询书籍信息; B.对于每一种书籍,除可查看其基本信息之外还可查看其总数以及目前在馆数量; C.可增添,删除,修改书籍信息; D.能够添加、修改、删除用户基本信息; E.用户可查看其基本信息之外,还可查看其已借的书籍列表、数量、借还日期。 2.2.2.能够对需要的统计结果提供打印输出。 2.2.3.能够提供一定的安全机制,提供数据信息授权访问,防止随意删改,同时提供信息备份的服务。 2.3产品及成果 2.3.1.程序 软件名称:图书馆管理系统编程语言:JSP 存储方式:U盘,计算机 2.3.2.文件 1.用户操作手册:本手册详细描述软件的功能、性能和用户界面,使用户对如何使用该软件得到具体的了解,为操作人员提供该软件各种运行情况的有关知识,特别是操作方法的具体细节。 2.软件维护手册:主要包括软件系统说明、程序模块说明、操作环境、支持软件的说明、维护过程的说明,便于软件的维护。 2.3.3.服务 计划提供以下服务: 1.课堂培训:以讲课形式对客户进行培训,使其能够正确使用软件; 2.免费咨询:客户可以在工作时间向技术人员提出问题并获得解答; 3.技术支持:对于某些客户,采取上门指导的方式; 4.软件维护:获取软件使用中的问题,提供补丁程序; 5.升级通知:在软件新版本发布的时候,及时通知(Email或邮寄信件)注册的用户,并提供试用版本; 6.软件升级:对于注册用户,只需较少的费用即可升级到新的版本;7.培训安装、维护和运行支持从使用该系统开始,维护期限为--年。 2.4运行环境 操作系统为Window 10,使用集成开发工具Eclipse5.5.1,数据库采用SQLServer2012,项目运行环境为IIS5.0。 2.5验收标准 2.5.1.代码的验收 最后在交付客户之前进行小组内评审,代码编写符合HB6465标准,与文档说明保持一致,代码书写风格统一,采用标准规范,没有下列错误:由于软件缺陷造成丢失数据,不符合设计要求,响应时间太长无法接受等问题。 2.5.2.文档验收 最后在交付客户之前进行小组内评审,文档格式符合HB6465标准,功能符合与客户的合同要求,清晰易读,没有语病与歧义。 2.5.3.服务验收 服务硬件达到文档说明的要求,人员技术考核合格,定期上门维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值