Junit单元测试Word文档格式.docx
《Junit单元测试Word文档格式.docx》由会员分享,可在线阅读,更多相关《Junit单元测试Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
1.掌握白盒测试方法,并按单元测试的要求设计测试用例。
2.能熟练应用junit测试工具进行单元测试。
3.进行代码覆盖检查。
二实验环境
主流PC机一套,windows操作系统eclipse开发平台。
三实验内容
1、用java语言编写一个求一元二次方程根的函数
2、设计白盒测试用例,达到分支覆盖
3、使用弱健壮等价类分析方法设计测试用例。
4、根据以上设计的测试用例,编写junit测试代码,并进行测试。
5、利用EclEmma完成测试代码覆盖分析,并生成html格式代码覆盖测试报告。
四实验步骤
(1)根据白盒法设计测试用例,并撰写单元测试计划书。
(2)根据每个测试用例,编写基本Junit的单元测试脚本。
(3)生成html格式的代码覆盖测试报告。
五测试用例
采用条件覆盖法设计用例,使判断中的每个条件的可能取值至少满足一次。
分为四种情况:
(1)一元二次方程有两个实根(简单起见,将方程有两个相同实根,归类为方程有两个实根)
测试用例ID
Equation
测试用例名称
方程有两个实根
14
测试目的
测试一元二次方程有两个实根情况的正确性
前置条件
a!
=0&
&
b*b-4*a*c>
操作步骤与输入
a=1.0f,b=2.0f.,c=1.0f
预期结果
x1=-1.0f,x2=-1.0f
实际结果
执行人
4.10
(2)一元二次方程有两个虚根的情况
方程有两虚根
b*b-4*a*c<
a=1.0f,b=2.0f,c=2.0f
x1=-1.0f,x2=1.0f
(3)方程为一元一次方程的情况
方程有一根
测试方程为一元一次方程根情况的正确性
a=0.0f
a=0.0f,b=2.0f,c=4.0f
x1=-2.0,x2=-2.0
(4)不为方程的情况
不为方程
不是方程情况的正确性
a=0.0f,b=0.0f
a=0.0f,b=0.0f,c=3.0f
x1=x2=1.0f
六测试计划
(1)编写一元二次方程源代码,并通过JunitTestCase生成测试代码,并编写测试用例代码。
(2)通过不同的测试用例,分别对源代码进行结构化测试。
(3)生成测试代码覆盖率,并对数据进行分析。
七测试计划
packagecn.edu.xaut.junit;
importcn.edu.xaut.exception.*;
publicclassEquation{
privatestaticfloatx1;
privatestaticfloatx2;
privatestaticfloatx;
privatestaticfloatreal;
privatestaticfloatimag;
privatestaticfloat[]results;
privatestaticfloata;
privatestaticfloatb;
privatestaticfloatc;
privatestaticfloatdelt;
publicstaticfloat[]calc(floatw,floatp,floatq)throwsException{
results=newfloat[2];
a=w;
b=p;
c=q;
if(0.0f==a){ //bx+c=0;
x=-c/b;
if(0.0f!
=b){
x=-c/b;
1.功能实现类(采用工具类的方式)
results[0]=x;
print();
returnresults;
}
else{
thrownewMyArithmeticException("
除数不能为0"
);
}else{
delt=b*b-4*a*c;
if(delt>
=0){
x1=(float)((-b+Math.sqrt(delt))/(2*a));
x2=(float)((-b-Math.sqrt(delt))/(2*a));
results[0]=x1;
results[1]=x2;
real=-b/(2*a);
imag=(float)(Math.sqrt(-delt)/(2*a));
results[0]=real;
results[1]=imag;
publicstaticvoidprint(){
if(0.0f==a){
System.out.println("
该方程是一元一次方程,其根为:
x="
+results[0]);
System.err.println("
不是一个方程!
"
该方程是一元二次方程,两根分别为:
x1="
+results[0]+"
x2="
+results[1]);
该一元二次方程的根为复数,两根分别
为:
x1="
+"
+results[1]+"
i"
-"
2.自定义异常类
packagecn.edu.xaut.exception;
publicclassMyArithmeticExceptionextendsException{
publicMyArithmeticException(){
publicMyArithmeticException(Stringmessage){
super(message);
publicMyArithmeticException(Throwablecause){
super(cause);
publicMyArithmeticException(Stringmessage,Throwablecause){
super(message,cause);
packagetest;
importorg.junit.Assert;
importorg.junit.Test;
importcn.edu.xaut.junit.Equation;
publicclassEquationTest{@Test
publicvoidtestCalc(){floata=1.0f;
floatb=2.0f;
floatc=1.0f;
float[]expecteds={-1.0f,-1.0f};
//float[]expecteds={-0.5f,0.5f};
//floatexpecteds=-0.5f;
float[]results;
try{
results=Equation.calc(a,b,c);
Assert.assertArrayEquals(expecteds,results,0.0f);
//Assert.assertEquals(expecteds,results[0],0.0f);
}catch(Exceptione){e.printStackTrace();
3.Junit单元测试类
八覆盖率测试报告
1.测试一元二次方程有两个实根的情况
[allclasses]
EMMACoverageReport(generatedMonApr0920:
03:
36CST2012)
OVERALLCOVERAGESUMMARY
name
class,%
method,%
block,%
line,%
allclasses
67%
(2/3)
44%
(4/9)
50%
(124/249)
46%
(23/50)
OVERALLSTATSSUMMARY
totalpackages:
3
totalexecutablefiles:
totalclasses:
totalmethods:
9
totalexecutablelines:
50
COVERAGEBREAKDOWNBYPACKAGE
cn.edu.xaut.exception
0%
(0/1)
(0/4)
(0/16)
(0/8)
cn.edu.xaut.junit
100%
(1/1)
47%
(93/199)
(15/32)
test
(2/2)
91%
(31/34)
80%
(8/10)
EMMA2.0.5312EclEmmaFix2(C)VladimirRoubtsov
覆盖代码:
Equation.java
if(0.0f==a){ //bx+c=0;
delt=b*b-4*a*c;
if(delt>
results[1]=x2;
print();
returnresults;
if(delt>
System.out.println("
该方程是一元二次方程,两根分别为:
2.测试二元一次方程有两个虚根的情况
52%
(129/249)
49%
(98/199)
a=w;
real=-b/(2*a);
imag=(float)(Math.sqrt(-delt)/(2*a));
results[0]=real;
results[1]=imag;
print();
if(0.0f==a){
该一元二次方程的根为复数,两根分别
代码覆盖情况:
3.测试一元一次方程有一个根的情况
31%
(76/244)
40%
(20/50)
25%
(50/199)
38%
(12/32)
90%
(26/29)
if(0.0f!
x=-c/b;
results[0]=x;
if(0.0f==a){
4测试不为方程的情况
抛出自定义异常:
EMMACoverageReport(generatedMonApr0920:
36CST2012)
(3/3)
14%
(33/234)
23%
(11/48)
48
33%
(1/3)
11%
(22/199)
16%
(5/32)
(1/4)
(4/16)
(2/8)
37%
(7/19)
(4/8)
thrownewMyArithmeticException("
除数不能为0"
super(message);
}
MyArithmeticException.java
publicclassEquationTest{
}catch(Exceptione){
e.printStackTrace();
EquationTest.java
九实验总结
通过本次实验,对Junit单元测试框架有了一定的理解。
同时,熟悉了开源框架的使用,通过查找API
函数,比如Assert.assertArrayEquals、Assert.assertEquals可以进行断言测试等等。
总之,通过本次实验,使我对软件测试有了一个初步的认识,开启了今后学习软件测试之门。