一.实验要求

  1. Install Junit(4.12), Hamcrest(1.3) with Eclipse

  2. Install Eclemma with Eclipse

  3. Write a java program for the triangle problem and test the program with Junit.

  a) Description of triangle problem:

    Function triangle takes three integers a,b,c which are length of triangle sides; calculates whether the triangle is equilateral, isosceles, or scalene.

二.实验准备

  操作系统: Windows 8.1 64x

  IDE:IntelliJ IDEA 15.0.1

三.实验步骤

  1. 安装JUnit 和Hamcrest

    需要导入JUnit和Hamcrest的jar包。

       首先,先打开IntelliJ IDEA,用maven创建一个java工程。

    

其次,在网络上寻找到JUnit在maven上的依赖,并把依赖添加到java工程中的xml配置文件中。

  

这样相关的jar包也就会出现在工程中。

  2. 实现判定三角形类型的函数

由于问题并不复杂,事先也没什么难度,函数如下:

 1     public int triangleJudgement(int a,int b, int c){
 2         //-1 rep not a triangle
 3 //        if(a <= 0 || b <= 0 || c <= 0)
 4 //        {
 5 //            return -1;
 6 //        }
 7
 8         if(a + b > c && b + c > a && a + c > b)
 9         {
10             //2 rep equilateral, 1 rep isosceles, 0 rep scalene
11             if(a == b && b == c){
12                 return 2;
13             }
14             else if(a == b || b == c || a == c){
15                 return 1;
16             }
17             else
18             {
19                 return 0;
20             }
21         }
22         else
23             return -1;
24     }

    这里需要说明一下,需要先检测以下输入参数是否合法,比如输入负数,然而其实负数是不能够满足构成三角形的条件:任意两边之和大于第三边,所以我注释掉了部分代  码。

  3. 实现测试函数

    3.1 单测试用例测试

      这里实现了最简单的一种JUnit测试,需要在测试的函数前面加上@Test,代码如下:

1 public class Test1 {
2
3     @Test
4     public void test1(){
5       App app = new App();
6         assertEquals(-1,app.triangleJudgement(1,2,3));
7     }
8 }

      测试正常时:

      测试出错时:

      以上是简单的单测试用例的示例。

    3.2 参数化多测试用例测试

      多测试用例测试需要参数化,需要用到@RunWith(Parameterized.class),测试类代码如下:

 1 @RunWith(Parameterized.class)
 2 public class Test2 {
 3     private int input1 = 0;
 4     private int input2 = 0;
 5     private int input3 = 0;
 6     private int expected = 0;
 7     private App AppTest = null;
 8
 9     public Test2(int input1,int input2, int input3, int expected){
10         this.input1 = input1;
11         this.input2 = input2;
12         this.input3 = input3;
13         this.expected = expected;
14     }
15
16     @Before
17     public void setUp(){
18         AppTest = new App();
19     }
20
21     @Parameterized.Parameters
22     public static Collection<Object[]> getData(){
23         return Arrays.asList(new Object[][]{
24                 {3,1,2,-1},
25                 {3,3,3,2},
26                 {1,4,4,1},
27                 {5,3,4,0},
28                 {4,3,3,0},
29                 {2,2,2,1}
30
31         });
32     }
33
34     @Test
35     public void testApp(){
36         assertEquals(this.expected,AppTest.triangleJudgement(input1,input2,input3));
37     }
38 }

      首先我们需要申明以下数据域,expected,inputx等用于对应测试的期望值和输入,然后需要有一个返回Object数组的静态函数,然后测试的函数与之前的大致就相    同了,只不过期待值和参数都使用了我们之前声明的数据域。

      测试结果如下:

      可见参数化的方法可以一次对多个测试用例进行统一测试,相比较单测试用例的测试函数,效率高了很多。

  

  4. 安装Eclemma

    intellij IDEA并不能安装这个插件,所以需要使用Eclipse进行实验。

    EclEmma是一个开源的软件测试工具(for eclipse),可以在编码过程中查看代码调用情况、也可以检测单覆盖率。

 详见: http://eclemma.org/

    4.1 下载Eclemma

      1. 选择Help->Eclipse Marketplace->搜索EclEmma,Install;

      2. 重启eclipse发现工具栏上出现Coverage图标,说明安装成功;

    

    4.2 在Eclpise中使用Eclemma对代码的覆盖情况如下

  

      绿色表示代码被执行到了,运行结果有多种颜色,其中黄色表示代码部分执行到,红色表示代码没有被执行到。

转载于:https://www.cnblogs.com/blueContra/p/5291514.html

TJU_SCS_软件测试_Lab1相关推荐

  1. [软件测试_LAB1]安装junit和hamcrest及其使用

    一.在IDE中集成junit和hamcrest 创建工程后,导入junit和hamcrest的jar包 hamcrest-all-1.3.jar junit-4.12.jar 使用的IDE为Intel ...

  2. 2022-2028年中国软件测试行业市场研究及前瞻分析报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了软件测试行业相关概述.中国软件测试行业运行环境.分析了中国软件测试行 ...

  3. 专业软件测试,各类专业软件测试情况

    各类专业软件测试情况 首先来看一下Windows自带的软件测试系统得分情况,各项评估分数范围为1.0到7.9.HP Pavilion 23的最终得分为较低的5.3分,最低的Windows Aero得分 ...

  4. 软件测试黑盒测试实验心得_软件测试的基础知识

    1测试的含义为"以检验产品是否满足需求为目标".而软件测试活动包括了很重要的任务,即发现错误. 2什么是软件测试 广义的概念 指软件生存周期中所有的检查.评审和确认工作,其中包括了 ...

  5. java软件测试黑盒工具,软件测试中的抽象层次系列之一 – 黑盒与白盒

    前几天我在微博上发出了一个STB-010(软件测试在线公益课程系列)报名通知的帖子,这一讲的题目是"软件测试黒盒技术与应用 - 状态转换测试方法",立即引来了一些讨论. 比如朱少民 ...

  6. 开发转测试没人要_入行或转行软件测试(测试开发)要怎么学

    在2008年刚刚进入这个行业时,我对于要学什么东西,是迷茫的.记得我在08年的时候,入职的公司给我们这批新人做了培训.培训中介绍了很多概念,告诉我们质量很重要,软件测试前景很好,还教了我们很多软件测试 ...

  7. 软件测试工程师职业介绍和规划

    如存在没有任何错误的程序,那么世界也会不复存在."      因错误而存在,因修正错误而存在,这就是软件测试工程师的存在之道.虽然测试不是解决错误的根本举措,但却是必须的手段. 软件测试工程 ...

  8. coverity代码检测工具介绍_FOREPOST:一种使用反馈驱动学习软件测试的性能检测工具...

    FOREPOST:一种使用反馈驱动学习软件测试的性能检测工具 摘要 性能测试的一个目标是找出某些特定情况,在这些情况下对于某些输入值组合,应用程序意外地展示出更糟糕的特性.性能测试的一个基本问题是如何 ...

  9. 软件测试面试的linux基础知识,linux基础面试题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 linux的用户管理 useradd 用户名,添加用户 [案例]useradd xiaoming passwd 用户名,为新用户设密码 [案例]passw ...

  10. 软件测试质量过程检测文档_如何编写实际上有效的质量检查文档

    软件测试质量过程检测文档 A software product is like an airplane: it must undergo a technical check before launch ...

最新文章

  1. php trimmsg,c语言实现php的trim标签
  2. 微信“看一看“个性化推荐:排序篇
  3. 【转】mysql锁表解决方法
  4. 小程序css之字体镂空
  5. C#解决Webservice第一次访问特别慢的问题
  6. 通俗易懂!视觉slam第三部分——slam数学表示
  7. NSArray遍历和修改崩溃
  8. php_l3arning_notes_2
  9. Python爬虫--urllib
  10. R语言和医学统计学(4):秩和检验
  11. mac电脑查看CPU温度
  12. 机器学习 主成分分析(Principal Component Analysis)
  13. 【Linux】putty 出现 inactive
  14. 单片机c语言小车转圈,用51单片机编写的智能小车全程前进的C程序
  15. 杂记「5.1·站在百年变革的风口浪尖」
  16. 对冲、量化、算法交易,你真的懂吗?
  17. 北京航空航天大学研究生院计算机科学与技术哪个方向偏嵌入式,北京航空航天大学研究生2018年考研专业介绍:计算机科学与技术...
  18. 基础知识之二——STA相关的基本定义
  19. 将身份证正反面放在一个文档
  20. iOS学习的比较好的博客地址

热门文章

  1. mysql sql参数化查询_mybatis的sql参数化查询
  2. 1.1.3开启线程(Starting a Thread)
  3. 计算机视觉实战(九)信用卡数字识别项目(附完整代码)
  4. 求解偏微分方程开源有限元软件deal.II学习--Step 11
  5. eclipse 添加jar (servlet api)
  6. 给大家推荐一款非常好用的表单验证插件:lr-verify.js
  7. MyEclipse激活步骤
  8. [转]vc6如何设置Unicode字符集
  9. 雾里看花之 Python Asyncio
  10. P3089 [USACO13NOV]POGO的牛Pogo-Cow