一、实验目的

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

二、实验要求

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

三、实验内容

被测代码:

package test1;import java.util.Scanner;public class MonyCount {/*** @param args*///用于判断输入是否正确static boolean charge(String headphone, String shell, String protector){if(Integer.valueOf(headphone).intValue()<0||Integer.valueOf(shell).intValue()<0||Integer.valueOf(protector).intValue()<0){System.out.println("输入数量不满足要求");return false;}else{return true;}}static //计算佣金的公式float   commission (String Headphone, String Shell, String Protector){//实现字符串到数字的转化     int headphone=0;int shell=0;int protector=0;try {headphone = Integer.valueOf(Headphone).intValue();shell= Integer.valueOf(Shell).intValue();protector= Integer.valueOf(Protector).intValue();} catch (NumberFormatException e) {e.printStackTrace();}int total=0;float money=0;total=80*headphone+10*shell+8*protector;if(total<1000){money=(float) (total*0.1);}if(total>=1000&&total<1800){money=(float) (total*0.15);}if(money>=1800){money=(float) (1800*0.15+(total-1800)*0.2);}return money;}public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);String headphone;String shell;String protector;float count;//用于输出计算后得到的佣金//分别对输入的数值进行校验while(true){System.out.println("请分别输入三种手机配件的销售情况:");headphone=sc.next();shell=sc.next();protector=sc.next();//改函数用于判断输入是否符合规范if(!charge(headphone,shell,protector)){continue;}count=commission(headphone,shell,protector);System.out.println("应支付的佣金为:"+count);}}}

  

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

DD-路径图

<1>语句覆盖

编号

输入

预期输出

实际输出

执行路径

是否通过

1

10 101 0

222.0

222.0

ABF

2

10 100 0

220.0

220.0

ACDF

3

0 100 0

100.0

100.0

ACEF

<2>判定/条件覆盖

编号

输入

预期输出

实际输出

执行路径

是否通过

1

10 101 0

222.0

222.0

ABF

2

10 100 0

220.0

220.0

ACDF

3

0 100 0

100.0

100.0

ACEF

4

1 100 0

112.0

112.0

ACDF

5

1 1 1

9.8

9.8

ACEF

6

-1 -1 -1

错误提示

-9.8

ACEF

×

<3>组合覆盖

编号

输入

预期输出

实际输出

执行路径

是否通过

1

10 101 0

222.0

222.0

ABF

2

10 100 0

220.0

220.0

ACDF

3

0 100 0

100.0

100.0

ACEF

4

1 100 0

112.0

112.0

ACDF

5

1 1 1

9.8

9.8

ACEF

6

-1 -1 -1

错误提示

-9.8

ACEF

×

7

0 0 0

0.0

0.0

ACEF

三、使用junit脚本进行测试

@RunWith(Parameterized.class)
public class SoftTest_1Test {private int ph;private int sh;private int pr;private String comm;@Parameterspublic static Collection<Object[]> data(){return Arrays.asList(new Object[][]{{5,10,5,"佣金额为:54.0"},{10,20,50,"佣金额为:160.0"},{20,20,50,"佣金额为:300.0"},{8,10,3,"佣金额为:76.4"},{15,20,3,"佣金额为:163.6"},{30,15,62,"佣金额为:469.2"},{5,2,1,"佣金额为:42.8"},{14,16,5,"佣金额为:148.0"},{20,45,30,"佣金额为:318.0"},{0,0,0,"佣金额为:0.0"}});}public SoftTest_1Test(int ph, int sh, int pr, String comm){this.ph = ph;this.sh = sh;this.pr = pr;this.comm = comm;}@Testpublic void testCommission() {assertEquals(comm, SoftTest_1.commission(ph, sh, pr));}}

  执行结果

四、测试总结

1、做完junit单元测试才发现这个真的非常方便,因为自己同时进行了手动输入的方式来进行测试,遇到这种只要输入参数就可以自动测试并得出结果正确性的工具真的非常棒。

2、想对程序进行小数和负数的测试,因为看完代码之后很明显这样的测试是通不过的。但是程序又没有这样的判断,写测试用例的时候不知道该写是什么覆盖方法,而且预期输出也不知道该怎么写,应为程序根本没有处理所以也不知道正确情况下程序应该是输出什么,只能是根据常识判断。

3.对于字符串的输入应当要先进行判断然后再进行比较。否则会对后面程序的判定产生较大的影响。

转载于:https://www.cnblogs.com/leezoey/p/6700988.html

实验二+018+李滨相关推荐

  1. 单位斜变函数matlab,实验二 用MATLAB实现线性系统的时域分析

    实验二基于MATLAB的线性系统时域分析 [实验目的] 1.研究线性系统在典型输入信号作用下的暂态响应: 2.熟悉线性系统的暂态性能指标: 3.研究二阶系统重要参数阻尼比ξ对系统动态性能的影响: 4. ...

  2. 周信东c语言实验二实验报告,周信东主编最新版C语言程序设计基础实验一实验报告.doc...

    周信东主编最新版C语言程序设计基础实验一实验报告.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我 ...

  3. LSB图像信息隐藏算法matlab,实验二LSB信息隐藏实验.doc

    实验二LSB信息隐藏实验.doc 实验二LSB信息隐藏实验 综合评分: [实验目的]: 掌握MATLAB基木操作 实现LSB信息隐藏和提取 [实验内容]:(请将你实验完成的项11涂"■&qu ...

  4. 20172328《程序设计与数据结构》实验二:树

    20172328<程序设计与数据结构>实验二:树 课程:<软件结构与数据结构> 班级: 1723 姓名: 李馨雨 学号:20172328 实验教师:王志强老师 实验日期:201 ...

  5. matlab语言实验二,实验二 MATLAB语言基础

    实验二 MATLAB 语言基础 一.实验目的 基本掌握 MATLAB 向量.矩阵.数组的生成及其基本运算(区分数组运算和矩阵运算).常用的数学函数.了解字符串的操作. 二.实验内容 (1) 向量的生成 ...

  6. 数据库原理实验二 数据库管理 实验报告

    广州大学学生实验报告实验二:数据库管理 此篇分享仅供参考学习,图文禁复制,勿作他用!谢谢配合! 数据库原理实验之实验二:数据库管理 软件:Oracle SQL Developer 今天实验才刚开始,花 ...

  7. 20155328 《Java程序设计》 实验二(Java面向对象程序设计) 实验报告

    20155328 <Java程序设计> 实验二(Java面向对象程序设计) 实验报告 单元测试 一.单元测试和TDD 编程时需理清思路,将编程需求等想好,再开始编.此部分可用伪代码实现. ...

  8. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十九:LCD模块

    实验二十九:LCD模块 据说Alinx 301支持 7"TFT,好奇的朋友一定疑惑道,它们3.2"TFT以及7"TFT等两者之间究竟有何区别呢?答案很简单,前者自带控制器 ...

  9. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十七:TFT模块 - 显示

    实验二十七:TFT模块 - 显示 所谓TFT(Thin Film Transistor)就是众多LCD当中,其中一种支持颜色的LCD,相较古老的点阵LCD(12864笑),它可谓高级了.黑金的TFT ...

最新文章

  1. 第一个使用计算机图形学术语,计算机图形学考题
  2. mysql如何实现实时存储_OpenResty + Mysql 实现日志实时存储
  3. Scrapy学习篇(九)之文件与图片下载
  4. 如何实现Windows宿主系统和虚拟机ubuntu系统文件互相访问
  5. linux如何加设磁盘配额,Linux系统攻略:如何为添加的硬盘做配额
  6. 执行shell出现bad interpreter
  7. 校招面试经验小分享,阿里腾讯美团字节实习offer
  8. Java-API-Package:org.springframework.web.bind.annotation
  9. 学习 WebService 第三步:一个简单的实例(SoapUI测试REST项目)
  10. leetcode day7
  11. user declined directory sharing Creating xxxx
  12. es 精确查找思路以及实现过程
  13. 李白的诗-按时间顺序的创作
  14. ROS真车篇(一)激光雷达SLAM建图+自主导航+RGB深度相机
  15. Thinkcmf - 微信公众号开发 -1
  16. Cesium专栏-空间分析之剖面分析(附源码下载)
  17. linux aux是什么命令,Linux命令ps aux详细解释
  18. 惠普瘦客户机助力班班通进校园
  19. 一个专注极简的导航主页
  20. git 子分支如何合并主分支

热门文章

  1. 独轮车(广搜_队列)
  2. C# 中的 gdi 而不是 gdi+
  3. 敏捷结果30天练习即将开始
  4. node --进行后台的环境搭建
  5. Node起一个web服务器
  6. unity基础开发----Unity获取PC,Ios系统的mac地址等信息
  7. 微信公共开发人员文档 阅读笔记
  8. linux 环境下git的安装与配置
  9. NIC Bonding on CentOS 7 with nmtui
  10. 311. Sparse Matrix Multiplication