这次的博客主要介绍一下软件测试第一次上机实验的内容
这次上机我们主要进行Java的一些常用的测试工具的安装与使用,在这里稍微介绍一下这次使用的几种工具
junit:JUnit是一个Java语言的单元测试框架。
assertEquals(3,add(1,2));
就是断言add(1,2)的运算结果为3。
Hamcrest:Hamcrest 是一个测试的框架,它提供了一套通用的匹配符 Matcher,灵活使用这些匹配符定义的规则,程序员可以更加精确的表达自己的测试思想,指定所想设定的测试条件。
Junit的功能虽然强大,但是当我们进行一些范围测试的时候如判断一个函数的运算结果在20和40之间,如果用枚举的方法测试就显得过于繁琐
但是我们如果使用Hamcrest可以这样做
assertTrue((40>30) && (40<50))
断言40>30且40<50
eclemma:EclEmma是一个开源的软件测试工具,可以在编码过程中查看代码调用情况、也可以检测单覆盖率。我们通过安装EclEmma可以明显的看出那些代码得到了运行那些没有得到运行,以及各个判断语句的执行结果。
然后简单说一下这次的上机内容以及过程
首先是用Eclipse安装上述的三个测试工具,然后写一个判断三角形是等边、等腰或者两者都不是的函数并使用junit测试运行结果
我使用的是myEclipse
对于JUnit和Hamcrest,我们在创建好的工程中在build path中加入这两个jar包即可
具体方法如下:
在项目的JRE system library上右键选择build path->configure build path
选择add external jars
选择两个jar包即可,前两个工具的添加就完成了
对于第三个工具安装
选择help->install from site
输入网址:http://update.eclemma.org/
点击add,name可以随便填写,选中eclemma,使用默认选项,一直next直到finish即可,然后重启myEclipse就可以使用这个工具了
具体的函数的实现非常简单,我连同测试部分的代码一同贴在这里
package cn.tju.st; public class Triangle { public int a; public int b; public int c; public Triangle(int x,int y,int z) { a=x; b=y; c=z; } public String judge() { if(a==b&&b==c) return "equilateral"; else if(a==b||b==c||c==a) return "isosceles"; else { return "scalene"; } } }
package cn.tju.st; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; public class TestTriangle { @Before public void setUp() throws Exception { System.out.println("This is before test"); } @After public void tearDown() throws Exception { System.out.println("This is after test"); } @Test public void test() { Triangle tri = new Triangle(3,3,3); assertEquals("equilateral",tri.judge()); tri = new Triangle(2,3,3); assertEquals("isosceles",tri.judge()); tri = new Triangle(3,3,1); assertEquals("isosceles",tri.judge()); tri = new Triangle(3,5,3); assertEquals("isosceles",tri.judge()); tri = new Triangle(3,4,5); assertEquals("scalene",tri.judge()); tri = new Triangle(5,6,7); assertEquals("scalene",tri.judge()); } }
在测试部分我主要使用是before、test、after三个标签,
before标签下一般用于在测试开始之前进行初始化
test标签下是测试的内容
after标签下的内容一般是进行资源的释放或者进行补充测试
我们上述三个标签后,在选择Run as的方式的时候会多出一个选项
选择junit test就可以进行测试了
下面放一下测试成功和测试失败的截图
我们可以通过junit的窗口看到测试是否成功,测试失败的话,测试失败的行数,预期运行结果和实际运行结果,同时在控制台我们看可以看到before和after部分的输出
到此,这次上机的内容基本就完成了,另外补充一下EclEmma的用法
我们会发现在run下多出了coverage last launched就是说对上次的运行结果进行覆盖测试
绿色部分的代表运行的语句,红色的代表未运行的语句,黄色的强调的是判断语句
后续我还会增加一些junit和Hamcrest使用的补充