软件测试技术实验指导书_第1页
软件测试技术实验指导书_第2页
软件测试技术实验指导书_第3页
软件测试技术实验指导书_第4页
软件测试技术实验指导书_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件测试技术实验指导书吴鸿韬 河北工业大学计算机科学与软件学院2016年9月目 录第一章 实验要求1第二章 白盒测试实践3第三章 黑盒测试实践6第四章 自动化单元测试实践7第五章 自动化功能测试实践35第六章 自动化性能测试实践56附录1实验报告封皮参考模版71附录2小组实验报告封皮参考模版72附录3软件测试计划参考模版73附录4 测试用例参考模版77附录5单元测试检查表参考模版81附录6测试报告参考模版82附录7软件测试分析报告参考模版87第一章 实验要求一、实验意义和目的软件测试是软件工程专业的一门重要的专业课,本课程教学目的是通过实际的测试实验,使学生系统地理解软件测试的基本概念和基本理

2、论,掌握软件测试和软件测试过程的基本方法和基本工具,熟练掌握软件测试的流程、会设计测试用例、书写测试报告,为学生将来从事实际软件测试工作和进一步深入研究打下坚实的理论基础和实践基础。本实验指导书共设计了2个设计型、3个验证型实验和一个综合型实验,如表1所示。设计型实验包括白盒测试实践和黑盒测试实践,验证型实验包括自动化单元测试实践、自动化功能测试和自动化性能测试实践,主要目标是注重培养学生软件测试的实际动手能力,增强软件工程项目的质量管理意识。通过实践教学,使学生掌握软件测试的方法和技术,并能运用测试工具软件进行自动化测试。综合型实验以软件设计与编程实践课程相关实验题目为原型、在开发过程中进行

3、测试设计与分析,实现软件开发过程中的测试管理,完成应用软件的测试工作,提高软件测试技能,进一步培养综合分析问题和解决问题的能力。表1 实验内容安排实验内容学时实验性质实验要求实验一 白盒测试实践4设计必做实验二 黑盒测试实践4设计必做实验三 自动化单元测试实践4验证必做实验四 自动化功能测试实践4验证必做实验五 自动化性能测试实践4验证必做实验六、综合测试实践课外综合选做二、实验环境NUnit、JUnit、LoadRunner、Quick Test Professional、VC6.0、Visual Studio 2010、SQL数据库。三、实验过程要求每次实验前详细阅读实验指导书,熟悉实验目

4、的和实验内容,制订测试计划,设计测试用例。实验后整理并提交测试报告,项目结束后要提交测试总结。实验过程中,实验者必须服从指导教师和实验室工作人员的安排,遵守纪律与实验制度,爱护设备及卫生。在指定的实验时间内,必须到实验室内做实验。四、实验成绩评价实验课程的总成绩由实验考勤和实验报告成绩组成,主要是三个方面:(1)上机实验考勤:每次上机应主动在指导老师处签到,冒签等不诚信行为一旦被发现,取消本次实验成绩。如果学生需要请假,必须提前出具正式假条。(2)实验过程考核:每次实验课,指导教师根据实验过程情况,随机抽查,进行当次实验的答辩。(3)实验报告提交:应根据指导教师要求按时提交每次实验的电子版实验

5、报告。实验报告中包含软件测试流程中所需要提交的所有相关文档,附件中给出的相关文档模版的内容和格式仅供参考。如果发现学生抄袭、伪造实验数据,或实验报告和设计报告抄袭、雷同,则涉及的所有学生的该课程实验成绩记为0分。各部分所占比例如表2所示。表2 实验成绩分配表实验内容分值实验考勤10%实验过程10%实验一 白盒测试实践实验报告10%实验二 黑盒测试实践实验报告10%实验三 自动化单元测试实践实验报告20%实验四 自动化功能测试实践实验报告20%实验五 自动化性能测试实践实验报告20%第二章 白盒测试实践一、实验目的1、构建编码规范,依据编码规范进行编码; 2、利用代码审查方法进行单元测试实践;3

6、、掌握白盒测试方法,运用白盒测试方法设计测试用例,进行测试实践;二、实验内容本实验要求采用任一所熟悉的开发语言,依据所构建的编码规则,设计并实现任一给定题目或自选题目(注意:最后给出的是基于对话框的程序),进而利用白盒测试技术设计测试用例,结合代码审查方法,进行单元测试。参考题目1、三角形问题接受三个整数a、b和c作为输入,用做三角形的边。程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形。(说明:三边边长小于200)2、电话号码问题某城市电话号码由三部分组成。它们的名称和内容分别是: 地区码:空白或三位数字; 前 缀:非'0'或'1'

7、的三位数字; 后 缀:4位数字。假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。3、保险公司计算保费费率的程序某保险公司的人寿保险的保费计算方式为: 投保额×保险费率其中,保险费率依点数不同而有别,10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;而点数又是由 投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如表2-1所示。表2-1年龄 性别婚姻抚养人数 20-39 40-59 其它 M F 已婚 未婚 1人扣0.5点 最多扣3点(四舍五入取整) 6点 4点 2点 5点 3点 3点5点4、某公司薪水计算程序某软件的一个模块的需求规格

8、说明书中描述,如图2-1所示:(1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。(2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。5、公交一卡通自动充值软件,如图2-2所示图2-1图2-26、两位整数加法计算器图2-37、电子商务网站用户注册功能(推荐)参考任意电子商务网站(如京东,当当等)的用户注册功能,以B/S或C/S架构实现该功能,并应用白盒测试相关理论对其进行测试。三、实验要求1、独立完成;2、提交编码规范,根据编码规范进行程序设计和测试;3、提交源代码,源代码中应包含必要的注释;4、提交测试用例说明书及缺陷报告l  &

9、#160;    第三章 黑盒测试实践一、实验目的1、 掌握并运用黑盒测试用例设计方法进行测试用例设计,进行测试实践。二、实验内容掌握黑盒测试的基本理论,能够利用白盒测试理论设计测试用例,并在所开发的软件中进行测试。白盒测试技术要求掌握语句覆盖、分支覆盖、路径覆盖等白盒测试用例设计方法。针对实验二所设计并实现的程序,利用多种黑盒测试技术设计测试用例,进行单元测试。本实验要求采用任一所熟悉的开发语言,依据所构建的编码规则,设计并实现任一给定题目或自选题目(注意:最后给出的是基于对话框的程序),进而利用黑盒测试技术设计测试用例,结合代码审查方法,进行单元测试

10、。参考题目1、三角形问题接受三个整数a、b和c作为输入,用做三角形的边。程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形。(说明:三边边长小于200)2、电话号码问题某城市电话号码由三部分组成。它们的名称和内容分别是: 地区码:空白或三位数字; 前 缀:非'0'或'1'的三位数字; 后 缀:4位数字。假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。3、保险公司计算保费费率的程序某保险公司的人寿保险的保费计算方式为: 投保额×保险费率其中,保险费率依点数不同而有别,10点及10点以上保险费率为0.6

11、%,10点以下保险费率为0.1%;而点数又是由 投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如表2-1所示。4、某公司薪水计算程序某软件的一个模块的需求规格说明书中描述,如图2-1所示:(1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。(2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。5、公交一卡通自动充值软件,如图2-2所示6、两位整数加法计算器,如图2-3所示。7、电子商务网站用户注册功能(推荐)参考任意电子商务网站(如京东,当当等)的用户注册功能,以B/S或C/S架构实现该功能,并应用黑盒测试相关理论对其进行测试。三、实验要求1、独

12、立完成;2、提交测试用例说明书及缺陷报告第四章 自动化单元测试实践一、实验目的1、熟悉NUnit/JUnit/VS2010等自动化测试工具,能熟练应用自动化单元测试工具进行单元测试二、实验内容自动化测试是对手工测试的有益补充,可以通过自动化测试工具提高测试效率,改善软件产品质量。NUnit是为.Net开发环境准备的自动化单元测试框架,JUnit是针对Java语言设计的自动化单元测试工具,它们的作用就是帮助测试人员方便的完成单元测试工作。Visual Studio 2010集成开发环境通过集成Visual Studio Ultimate 2010和VS Test Professional 201

13、0等工具对软件测试提供了强有力的支持,可以创建和管理单元测试,UI测试,web测试,负载测试等。针对实验二所设计并实现的程序,本项目要求根据所设计测试用例,利用NUnit/JUnit/VS2010等自动化测试工具进行自动化单元测试,并给出代码覆盖情况。三、实验要求1、独立完成;2、提交测试脚本3、提交测试代码及缺陷报告。四、NUnit 概述1、Nunit主界面 NUnit是一个单元测试框架,专门针对于.NET来写的.图4-1  NUnit运行的效果图4-2   NUnit运行的另外一个效果 从中我们可以非常容易发现,右边是个状态条,图4-1是红色的,图4

14、-2是绿色的.为什么会这样呢?因为如果所有测试案例运行成功,就为绿色,反之如果有一个不成功,则为红色,但也有黄色的.左面的工作域内则是我们写的每一个单元测试.在右边面板的中间,可以看到测试进度条。进度条的颜色反映了测试执行的状态:· 绿色 描述目前所执行的测试都通过 · 黄色 意味某些测试忽略,但是这里没有失败 · 红色 表示有失败 底部的状态条表示下面的状态: · 状态.说明了现在运行测试的状态。当所有测试完成时,状态变为Completed.运行测试中,状态是Running: <test-name> (<test-name>是正

15、在运行的测试名称)。 · Test Cases说明加载的程序集中测试案例的总个数。这也是测试树里叶子节点的个数。 · Tests Run 已经完成的测试个数。 · Failures  到目前为止,所有测试中失败的个数. · Time  显示运行测试时间(以秒计) File主菜单有以下内容: · New Project允许你创建一个新工程。工程是一个测试程序集的集合。这种机制让你组织多个测试程序集,并把他们作为一个组对待。 · Open 加载一个新的测试程序集,或一个以前保存的NUnit工程文件。 · Cl

16、ose关闭现在加载的测试程序集或现在加载的NUnit工程。 · Save 保存现在的Nunit工程到一个文件。如果正工作单个程序集,本菜单项允许你创建一个新的NUnit工程,并把它保存在文件里。 · Save As允许你将现有NUnit工程作为一个文件保存。 · Reload 强制重载现有测试程序集或NUnit工程。NUnit-Gui自动监测现加载的测试程序集的变化。 2、一些常用属性在NUnit里,有以下几种属性:· Test Fixture · Test TestFixtureAttribute   

17、 本属性标记一个类包含测试,当然setup和teardown方法可有可无.(关于setup 和teardown方法在后面介绍) 做为一个测试的类,这个类还有一些限制 · 必须是Public,否则NUnit看不到它的存在. · 它必须有一个缺省的构造函数,否则是NUnit不会构造它. · 构造函数应该没有任何副作用,因为NUnit在运行时经常会构造这个类多次,如果要是构造函数要什么副作用的话,那不是乱了. TestAttribute Test属性用来标记一个类(已经标记为TestFixture)的某个方法是可以测试的.这个测试方法可以定义为: &

18、#160;      public void MethodName()从上面可以看出,这个方法没有任何参数,其实测试方法必须没有参数.如果我们定义方法不对的话,这个方法不会出现在测试方法列表中.也就是说在NUnit的界面左边的工作域内,看不到这个方法.还有一点就是这个方法不返回任何参数,并且必须为Public. 例如:  1using System; 2using NUnit.Framework; 3 4namespace MyTest.Tests

19、0;5 6  TestFixture 7  public class SuccessTests 8   9    Test public void Test1()10     /*  */ 11  121314在NUnit中,用Assert(断言)进行比较,Assert是一个类,它包括以下方法:AreEqua

20、l,AreSame,Equals, Fail,Ignore,IsFalse,IsNotNull,具体请参看NUnit的文档。3、如何在.NET中应用NUnit 第1步.增加一个NUnit框架引用 在Microsoft Visual Studio .NET里创建这个例子时,你需要增加一个NUnit.framework.dll引用,如下: 在Solution Explorer右击引用,然后选择增加引用NUnit.framework组件,在Add Reference对话框中按Select和OK按钮。第2步.为工程加一个类. 为工程加一个Cmp类,作为被测代码。这里是这个例子的代码。  us

21、ing System;public class Cmp public static int Largest(int list) int index, max=Int32.MaxValue; if (list.Length = 0) throw new ArgumentException("Empty list"); for (index = 0; index < list.Length-1; index+) if (listindex > max) max = listindex; return max; 第3步.建立测试代码 using NUnit.Frame

22、work;oTestFixtureopublic class TestLargest oo Testpublic void LargestOf3() Assert.AreEqual(9, Cmp.Largest(new int 8,9,7); Test ExpectedException(typeof(ArgumentException) public void Empty() Cmp.Largest(new int ); o 第4步.编译运行测试. 现在生成solution。成功编译后,开始应用程序。NUnit-Gui,测试程序集的结构如图4-3所示: 图 4-3 测试程序集的测试

23、在 NUnit-Gui中的视图按Run按钮。树的节点变为绿色,而且测试运行器窗口上的进度条变绿,绿色代表成功通过。 ExpectedException 这里是一个验证这个假设的测试.有的时候,我们知道某些操作会有异常出现,例如, 在实例中增加除法,某个操作被0除,抛出的异常和.NET文档描述的一样.参看以下源代码. 1 Test2 ExpectedException(typeof(DivideByZeroException)3public void DivideByZero()45   int zero =

24、0;0;6   int infinity = a/zero;7   Assert.Fail("Should have gotten an exception");8除了Test属性之外, DivideByZero方法有另外一个客户属性: ExpectedException. 在这个属性里,你可以在执行过程中捕获你期望的异常类型,例如在本例就是DivideByZeroException.如果这个方法在没有抛出期望异常的 情况下完成了,这个测试失败.

25、使用这个属性帮助我们写程序员测试验证边界条件(Boundary Conditions). Ignore 属性  由于种种原因,有一些测试我们不想运行.当然,这些原因可能包括你认为这个测试还没有完成,这个测试正在重构之中,这个测试的需求不是太明确.但你有不想破坏测试,不然进度条可是红色的哟.怎么办?使用Ignore属性.你可以保持测试,但又不运行它们.namespace ClassLibrary1 using NUnit.Framework; TestFixture public class TestLargest Test public void LargestOf3_1() Ass

26、ert.AreEqual(9, CMP.Largest(new int 8, 9, 7 ); Test public void LargestOf3_2() Assert.AreEqual(9, CMP.Largest(new int 8, 7, 9 ); Test Ignore ExpectedException(typeof(ArgumentException) public void Empty() CMP.Largest(new int ); Ignore属性可以附加到一个独立的测试方法,也可以附加到整个测试类(TestFixture).如果Ignore属性附加到TestFixture

27、,所有在fixture的测试都被忽略. Category属性 对于测试来说,你有的时候需要将之分类,此属性正好就是用来解决这个问题的。 你可以选择你需要运行的测试类目录,也可以选择除了这些目录之外的测试都可以运行。在命令行环境里 /include 和/exclude来实现。在GUI环境下,就更简单了,选择左边工作域里的Catagories Tab,选择Add和Remove既可以了。 图 4-4 在一个程序员测试中使用 Ignore属性    namespace ClassLibrary1 using NUnit.Framework; TestFixtur

28、e public class TestLargest Test Category("class2") public void LargestOf3_1() Assert.AreEqual(9, CMP.Largest(new int 8, 9, 7 ); Test Category("class2") public void LargestOf3_2() Assert.AreEqual(9, CMP.Largest(new int 8, 7, 9 ); Test Category("class1") ExpectedException

29、(typeof(ArgumentException) public void Empty() CMP.Largest(new int ); NUnit-GUI界面图4-5使用Catagories属性的界面四、VS2010单元测试1、创建被测代码public class Cmp public static int Largest(int list) if (list.Length = 0) throw new ArgumentException("Empty list"); int index, max = Int32.MinValue; for (index = 0; in

30、dex < list.Length ; index+) if (listindex > max) max = listindex; return max; 2、创建单元测试图4-6 TestMethod public void TestMethod1() int list = 7, 8, 9 ; int expected = 9; int actual; actual = Cmp.Largest(list); Assert.AreEqual(expected, actual); TestMethod ExpectedException(typeof(ArgumentExceptio

31、n) public void Empty() Cmp.Largest(new int ); 2、 运行测试通过“调试”菜单-“开始执行”测试代码,测试结果显示如图所示图4-73、 查看代码覆盖率运行测试并查看代码覆盖率(1)在“解决方案资源管理器”的“解决方案项”下,双击运行配置文件 Local.testsettings。随即出现 “测试设置”对话框。 (2)单击 “数据和诊断”,选中“代码覆盖率”。 图4-8(3)双击“代码覆盖率”,选中被测程序,保存配置文件修改并退出图4-9(4)运行测试(5)“测试”菜单“窗口”,选择“代码覆盖率”,随即打开 “代码覆盖率结果”窗口。 “代码覆盖率结果”

32、窗口中的 “层次结构”列将显示一个节点,该节点包含最新测试运行中得到的所有代码覆盖率数据。展开此节点,得到如图所示代码覆盖率结果图。此表中的列显示了各个方法、类和整个命名空间的覆盖率统计数据。图4-10(6)双击选中的方法,将打开 Class1.cs 源代码文件并定位到 该 方法所在的位置。在此文件中,可以看到代码突出显示效果。用浅蓝色突出显示的代码行已在测试运行中执行过,用浅褐色突出显示的代码行已部分执行过,而用红褐色突出显示的代码行则还没有执行过。可以通过滚动查看此文件中其他方法的覆盖率。图4-11五、Junit框架的使用1、Junit使用方法示例11)把Junit引入当前项目库中新建一个

33、 Java 工程coolJUnit,打开项目coolJUnit 的属性页 -> 选择“Java Build Path”子选项 -> 点选“Add Library”按钮 -> 在弹出的“Add Library”对话框中选择 JUnit(图3-15),并在下一页中选择版本 Junit 4 后点击“Finish”按钮。这样便把 JUnit 引入到当前项目库中了。图4-12 为项目添加 JUnit 库2)新建单元测试代码目录单元测试代码是不会出现在最终软件产品中的,所以最好为单元测试代码与被测试代码创建单独的目录,并保证测试代码和被测试代码使用相同的包名。这样既保证了代码的分离,同时

34、还保证了查找的方便。遵照这条原则,在项目 coolJUnit 根目录下添加一个新目录 testsrc,并把它加入到项目源代码目录中。(见 图4-13、4-14)。图4-13 新建测试代码目录图4-14 添加测试代码目录3)在工程中添加类添加类SampleCaculator,类中有两个方法,分别计算加减法。编译代码。package .gzhu;public class SampleCalculator /计算两整数之和public int add(int augend, int addend)return augend + addend;/计算两整数之差public int subt

35、ration(int minuend, int subtrahend)return minuend - subtrahend;4)写单元测试代码为类SampleCalculator添加测试用例。在资源管理器SampleCalculator.java文件处右击选new>选Junit Test Case(见图4-15),Source foler选择testsrc目录,点击next,选择要测试的方法,这里把add和subtration方法都选上,最后点finish完成。图4-15 新建测试用例Junit自动生成测试类SampleCalculatorTest,修改其中的代码。其中assertEq

36、uals断言,用来测试预期目标和实际结果是否相等。assertEquals( Sting message, expected, actual ) expected是期望值(通常都是硬编码的),actual是被测试代码实际产生的值,message是一个可选的消息,如果提供的话,将会在发生错误时报告这个消息。 如想用断言来比较浮点数(在Java中是类型为float或者double的数),则需指定一个额外的误差参数。 assertEquals(Sting message, expected, actual, tolerance)其它断言参见课本和参考书介绍。测试方法需要按照一定的规范书写:1. 测试

37、方法必须使用注解 org.junit.Test 修饰。2. 测试方法必须使用 public void 修饰,而且不能带有任何参数。package .gzhu;import static org.junit.Assert.*;import org.junit.Test;public class SampleCalculatorTest SampleCalculator calculator = new SampleCalculator();Testpublic void testAdd() int result = calculator.add(50, 20);assertEqual

38、s(70,result);Testpublic void testSubtration() int result = calculator.subtration(50, 20);assertEquals(30,result);5)查看运行结果在测试类上点击右键,在弹出菜单中选择 Run As JUnit Test。运行结果如下图,绿色的进度条提示我们,测试运行通过了。图4-16 示例1运行结果2、Junit使用方法示例21)在工程中添加类类WordDealUtil中的方法wordFormat4DB( )实现的功能见文件注释。package .gzhu;package .

39、gzhu;import java.util.regex.Matcher;import java.util.regex.Pattern;public class WordDealUtil /* * 将Java对象名称(每个单词的头字母大写)按照 * 数据库命名的习惯进行格式化 * 格式化后的数据为小写字母,并且使用下划线分割命名单词 *例如:employeeInfo 经过格式化之后变为 employee_info * param name Java对象名称 */public static String wordFormat4DB(String name)Pattern p = Ppile(&qu

40、ot;A-Z");Matcher m = p.matcher(name);StringBuffer strBuffer = new StringBuffer();while(m.find()/将当前匹配子串替换为指定字符串,/并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个StringBuffer对象里m.appendReplacement(strBuffer, "_"+m.group();/将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里return m.appendTail(strBuffer).toString().

41、toLowerCase();2)写单元测试代码package .gzhu;import static org.junit.Assert.*;import org.junit.Test;public class WordDealUtilTest Testpublic void testWordFormat4DB() String target = "employeeInfo"String result = WordDealUtil.wordFormat4DB(target);assertEquals("employee_info", resul

42、t);3)进一步完善测试用例单元测试的范围要全面,如对边界值、正常值、错误值的测试。运用所学的测试用例的设计方法,如:等价类划分法、边界值分析法,对测试用例进行进一步完善。继续补充一些对特殊情况的测试:/测试 null 时的处理情况Test public void wordFormat4DBNull()String target = null;String result = WordDealUtil.wordFormat4DB(target);assertNull(result);/测试空字符串的处理情况Test public void wordFormat4DBEmpty()String t

43、arget = ""String result = WordDealUtil.wordFormat4DB(target);assertEquals("", result);/测试当首字母大写时的情况Test public void wordFormat4DBegin()String target = "EmployeeInfo"String result = WordDealUtil.wordFormat4DB(target);assertEquals("employee_info", result);/测试当尾字

44、母为大写时的情况Test public void wordFormat4DBEnd()String target = "employeeInfoA"String result = WordDealUtil.wordFormat4DB(target);assertEquals("employee_info_a", result);/测试多个相连字母大写时的情况Test public void wordFormat4DBTogether()String target = "employeeAInfo"String result = Wor

45、dDealUtil.wordFormat4DB(target);assertEquals("employee_a_info", result);4)查看分析运行结果,修改错误代码再次运行测试。JUnit 运行界面提示我们有两个测试情况未通过测试(见图6),当首字母大写时得到的处理结果与预期的有偏差,造成测试失败(failure);而当测试对 null 的处理结果时,则直接抛出了异常测试错误(error)。显然,被测试代码中并没有对首字母大写和 null 这两种特殊情况进行处理,修改如下:/修改后的方法wordFormat4DBpublic static String wor

46、dFormat4DB(String name)if(name = null)return null;Pattern p = Ppile("A-Z");Matcher m = p.matcher(name);StringBuffer sb = new StringBuffer();while(m.find()if(m.start() != 0)m.appendReplacement(sb, ("_"+m.group().toLowerCase();return m.appendTail(sb).toString().toLowerCase();图4-17

47、示例2运行结果六、Junit-eclipse代码覆盖率工具下载安装在eclipse主界面菜单栏打开help然后点击Software updates(不同版本有的是Install New Software)。图4-18点击Add按钮图4-19在Name一栏中输入eclemma图4-20点击OK按钮图4-21在Name一栏中选中Eclemma,点击Next图4-22图4-23继续Next图4-24选择我接受,点击Finish图4-25安装完成后重启eclipse图4-26至此代码覆盖率工具安装完成在eclipse中输入你要测试的代码,在workspace中右击需要测试的类在New菜单下点击Juni

48、t Test Case图4-27点击Next图4-28选中你所要测试的类,点击Finish会生成一个测试类*Test.java将测试类中的fail(“Not yet implemented”);全部删除运行测试类图4-29点击代码覆盖率按钮图4-30输入你所要测试的数据图4-31图4-32代码覆盖率如图图4-32所示。第五章 自动化功能测试实践一、实验目的1、熟悉QTP自动化功能测试流程2、能够利用QTP进行B/S或者C/S架构程序的自动化功能测试二、实验内容功能测试是针对应用系统进行测试,是基于产品功能说明书,是在已知产品所应具有的功能,从用户角度来进行功能验证,以确认每个功能是否都能正常使

49、用。本项目主要使用QuickTest对MercuryTours网站进行功能测试,要求录制预订机票的完整过程,然后执行测试脚本并分析结果。三、实验要求1、 独立完成;2、 提交测试脚本3、 提交测试用例说明书及缺陷报告。四、QuickTest简介Mercury QuickTest Professional是一款先进的自动化测试解决方案,用于创建功能和回归测试。它自动捕获、验证和重放用户的交互行为。使用QuickTest Professional关键字视图、自动文档(Auto-documentation)和活动屏幕(Active Screen),无需一行代码,就可以创建和修改测试脚本,同时满足了技

50、术型和非技术型用户的需求,让各个公司有能力部署更高质量的应用。QuickTest主要应用在回归测试中。QuickTest针对的是GUI应用程序,包括传统的Windows应用程序,以及现在越来越流行的Web应用。1、QuickTest窗口在开始录制测试脚本之前,先熟悉QuickTest 的窗口。QuickTest 的主窗口如图5-1所示。图5-1 QuickTest 的主窗口QuickTest 的主窗口包含下列的组件:u Title bar:显示目前测试脚本的名称。u Menu bar:显示QuickTest 的菜单。u File toolbar:管理测试脚本常用的工具列。File toolba

51、r如图5-2所示。图5-2File toolbaru Test toolbar:录制测试脚本常用的工具列。Test toolbar 如图5-3所示。图5-3Test toolbar u Debug toolbar:对测试脚本除错常用的工具列。Debug toolbar如图5-4所示。图5-4 Debug toolbaru Action toolbar:包含常用的功能按钮,以及一个显示测试动作(action)的下拉式清单(list),方便你检视整个测试脚本中的测试动作。u Test pane:包含Keyword View 以及Expert View。u Active Screen pane:包含

52、Active Screen。u Data Table:当你对测试脚本做参数化时存放参数数据的地方,除了一个Global 的数据表外,每一个action 也会有各自的资料表。u Debug Viewer pane:协助你对测试脚本除错(debug)。Debug Viewer pane 包含WatchExpressions、Variables 以及Command。u Status bar:显示测试脚本的状态。2、QuickTest测试开发流程QuickTest的测试流程包含七大阶段:(1) 录制测试脚本前的准备在测试前需要先确认应用程序以及QuickTest 是符合测试需求。确认你已经知道如何对应

53、用程序进行测试,例如要测那些功能、操作步骤、输入的数据、预期的结果等。同时应该检查一下QuickTest 的设定,如Test Settings(【Test】>【Settings】)以及Options 对话窗口(【Tools】>【Options】),以确保QuickTest 会适切的录制并储存信息。例如,你应该确认一下QuickTest 的Object Repository 是以什么模式储存信息的。(2) 录制测试脚本当浏览网站或是操作应用程序时,QuickTest 会在Keyword View 中以表格的方式显示录制的操作步骤。每一个操作步骤都是使用者在录制时的操作,如在网页上点选

54、一个超级链接(link),或是按下窗口上的按钮。(3) 加强测试脚本u 在测试脚本中加入检查点,可以检查网页超级链接、对象属性或是字符串,以验证应用程序的功能是否正确。u 将录制的固定值(hard code)参数以取代,使用多组的数据测试应用程序。u 使用逻辑(logic)或是条件(conditional)判断式,可以进行更复杂的测试。(4) 调试脚本(对测试脚本除错)在修改过测试脚本之后,需要调试测试脚本,检查脚本是否存在错误,以确保测试脚本能正常且流畅的执行。(5) 在应用程序或网站上执行测试脚本在对应用程序或网站的回归测试中,通过QuickTest回放对应用程序或网站的操作,检验软件正确

55、性,实现测试的自动化进行。(6)分析测试结果查看QuickTest记录的运行结果,分析测试执行的结果,记录问题,找出应用程序的问题所在。(7) 回报问题(defect)如果安装了Quality Center(TestDirector),则你可以将发现的问题回报到QualityCenter(TestDirector)的数据库中。Quality Center(TestDirector)是Mercury 的测试管理工具。3、录制脚本过程(1)准备当你浏览网站或使用应用程序时,QuickTest会纪录你的操作步骤,并产生测试脚本。 当你停止录制测试脚本后,会看到QuickTest在Keyword View中以表格的方式显示测试脚本的操作步骤(steps)。 在测试前需要先确认你的应用程序以及QuickTest是符合你的测试需求的。 在开始时请先确认以下事项:假如你是使用Internet Explorer浏览器,请你先取消自动完成的功能(取消自动完成的设定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论