软件测试技术.docx
- 文档编号:30070108
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:21
- 大小:101.77KB
软件测试技术.docx
《软件测试技术.docx》由会员分享,可在线阅读,更多相关《软件测试技术.docx(21页珍藏版)》请在冰豆网上搜索。
软件测试技术
软件测试技术
实
验
指
导
书
桂林工学院电计系计算机教研室
二○○七年五月
目录
时间:
机房号:
得分:
实验1JUnit用例测试
JUnit是一款由ErichGamma(《设计模式》的作者)和KentBeck(极限编程的提出者)编写的开源的回归测试
框架,供Java编码人员做单元测试之用,可以从网站上免费获得。
本文使用的是NetBeans自带的JUnit3.8.1。
二、创建项目
下面打开NetBeans,然后点击菜单“文件”->“新建项目”,打开“新建项目”对话框:
请在“类别”中选择“常规”,再从“项目”中选择“Java应用程序”,然后点击“下一步”,进入“新建Java应用程序”对话框:
在这个对话框中需要设置
项目的名称以及项目所在目录,我为自己的项目起名为JUnitTest,“项目位置”为G:
\YPJCCK\JUnit\NetBeans,此外,请将“创建主类”前的对号去掉。
项目创建好后,已经自带了JUnit3.8.1。
三、编写用于测试的JavaBean
用于测试的JavaBean很简单,名为Book,只有id和name两个属性,这两个属性将分别用于两个用例当中。
下面
开始编写该JavaBean。
请点击“文件”->“新建文件”,打开“新建文件”对话框:
确保“项目”选择的是JUnitTest,然后在“类别”中选中Java类,在“文件类型”中选中Java类,点击“下一个”,进入下一窗口:
设置类名为Book,包为net.zheng.junit.test,设置完成后点击“完成”,修改代码如下:
packagenet.zheng.junit.test;
publicclassBook{
privateStringid=null;
privateStringname=null;
publicStringgetId(){
returnid;
}
publicvoidsetId(Stringid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}
至此,用于测试的JavaBean编写完成。
四、编写测试用例
这里只用了一个类进行测试,名为BookTest,该类继承自junit.Framework.TestCase类。
BookTest类包含两个用例,分别对应该类的testId和testName方法,即每个方法实现了一个测试用例。
注意,在JUnit中,junit.framework.TestCase的子类中每个用来实现测试用例的方法都必须以testXXX的格式来命名,这些方法在运行时会被执行。
此外,BookTest还包括setUp和tearDown这两个方法,前者在每个测试方法开始之前执行,多用来做初始化;后者在每个测试方法完成之后执行,多用来清理资源。
下面开始编写BookTest。
请点击“文件”->“新建文件”,打开“新建文件”对话框:
确保“项目”选择的是JUnitTest,然后在“类别”中选中JUnit类,在“文件类型”中选中现有类的测试,点击“下一个”,进入下一窗口:
选择要测试的类,点击“完成”,修改代码如下:
packagenet.zheng.junit.test;
importjunit.framework.TestCase;
importjunit.framework.Assert;
publicclassBookTestextendsTestCase{
Bookbook=null;
//建议为测试类创建构造
publicBookTest(Stringname){
super(name);
}
protectedvoidsetUp()throwsException{
//调用超类的setUp(),以确保测试环境被初始化
super.setUp();
System.out.println("测试开始!
");
book=newBook();
System.out.println("book对象被初始化!
");
}
protectedvoidtearDown()throwsException{
System.out.println("book对象将被清理!
");
book=null;
System.out.println("测试结束!
");
//调用超类的tearDown(),以确保测试环境被清理
super.tearDown();
}
publicvoidtestId(){
book.setId("001");//设置id属性的值为001
//使用Assert查看id属性的值是否为001
Assert.assertEquals("001",book.getId());
System.out.println("id属性被测试!
");
}
publicvoidtestName(){
book.setName("ASP");//设置name属性的值为ASP
//使用Assert查看name属性的值是否为JSP,这是个必然出现错误的测试
Assert.assertEquals("JSP",book.getName());
System.out.println("name属性被测试!
");
}
}
这里setUp和tearDown方法没什么好说的,就是执行了对book对象的初始化和清理,不过testId和testName需要说明一下。
前者是在对book的id属性进行测试,首先赋值为”001”,然后使用Assert的assertEquals方法查看id属性中存放的值是否是期待的值,由于我的期待值也是”001”,所以执行后这个用例应该是成功的;后者则是对book的name属性进行测试,也是首先赋值为”ASP”,然后使用Assert的assertEquals方法查看其值是否是期待的,由于我特意将期待值设定为根本不可能的”JSP”,因此这个用例执行后会出现一个错误。
但请注意,由于我是特意要让测试出现错误,所以将期待值设定成了不可能的值,如果你是测试人员,请千万不要这么做,否则如果别的地方导致了错误,很容易给自己造成不必要的麻烦。
下面简单
介绍一下上边用到的静态类junit.framework.Assert。
该类主要包含8个方法:
1.assertEquals()方法,用来查看对象中存的值是否是期待的值,与字符串比较中使用的equals()方法类似;
2.assertFalse()和assertTrue()方法,用来查看变量是是否为false或true,如果assertFalse()查看的变量的值是false则测试成功,如果是true则失败,assertTrue()与之相反;
3.assertSame()和assertNotSame()方法,用来比较两个对象的引用是否相等和不相等,类似于通过“==”和“!
=”比较两个对象;
4.assertNull()和assertNotNull()方法,用来查看对象是否为空和不为空;
5.fail()方法,意为失败,用来抛出错误。
我个人认为有两个用途:
首先是在测试驱动开发
中,由于测试用例都是在被测试的类之前编写,而写成时又不清楚其正确与否,此时就可以使用fail方法抛出错误进行模拟;其次是抛出意外的错误,比如要测试的内容是从数据库中读取的数据
是否正确,而导致错误的原因却是数据库连接失败。
五、运行BookTest
编写好BookTest后,就可以运行了。
请在“项目”栏中选中BookTest,点击鼠标右键,选择“运行文件”,测试信息会从“输出”窗口输出:
六、测试套件
当有多个测试类需要一次性进行测试时,可以使用测试套件来完成这项工作。
在NetBeans中,点击“文件”->“新建文件”,打开“新建文件”对话框:
确保“项目”选择的是JUnitTest,然后在“类别”中选中JUnit类,在“文件类型”中选中测试套件,点击“下一个”,进入下一窗口:
修改“类名”为AllTests,点击“完成”,然后修改代码如下:
packagenet.zheng.junit.test;
importjunit.framework.*;
publicclassAllTestsextendsTestCase{
publicAllTests(StringtestName){
super(testName);
}
publicstaticTestsuite(){
TestSuitets=newTestSuite("AllTests");
ts.addTestSuite(BookTest.class);
returnts;
}
}
其中TestSuite是用来组织测试类的,通过其addTestSuite()方法将测试类添加到ts对象中,凡是添加到ts中的测试类都将在运行文件时被执行。
此外,您也可以在定义ts对象时利用其构造函数将测试类添加给ts对象,例如:
TestSuitets=newTestSuite(BookTest.class);
这并不会影响到后续使用addTestSuite()方法。
测试套件的运行方法与之前一样。
此外,JUnit自身也提供了运行测试的环境,但需要在NetBeans中做一些改动,所以就不作详细介绍了,这里只将代码给出:
packagenet.zheng.junit.test;
importjunit.framework.*;
publicclassTest{
publicstaticvoidmain(String[]args){
//使用TestSuite组装测试类
TestSuitets=newTestSuite();
ts.addTestSuite(TestBook.class);
//textui,命令行方式
junit.textui.TestRunner.run(ts);
//Swingui,Swing方式
//junit.swingui.TestRunner.run(ts.getClass());
//awtui,AWT方式
//junit.awtui.TestRunner.run(ts.getClass());
}
}
时间:
机房号:
得分:
实验2黑盒测试实验
边界值和因果图
1.实验目的:
(1)掌握边界值分析方法设计测试用例;
(2)能够分析问题,画出因果图,得出判定表,从而用因果图法设计测试用例。
2.实验环境
无特殊要求。
3.实验内容:
自动售货机问题:
分析这一段说明,列出原因和结果
画出因果图。
所有原因结点列在左边,所有结果结点列在右边。
建立中间结点,表示处理的中间状态。
中间结点:
11.投入1元硬币且押下饮料按钮
?
12.押下〖橙汁〗或〖啤酒〗的按钮
?
13.应当找5角零钱并且售货机有零钱找
?
14.钱已付清
转换成判定表
在判定表中,把不可能出现的情况删去。
最后根据判定表中剩下的列作为确定测试用例的依据,设计测试用例。
4.实验总结
(1)边界值分析法的设计原则。
(2)因果图法的设计步骤。
5.实验思考题
等价类划分法和边界值分析法的联系和区别。
6.本次实验易犯错误:
在画因果图时,中间结点怎样产生?
时间:
机房号:
得分:
实验3黑盒测试实验
等价类划分
在软件测试中,黑盒测试中的等价类划分法非常重要。
对于软件测试工程师而言,这是一项基本测试技能,掌握它是十分必要的。
1.实验目的
(1)掌握等价类划分方法的步骤;
(2)扩宽测试思维;
2.实验环境
无特殊要求。
3.实验内容及步骤
(1)三角形问题中,首先分析输入和输出;
(2)针对输入进行等价类划分;
(3)从等价类划分的表格中设计测试用例;
(4)NextDate问题
4.实验过程
1.三角形问题
分析三角形问题中给出和隐含的对输入条件的要求:
1)整数
2)三个数
3)非零数
4)正数
5)两边之和大于第三边
6)等腰
7)等边
如果a、b、c满足条件
(1)~(4),则输出下列四种情况之一:
如果不满足条件(5),则程序输出为“非三角形”。
如果三条边相等即满足条件(7),则程序输出为“等边三角形”。
如果只有两条边相等、即满足条件(6),则程序输出为“等腰三角形”。
如果三条边都不相等,则程序输出为“一般三角形”。
划分等价类并编号,如下表所示:
输
入
条
件
输入3个整数
有效等价类
无效等价类
1.整数
2.a为非整数
3.b为非整数
4.c为非整数
5.a和b为非整数
6.b和c为非整数
7.a和c为非整数
8.a、b、c为非整数
9.三个数
10.只输入a
11.只输入b
12.只输入c
13.只输入a、b
14.只输入b、c
15.只输入a、c
16.输入三个以上
17.非零数
18.a为0
19.b为0
20.c为0
21.a和b为0
22.b和c为0
23.a和c为0
24.a、b、c为0
25.正数
26.a<0
27.b<0
28.c<0
29.a<0且b<0
30.a<0且c<0
31.b<0且c<0
32.a<0且b<0且c<0
输
出
条
件
33.一般三角形
34.a+b>c
35.b+c>a
36.a+c>b
37.a+b=c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 技术