ParasoftJtest王宜政软件工程软件测试2〇、主要内容Jtest简介下载与安装静态测试动态测试回归测试覆盖率分析其它高级功能Jtest和Junit的关系小结软件测试3一、Jtest简介Jtest是Parasoft公司推出的一款自动化Java编码标准分析与单元测试工具。Jtest会自动测试任何Java类或部件,而不需要您写一个测试用例、驱动程序或桩函数。只要通过简单的几个点击,Jtest就会自动测试代码构造(白盒测试)、测试代码功能性(黑盒测试)、维护代码完整性(回归测试)和静态分析(编程标准执行和指标度量),从而预防未处理异常、函数错误、内存泄漏、性能问题、安全隐患等代码问题。软件测试4一、Jtest简介Jtest是业界最全面的Java静态分析、单元测试、覆盖率分析、运行时错误检测和代码审查的自动化测试解决方案。其优势在于:优化开发资源:自动化诊断并修改超过80%的编码问题,使得开发团队能够显著减少在逐行检查和调试代码上所花费的时间。提高测试效率:自动化生成单元测试驱动程序、桩函数和测试用例,节省测试成本,并对大型团队测试文件共享提供支持。软件测试5二、下载与安装Jtest的当前版本支持常见的主流开发平台和系统。针对不同的平台,Jtest提供了不同的安装文件。同一安装平台,还提供独立版本和插件版本两种安装文件,以更好地扩展适用范围。Windows独立版本Windows插件版本Linux/Solaris独立版本Linux/Solaris插件版本Mac版本软件测试6二、下载与安装Jtest是一款商业软件,现在高版本且已破解的资源挺难找,点击pan.baidu.com/s/1o67AyE2即可下载ParasoftJtest9.4破解版。软件测试7二、下载与安装Jtest基于Windows的插件版本安装:首先安装parasoft_jtest_9.4.2_win32.exe覆盖Test\9.4\plugins\Parasoft中的lic_client.jar确保在Eclipse已完全关闭的情况下,再去安装parasoft_jtest_9.4.2_win32_eclipse_plugin.exe将TestforEclipse\9.4\eclipse\plugins\Parasoft目录下的lic_client.jar文件也覆盖掉最后才能启动Eclipse,并添加各个检查项软件测试8三、静态测试静态测试是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性,对需求规格说明书、软件设计说明书和源程序做结构分析、流程图分析、符号执行,来找出代码隐藏的缺陷之处。Jtest提供强大的静态测试功能,包括静态代码规范检测、自定义测试规范、BugDetective数据流检测功能等。软件测试9三、静态测试静态代码规范检测:首先需要创建一个JtestExample示例工程执行静态测试之前,查看并进行测试配置根据选定的测试规则进行静态代码的检测审查测试结果并自动修正代码标准的违例抑制报告违例清除错误消息生成测试报告软件测试10三、静态测试自定义测试规范:企业组织为了形成自己的编码风格和编码文化,往往需要有自己的一套编码规范。这个规范最起码的要求,就是要符合业内主流的规范。这时Jtest将会是最好的工具,它给用户提供了图形化的界面,用来自定义静态测试规范。用户在定制规则的时候,可以有两种选择:一是通过复制并修改内建规则的方式,二是使用RuleWizard向导来创建新的规则。软件测试11四、动态测试动态测试是指通过人工或工具运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,由构造测试用例、执行程序和分析输出结果三部分组成。单元、集成、确认、系统、验收、白盒、黑盒都是动态测试。Jtest的自动化动态测试完成单元测试、集成测试、白盒测试、黑盒测试等工作,可以自定义所执行测试的级别和范围,以便体现用户不同的需求和测试习惯。软件测试12四、动态测试使用Junit框架进行动态测试:Jtest能够自动生成并执行基于Junit框架的测试用例,来检查程序中的Bug和异常。同时还能自己编写测试用例,对原有用例进行扩展。执行“GenerateandRunUnitTests”命令审查单元测试结果,直到选项中没有记录定位到异常代码,修改程序使其免于异常添加用户自定义的测试用例来扩展测试类软件测试13五、回归测试在软件生命周期的任何一个阶段,只要软件发生了改变,就可能给该软件带来问题。软件的改变可能是源于发现了错误并作了修改,也可能是因为在集成或维护阶段加入了新的模块。当软件发生改变时,就必须重新测试现有的功能,以确定修改是否达到了预期目的,是否损害了原有的正常功能。同时还需补充新的测试用例来测试新的或被修改了的功能。为了验证修改的正确性及其影响,就需进行回归测试。软件测试14五、回归测试在执行回归测试的时候,基本上可以概括为两个阶段,第一个是生成测试套件,第二个是检查并修正相异之处。Jtest的自动化验证和回归测试相结合,可以帮助用户开发健壮的回归测试套件,用以检测代码改变是否会破坏程序的既有功能。这种回归测试对于发布周期紧迫、功能持续在发生变化且又难以测试的应用程序而言,是十分关键的。软件测试15五、回归测试使用Jtest执行回归测试:执行“MaintainableRegressionTestSuite”命令,生成回归测试套件。修改源码后执行“RunRegressionTests”命令。如果该功能性改变是无意的,修改相应代码。如果该功能性改变是有意的(如需求改变),则用户可更改期望值,Jtest会在后续的测试中按照更改后的预期输出,来进行相关的测试。软件测试16六、覆盖率分析测试覆盖是对测试完全程度的评测,它是由测试需求和测试用例的覆盖,或已执行代码的覆盖来表示的。覆盖率等于覆盖面积除以总面积。Jtest在单元测试完成之后,会提供被测代码的覆盖率统计信息,包括行覆盖率和判定覆盖率。行覆盖率等于执行代码的行数除以总代码行数。Jtest使用左边绿色的栏来表明相关的路线被覆盖了,粉色的栏表明相关语句没有被覆盖,没有颜色的栏表明相关的路线不可执行。软件测试17六、覆盖率分析Jtest自动生成的测试用例不一定能完全满足用户对测试覆盖率的要求。这时就需要用户根据实际代码的功能结构,设计并添加测试用例,来进行单元测试,并提高测试覆盖率。Jtest提供了三种方式来支持用户添加测试用例:使用对象资源库手动添加测试用例使用桩函数进行手动添加测试用例使用图形化界面手动添加测试用例,指定被测项与输入项之间的关系软件测试18七、其它高级功能使用JtestRuleWizard自定义代码检测规则JtestBugDetective静态数据流分析技术创建并使用参数化测试用例基于Jtest的容器测试生成并执行仙人掌测试(Cactustests)使用Excel、CSV文件等数据源添加测试用例使用JtestTracer进行测试使用命令行界面Parasoft团队开发测试软件测试19八、Jtest和Junit的关系Jtest和Junit都是流行的Java测试工具,它们之间的关系用一句话来概括:Jtest执行单元测试的核心框架是Junit,它是一个继承于Junit并自主扩展的测试工具。二者区别体现在以下几方面:公司不同:Jtest出自Parasoft,Junit出自Sun种类不同:Jtest是商业软件,Junit则开源免费功能不同:Jtest是一款系统的测试工具,可以自动化进行代码规则检查并生成用例;Junit只是一个测试框架,需要程序员自己编写用例来实现动态测试。软件测试20九、小结Jtest的最大优势在于静态代码分析,当然生成测试代码框架也是不错的,但要做好单元测试,用户还需要做大量的工作。单元测试时,Jtest先分析每个Java类,然后自动生成并执行Junit用例,从而实现代码的最大覆盖,并将代码运行时未处理的异常暴露出来。Java开发人员可以使用Jtest来对自己编写的程序进行自测,而白盒测试工程师则可以使用Jtest来自动完成代码规范的检查和动态测试。王宜政软件工程