软件工程测试4
来源:互联网 发布:oracle 编程 书籍推荐 编辑:程序博客网 时间:2024/05/29 13:07
/******************************************************* * Finds and prints n prime integers * Jeff Offutt, Spring 2003 ******************************************************/ public static void printPrimes (int n) { int curPrime; // Value currently considered for primeness int numPrimes; // Number of primes found so far. boolean isPrime; // Is curPrime prime? int [] primes = new int [MAXPRIMES]; // The list of prime numbers. // Initialize 2 into the list of primes. primes [0] = 2; numPrimes = 1; curPrime = 2; while (numPrimes < n) { curPrime++; // next number to consider ... isPrime = true; for (int i = 0; i <= numPrimes-1; i++) { // for each previous prime. if (curPrime%primes[i]==0) { // Found a divisor, curPrime is not prime. isPrime = false; break; // out of loop through primes. } } if (isPrime) { // save it! primes[numPrimes] = curPrime; numPrimes++; } } // End while // Print all the primes out. for (int i = 0; i <= numPrimes-1; i++) { System.out.println ("Prime: " + primes[i]); } } // end printPrimes
the flow chart :
(b)Consider test cases t1 = (n = 3) and t2 = (n = 5). Even if these test cases tour the same main path in the printPrimes () method, they do not necessarily find the same error. Design a simple mistake, making t2 easier to find than t1.
Since int [] primes = new int [MAXPRIMES]; defines an array of size MAXPRIMES, so if MAXPRIMES = 4, then t2 is easier to find the array bounds problems than t1.
(c) For printPrimes (), find a test case, so that the corresponding test path to connect to the while statement to the edge of the statement, rather than through the while loop body.
We through numPrimes <n this judgment can get the test case, because the initial condition numPrimes = 1, so we take n = 1 to meet the requirements.
(d)For the graph of printPrimes (), list the test requirements for each node coverage, edge coverage, and prime path coverage.
1° Node Coverage
TR = {1,2,3,4,5,6,7,8,9,10,11,12,13}
Test Paths:[1,2,3,4,5,6,4,5,7,8,9,2,10,11,12,11,13]
2° Edge Coverage
TR = {(1,2),(2,3),(2,10),(3,4),(4,5),(4,8),(5,6),(5,7),(6,4),(7,8),(8,2),(8,9),(9,2),(10,11),(11,12),(11,13),(12,11)}
Test Paths:[1,2,3,4,5,6,4,5,7,8,9,2,10,11,12,11,13],[1,2,3,4,8,2,10,11,13]
3° Prime Path Coverage
Len0
[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13]!
Len1
[1,2],[2,3],[2,10],[3,4],[4,5],[4,8],[5,6],[5,7],[6,4],[7,8],[8,2],[8,9],[9,2],[10,11],[11,12],[11,13]!,[12,11]
Len2
[1,2,3],[1,2,10],[2,3,4],[2,10,11],[3,4,5],[3,4,8],[4,5,6],[4,5,7],[4,8,2],[4,8,9],[5,6,4],[5,7,8],[6,4,5],[6,4,8],[7,8,2],[7,8,9],[8,2,3],[8,2,10],[8,9,2],[9,2,3],[9,2,10],[10,11,12],[10,11,13]!,[11,12,11]*,[12,11,12]*
Len3
[1,2,3,4],[1,2,10,11],[2,3,4,8],[2,3,4,5],[2,10,11,12],[2,10,11,13]!,[3,4,5,6],[3,4,5,7],[3,4,8,2],[3,4,8,9],[4,5,6,4]*,[4,5,7,8],[4,8,9,2],[4,8,2,3],[4,8,2,10],[5,6,4,5]*,[5,6,4,8],[5,7,8,9],[5,7,8,2],[6,4,5,6]*,[6,4,5,7],[6,4,8,2],[6,4,8,9],[7,8,2,3],[7,8,2,10],[7,8,9,2],[8,2,3,4],[8,2,10,11],[8,9,2,3],[8,9,2,10],[9,2,3,4],[9,2,10,11]
Len4
[1,2,3,4,5],[1,2,3,4,8],[1,2,10,11,12],[1,2,10,11,13]!,[2,3,4,5,6],[2,3,4,5,7],[2,3,4,8,2]*,[2,3,4,8,9],[3,4,5,7,8],[3,4,8,2,3]*,[3,4,8,2,10],[3,4,8,9,2],[4,5,7,8,2],[4,5,7,8,9],[4,8,2,3,4]*,[4,8,2,10,11],[4,8,9,2,3],[4,8,9,2,10],[5,6,4,8,2],[5,6,4,8,9],[5,7,8,2,3],[5,7,8,2,10],[5,7,8,9,2],[6,4,5,7,8],[6,4,8,9,2],[6,4,8,2,3],[6,4,8,2,10],[7,8,2,3,4],[7,8,2,10,11],[7,8,9,2,3],[7,8,9,2,10],[8,2,3,4,5],[8,2,3,4,8]*,[8,2,10,11,12],[8,2,10,11,13]!,[8,9,2,3,4],[8,9,2,10,11],[9,2,3,4,5],[9,2,3,4,8],[9,2,10,11,12],[9,2,10,11,13]!
Len5
[1,2,3,4,5,6],[1,2,3,4,5,7],[1,2,3,4,8,9],[2,3,4,5,7,8],[2,3,4,8,9,2]*,[3,4,5,7,8,9],[3,4,5,7,8,2],[3,4,8,9,2,3]*,[3,4,8,9,2,10],[3,4,8,2,10,11],[4,5,7,8,2,3],[4,5,7,8,2,10],[4,5,7,8,9,2],[4,8,9,2,3,4]*,[4,8,9,2,10,11],[4,8,2,10,11,12],[4,8,2,10,11,13]!,[5,6,4,8,9,2],[5,6,4,8,2,3],[5,6,4,8,2,10],[5,7,8,2,3,4],[5,7,8,2,10,11],[5,7,8,9,2,3],[5,7,8,9,2,10],[6,4,5,7,8,2],[6,4,5,7,8,9],[6,4,8,2,10,11],[6,4,8,9,2,3],[6,4,8,9,2,10],[7,8,9,2,3,4],[7,8,9,2,10,11],[7,8,2,3,4,5],[7,8,2,10,11,12],[7,8,2,10,11,13]!,[7,8,9,2,3,4],[7,8,9,2,10,11],[8,2,3,4,5,6],[8,2,3,4,5,7],[8,9,2,3,4,5],[8,9,2,3,4,8]*,[8,9,2,10,11,12],[8,9,2,10,11,13]!,[9,2,3,4,5,6],[9,2,3,4,5,7],[9,2,3,4,8,9]*
Len6
[1,2,3,4,5,7,8],[2,3,4,5,7,8,2]*,[2,3,4,5,7,8,9],[3,4,5,7,8,2,3]*,[3,4,5,7,8,2,10],[3,4,5,7,8,9,2],[4,5,7,8,9,2,3],[4,5,7,8,9,2,10],[4,5,7,8,2,3,4]*,[4,5,7,8,2,10,11],[5,6,4,8,2,10,11],[5,6,4,8,9,2,3],[5,7,8,9,2,3,4],[5,7,8,9,2,10,11],[5,7,8,2,3,4,5]*,[5,7,8,2,10,11,12],[5,7,8,2,10,11,13]!,[6,4,5,7,8,2,3],[6,4,5,7,8,2,10],[6,4,5,7,8,9,2],[6,4,8,9,2,10,11],[6,4,8,2,10,11,12],[6,4,8,2,10,11,13]!,[7,8,2,3,4,5,6],[7,8,2,3,4,5,7]*,[7,8,9,2,3,4,5][7,8,9,2,10,11,12],[7,8,9,2,10,11,13]!,[7,8,9,2,3,4,5],[8,2,3,4,5,7,8]*,[8,9,2,3,4,5,6],[8,9,2,3,4,5,7],[9,2,3,4,5,7,8]
Len7
[1,2,3,4,5,7,8,9],[2,3,4,5,7,8,9,2]*,[3,4,5,7,8,9,2,10],[3,4,5,7,8,2,10,11],[4,5,7,8,2,10,11,12],[4,5,7,8,2,10,11,13]!,[4,5,7,8,9,2,3,4]*,[4,5,7,8,9,2,10,11],[5,6,4,8,2,10,11,12],[5,6,4,8,2,10,11,13]!,[5,6,4,8,9,2,10,11],[5,7,8,9,2,3,4,5]*,[5,7,8,9,2,10,11,12],[5,7,8,9,2,10,11,13]!,[6,4,5,7,8,2,10,11],[6,4,5,7,8,9,2,3],[6,4,5,7,8,9,2,10],[6,4,8,9,2,10,11,12],[6,4,8,9,2,10,11,13]!,[7,8,9,2,3,4,5,6],[7,8,9,2,3,4,5,7]*,[8,9,2,3,4,5,7,8]*.[9,2,3,4,5,7,8,9]*
Len8
[3,4,5,7,8,2,10,11,12],[3,4,5,7,8,2,10,11,13]!,[3,4,5,7,8,9,2,10,11],[4,5,7,8,9,2,10,11,12],[4,5,7,8,9,2,10,11,13]!,[5,6,4,8,9,2,10,11,12],[5,6,4,8,9,2,10,11,13]!,[6,4,5,7,8,2,10,11,12],[6,4,5,7,8,2,10,11,13]!,[6,4,5,7,8,9,2,10,11]
Len9
[3,4,5,7,8,9,2,10,11,12],[3,4,5,7,8,9,2,10,11,13]!,[6,4,5,7,8,9,2,10,11,12],[6,4,5,7,8,9,2,10,11,13]!
Note: The red mark is the primary path test requirement.
So, the TR = {[11,12,11],[12,11,12],[4,5,6,4],[5,6,4,5],[6,4,5,6],[1,2,10,11,12],[1,2,10,11,13], [2,3,4,8,2], [3,4,8,2,3], [4,8,2,3,4] ,[8,2,3,4,8],[1,2,3,4,5,6],[1,2,3,4,8,9],[2,3,4,8,9,2],[3,4,8,9,2,3], [4,8,9,2,3,4], [5,6,4,8,2,3],[8,9,2,3,4,8],[9,2,3,4,8,9],[2,3,4,5,7,8,2],[3,4,5,7,8,2,3],[4,5,7,8,2,3,4],[5,6,4,8,9,2,3],[5,7,8,2,3,4,5],[6,4,5,7,8,2,3],[7,8,2,3,4,5,6],[7,8,2,3,4,5,7],[8,2,3,4,5,7,8],[1,2,3,4,5,7,8,9],[2,3,4,5,7,8,9,2], [4,5,7,8,9,2,3,4],[5,6,4,8,2,10,11,12],[5,6,4,8,2,10,11,13],[5,7,8,9,2,3,4,5],[6,4,5,7,8,9,2,3],[7,8,9,2,3,4,5,6],[7,8,9,2,3,4,5,7],[8,9,2,3,4,5,7,8].[9,2,3,4,5,7,8,9],[3,4,5,7,8,2,10,11,12],[3,4,5,7,8,2,10,11,13],[5,6,4,8,9,2,10,11,12],[5,6,4,8,9,2,10,11,13],[6,4,5,7,8,2,10,11,12],[6,4,5,7,8,2,10,11,13],[3,4,5,7,8,9,2,10,11,12],[3,4,5,7,8,9,2,10,11,13],[6,4,5,7,8,9,2,10,11,12],[6,4,5,7,8,9,2,10,11,13]
②基于Junit及Eclemma(jacoco)实现一个主路径覆盖的测试。
Since the output of the original code is not suitable for testing, we change the output to a string type.The following is the modified code:
package stHW3;public class printPrime { public String printPrimes (int n) { final int MAXPRIMES=100; int curPrime; // Value currently considered for primeness int numPrimes; // Number of primes found so far. boolean isPrime; // Is curPrime prime? String str = ""; int [] primes = new int [MAXPRIMES]; // The list of prime numbers. // Initialize 2 into the list of primes. primes [0] = 2; numPrimes = 1; curPrime = 2; while (numPrimes < n) { curPrime++; // next number to consider ... isPrime = true; for (int i = 0; i <= numPrimes-1; i++) { // for each previous prime. if (curPrime%primes[i]==0) { // Found a divisor, curPrime is not prime. isPrime = false; break; // out of loop through primes. } } if (isPrime) { // save it! primes[numPrimes] = curPrime; numPrimes++; } } // End while // Print all the primes out. for (int i = 0; i <= numPrimes-1; i++) { str += primes[i]+" "; } return str; } // end printPrimes}
The goal is achived.
- 软件工程 - 4、测试
- 软件工程测试4
- 软件工程 测试
- 软件工程测试
- 软件工程六:软件测试
- 软件工程之软件测试
- 软件工程 -- 实现与测试
- 软件工程 之 测试运行
- 软件工程之测试
- 软件工程之软件测试
- 软件工程之测试
- 软件工程之软件测试
- 软件工程之软件测试
- 软件工程 之 软件测试
- 软件工程(软件测试)
- 软件工程之软件测试
- 软件工程之软件测试
- 软件工程-软件测试
- 软件测试作业2
- HTML5基础加强css样式篇(css属性border圆角:border-radius)(三十五)
- Python进阶(二十七)-字符串大小写转换
- 软工测试作业3
- 费马小定理判断素数
- 软件工程测试4
- MINA详解(转)
- HttpUrlConnection与HttpClient的认识(六) -实际应用之刷网络流量
- 软工测试作业5
- 使用TortoiseSVN时出错: Can't use Subversion command line client: svn...
- mui实现二维码扫描
- 博客专家3月原创奖励
- python学习语法
- swift3.0中UserDefaults的使用