素数判断程序测试范例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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为例):