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

下载本文档

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

文档简介

1、软件测试技术软件测试技术实验指导书实验指导书 吴鸿韬吴鸿韬 河北工业大学计算机科学与软件学院河北工业大学计算机科学与软件学院 20162016 年年 9 9 月月 目目 录录 第一章第一章 实验要求实验要求.1 第二章第二章 白盒测试实践白盒测试实践.3 第三章第三章 黑盒测试实践黑盒测试实践.6 第四章第四章 自动化单元测试实践自动化单元测试实践.7 第五章第五章 自动化功能测试实践自动化功能测试实践.35 第六章第六章 自动化性能测试实践自动化性能测试实践.56 附录附录 1 实验报告封皮参考模版实验报告封皮参考模版.71 附录附录 2 小组实验报告封皮参考模版小组实验报告封皮参考模版.7

2、2 附录附录 3 软件测试计划参考模版软件测试计划参考模版.73 附录附录 4 测试用例参考模版测试用例参考模版.77 附录附录 5 单元测试检查表参考模版单元测试检查表参考模版.81 附录附录 6 测试报告参考模版测试报告参考模版.82 附录附录 7 软件测试分析报告参考模版软件测试分析报告参考模版.87 第一章第一章 实验要求实验要求 一、实验意义和目的 软件测试是软件工程专业的一门重要的专业课,本课程教学目的是通过实际 的测试实验,使学生系统地理解软件测试的基本概念和基本理论,掌握软件测 试和软件测试过程的基本方法和基本工具,熟练掌握软件测试的流程、会设计 测试用例、书写测试报告,为学生

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

4、能,进一步培养综合分析问题和解决问题 的能力。 表 1 实验内容安排 实验内容学时实验性质实验要求 实验一 白盒测试实践 4设计 必做 实验二 黑盒测试实践 4 设计必做 实验三 自动化单元测试实践 4 验证必做 实验四 自动化功能测试实践 4 验证必做 实验五 自动化性能测试实践 4 验证必做 实验六、综合测试实践课外综合选做 二、实验环境 nunit、junit、loadrunner、quick test professional、vc6.0、visual studio 2010、sql 数据库。 三、实验过程要求 每次实验前详细阅读实验指导书,熟悉实验目的和实验内容,制订测试计划, 设计

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

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

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

8、号码由三部分组成。它们的名称和内容分别是: 地区码:空白或三位数字; 前 缀:非0或1的三位数字; 后 缀:4 位数字。 假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定 的电话号码。 3、保险公司计算保费费率的程序保险公司计算保费费率的程序 某保险公司的人寿保险的保费计算方式为: 投保额保险费率 其中,保险费率依点数不同而有别,10 点及 10 点以上保险费率为 0.6%,10 点以下保险费率为 0.1%;而点数又是由 投保人的年龄、性别、婚姻 状况和抚养人数来决定,具体规则如表 2-1 所示。 表 2-1 4、某公司薪水计算程序 某软件的一个模块的需求规格说明书中描述,如图

9、 2-1 所示: (1)年薪制员工:严重过失,扣年终风险金的 4%;过失,扣年终风险金 的 2%。 (2)非年薪制员工:严重过失,扣当月薪资的 8%;过失,扣当月薪资的 4%。 5、公交一卡通自动充值软件,如图 2-2 所示 年龄 性别婚姻抚养人数 20-39 40-59 其它 m f 已婚 未婚 6 点 4 点 2 点 5 点 3 点 3 点5 点 1 人扣 0.5 点 最多扣 3 点 (四舍五入取整) 图 2-1 图 2-2 6、两位整数加法计算器 图 2-3 7、电子商务网站用户注册功能(推荐) 参考任意电子商务网站(如京东,当当等)的用户注册功能,以 b/s 或 c/s 架构实现该功能

10、,并应用白盒测试相关理论对其进行测试。 三、实验要求 1、独立完成; 2、提交编码规范,根据编码规范进行程序设计和测试; 3、提交源代码,源代码中应包含必要的注释; 4、提交测试用例说明书及缺陷报告 第三章第三章 黑盒测试实践黑盒测试实践 一、实验目的 1、 掌握并运用黑盒测试用例设计方法进行测试用例设计,进行测试实践。 二、实验内容 掌握黑盒测试的基本理论,能够利用白盒测试理论设计测试用例,并在所 开发的软件中进行测试。白盒测试技术要求掌握语句覆盖、分支覆盖、路径覆 盖等白盒测试用例设计方法。针对实验二所设计并实现的程序,利用多种黑盒 测试技术设计测试用例,进行单元测试。 本实验要求采用任一

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

12、号码,拒绝所有不符合规定 的电话号码。 3、保险公司计算保费费率的程序保险公司计算保费费率的程序 某保险公司的人寿保险的保费计算方式为: 投保额保险费率 其中,保险费率依点数不同而有别,10 点及 10 点以上保险费率为 0.6%,10 点以下保险费率为 0.1%;而点数又是由 投保人的年龄、性别、婚姻 状况和抚养人数来决定,具体规则如表 2-1 所示。 4、某公司薪水计算程序 某软件的一个模块的需求规格说明书中描述,如图 2-1 所示: (1)年薪制员工:严重过失,扣年终风险金的 4%;过失,扣年终风险金 的 2%。 (2)非年薪制员工:严重过失,扣当月薪资的 8%;过失,扣当月薪资的 4%

13、。 5、公交一卡通自动充值软件,如图 2-2 所示 6、两位整数加法计算器,如图 2-3 所示。 7、电子商务网站用户注册功能(推荐) 参考任意电子商务网站(如京东,当当等)的用户注册功能,以 b/s 或 c/s 架构实现该功能,并应用黑盒测试相关理论对其进行测试。 三、实验要求 1、独立完成; 2、提交测试用例说明书及缺陷报告 第四章第四章 自动化单元测试实践自动化单元测试实践 一、实验目的 1、熟悉 nunit/junit/vs2010 等自动化测试工具,能熟练应用自动化单元测试 工具进行单元测试 二、实验内容 自动化测试是对手工测试的有益补充,可以通过自动化测试工具提高测试 效率,改善软

14、件产品质量。nunit 是为.net 开发环境准备的自动化单元测试框 架,junit 是针对 java 语言设计的自动化单元测试工具,它们的作用就是帮助 测试人员方便的完成单元测试工作。visual studio 2010 集成开发环境通过集 成 visual studio ultimate 2010 和 vs test professional 2010 等工具对软 件测试提供了强有力的支持,可以创建和管理单元测试,ui 测试,web 测试, 负载测试等。针对实验二所设计并实现的程序,本项目要求根据所设计测试用 例,利用 nunit/junit/vs2010 等自动化测试工具进行自动化单元测

15、试,并给出 代码覆盖情况。 三、实验要求 1、独立完成; 2、提交测试脚本 3、提交测试代码及缺陷报告。 四、nunit 概述 1、nunit 主界面 nunit 是一个单元测试框架,专门针对于.net 来写的. 图 4-1 nunit 运行的效果 图 4-2 nunit 运行的另外一个效果 从中我们可以非常容易发现,右边是个状态条,图 4-1 是红色的,图 4-2 是绿 色的.为什么会这样呢?因为如果所有测试案例运行成功,就为绿色,反之如果有 一个不成功,则为红色,但也有黄色的.左面的工作域内则是我们写的每一个单元 测试.在右边面板的中间,可以看到测试进度条。进度条的颜色反映了测试执行 的状

16、态: 绿色绿色 描述目前所执行的测试都通过 黄色黄色 意味某些测试忽略,但是这里没有失败 红色红色 表示有失败 底部的状态条表示下面的状态: 状态状态.说明了现在运行测试的状态。当所有测试完成时,状态变为 completed.运行测试中,状态是running: ( 是正在运行的测试名称)。 testtest casescases 说明加载的程序集中测试案例的总个数。这也是测试树里叶 子节点的个数。 teststests runrun 已经完成的测试个数。 failuresfailures 到目前为止,所有测试中失败的个数. timetime 显示运行测试时间(以秒计) file 主菜单有以下内

17、容: newnew projectproject 允许你创建一个新工程。工程是一个测试程序集的集合。 这种机制让你组织多个测试程序集,并把他们作为一个组对待。 openopen 加载一个新的测试程序集,或一个以前保存的 nunit 工程文件。 closeclose 关闭现在加载的测试程序集或现在加载的 nunit 工程。 savesave 保存现在的 nunit 工程到一个文件。如果正工作单个程序集,本菜 单项允许你创建一个新的 nunit 工程,并把它保存在文件里。 savesave asas 允许你将现有 nunit 工程作为一个文件保存。 reloadreload 强制重载现有测试程序集

18、或 nunit 工程。nunit-gui 自动监测现 加载的测试程序集的变化。 2、一些常用属性 在 nunit 里,有以下几种属性: test fixture test testfixtureattribute 本属性标记一个类包含测试,当然 setup 和 teardown 方法可有可无.(关于 setup 和 teardown 方法在后面介绍) 做为一个测试的类,这个类还有一些限制 必须是 public,否则 nunit 看不到它的存在. 它必须有一个缺省的构造函数,否则是 nunit 不会构造它. 构造函数应该没有任何副作用,因为 nunit 在运行时经常会构造这个类多 次,如果要是构

19、造函数要什么副作用的话,那不是乱了. testattribute test 属性用来标记一个类(已经标记为 testfixture)的某个方法是可以测 试的.这个测试方法可以定义为: public void methodname() 从上面可以看出,这个方法没有任何参数,其实测试方法必须没有参数测试方法必须没有参数.如果 我们定义方法不对的话,这个方法不会出现在测试方法列表中.也就是说在 nunit 的界面左边的工作域内,看不到这个方法.还有一点就是这个方法不返回还有一点就是这个方法不返回 任何参数任何参数, ,并且必须为并且必须为 public.public. 例如: 1using syst

20、em; 2using nunit.framework; 3 4namespace mytest.tests 5 6 testfixture 7 public class successtests 8 9 test public void test1() 10 /* */ 11 12 13 14 在 nunit 中,用 assert(断言)进行比较,assert 是一个类,它包括以 下方法:areequal,aresame,equals, fail,ignore,isfalse,isnotnull,具体请参看 nunit 的文档。 3、如何在.net 中应用 nunit 第 1 步.增加一个 n

21、unit 框架引用 在 microsoft visual studio .net 里创建这个例子时,你需要增加一个 nunit.framework.dll引用,如下: 在 solution explorer 右击引用,然后选 择增加引用 nunit.framework 组件,在 add reference 对话框中按 select 和 ok 按钮。 第 2 步.为工程加一个类. 为工程加一个 cmp 类,作为被测代码。这里是这个例子的代码。 using system; public class cmp public static int largest(int list) int index,

22、 max=int32.maxvalue; if (list.length = 0) throw new argumentexception(empty list); for (index = 0; index max) max = listindex; return max; 第 3 步.建立测试代码 using nunit.framework; testfixture public class testlargest test public void largestof3() assert.areequal(9, cmp.largest(new int 8,9,7); test expect

23、edexception(typeof(argumentexception) public void empty() cmp.largest(new int ); 第 4 步.编译运行测试. 现在生成 solution。成功编译后,开始应用程序。nunit-gui,测试程序集 的结构如图 4-3 所示: 图 4-3 测试程序集的测试在 nunit-gui 中的视图 按 run 按钮。树的节点变为绿色,而且测试运行器窗口上的进度条变绿, 绿色代表成功通过。 expectedexception 这里是一个验证这个假设的测试.有的时候,我们知道某些操作会有异常出 现,例如, 在实例中增加除法,某个操作

24、被 0 除,抛出的异常和.net 文档描述的 一样.参看以下源代码. 1 test 2 expectedexception(typeof(dividebyzeroexception) 3public void dividebyzero() 4 5 int zero = 0; 6 int infinity = a/zero; 7 assert.fail(should have gotten an exception); 8 除了test属性之外, dividebyzero方法有另外一个客户属性: expectedexception. 在这个属性里,你可以在执行过程中捕获你期望的异常类 型,例如在

25、本例就是 dividebyzeroexception.如果这个方法在没有抛出期望异 常的 情况下完成了,这个测试失败.使用这个属性帮助我们写程序员测试验证边 界条件(boundary conditions). ignore 属性 由于种种原因,有一些测试我们不想运行.当然,这些原因可能包括你认为这 个测试还没有完成,这个测试正在重构之中,这个测试的需求不是太明确.但你有 不想破坏测试,不然进度条可是红色的哟.怎么办?使用ignore属性.你可以保持 测试,但又不运行它们. namespace classlibrary1 using nunit.framework; testfixture pu

26、blic class testlargest test public void largestof3_1() assert.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属性可以附加到一

27、个独立的测试方法,也可以附加到整个测试类 (testfixture).如果ignore属性附加到testfixture,所有在 fixture 的测试 都被忽略. category 属性 对于测试来说,你有的时候需要将之分类,此属性正好就是用来解决这个 问题的。 你可以选择你需要运行的测试类目录,也可以选择除了这些目录之外 的测试都可以运行。在命令行环境里 /include 和/exclude 来实现。在 gui 环 境下,就更简单了,选择左边工作域里的 catagories tab,选择 add 和 remove 既可以了。 图 4-4 在一个程序员测试中使用 ignore 属性 names

28、pace classlibrary1 using nunit.framework; testfixture 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) e

29、xpectedexception(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

30、(index = 0; index 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(argumentexception) public void empty() cmp.larg

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

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

33、 图 4-11 五、junit 框架的使用 1、junit 使用方法示例 1 1)把 junit 引入当前项目库中 新建一个 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,类中有两个方法,分别计算加减法。编译代码。 4)写单元测试代码 为类samplecalculator添加测试用例。在资源管理器 samplecalculator.java文件处右击选

35、new选junit test case(见图4-15), source foler选择testsrc目录,点击next,选择要测试的方法,这里把add和 subtration方法都选上,最后点finish完成。 图4-15 新建测试用例 junit自动生成测试类samplecalculatortest,修改其中的代码。其中 assertequals断言,用来测试预期目标和实际结果是否相等。 assertequals( sting message, expected, actual ) package .gzhu; public class samplecalculator /计算两

36、整数之和 public int add(int augend, int addend) return augend + addend; /计算两整数之差 public int subtration(int minuend, int subtrahend) return minuend - subtrahend; expected是期望值(通常都是硬编码的),actual是被测试代码实际产生 的值,message是一个可选的消息,如果提供的话,将会在发生错误时报告这个 消息。 如想用断言来比较浮点数(在java中是类型为float或者double的数),则 需指定一个额外的误差参数。 asser

37、tequals(sting message, expected, actual, tolerance) 其它断言参见课本和参考书介绍。测试方法需要按照一定的规范书写: 1. 测试方法必须使用注解 org.junit.test 修饰。 2. 测试方法必须使用 public void 修饰,而且不能带有任何参数。 package .gzhu; import static org.junit.assert.*; import org.junit.test; public class samplecalculatortest samplecalculator calculator = ne

38、w samplecalculator(); test public void testadd() int result = calculator.add(50, 20); assertequals(70,result); test public void testsubtration() int result = calculator.subtration(50, 20); assertequals(30,result); 5)查看运行结果 在测试类上点击右键,在弹出菜单中选择 run as junit test。运行结果 如下图,绿色的进度条提示我们,测试运行通过了。 图4-16 示例1运行

39、结果 2、junit 使用方法示例 2 1)在工程中添加类 类 worddealutil 中的方法 wordformat4db( )实现的功能见文件注释。 2)写单元测试代码 package .gzhu; package .gzhu; import java.util.regex.matcher; import java.util.regex.pattern; public class worddealutil /* * 将java对象名称(每个单词的头字母大写)按照 * 数据库命名的习惯进行格式化 * 格式化后的数据为小写字母,并且使用下划线分割命名单词 *例如:em

40、ployeeinfo 经过格式化之后变为 employee_info * param name java对象名称 */ public static string wordformat4db(string name) pattern p = ppile(a-z); matcher m = p.matcher(name); stringbuffer strbuffer = new stringbuffer(); while(m.find() /将当前匹配子串替换为指定字符串, /并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加 到一个stringbuffer对象里 m.appendre

41、placement(strbuffer, _+m.group(); /将最后一次匹配工作后剩余的字符串添加到一个stringbuffer对象里 return m.appendtail(strbuffer).tostring().tolowercase(); package .gzhu; import static org.junit.assert.*; import org.junit.test; public class worddealutiltest test public void testwordformat4db() string target = employeein

42、fo; string result = worddealutil.wordformat4db(target); assertequals(employee_info, result); 3)进一步完善测试用例 单元测试的范围要全面,如对边界值、正常值、错误值的测试。运用所学 的测试用例的设计方法,如:等价类划分法、边界值分析法,对测试用例进行 进一步完善。继续补充一些对特殊情况的测试: /测试 null 时的处理情况 test publicpublic voidvoid wordformat4dbnull() string target = nullnull; string result =

43、worddealutil.wordformat4db(target); assertnull(result); /测试空字符串的处理情况 test publicpublic voidvoid wordformat4dbempty() string target = ; string result = worddealutil.wordformat4db(target); assertequals(, result); /测试当首字母大写时的情况 test publicpublic voidvoid wordformat4dbegin() string target = employeeinfo

44、; string result = worddealutil.wordformat4db(target); assertequals(employee_info, result); /测试当尾字母为大写时的情况 test publicpublic voidvoid wordformat4dbend() string target = employeeinfoa; string result = worddealutil.wordformat4db(target); assertequals(employee_info_a, result); /测试多个相连字母大写时的情况 test publi

45、cpublic voidvoid wordformat4dbtogether() string target = employeeainfo; string result = worddealutil.wordformat4db(target); assertequals(employee_a_info, result); 4)查看分析运行结果,修改错误代码 再次运行测试。junit 运行界面提示我们有两个测试情况未通过测试(见 图 6) ,当首字母大写时得到的处理结果与预期的有偏差,造成测试失败 (failure) ;而当测试对 null 的处理结果时,则直接抛出了异常测试错 误(error

46、) 。显然,被测试代码中并没有对首字母大写和 null 这两种特殊情 况进行处理,修改如下: /修改后的方法 wordformat4db public static string wordformat4db(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.

47、group().tolowercase(); return m.appendtail(sb).tostring().tolowercase(); 图 4-17 示例 2 运行结果 六、junit-eclipse 代码覆盖率工具下载安装 在 eclipse 主界面菜单栏打开 help 然后点击 software updates(不同版本有的 是 install new software) 。 图 4-18 点击 add 按钮 图 4-19 在 name 一栏中输入 eclemma,在 location 一栏中输入 图 4-20 点击 ok 按钮 图 4-21

48、 在 name 一栏中选中 eclemma,点击 next 图 4-22 图 4-23 继续 next 图 4-24 选择我接受,点击 finish 图 4-25 安装完成后重启 eclipse 图 4-26 至此代码覆盖率工具安装完成 在 eclipse 中输入你要测试的代码,在 workspace 中右击需要测试的类在 new 菜 单下点击 junit test case 图 4-27 点击 next 图 4-28 选中你所要测试的类,点击 finish 会生成一个测试类*test.java 将测试类中的 fail(“not yet implemented” ) ;全部删除 运行测试类 图

49、 4-29 点击代码覆盖率按钮 图 4-30 输入你所要测试的数据 图 4-31 图 4-32 代码覆盖率如图图 4-32 所示。 第五章第五章 自动化功能测试实践自动化功能测试实践 一、实验目的 1、熟悉 qtp 自动化功能测试流程 2、能够利用 qtp 进行 b/s 或者 c/s 架构程序的自动化功能测试 二、实验内容 功能测试是针对应用系统进行测试,是基于产品功能说明书,是在已知产 品所应具有的功能,从用户角度来进行功能验证,以确认每个功能是否都能正 常使用。本项目主要使用 quicktest 对 mercurytours 网站进行功能测试,要求 录制预订机票的完整过程,然后执行测试脚本

50、并分析结果。 三、实验要求 1、 独立完成; 2、 提交测试脚本 3、 提交测试用例说明书及缺陷报告。 四、quicktest 简介 mercury quicktest professional 是一款先进的自动化测试解决方案,用 于创建功能和回归测试。它自动捕获、验证和重放用户的交互行为。使用 quicktest professional 关键字视图、自动文档(auto-documentation)和活 动屏幕(active screen) ,无需一行代码,就可以创建和修改测试脚本,同时 满足了技术型和非技术型用户的需求,让各个公司有能力部署更高质量的应用。 quicktest 主要应用在回

51、归测试中。quicktest 针对的是 gui 应用程序,包 括传统的 windows 应用程序,以及现在越来越流行的 web 应用。 1 1、quicktestquicktest 窗口窗口 在开始录制测试脚本之前,先熟悉 quicktest 的窗口。quicktest 的主窗 口如图 5-1 所示。 图 5-1 quicktest 的主窗口 quicktest 的主窗口包含下列的组件: title bar:显示目前测试脚本的名称。 menu bar:显示 quicktest 的菜单。 file toolbar:管理测试脚本常用的工具列。file toolbar 如图 5-2 所示。 图 5-

52、2file toolbar test toolbar:录制测试脚本常用的工具列。test toolbar 如图 5-3 所示。 图 5-3test toolbar debug toolbar:对测试脚本除错常用的工具列。debug toolbar 如 图 5-4 所示。 图 5-4 debug toolbar action toolbar:包含常用的功能按钮,以及一个显示测试动作 (action)的下拉式清单(list) ,方便你检视整个测试脚本中的 测试动作。 test pane:包含 keyword view 以及 expert view。 active screen pane:包含 ac

53、tive screen。 data table:当你对测试脚本做参数化时存放参数数据的地方,除 了一个 global 的数据表外,每一个 action 也会有各自的资料表。 debug viewer pane:协助你对测试脚本除错(debug) 。debug viewer pane 包含 watchexpressions、variables 以及 command。 status bar:显示测试脚本的状态。 2 2、quicktestquicktest 测试开发流程测试开发流程 quicktest 的测试流程包含七大阶段: (1)(1) 录制测试脚本前的准备录制测试脚本前的准备 在测试前需要先

54、确认应用程序以及 quicktest 是符合测试需求。 确认你已经知道如何对应用程序进行测试,例如要测那些功能、操作步骤、 输入的数据、预期的结果等。 同时应该检查一下 quicktest 的设定,如 test settings(【test】 【settings】 )以及 options 对话窗口(【tools】【options】 ) ,以确保 quicktest 会适切的录制并储存信息。例如,你应该确认一下 quicktest 的 object repository 是以什么模式储存信息的。 (2)(2) 录制测试脚本录制测试脚本 当浏览网站或是操作应用程序时,quicktest 会在 keyword view 中以表 格的方式显示录制的操作步骤。每一个操作步骤都是使用者在录制时的操作, 如在网页上点选一个超级链接(link) ,或是按下窗口上的按钮。

温馨提示

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

评论

0/150

提交评论