jtest5使用手册[下]

八、清除错误信息

如果用户想要清除掉tasks视窗或errors found视窗里的错误信息,需要学习本课程。这些清除掉的信息只是临时删除,下次运行出错,依然会显示出来。
目的:

演示如何清除掉tasks视窗或errors found视窗里的错误信息。
步骤:

利用shift或ctrl键选择错误信息,右键点击错误信息,可选择delete error或delete all/clear all。

 

九、创建、执行、扩展junit测试用例

jtest 能自动生成并执行junit测试用例,来发现代码运行的未处理异常,用户也可以扩展这些用例来增强测试覆盖范围,检查代码单元级功能、子模块、模块以及系统级功能。
目的:
演示如何自动生成并运行junit测试用例,如何查看和验证测试结果,以及如何修复发现的错误。

 

步骤:
1)选择simple.java源文件

2)点击play按钮

3)查看运行后的对话框(这里run标签表示运行了13个用例,error标签发现了一个错误,failures标签里没有运行失败的用例)
4)关闭该运行窗口
5)注意这里jtest把生成的junit测试用例文件simpletest.java加到了一个新项目jtest example.jtest的examples.eval包里

6) 在error found视窗里,右键点击[Line: 107] java .lang. NullPointer Exception这个错误,选择quick fix选项
7)按用户意愿自动修复后,保存代码

8) 可通过选择play下拉菜单的Jtest Using> Builtin> Generate and Run Unit Tests,重新运行测试

9) 通过打开simple.java文件,可以在编辑器里修改测试代码,以增强测试;辅助test class outline视窗,可更好的查看测试代码的结果。如果test class outline视窗不在,可通过Jtest Perspective>Jtest> Show View> Test Class Outline打开
10)扩展test class outline分支,能看到每个用例的输入inputs和结果outcomes,如果知道了每个方法的正确结果,那么可以:
· 对每个正确的结果outcome,可右键点击outcome节点,选择verify,jtest会将//unverified注释从这个用例文件里除掉,在以后测试里,jtest就会检查取该值的输出结果,如果出错则报告错误。

· 对于不正确的outcome,点击outcome节点,会在编辑器里修正,jtest在以后测试里同样检查正确的值,如果出错则报错。
· 对于用户不想让jtest在以后的测试里检查的outcome,可右键点击outcome节点,选择ignore,则将其注释掉,以后测试里将其忽略.
十、通过实例配置来修改代码的检查规范
前述的实例配置默认是全局配置,即点击play时jtest执行的测试;用户可以修改该配置。

 

目的:

演示如何自定义jtest实例配置增强测试规则

 

步骤:
1)从菜单中选择jtest-jtest configuration或点击play下拉菜单选择该项,所有可以配置项显示在左侧面板,user defined分支可以修改,builtin项可以查看和拷贝,但不能修改。

2)选择example configuration项,注意此项有个红色G的标志,表示该项被设置成全局配置。
3)打开standards标签,这里是用户可以激活和关闭的代码标准规范 http://www.mscto.com

4)点击internationalization复选框,将会提示jtest配置检查并阻止国际化错误
以后jtest执行测试时,就会检查国际性错误;如果想取消该检查标准,按照同样的步骤取消复选框即可。

 

十一、创建并运行一个简单的用户自定义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里输入希望的开始http://www.csai.cn第一个文本框输入小时(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,按照我介绍的主要功能描述,点击几次自然就融会贯通了。


如果给你带来帮助,欢迎微信或支付宝扫一扫,赞一下。