《软件测试和质量管理》实验报告1——白盒测试
一、目的和要求(1)掌握白盒测试技术,并能应用白盒测试技术设计测试用例(2)能用Junit实施测试二、实验内容intDoWork(int x,int y,int z){1intk=0,j=0;2if(( x>3 ) && ( z<10 ))3{4k=x*y-1;5j=sqrt(k);6}7if(( x= =4 ) || ( y>5 ))8j=x*y+10;
一、目的和要求
(1)掌握白盒测试技术,并能应用白盒测试技术设计测试用例
(2)能用Junit实施测试
二、实验内容
int DoWork(int x,int y,int z){
1 int k=0,j=0;
2 if(( x>3 ) && ( z<10 ))
3 {
4 k=x*y-1;
5 j=sqrt(k);
6 }
7 if(( x= =4 ) || ( y>5 ))
8 j=x*y+10;
9 j=j%3;
10 return j;
11 }
说明:程序段中每行开头的数字(1~11)是对每条语句的编号。
(1)分别以语句覆盖、判定覆盖、条件覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
(2)编写Java类,调用该方法,并用Junit测试工具编写测试代码进行测试。
程序共有4条路径:
P1(1-2-3-4-5-6-7-8-9-10)
P2(1-2-3-4-5-6-7-9-10)
P3(1-2-7-8-9-10)
P4(1-2-7-9-10)
测试代码:
import org.junit.jupiter.api.Test;
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;
public class Exp1Test {
private Exp1 exp1;
public Exp1Test() {
exp1 = new Exp1();
}
@Test
public void statementConvergeTest() {
// 语句覆盖测试
assertThat(exp1.doWork(4, 6, 9),is(1));
}
@Test
public void decisionConvergeTest() {
// 判定覆盖测试
assertThat(exp1.doWork(5, 4, 9),is(1));
assertThat(exp1.doWork(4, 4, 11),is(2));
}
@Test
public void conditionConvergeTest() {
// 条件覆盖测试
assertThat(exp1.doWork(4, 6, 11),is(1));
assertThat(exp1.doWork(2, 4, 9),is(0));
}
@Test
public void pathConvergeTest() {
// 路径覆盖测试
assertThat(exp1.doWork(4, 6, 9),is(1));
assertThat(exp1.doWork(5, 4, 9),is(1));
assertThat(exp1.doWork(4, 4, 11),is(2));
assertThat(exp1.doWork(2, 4, 9),is(0));
}
}
三、测试用例的编写
四、测试结果的分析
所有测试结果均没有任何问题,基本达成设计要去,所有测试样例均测试通过,符合预期结果。
五、测试文档的撰写
本次实验采用白盒测试方法,分别采用语句覆盖,条件覆盖,判定覆盖,路径覆盖四种测试方式对测试内容进行不同的测试,测试工具使用了Junit包。
语句覆盖的测试样例一例,判定覆盖和条件覆盖的测试样例两例,路径覆盖的测试样例四例,构建关于实验内容的测试类,并且在测试类内建立四个测试方法,分别在各自的测试方法中完成对测试样例的测试。
六、心得与体会
通过这次实验,我学会了使用Junit框架的对程序进行白盒的单元测试,当你在做测试前,你可能会想要使用多种不同的测试数据,针对同样的操作或功能进行测试,关键就是设计好完善且合适的测试样例,既不能样例重复繁多,也不能太少不够,要保证能够实现测试路径的有效覆盖。
本次实验主要实践了语句覆盖,条件覆盖,判定覆盖,路径覆盖四种设计测试样例的方式,通过真正意义上的体会,使我更深入的理解了测试方法的好处,为以后的软件质量测试的过程奠定了基础。
更多推荐
所有评论(0)