一、实验目的

掌握基于覆盖理论与基本路径的基本白盒测试方法和实践

二、实验要求

运用逻辑覆盖测试的覆盖准则设计被测程序的测试用例,并运行测试用例检查程序的正确与否,给出程序缺陷小结。

三、实验内容

1) 被测原代码

import java.util.Scanner;
public class Triangle{public static void main(String[] args) {while(true){System.out.println("请输入三角形的三条边:");try {int a,b,c;Scanner input=new Scanner(System.in);a=input.nextInt();b=input.nextInt();c=input.nextInt();String str=triangle(a,b,c);System.out.println(str);} catch (Exception e) {// TODO: handle exceptionSystem.out.println("请确保输入的边为整数!");    }}}public static String triangle(int a,int b,int c){String result;if ((a>=1&&a<=100)&&(b>=1&&b<=100)&&(c>=1&&c<=100)) {if ((a+b>c)&&(a+c>b)&&(b+c>a)) {if (a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a) {if (a==b||a==c||b==c) {result="该三角形为等腰直角三角形.";} else {result="该三角形为直角三角形.";}} else if (a==b&&b==c&&a==c) {result="该三角形为等边三角形.";} else if (a==b||a==c||b==c) {result="该三角形为等腰三角形.";} else {result="该三角形为一般三角形.";}} else {result="不能构成三角形.";}} else {result="不能构成三角形.";}return result;}
}

2)依据覆盖技术,测试用例列表:

程序图                                                                                                               DD-路径图

DD-路径(只压缩链路经)

程序图节点

DD-路径

1

A

2

B

3

C

4

D

5

E

6

F

7

G

8

H

9

I

(I)语句覆盖:

A-B-D-I

A-B-C-F-I

A-B-C-E-I

A-B-C-E-G-I

A-B-C-E-G-H-I

测试用例:

用例ID

输入值

执行路径

预期输出

A

B

X

X

1

101

101

101

A-B-D-I

边的值不在范围内

2

3

1

2

A-B-C-F-I

不能构成三角形

3

3

4

5

A-B-C-E-I

该三角形为直角三角形

4

6

6

6

A-B-C-E-G-I

该三角形为等边三角形

5

5

5

6

A-B-C-E-G-H-I

该三角形为等腰三角形

6

3

5

6

A-B-C-E-G-H-I

该三角形为一般三角形

(II)分支覆盖(判断覆盖):

A-B-C-F-I

A-B-C-E-G-H-I

测试用例:

用例ID

输入值

执行路径

预期输出

A

B

X

X

1

1

0

3

A-B-C-F-I

不能构成三角形

2

3

4

3

A-B-C-E-G-H-I

该三角形为等腰三角形

(III)路径覆盖:

A-B-D-I

A-B-C-F-I

A-B-C-E-I

A-B-C-E-G-I

A-B-C-E-G-H-I

用例ID

输入值

执行路径

预期输出

A

B

X

X

1

101

101

101

A-B-D-I

边的值不在范围内

2

3

1

2

A-B-C-F-I

不能构成三角形

3

3

4

5

A-B-C-E-I

该三角形为直角三角形

4

6

6

6

A-B-C-E-G-I

该三角形为等边三角形

5

5

5

6

A-B-C-E-G-H-I

该三角形为等腰三角形

6

3

5

6

A-B-C-E-G-H-I

该三角形为一般三角形

(IV)条件覆盖:各个条件取真或假的可能至少执行一次

编号

(a>=1&&a<=100)&&(b>=1&&b<=100)&&(c>=1&&c<=100)

(a+b>c)&&(a+c>b)&&(b+c>a)

a*a+b*b==c*c||a*a+c*c==b*b

||b*b+c*c==a*a

a==b&&b==c&&a==c

a==b||a==c||b==c

覆盖路径

1

T

T

T

T

T

A-B-C-E-G-H-I

2

T

T

T

T

F

A-B-C-E-G-H-I

3

T

T

T

F

A-B-C-E-G-I

4

T

T

F

A-B-C-E-I

5

T

F

A-B-C-F-I

6

F

A-B-D-I

测试用例:

用例ID

输入值

执行路径

覆盖条件

预期输出

1

101

101

101

A-B-D-I

1,2

边的值不在范围内

2

1

1

2

A-B-C-F-I

1,2,3

不能构成三角形

3

3

4

5

A-B-C-E-I

1,2,3,5

该三角形为直角三角形

4

5

5

5

A-B-C-E-G-I

1,2,3,5,7

该三角形为等边三角形

5

3

5

3

A-B-C-E-G-H-I

1,2,3,5,7,8

该三角形为等腰三角形

6

3

5

7

A-B-C-E-G-H-I

1,2,3,5,7,8

该三角形为一般三角形

3)相应Junit测试脚本、执行结果

Junit测试脚本:

import static org.junit.Assert.assertEquals;import org.junit.Before;
import org.junit.Test;public class TrangleTest {private static Triangle trangle = new Triangle();@Beforepublic void setUp() throws Exception {}@Testpublic void testTriangle01() {assertEquals("该三角形为直角三角形.", Triangle.triangle(3, 4, 5));//1
        }@Testpublic void testTriangle02() {assertEquals("该三角形为等边三角形.", Triangle.triangle(6, 6, 6));//2
    }@Testpublic void testTriangle03() {assertEquals("边的值不在范围内!",  Triangle.triangle(150, 150, 200));//3
}@Testpublic void testTriangle04() {assertEquals("不能构成三角形.", Triangle.triangle(3, 1, 2));//4
}@Testpublic void testTriangle05() {assertEquals("该三角形为一般三角形.",  Triangle.triangle(3, 5, 6));//5
}@Testpublic void testTriangle06() {assertEquals("该三角形为等腰三角形.",  Triangle.triangle(5, 5, 6));//6
}}

测试结果:

4)给出测试参数化和打包测试的脚本,并生成执行结果

import org.junit.Before;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;@RunWith(Suite.class)
@Suite.SuiteClasses({TrangleTest.class
})public class Test {@Beforepublic void setUp() throws Exception {}
}

测试结果:

4、测试小结:

  • 测试找到的缺陷清单
  • 对源代码的修改建议
  • 测试总结与心得体会

测试用例都成功通过。

修改建议:应先判断等腰再判断等边三角形,这样逻辑更顺畅;应在代码关键处添加注释。

总结与心得:在我们平常的项目开发中,测试是显得越来越重要。我们很多的时候,必须得测试与开发同步,测试代码和工作代码应同步编译和更新。而junit可以大大减少代码量和文件量,为测试提供了很大的灵活性。所以不要认为压力大,就不写测试代码。相反编写测试代码会使压力逐渐减轻,因为通过编写测试代码地编写出有效率的工作代码。在编写测试用例时要充分覆盖各个路径,以确保每个判断条件都能被执行。

转载于:https://www.cnblogs.com/chen-dg/p/6706684.html

实验二+001+陈定国相关推荐

  1. 实验四+001+陈定国

    一.实验目的 1) 学习QTP工具的使用 2)了解黑盒自动化测试 二.实验要求 (1)对被测程序进行黑盒测试用例设计 (2)对QTP的飞机订票系统的任一界面或控件实现自动化测试.(测试的具体自选) ( ...

  2. 实验三+001+陈定国

    一.实验目的 掌握黑盒测试用例设计方法 二.实验要求 (1)对被测程序进行黑盒测试用例设计 (2)运用等价类.边界值.决策表.状态图法等进行测试用例设计. (3)对手机上任意一款音乐软件进行黑盒测试实 ...

  3. 第5次作业+001+陈定国

    被测代码链接:http://www.cnblogs.com/ddanwu-blogs/p/6802869.html 1)被测项目界面.   2)测试用例设计表 符号标记:耳机(headphone),手 ...

  4. 第4次作业类测试代码+001+陈定国

    1.类图 2.代码 Triangle类: package triangleDemo; public class Triangle{public String triangle(int a,int b, ...

  5. 大明最不该被遗忘的英烈——李定国

    2009-6-26日,世界禁毒日,中央电视台晚间8点--9点做了一期节目,其中涉及到了位于缅北金三角地区,更有缅甸掸邦的果敢族.这使我不禁想起了眼前的这些果敢族他们正是由死不降清的南明遗老,在现今缅北 ...

  6. 哈工大计算机系统实验二——DataLab数据表示

    计算机系统实验二特别难,和上一届的实验不一样,没有学长的火炬,当时做的时候特别崩溃.幸好有一帮志同道合的伙伴们,一起慢慢把实验解决了. 把火炬传下去! 实验报告 实 验(二) 题     目 Data ...

  7. python程序设计报告-20191206 实验二《Python程序设计》实验报告

    学号 2019-2020-2 <Python程序设计>实验二报告 课程:<Python程序设计> 班级: 1912 姓名: 陈发强 学号: 20191206 实验教师:王志强 ...

  8. 实验二matlab数值,实验二MATLAB数值计算

    实验二MA TLAB数值计算 1.实验目的 (1)掌握MA TLAB变量的使用 (2)掌握MA TLAB数组的创建, (3)掌握MA TLAB数组和矩阵的运算. (4)熟悉MA TLAB多项式的运用 ...

  9. 计算机中数据表示与计算实验答案,实验二计算机中的数据表示与计算-20210622102303.pdf-原创力文档...

    . 实验二 计算机中的数据表示与计算 学号 :1120161816 姓名 :田雄辉 班级 实验时间 :2016 年 9 月 29 日 实验报告表 2-1 数值型数据在计算机中的二进制表示实验记录表 十 ...

最新文章

  1. Python 工具列表
  2. 大数据时代数据中心的发展思考
  3. 经典基础算法之面试题(系列一)
  4. Scramble String -- LeetCode
  5. 用计算机算出陈赫手机号码,陈赫手机号码遭《快本》曝光,并被网友打到关机!还有人搜到了他的支付宝账户......
  6. java 创建线程_java多线程|创建线程的各种方式
  7. php oauth 扩展,PHP扩展之Web服务(一)——OAuth
  8. Socket超时时间设置
  9. 类增量学习(Class-Incremental Learning)领域部分经典论文汇总
  10. 计算机达人成长之路(8)连载
  11. sitemap.xml 静态和动态生成页面 shopnc二次开发 动态生成sitemap.xml
  12. 友声电子秤设置软件_友声电子秤说明书精编版
  13. bom管理软件,支持版本控制,bom比对
  14. 给定一个英文字符串,请写一段代码找出这个字符串中首先出现三次的那个英文字符(需要区分大小写)。 输入描述:
  15. TensorFlow 2.10 Unable to register cuBLAS factory Attempting to register factory for plugin cuBLAS方案
  16. python爬虫学习-scrapy爬取链家房源信息并存储(翻页)
  17. 浅谈面试中常提到的乐观锁与悲观锁
  18. Hadoop HA集群配置问题记录
  19. 洛谷——P1361 小猫爬山
  20. ddr2是几代内存_教你区分DDR1 DDR2 DDR3内存条的方法

热门文章

  1. mysql不可重复读和重复读_MySql隔离级别:RU / RC / RR / S + 脏读 / 不可重复读 / 幻读 / 可重复读...
  2. jdbc连接teradata仓库_java--teradata
  3. 如何多人协作编辑文档
  4. 开心网 开心网 到底哪个是开心网?
  5. 太赞了!华为工程师总结了400道前端面试题
  6. 运动控制卡的函数库与Linux,运动控制卡应用开发教程之使用Qt
  7. html制作日历备忘录,CSS3制作日历备忘录
  8. [自考总结]想要去的远方,终有一天会到达
  9. 处理VUE移动端输入法遮挡input输入框的问题
  10. 安卓调用系统相机拍照并返回,实现图片预览