Software Testing 3
Questions:
• 7. Use the following method printPrimes() for questions a–d.
基于Junit及Eclemma(jacoco)实现一个主路径覆盖的测试。
/*****************************************************************
* Finds and prints n prime integers
* Jeff Offutt, Spring 2003
*****************************************************************/
private 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(isDivisible(primes[i], curPrime))
{ // 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.
(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.
(d) Enumerate the test requirements for node coverage, edge coverage, and prime path coverage for the path for printPrimes().
Answers:
(a)

(b) MAXPRIMES >= n
所以当MAXPRIMES = 4时,t2会发生数组越界,而t1不会。
(c) n = 1;
(d)点覆盖:TR = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
边覆盖:TR = {(1,2), (2,3), (2,11), (3,4), (4,5), (4,8), (5,6), (5,7), (6,8), (7,4), (8,9), (8,10), (9,10), (10,2), (11,12), (12,13), (12,15), (13,14), (14,12)}
主路径覆盖:
TR = {(1, 2, 3, 4, 5, 6, 8, 9, 10),(1, 2, 3, 4, 5, 6, 8, 10),(1, 2, 3, 4, 8, 9, 10),(1, 2, 3, 4, 8, 10),(1, 2, 3, 4, 5, 7),(1, 2, 11, 12, 13, 14),(1, 2, 11, 12, 15),
(2, 3, 4, 5, 6, 8, 9, 10, 2),(2, 3, 4, 5, 6, 8, 10, 2),(2, 3, 4, 8, 9, 10, 2),(2, 3, 4, 8, 10, 2),
(3, 4, 5, 6, 8, 9, 10, 2, 11, 12, 13, 14),(3, 4, 5, 6, 8, 9, 10, 2, 11, 12, 15),(3, 4, 5, 6, 8, 10, 2, 11, 12, 13, 14),(3, 4, 5, 6, 8, 10, 2, 11, 12, 15),(3, 4, 8, 9, 10, 2, 11, 12, 13, 14),(3, 4, 8, 9, 10, 2, 11, 12, 15),(3, 4, 8, 10, 2, 11, 12, 13, 14),(3, 4, 8, 10, 2, 11, 12, 15),
(4, 5, 7, 4),(4, 5, 6, 8, 9, 10, 2, 3, 4),(4, 5, 6, 8, 10, 2, 3, 4),
(5, 7, 4, 5),(5, 6, 8, 9, 10, 2, 3, 4, 5),(5, 6, 8, 10, 2, 3, 4, 5),(5, 7, 4, 8, 9, 10, 2, 3),(5, 7, 4, 8, 10, 2, 3),(5, 7, 4, 8, 9, 10, 2, 11, 12, 13, 14),(5, 7, 4, 8, 10, 2, 11, 12, 13, 14),(5, 7, 4, 8, 9, 10, 2, 11, 12, 15),(5, 7, 4, 8, 10, 2, 11, 12, 15),
(6, 8, 9, 10, 2, 3, 4, 5, 6),(6, 8, 10, 2, 3, 4, 5, 6),(6, 8, 9, 10, 2, 3, 4, 5, 7),(6, 8, 10, 2, 3, 4, 5, 7),
(7, 4, 5, 7),(7, 4, 5, 6, 8, 9, 10, 2, 3, 4),(7, 4, 5, 6, 8, 10, 2, 3, 4),(7, 4, 5, 6, 8, 9, 10, 2, 11, 12, 13, 14),(7, 4, 5, 6, 8, 10, 2, 11, 12, 13, 14),(7, 4, 5, 6, 8, 9, 10, 2, 11, 12, 15),(7, 4, 5, 6, 8, 10, 2, 11, 12, 15),
(8, 10, 2, 3, 4, 8),(8, 9, 10, 2, 3, 4, 8),(8, 10, 2, 3, 4, 5, 6, 8),(8, 9, 10, 2, 3, 4, 5, 6, 8),
(9, 10, 2, 3, 4, 5, 6, 8, 9),(9, 10, 2, 3, 4, 8, 9),
(10, 2, 3, 4, 5, 6, 8, 10),(10, 2, 3, 4, 5, 6, 8, 9, 10),(10, 2, 3, 4, 8, 10),(10, 2, 3, 4, 8, 9, 10),
(12, 13, 14, 12),
(13, 14, 12, 15),(13, 14, 12, 13),
(14, 12, 13, 14)}
(附加)基于Junit及Eclemma(jacoco)实现一个主路径覆盖的测试:
首先,假设MAXPRIMES=10并补全代码;
其次,确定测试用例并编写测试文件;







Software Testing 3的更多相关文章
- 101+ Manual and Automation Software Testing Interview Questions and Answers
101+ Manual and Automation Software Testing Interview Questions and Answers http://www.softwaretesti ...
- Exploratory Software Testing
最近找到去年上半年看过一本关于测试方面书籍的总结笔记,一直放在我的个人U盘里,当时是用Xmind记录的,现在重新整理下分享给大家了! James A.Whittaker [美] 詹姆斯·惠特克(软件测 ...
- 软件测试software testing summarize
软件测试(英语:software testing),描述一种用来促进鉴定软件的正确性.完整性.安全性和质量的过程.软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对 ...
- 读书笔记-Software Testing(By Ron Patton)
Software Testing Part I:The Big Picture 1.Software Testing Background Bug's formal definition 1.The ...
- software testing
Software Testing Software testing is the process of evaluation a software item to detect differences ...
- Software Testing Techniques LAB 02: Selenium
1. Installing 1. Install firefox 38.5.1 2. Install SeleniumIDE After installing, I set the view o ...
- 探索式软件测试—Exploratory Software Testing
最近找到去年上半年看过一本关于测试方面书籍的总结笔记,一直放在我的个人U盘里,当时是用Xmind记录的,现在重新整理下分享给大家了! James A.Whittaker [美] 詹姆斯·惠特克(软件测 ...
- FW:Software Testing
Software Testing Testing with a Purpose Software testing is performed to verify that the completed s ...
- 《The art of software testing》的一个例子
这几天一直在看一本书,<The art of software testing>,里面有一个例子挺有感触地,写出来和大家分享一下: [问题] 从输入对话框中读取三个整数值,这三个整数值代表 ...
- Software Testing Concepts
Software Testing Concepts
随机推荐
- Java编程的逻辑 (92) - 函数式数据处理 (上)
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- FasterRCNN原理(转)
在介绍Faster R-CNN之前,先来介绍一些前验知识,为Faster R-CNN做铺垫. 一.基于Region Proposal(候选区域)的深度学习目标检测算法 Region Proposal( ...
- python 搭建一个http服务的小例子
一.创建Server 1.Dos 命令 python -m BaseHTTPServer [port] 默认端口是8000, 2.Python 脚本启动 #coding:utf-8 ''' Creat ...
- docker安装和使用
1.安装的docker版本 docker -v Docker version 17.03.2-ce 2.查看本地的镜像 docker images 3.拉取镜像 docker pull centos: ...
- Stack堆栈的数据结构
1.
- 【netcore基础】ConcurrentDictionary 使用字符串作为key给代码加锁且使用EF事物防止并发调用数据混乱的问题
业务场景需要锁住指定的字符串下的代码,防止并发创建多个订单 这里我们使用 ConcurrentDictionary 首先初始化一个字典 private static readonly Concurre ...
- phantomjs 是什么?----主要是mac下面
phantomjs 是什么? PhantomJS是一个无界面的,可脚本编程的WebKit浏览器引擎.它原生支持多种web 标准:DOM 操作,CSS选择器,JSON,Canvas 以及SVG. pha ...
- 用dx生成dex时遇到class name does not match path
前言 用dx生成dex时遇到class name (Hello) does not match path这个问题还弄了挺久,这里就简单的记录一下. 步骤 首先是dx工具是在Android的SDK里面的 ...
- CF1B Spreadsheets
题意翻译 人们常用的电子表格软件(比如: Excel)采用如下所述的坐标系统: 第一列被标为A,第二列为B,以此类推,第26列为Z.接下来为由两个字母构成的列号: 第27列为AA,第28列为AB... ...
- git pull总是要输入账号和密码
如果你用git从远程pull拉取代码,每次都要输入密码,那么执行下面命令即可 git config --global credential.helper store 这个命令则是在你的本地生成一个账号 ...