TJUSCSST第三次作业

作业题目:教材49页第7题a到d,并基于Junit及Eclemma实现一个主路径覆盖的测试
一、Use the following method printPrimes() for questions a-f below

1./** *****************************************************
2. * Finds and prints n prime integers
3. * Jeff Offutt, Spring 2003
4. ********************************************************* */
5. private static void printPrimes (int n)
6. {
7. int curPrime; // Value currently considered for primeness
8. int numPrimes; // Number of primes found so far.
9. boolean isPrime; // Is curPrime prime?
10. int [] primes = new int [MAXPRIMES]; // The list of prime numbers.
11.
12. // Initialize 2 into the list of primes.
13. primes [0] = 2;
14. numPrimes = 1;
15. curPrime = 2;
16. while (numPrimes < n)
17. {
18. curPrime++; // next number to consider ...
19. isPrime = true;
20. for (int i = 0; i <= numPrimes-1; i++)
21. { // for each previous prime.
22. if (isDivisible (primes[i], curPrime))
23. { // Found a divisor, curPrime is not prime.
24. isPrime = false;
25. break; // out of loop through primes.
26. }
27. }
28. if (isPrime)
29. { // save it!
30. primes[numPrimes] = curPrime;
31. numPrimes++;
32. }
33. } // End while
34.
35. // Print all the primes out.
36. for (int i = 0; i <= numPrimes-1; i++)
37. {
38. System.out.println ("Prime: " + primes[i]);
39. }
40. } // end printPrimes

(a) Draw the control flow graph for the printPrimes() method.

(b) Consider test cases t1 = (n = 3) and t2 = (n = 5). Although these tour the
same prime paths in printPrimes(), they do not necessarily find the same faults.
Design a simple fault that t2 would be more likely to discover than t1 would.
数组越界

(c) For printPrimes(), find a test case such that the corresponding test path visits
the edge that connects the beginning of the while statement to the for statement
without going through the body of the while loop.
t3=(n=1)

(d) Enumerate the test requirements for Node Coverage, Edge Coverage, and Prime
Path Coverage for the graph for printPrimes().
Node Coverage:{0,1,2,3,4,5,6,7,8,9,10,11,12}

Edge Coverage:{(0,1),(1,2),(1,9),(2,3),(3,4),(3,7),(4,5),(4,6),(5,7),(6,3),(7,1),(7,8),(8,1),(9,10),(10,11),(10,12),(11,10)}

Prime Path Coverage:

{(0,1,2,3,4,6),

(0,1,2,3,4,6,7,8),

(0,1,2,3,7,8),

(0,1,9,10,11),

(0,1,9,10,12),

(3,4,6,3),

(4,6,3,4),

(6,3,4,6),

(6,3,4,5,7,8,1,2),

(6,3,4,5,7,8,1,9,10,11),

(6,3,4,5,7,8,1,9,10,12),

(6,3,7,8,1,2),

(6,3,7,8,1,9,10,11),

(6,3,7,8,1,9,10,12),

(10,11,10),

(11,10,11)}

二、主路径覆盖测试

以第一次上机判断三角形程序为例

Calculator.java

 1 package moody;
 2 public class Calculator {
 3     private static int result = 0;
 4     public void triangle(int a,int b,int c)
 5     {
 6         if((a+b)>c && (a+c)>b && (b+c)>a && a>0 && b>0 && c>0)//判断是否构成三角形
 7         {
 8             if((a==b)||(a==c)||(b==c))
 9             {
10                 if((a == b)&&(a == c))
11                 {
12                     result = 3;//等边
13                 }
14                 else
15                 {
16                     result = 2;//等腰
17                 }
18
19             }
20             else
21             {
22                 result = 1;//普通
23             }
24         }
25
26         else
27         {
28             result = 0;//不是三角形
29         }
30
31     }
32     public int getReuslt(){
33         return result;
34     }
35 }

TestCalculator.java

 1 package moody;
 2 import static org.junit.Assert.*;
 3 import org.junit.Test;
 4 public class TestCalculator {
 5     private static Calculator cal = new Calculator();
 6     @Test
 7     public void testTriangle(){
 8
 9     cal.triangle(2, 2, 2);
10     assertEquals(3, cal.getReuslt());//等边三角形
11     cal.triangle(3, 3, 5);
12     assertEquals(2, cal.getReuslt());//等腰三角形
13     cal.triangle(2, 3, 4);
14     assertEquals(1, cal.getReuslt());//普通三角形
15     cal.triangle(1, 2, 3);
16     assertEquals(0, cal.getReuslt());//不能构成三角形
17     cal.triangle(-1, 5, 3);
18     assertEquals(0, cal.getReuslt());//不能构成三角形
19     }
20
21 }

覆盖率截图

时间: 2024-10-25 11:33:07

TJUSCSST第三次作业的相关文章

马哥2016全新Linux+Python高端运维班第三周作业作答

                    马哥2016全新Linux+Python高端运维班第三周作业                                           1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可.     [[email protected] ~]# who | awk '{print $1 $NF}'| uniq -d     [[email protected] ~]# who     yicx     :0  

第三次作业问卷

看到一个问卷不错,拟作为第三次作业的部分内容. 你对自己的未来有什么规划?做了哪些准备? 答:未来走一步算一步,计划赶不上变化,充实自己的知识,多增加一点自己经验,比起知识,更重要的是社交. 你认为什么是学习?学习有什么用?现在学习动力如何?为什么? 答:学习,就是知道一些以前不知道的事.厉害的人有两点:观察力和文化底蕴,学习就是为了增加知识储备,尽量不出现书到用时方恨少的情况.目前的学习动力很缺乏,因为一到大学开始想着混. 你感觉自己什么事情做的比较成功?有什么经验? 答:并不知道,似乎没有什

第三次作业三总结与心得

知识点总结: 1.调用幂函数pow()生成乘方表 power=pow(); 2.#include<math.h>程序中调用了数学函数,需包含头文件math.h 3.调用自定义函数fact(i)计算i! product=fact(i); 4.double fact(int n);自定义函数的声明,以分号结束 5.double product;变量product用于存放结果(阶乘的值) 6.return product;将结果送回主函数 7.定义求n!的函数double fact(int n)函数

解题报告——-2018级2016第二学期第三周作业

解题报告——2018级2016第二学期第三周作业 A:[NOIP2002P]过河卒 题目: 描述 如图,A 点有一个过河卒,需要走到目标 B   点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点.例 如上图 C  点上的马可以控制 9 个点(图中的P1,P2 … P8 和 C).卒不能通过对方马的控制点. 棋盘用坐标表示,A 点(0,0).B 点(n,m)(n,m 为不超过 20  的整数,并由键盘输入)

魏昊卿——《Linux内核分析》第三周作业:Linux系统启动过程

魏昊卿——<Linux内核分析>第三周作业:Linux系统启动过程 一.实验部分 实验指导 使用实验楼的虚拟机打开shell 1 cd LinuxKernel/ 2 qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 内核启动完成后进入menu程序(<软件工程C编码实践篇>的课程项目),支持三个命令help.version和quit,您也可以添加更多的命令,对选修过<软件工程C编码实践篇>

第三次作业——个人作业——软件产品案例分析

第三次作业--个人作业--软件产品案例分析 评测产品:K米,安卓端 第一部分 调研,评测 评测 初体验 还没去KTV的时候,刚开始下了这个APP,我按正常软件一样,进行了注册功能,可到要写用户信息的时候,(可能是本着比较随意的思想,只想一直点,只填了一些以外使用其他APP时候的基本信息就一直点进一步),在上传用户头像的时候,我想直接跳过,没想到这一定要上传头像才可以啊!!!然后注册完后点进去,看了下K歌功能都不能用,看了一下用户的社区,发现大部分用户动态都是国庆的,这个时候已经10.17了,可见

职业规划第三次作业

看到一个问卷不错,拟作为第三次作业的部分内容. 你对自己的未来有什么规划?做了哪些准备? 答: 学好大学四年的课程,并积极参加各种活动来锻炼自己的能力.在实习期间认真学习工作经验,学习经验然后争取能自己创业 好好交友,多读书, 你认为什么是学习?学习有什么用?现在学习动力如何?为什么? 答:学习是通过他人的言传身教了解知识,将他人的认识转化为自己的知识.学习能够取他人之长补己之短,丰富自己的认知,还避免了闭门造车和坐井观天的错误.现在的学习动力一般,因为新学知识对我来说比较陌生. 你感觉自己什么

04+罗潇潇+罗潇第三次作业

04+罗潇潇+罗潇第三次作业第四章:项目管理一般知识1.核心知识域有哪些.保障域有哪些?伴随域有哪些?过程域有哪些? (1)核心知识域包括整体管理.范围管理.进度管理.成本管理.质量管理和信息安全管理等. (2)保障域包含人力资源管理.合同管理.采购管理.风险管理.信息(文档)与配置管理.知识产权管理.法律法规标准规范和职业道德规范等. (3)伴随域包含变更管理和沟通管理等. (4)过程域包含科研与立项.启动.计划.实施.监控和收尾等,而其中的监控过程则可能发生在项目生命周期的任一个阶段.2.有

o(︶︿︶)o 唉,第三次作业

                                                                             第三次作业 1.需求分析 (1)从combox控件中,获取各种运算(+.=.*./),用户可以输入运算范围,比如想算0-10以内的,那么就在textbox5和6中输入0和10就行,当然,如果5中的数字比6中的数字小的话,会有消息提示框,并清空他们.用户可以选择算法,设置范围后,点击计算,输入结果,回车就可以. 2.设计思路 (1)思考应该怎么做