十一、创建并运行一个简单的用户自定义jtest配置
jtest预设置的jtest configurations是基于开发者使用的最普遍的测试场景,如果想自定义测试,可以修改builtin配置或者创建用户定义的jtest配置,我们推荐每次执行不同的测试项目时都设置不同的测试场景。
目的:
演示如何创建一个简单的jtest对类编码的检查规范
步骤:
1)打开jtest-jtest configuration面板
2)选择user defined项
3)点击new,表示要创建一个新的jtest测试场景,jtest添加一个新目录叫做example configuration(1)
4)输入该场景的名字,例如输入metrics,这里我们让jtest只检查类规范
5)打开standards标签
6)点击disable all visible rules按钮,先关闭所有标准;如果看不到这个按钮,扩大整个面板就可以看到了。
7)点击class metrics复选框激活全部的类编码标准;扩展class metrics节点可查看具体规范
8)打开generation标签,清除enable unit test generation复选框;这是为了让这个自定义的测试场景只集中在代码规范上,如果要生成测试用例,运行已经存在的jtest配置即可。
9)打开execution标签清除enable unit test execution复选框,目的和上一个相同
10) 点击close,提示是否保存时,选择yes
11) 运行该测试场景时,点击要测试的项目,从play下拉菜单里选择user defined-metrics即可
十二、执行回归测试
当jtest第一次运行一个单元测试时,它会创建一个关于当前测试类的功能快照,并以junit格式的测试用例记录了类的行为。实质上,它自动创建了一个回归测试,当一个测试类修改了,可以重新运行测试用例来检查是否出现错误。
目的:
演示jtest如何执行回归测试
步骤:
1)打开simple.java源文件的编辑器
2)将add()方法里的“+”改成“-”,下一行应该变成return 11-12
3)保存源文件
4)选择simple.java源文件
点击play按钮运行回归测试;jtest将报告错误junit.framework.AssertionFailedError: expected:<14> but was:<0>。这个错误提示我们add()方法的功能自从上次测试后改变了;如果该错误不是故意的,例如排版会敲错,我们将要纠正该错误恢复到从前的正确情况;如果是故意这样修改,那就要纠正期望的outcome。
十三、检测内存泄漏
jtest能够在执行单元测试时检测内存泄漏。如果测试结束,内存仍然在使用中,jtest将会报告内存泄漏。
目的:
演示jtest如何在测试执行中检测内存泄漏
步骤:
1)打开example configuration
2)打开execution标签
3)打开options子标签
4)激活detect memory leaks选项
5)apply并close
6)选择library.java源文件:打开jtest example项目-example.leaks-library.java
7) 从play下拉菜单里选择Jtest Using> User-Defined> Example Configuration
8) 测试结束,报告内存泄漏错误细节
9) 双击[Line 37] Memory Leak: 3.8 megabytes per call,在源文件里打开代码,找到引起内存泄漏的代码行——每次addbook()方法被同样的参数调用,第37行代码分配的内存没有被释放
10) 取消文件末尾的hashcode()和equals()方法的注释,以此来消除内存泄漏错误即可。
第四章
本章是一些概念,英文书中列举的一些重要概念在前面都有所介绍,另外一些对实际jtest用户用处不大,以后我会写一个如何学习jtest的文档,在那里再仔细阐述。这里有一个概念,前面没有提到,这里简单说一下。
Rulewizard:是用户自定义jtest代码检查标准的模型,和jtest4.5或早期版本的功能、使用都相同。(关于Jtest4.5版本的使用介绍,本人也有个文档)Jtest能利用Rulewizard自动增加任何有效的代码检查标准,以此,项目团队检查特殊项目的代码需求。
使用Rulewizard,代码规范能通过图形方式(类似流程图)或自动方式(提供代码实例来演示实际的代码规范偏差)来创建。
Rulewizard在jtest architect edition(架构版本)才可以用。这句话是原文说的,但在我们安装的full版里也可以打开,也许是full版里也包括Rulewizard了吧。其界面如下:
如何打开Rulewizard呢?
1)打开Jtest> Jtest Configurations
2)打开任何jtest configuration的standards标签
3)右键点击rules树的区域,选择add user-defined rule;Rulewizard界面就打开了,关于它的详细使用(修改、创建。激活等)参考帮助里的view in the Rulewizard UI。不过本人觉得没什么必要,人家parasoft提供的都够多、够全了,我们何必再加这些规范呢?除非真的有特殊需要吧;相反,等你用jtest,就会发现我们开发的代码很多地方都会被jtest认为有错,到时候你可别烦啊,^-^!
第五章
本章介绍jtest一些任务,主要功能任务都已经在第三章阐述过了;这里只说明一些其他辅助任务。
一、定时执行测试任务:
jtest允许定时执行测试,和其他的自动化工具一样,可以安排夜晚执行测试,第二天来查看测试结果。另外,jtest还可以按照计划时间来创建大批量的测试用例,以不影响白日的工作。
如何定时测试呢?
1) 选择jtest-preferences
2) 选择jtest-scheduled testing
3) 激活enable scheduled testing选项
4) 在 execution time里输入希望的开始第一个文本框输入小时(0到23),第二个文本框输入分钟(0到59),例如希望在pm 10:30开始,那么就在第一个框里输入22,在第二个里输入30即可
5) 点击configuration to run的edit按钮,选择要执行的jtest configuration
6) 下一个edit是选择此执行要覆盖的测试集,即某项目或部分项目文件
7) 点击apply
注意:如果jtest主程序没有打开,到了定时时间,测试不会自动运行
二、评估发现的错误:
和第三章介绍的error found一样,这里添加一个参考图示,供读者进一步了解:
三、查看测试覆盖信息:
jtest能报告所有junit测试用例的覆盖率,因此用户可以评估当前代码被测试的范围,并决定是否需要增加额外的测试用例。一般来说,jtest能自动创建覆盖了被测试代码75%的测试用例,有时覆盖率也会达到100%,有时也会低于 75%。
测试覆盖率的跟踪一般被默认为是激活的。如果想要手工激活:
1)打开Jtest> Jtest Configurations
2)选择想要修改的测试配置,打开execution标签,再选择option子标签,保证report code coverage选项是激活的
测试执行后,想要查看覆盖率信息,有以下两个个方法:
1)打开一个测试文件的编辑器,在编辑区域左侧的一个兰色/绿色条表示测试覆盖的行,紫色条表示没有覆盖到的行,没有颜色的行表示不可执行的部分
2)打开coverage view面板,显示了每个类和每个方法的覆盖率统计图(覆盖百分比、全部可执行的行、覆盖的行),如图:
总结:关于jtest的基本使用,我想上述的内容就够了。白盒测试工具不像winrunner、robot等黑盒工具有那么多的预设置或脚本代码编写工作,它的设置简单明了;包括有一些我没有介绍的设置,例如修改测试范围scope、连接teamserver等(本人觉得这些内容也不重要,对使用jtest精髓毫无价值),读者只要装了jtest,按照我介绍的主要功能描述,点击几次自然就融会贯通了。
文章来源于领测软件测试网 https://www.ltesting.net/