素数判断程序测试范例_第1页
素数判断程序测试范例_第2页
素数判断程序测试范例_第3页
素数判断程序测试范例_第4页
素数判断程序测试范例_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、问题描述:键盘输入m和n(10<m<n<=2000),求出m-n之间的所有素数,且按每行2个数的形式输出。相应代码:#include <iostream>#include <math.h>using namespace std;int main()int m,n,i;static int k=0;cout<<"输入m,m(其中10<m<n<=2000)"<<endl;cin>>m>>n;while(m<=10|m>=n|n>2000)cout<

2、<"输入数据有误,请再次输入:"<<endl;cout<<"输入m,m(其中10<m<n<=2000)"<<endl;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<<i<<""k+;if(k%2=0)cout<<endl;elsecontinue

3、;cout<<endl;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

4、,得出此部分的取值及路径为: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,其循环次数不一定只有一次,因为循环时内部路径相同,都写出来路径太长太繁琐,所以以一

5、次为基准,循环不定,可以是任意次。对于变量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-

6、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-u

7、se,所以包含其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

8、-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

9、-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-195、路径谓词解释为(以路径1为例):6、推导出路径谓词表达式为:根据路径谓词表达式,第6行可知,k%2不能恒等于0,而k又是根据输入的数据中素数的个数来累加起来

10、的数据,只有当m-n之间有大于两个素数时才会有此条件,所以判定,目前路径不合理,应至少有两次循环才能使上述谓词表达式成立。7、求解表达式得到测试输入数据:对于路径1:根据第6步的推理,可知m-n之间有大于两个素数必须成立,所以选择输入数据为:M=11,n=13M=11,n=1000;M=20,n=40;M=100,n=1800;.得到可测试数据较多,不一一列举,只要在范围内均可。对于路径2:根据推理,可知第一次输入,m,n的值不符合要求,1次或多次循环之后才能达到要求,达到要求后m,n之间有大于两个素数必须成立,所以选择输入数据为:M=2,n=1(不成立)-(接着输入)m=12,n=33M=1

11、3,n=3000(不成立)-(接着输入)m=50,n=66M=8,n=15(不成立)-(接着输入)m=66,n=99.得到可测试数据较多,不一一列举,只要在范围内均可。三域测试本题的输入为m,n,所以域主要是针对m,n的域,根据复合谓词m<=10|m>=n|n>2000,当次复合谓词取false时,得到路径的正确输入域,即:10<m<n<=2000;1、依次,画出其大致域为:(虚线,开放区域;实线,封闭区域)2、根据给出的域,看到和输入参数有关的边界线共有三条:N<=2000;M>10;M<n;3、考虑到以下几种错误:、封闭不等式边界:A、边界移动导致域减少B、边界移动导致域增加C、边界倾斜D、封闭错误、开放不等式边界:A、边界移动导致域减少B、边界移动导致域增加C、边界倾斜D、封闭错误、等式边界考虑到以上错误,针对域的边界,按照ON-OFF-ON的次序依次选取3个点A,B,C如下:四对控制流测试和数据流测

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论