第一章
简介:
jtest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。Jtest先分析每个java类,然后自动生成junit测试用例并执行用例,从而实现代码的最大覆盖,并将代码运行时未处理的异常暴露出来;另外,它还可以检查以DbC(Design by Contract)规范开发的代码的正确性。用户还可以通过扩展测试用例的自动生成器来添加更多的junit用例。Jtest还能按照现有的超过350个编码标准来检查并自动纠正大多数常见的编码规则上的偏差,用户可自定义这些标准,通过简单的几个点击,就能预防类似于未处理异常、函数错误、内存泄漏、性能问题、安全隐患这样的代码问题。
另外,jtest 采用parasoft公司的AEP方法论来实现团队开发中对代码错误标准化管理,这个方法论,也是parasoft提出的基于团队开发模式下提高软件质量和可靠性的一套解决方案,目前还处在探索阶段,详情可参阅 http://www.parasoft.com/jsp/aep/aep.jsp 。
优势:
1)使预防代码错误成为可能,从而大大节约成本,提高软件质量和开发效率
2)使单元测试——包括白盒、黑盒以及回归测试成为可能
3)使代码规范检查和自动纠正成为可能
4)鼓励开发团队横向协作来预防代码错误
特征:
1)通过简单的点击,自动实现代码基本错误的预防,这包括单元测试和代码规范的检查
2)生成并执行junit单元测试用例,对代码进行即时检查
4)确认并阻止代码中不可捕获的异常、函数错误、内存泄漏、性能问题、安全弱点的问题
5)监视测试的覆盖范围
6)自动执行回归测试
7)支持DbC编码规范
8)检验超过350个来自java专家的开发规范
9)自动纠正违反超过160个编码规范的错误
10)允许用户通过图形方式或自动创建方式来自定义编码规范
11)支持大型团队开发中测试设置和测试文件的共享
12)实现和IBM Websphere Studio /Eclipse IDE 的安全集成
第二章
本章说明了如何安装jtest full版本,full版本包括jtest和eclipse,jtest被集成在eclipse框架内部。
1.在windows安装步骤:
1)双击jtest自解压文件jtest5_win32.exe
2)按提示步骤进行,选择【complete jtest installation】,一直到结束安装
2.在unix安装步骤:
1)将安装文件jtest.linux.tar.gz或gzip –dc jtest.solaris.tar.gz 拷贝到即将安装jtest的目录
2)解压档案文件:
linux:gzip –dc jtest.linux.tar.gz | tar xvf –
solaris: gzip –dc jtest.solaris.tar.gz | tar xvf –
解压后,出现一个叫做jtest的目录,包含了jtest安装后的全部文件。
运行jtest时,执行 ./jtest 命令即可。
注册:获得正版jtest安装程序后,只有正确注册才可以使用,方法也很简单,这里不详述。
第三章
本章是jtest的快速指南部分,读者可迅速掌握jtest的基本功能及使用方法;包含的主题如下:
1)第一课:创建一个实例项目
2)第二课:检查代码规范
3)第三课:自动修复代码规范错误
4)第四课:访问代码规范的描述信息
5)第五课:忽略/取消忽略报告的错误
6)第六课:运行jtest builtin 配置
7)第七课:以fly方式检查特定的编码标准或一组标准
8)第八课:清除错误信息
9)第九课:创建、执行、扩展junit测试用例
10)第十课:通过实例配置来修改代码的检查规范
11)第十一课:创建并运行一个简单的用户自定义jtest配置
12)第十二课:执行回归测试
13)第十三课:检测内存泄漏
一、 创建一个实例项目
jtest 默认情况下,可以创建一个java实例项目,本章里,我们也利用该项目演示。用户在使用自己的代码时,就不必创建这样的项目来使用jtest,直接利用在eclipse里创建的java项目即可。
目的:
演示如何创建jtest实例项目
步骤:
1)选择 file>new>jtest example project
2)默认项目名称是jtest example ,点击finish即可
项目创建完成,并显示在jtest 视窗里。Package explore显示在工作台左侧,此时只列出一个jtest example项目。如何在java视窗里查看项目呢?
1) 点击工作台左上方快捷条里的java perspective 按钮;如果java perspective 按钮不在,点击快捷条里的open perspective按钮,选择other,然后选择java,打开即可。
2) 或者在快捷条里点击java perspective 按钮进入jtest视窗,如下:
——>jtest 视窗
——>java视窗
——>open 视窗
二、检查代码规范
通过检查代码规范,用户可以避免一些将来可能导致软件功能、性能或安全方面的问题。
目的:
演示如何检查代码规范,并浏览报告的代码规范错误。
步骤:
这里我们检查simple这个类(在jtest example项目里的example.eval包里)是否符合默认的java编码规范。
1)选择simple.java源文件
2)在工具栏里点击play按钮,即
默认情况下,点击这个按钮,jtest会将检查代码规范和单元测试一并执行;后续课程里,我们会说明如何执行特定的测试,这里我们集中讲述代码规范分析和分析结果。
3)测试运行结束后,在jtest运行面板里选择standards标签,这里包括如下关于编码规范的内容:
· 代码规范检查耗费的时间
· 被检查的文件个数
· 运行失败的次数
· 发现的错误个数
· 忽略掉的错误个数
· 违反编码的规范个数
4)关闭运行窗口。
5)在jtest工作台右下方,检查errors found视窗。如果该视窗不在,选择window>show view>other,选择jtest>errors found,即可。
6)在errors found视窗,打开example.java分支,前六个报告的错误是代码规范错误,每个代码规范错误都包含在引起错误的代码行数和简单的错误描述信息。
7) 双击[Line: 54] Text label ’case10’ may be typo for ’case 10’节点,simple.java这个文件的编辑器自动打开,并且违反代码规范的那一行会高亮显示,鼠标也自动定位在错误附近。
三、自动修复代码规范错误
jtest 能自动修复大多数它捕获的代码规范错误,它利用集成的eclipse quick fix 特性来实现此功能。可以自动修复的代码规范错误,在jtest configurations面板的standards标签里,都被标记成黄色球形图标。
目的:
演示如何利用jtest quick fix 特性来自动修复编码规范错误。
步骤:
1)在errors found 视窗里,扩展simple.java节点,双击[Line: 54] Text label ’case10’ may be typo for ’case 10’这个错误,编辑器自动打开,错误行高亮显示,并且编辑器的左侧有个黄色球形图标标记这个错误,这个图标的出现表示能够利用quick fix 选项来自动纠正代码规范错误。
2)在这个黄色球形图标上点击一下,弹出两个选项窗口,一个是针对这个编码错误的quick fix,另一个提供了被违反的编码规范的描述信息。
3)双击fix选项,就会自动纠正编码规范错误,jtest也会重新定位编辑器里的代码。针对这个例子,case10会替换case 10,以后再测试的话,就不会再报错了;而且,jtest也自动删除了在errors found视窗里关于这个错误的信息。
4)保存代码。
四、访问代码规范的描述信息
jtest 能自动检查超过350个编码规范和任何数量的用户自定义规范。每条规范都有一个对应的描述信息,用来帮助用户理解自己的代码为何偏离了正确的规范。
目的:
演示如何深入了解报告的编码规范错误信息
步骤:
1) 在errors found视窗,扩展simple.java 分支
2) 右键单击[Line: 53] case 0 is missing either "break", "return", or /*falls through */这个错误,选择view rule description,jtest就会显示在builtin help窗口里显示关于这个规范的描述信息
3)浏览之后,点击back按钮即可
所有的编码规范的描述信息都可以在jtest的帮助里获得。
五、忽略/取消忽略报告的错误
用户在编码时,有些违反编码规范的错误可以忽略不计,那么可以通过此功能来实现,以后再测试时,不会再提示错误信息。如果想针对一些特定编码规范全部忽略,我们推荐最好修改jtest configurations,以便jtest测试时不对其检查。
目的:
演示如何忽略/取消忽略报告的错误。
步骤:
针对simple.java类,想要忽略Utility class does not have a "private" default constructor: ’Simple’ 这个错误:
1)在errors found视窗里,扩展simple.java分支
2)右键点击Utility class does not have a "private" default constructor: ’Simple’ 这个错误,选择suppress error选项
3) 在弹出对话框里输入个短语或句子表示为何要忽略这个错误。针对此例,输入exploring suppressions;关闭对话框,相应的编码规范错误从errors found里清除。将来再测试时,该错误信息会报告在suppressed messages视窗里。
Suppressed messages如果不在,也可通过相同的方法从jtest>show view>suppressed messages打开,这个视窗有如下信息:
· message:忽略掉的 jtest 错误
· reason:错误被忽略掉的原因
· resource:忽略错误的源文件
· user:执行忽略错误的操作者
· date:执行忽略错误的日期
如果想取消忽略这个错误:
在suppressed messages视窗里,右键点击CODSTA.UCDC: Utility class does not have a "private" default constructor: ’Simple’ 这个错误,选择remove suppression即可