素数判断程序测试范例

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

问题描述:键盘输入m和n(10

相应代码:

#include

#include

using namespace std;

int main()

{

int m,n,i;

static int k=0;

cout<<"输入m,m(其中10

cin>>m>>n;

while(m<=10||m>=n||n>2000)

{

cout<<"输入数据有误,请再次输入:"<

cout<<"输入m,m(其中10

cin>>m>>n;

}

for(i=m;i<=n;i++)

{

int x=(int)sqrt((double)i);

for(int j=2;j<=x;j++)

{

if(i%j==0)

{

break;

}

else if(j==x)

{

cout<

k++;

if(k%2==0)

cout<

}

else

continue;

}

}

cout<

return 0;

}

一.控制流测试1、控制流图如下:

2、根据以上控制流图:

因为控制流的1-2-3-2部分为用户输入的m,n的重复赋值过程,与输入数据密切相关且每次取值不同,关系到控制流测试,所以将此独立出来:以为节点“2”的复合谓词为或的关系,全为false时只有一种情况,而为true 时有7种情况,对“2”的复合谓词(m<=10||m>=n||n>2000)为真假时其表1如下:

设A:m<=10; B:m>=n; C:n>2000

但是对于节点“2”的情况,并非所有可能都会取到,因为当A为真时,就不会执行B,依此,生成下表2:

根据表2,得出此部分的取值及路径为:

3、当节点“2”取F时,对整体取路径达到谓词覆盖标准有:

以上路径可以看出,对于单一谓词---节点5,8,9,10,14均取到T,F,加之节点2之前的取值,所有谓词均达到覆盖标准,所以此控制流测试达到谓词覆盖标准。

对于其他区间内的m,n,路径内循环次数增加,但内部循环路径相同。二.数据流测试

2、根据数据流图,得出节点的def()和c-use()集合:

3、找出边的谓词和p-use集合

4.根据代码,可知共有变量i,j,k,不列举其all-c-use和all-p-use.直接写出其all-uses,其循环次数不一定只有一次,因为循环时内部路径相同,都写出来路径太长太繁琐,所以以一次为基准,循环不定,可以是任意次。

对于变量i:

节点1,4,12有其定义,节点6,12有其c-use,边(5,6),(5,7),(11,13),(11,14)有其p-use,所以包含其all-p-use和其all-c-use的即为其all-uses:

1-2-4-5-6-9-10-12-5-7-8;

1-2-4-5-6-9-10-11-13-12-5-7-8;

1-2-4-5-6-9-10-11-14-15-17-19-10-12-5-7-8;

1-2-4-5-6-9-10-11-14-15-17-18-19-10-12-5-7-8;

1-2-4-5-6-9-10-11-14-15-17-16-19-10-12-5-7-8;

1-2-3-2-4-5-6-9-10-12-5-7-8;

1-2-3-2-4-5-6-9-10-11-13-12-5-7-8;

1-2-3-2-4-5-6-9-10-11-14-15-17-19-10-12-5-7-8;

1-2-3-2-4-5-6-9-10-11-14-15-17-18-19-10-12-5-7-8;

1-2-3-2-4-5-6-9-10-11-14-15-17-16-19-10-12-5-7-8;

对于变量j:

节点9,19有其定义,节点19有其c-use,边(10,11),(10,12),(11,13),(11,14)(14,16),(14,15)有其p-use,所以包含其all-p-use和其all-c-use的即为其all-uses:

1-2-4-5-6-9-10-11-14-16-19-10-12-5-7-8;

1-2-4-5-6-9-10-11-14-15-17-18-19-10-12-5-7-8;

1-2-4-5-6-9-10-00-14-15-17-19-10-12-5-7-8;

1-2-3-2-4-5-6-9-10-11-14-16-19-10-12-5-7-8;

1-2-3-2-4-5-6-9-10-11-14-15-17-18-19-10-12-5-7-8;

1-2-3-2-4-5-6-9-10-00-14-15-17-19-10-12-5-7-8;

对于变量k:

节点1,15有其定义,节点15有其c-use,边(17,18),(17,19)有其p-use,所以包含其all-p-use和其all-c-use的即为其all-uses:

1-2-4-5-6-9-10-11-14-15-17-18-19-10-12-5-7-8;

1-2-3-2-4-5-6-9-10-11-14-15-17-18-19-10-12-5-7-8;

综上:

综上,变量k,i,j均包含的路径,即最后确定的数据流路径只有两条:

其中的循环次数根据需要而定。

路径1:1-2-4-5-6-9-10-11-14-15-17-18-19-10-12-5-7-8;

路径2:1-2-3-2-4-5-6-9-10-11-14-15-17-18-19-10-12-5-7-8;

其对应的控制流路径为(其中的路径编号均为控制流图编号依此生成谓词解释):1-2(F)-4-5(T)-6-7-8(T)-9(F)-10(T)-12-14(T)-15-16-8(F)-17-5(F)-18-19;

1-2(T)-3-2(F)-4-5(T)-6-7-8(T)-9(F)-10(T)-12-14(T)-15-16-8(F)-17-5(F)-18-19

5、路径谓词解释为(以路径1为例):

相关文档
最新文档