9.17 软件测试作业


1
2
3
4
5
题目要求:
一、请构造一个尽可能简单的数值计算小程序P和两个测试用例t1和t2以及两个Fault(F1, F2)满足以下要求:
1、在P中注入F1得到程序P1,使得t1 fail;
2、在P中注入F2得到程序P2,使得t2 fail;
3、在P中注入F1和F2得到程序P3,使得t1和t2都pass。

分析:设计一个累加正数的程序,读到正数就累加,最后输出

##1 正确程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream.h>
/*
* 程序用来求4个数中 大于0部分的和,下面是正确程序
* 用例1: {-1,-2,1,2} 结果3
* 用例2: {-7,-1,8,0} 结果8
*/
void main()
{
int a[4];
int s=0;
for(int i=0;i<4;i++)
{
cin>>a[i];
if(a[i]>0)
s+=a[i];
}
cout<<s<<endl;
}

测试截图:

2 fault1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*
* 程序用来求4个数中 大于0部分的和,下面是fault1程序,修改if部分小于号
* 用例1: {-1,-2,1,2} 结果-3 错误
* 用例2: {-7,-1,8,0} 结果-8 错误
*/
void main()
{
int a[4];
int s=0;
for(int i=0;i<4;i++)
{
cin>>a[i];
if(a[i]<0)
s+=a[i];
}
cout<<s<<endl;
}

3 fault2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*
* 程序用来求4个数中 大于0部分的和,下面是fault2程序,修改累加部分符号
* 用例1: {-1,-2,1,2} 结果-3 错误
* 用例2: {-7,-1,8,0} 结果-8 错误
*/
void main()
{
int a[4];
int s=0;
for(int i=0;i<4;i++)
{
cin>>a[i];
if(a[i]>0)
s-=a[i];
}
cout<<s<<endl;
}

3 fault1与fault2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*
* 程序用来求4个数中 大于0部分的和,fault1 fault2 全改
* 用例1: {-1,-2,1,2} 结果3
* 用例2: {-7,-1,8,0} 结果8
*/
void main()
{
int a[4];
int s=0;
for(int i=0;i<4;i++)
{
cin>>a[i];
if(a[i]<0)
s-=a[i];
}
cout<<s<<endl;
}