实现一个主路径覆盖的测试

1.源代码:

/**

* 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 primes.

// 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; i++ ) {

//for each previous prime.

if(isDvisible(primes[i],curPrime)) {

//Found a divisor, curPrime is not prime.

isPrime = false;

break;

}

}

if(isPrime) {

// save it!

primes[numPrimes] = curPrime;

numPrimes++;

}

}// End while

// print all the primes out

for(int i = 0; i < numPrimes; i++) {

System.out.println("Prime: " + primes[i] );

}

}// End printPrimes.

2.Draw the control flow graph for the printPrime() method:

3.Consider test cases t1 = (n = 3) and t2 = ( n = 5). Although these tour the same prime paths in printPrime(), they don‘t necessarily find the same faults. Design a simple fault that t2 would be more likely to discover than t1 would.

数组越界错误 比如 MAXPRIMES = 4 的情况下t2就有可能出现这样的错误。

4.For printPrime(), 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.

在n=1的时候就不会进入循环

5. Enumerate the test requirements for node coverage, edge coverage,and prime path coverage for the path for printPrimes().

点覆盖:{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}

边覆盖:{(1,2),(2,3),(3,4),(3,12),(4,5),(5,6),(6,9),(6,7),(7,8),(7,10),(8,9),(9,11),(9,3),(10,6),(11,3),(12,13),(13,14),(14,15),(15,13),(13,16)}

主路径覆盖:{(1,2,3,4,5,6,7,8,9,11),(1,2,3,4,5,6,7,10),(1,2,3,12,13,16),(1,2,3,12,13,14,15),(3,4,5,6,7,8,9,11,3),(4,5,6,7,8,9,11,3,4),(5,6,7,8,9,11,3,4,5),(6,7,10,6),(6,7,8,9,11,3,4,5,6),(7,10,6,7),(7,8,9,11,3,4,5,6,7),(8,9,11,3,4,5,6,7,8),(9,11,3,4,5,6,7,8,9),(10,6,7,10),(11,3,4,5,6,7,8,9,11),(13,14,15,13),(14,15,13,14),(15,13,14,15),(14,15,13,16),(15,13,16)}

6. List test paths that achieve node coverage but not edge coverage ont the graph.

{1,2,3,4,5,6,7,5,8,9,10,11,2,12,13,14,15,13,16}

7. List test paths that achieve edge coverage but not prime path coverage on the graph.

{  [1,2,3,4,5,6,7,5,8,9,10,11,2,13,14,15,13,16],  [1,2,3,4,5,9,10,11,2,12,13,16] }

8.测试代码:

import static org.junit.Assert.*;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PipedInputStream;

import java.io.PipedOutputStream;

import java.io.PrintStream;

import java.util.Scanner;

import org.hamcrest.core.AllOf;

import org.junit.Before;

import org.junit.Test;

public class TestHomework3 {

ByteArrayOutputStream out;

PrintStream ps;

public Homework3 primes = new Homework3();

int [] print = {2, 3, 5};

@Before

public void setUp(){

out = new ByteArrayOutputStream();

ps = new PrintStream(out);

System.setOut(ps);

}

@Test

public void test() throws IOException {

out.flush();

primes.printPrimes(3);

assertEquals("Prime: 2\r\nPrime: 3\r\nPrime: 5\r\n", out.toString());

}

}

9.测试结果:

原文地址:https://www.cnblogs.com/zyd746714868/p/8654429.html

时间: 2024-10-07 01:42:24

实现一个主路径覆盖的测试的相关文章

软件测试点覆盖,边覆盖,主路径覆盖及其练习题

点覆盖:即对程序的控制流图节点进行全面覆盖. 边覆盖:设计一条路径,使程序的控制流图中所有边被覆盖. 主路径覆盖:就是对程序设计测试用例,使测试用例尽可能多的经过控制流图中的边同时不形成环. 习题: 对以下代码进行分析: package com.prime; public class Prime { public static Boolean isDivisable(int prime, int curPrime) { if (curPrime % prime == 0) { return tr

一个项目的整个测试流程

最近一直在进行接口自动化的测试工作,同时对于一个项目的整个测试流程进行了梳理,希望能对你有用~~~ 需求分析: 整体流程图: 需求提取 -> 需求分析 -> 需求评审 -> 更新后的测试需求跟踪xmind 分析流程: 1. 需求提取: 分析依据(包括:需求矩阵.产品交互图.需求说明书) 获取需求的纬度 客户价值 可以为客户带来哪些价值? 可以解决哪些问题? 根据以上问题定位功能是否合理 UI功能 - 展示功能 模块关联-历史模块 新功能模块关联 考虑是否关联?耦合部分是否需要支持? 客户

软件测试:主路径覆盖

1.控制流图 2.使MAXPRIMES == 4时,n=5会引发越界 3.令n= 1,不满足numPrimes<n,所以不通过while的循环 4. 点覆盖{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16} 5. 边覆盖{(1,2),(2,3),(2,12),(3,4),(4,5),(5,6),(5,9),(6,7),(6,8),(7,5), (8,9),(9,10),(9,11),(10,11),(11,2),(12,13),(13,14),(13,16),(14

为Visual Studio添加一个“编码的UI测试生成器”的快捷方式

在添加CodedUI测试用例时,经常需要查看捕获控件的属性.按照常规的方式,只有在添加一个全新的CodedUI编码测试时才能查看捕获控件的属性,这样很不方便. 下面介绍在Visual Studio工具栏里添加一个快捷方式,随时打开"编码的UI测试生成器",随时捕获控件,查看控件属性. 操作步骤: 1. 通过Visual Studio的"外部工具"菜单,添加快捷方式 2. 制定快捷方式的命令名称和路径 Visual Studio 2013的命令为:C:\Program

需求:有一个猜数字小游戏,请写一个程序实现在测试类中只能使用5次,超过5次提示:游戏试玩结束,请付费。

package cn.idcast4; import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;import java.util.Properties; /* * 需求:有一个猜数字小游戏,请写一个程序实现在测试类中只能使用5次, *

做了一个密码强度输入测试

<!doctype html> <html> <head> <meta charset="utf-8"> <title>密码强度输入测试</title> <style type="text/css"> .cont { margin-left:300px; margin-top:50px; border:solid 1px #ccc; width:520px; padding:20px

我的2015测试之路 ——做一个很有想法的测试

我的2015测试之路 ——做一个很有想法的测试 不记得有多少次了,总是说等什么时候闲了,就回过头看看这一路跋涉.风尘仆仆的自己.可每次都只是想想而已,即使真的闲下来了,却又不太愿意剥开自己的心,怕看了会伤感.又怕看了会觉得失望,可能是我没有成为,当初那个我想要成为的样子吧.是该对自己说一句对不起了.对不起,我深爱的自己! 人们总是在歌谣里哀求时光慢些,不要再让亲人变老了.但它总也是不听话,于是2015年终究是被推进了历史.现在我们只能在回忆和指尖怀念2015了,诚然,2015对我们每个人来说都是

一个简单的HTTP测试工具:Send HTTP Tool

我们在调用或者测试测试HTTP协议,或者第三方系统公布的RESTFul Web服务的API的时候,可以有很多种方法,比如,自己在cmd行中,打开telnet,然后拼写HTTP的数据:或者用Fiddler2发送HTTP请求的数据:还有其他方式:直接用telnet命令,拼写HTTP的数据很不方便,而且很容易出错:Fiddler2虽然功能强大,但是个人感觉使用起来有点稍微复杂,特别是对初学者来说.那么有没有一个简单,易于使用,一看就能知道如何使用的发送HTTP请求数据的工具呢?在这个篇文章中,为给大家

软件测试(四)主路径覆盖hw3

原题中代码 /******************************************************* * Finds and prints n prime integers * Jeff Offutt, Spring 2003 ******************************************************/ public static void printPrimes (int n) { int curPrime; // Value curr