测试工具Jtest:用于代码优化和测试——《软件工程综合实践专题》第四次个人博客

测试工具Jtest:用于代码优化和测试

一、Jtest简介

Jtest 是 Parasoft 公司推出的一款针对 Java 语言的自动化代码优化和测试工具,它通过自动化实现对 Java 应用程序的单元测试和编码规范校验,从而提高代码的可靠性以及 Java 软件开发团队的开发效率。

二、主要功能

1)通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。Jtest先分析每个java类,然后自动生成junit测试用例并执行用例,从而实现代码的最大覆盖,并将代码运行时未处理的异常暴露出来。

2)可以检查DbC(Design by Contract)规范开发的代码的正确性。

3)用户可自定义编码标准,通过简单的几个点击,就能预防类似于未处理异常、函数错误、内存泄漏、性能问题、安全隐患这样的代码问题。

三、优势

1)使预防代码错误成为可能,从而大大节约成本,提高软件质量和开发效率

2)使单元测试,包括白盒、黑盒以及回归测试成为可能

3)使代码规范检查和自动纠正成为可能

4)鼓励开发团队横向协作来预防代码错误

四、工作原理

Jtest通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。Jtest先分析每个java类,然后自动生成测试用例并执行用例,从而实现代码的最大覆盖,并将代码运行时未处理的异常暴露出来;另外,它还可以检查以DbC(Designby Contract)规范开发的代码的正确性。用户还可以通过扩展测试用例的自动生成器来添加更多的用例。Jtest还能按照现有的超过350个编码标准来检查并自动纠正大多数常见的编码规则上的偏差,用户可自定义这些标准,通过简单的几个点击,就能预防类似于未处理异常、函数错误、内存泄漏、性能问题、安全隐患这样的代码问题。

五、使用Jtest进行Java编码规范检查

1.选择 Jtest->Test Using Default Configuration 运行编码规范检查。

2.对执行代码规范检查的结果。默认情况下,执行代码规范检查时,单元测试也会一并触发。其中选项卡上方的红叉表示在对应检查项中发现了错误或警告。在 Static 选项卡中,可以看到执行检查过程中,被检查的文件个数,运行失败的次数,违反代码规范的个数以及检查耗时等信息。

3.检查执行完毕后,可以通过打开 Jtask 窗口中的树形结构查看更详细的检查结果。在该树形结构中,Fix Static Analysis Violations 节点记录了所有到被检查代码中违反编码规范的缺陷。下图所示,选中一条违反编码规范记录,点击右键选中View Rule Documentation,可查看相应代码的编码规范描述信息。

4.双击“[Line: 57] Text label ‘case1‘ may be typo for ‘case 1”节点,代码编辑器中会自动定位并高亮显示错误代码。点击代码左侧黄色图标,Jtest 会弹出对于当前错误的建议修改方案,选择 Change the label to switch case,Jtest 会自动修复当前代码错误,即将代码中的字段:“case1”自动修改为“case 1”。自动修复错误后,代码左侧的黄色图标会消失,Jtask 窗口中的错误信息也会被删除。

5.Jtest可进行认为忽略和删除特定错误的报告信息,通过打开Jtask窗口,选中希望忽略或者删除的违反编码规范记录后右击选择相应的Suppress Task或者Delete。在弹出的 Reason for the suppression 对话框中填写忽略原因,点击 OK。

以上就是初步学习Jtest测试工具后的小实践,Jtest是一款非常实用的工具,相信在未来会有更多使用Jtest进行实践和深入了解Jtest的机会。

原文地址:https://www.cnblogs.com/1759103-LSJ/p/10965113.html

时间: 2024-08-07 23:23:53

测试工具Jtest:用于代码优化和测试——《软件工程综合实践专题》第四次个人博客的相关文章

《软件工程综合实践专题》——1程序简单测试与升级

<软件工程综合实践专题> ———程序简单测试与升级 1759233 目录 <软件工程综合实践专题>... 1 ———程序简单测试与升级... 1 1.  程序代码:... 2 2.  代码解读:... 2 3.  需求增加:... 2 4.  新增需求的测试用例:[可能写的不好,因为软件测试这学期才开始学习]... 3 5.增量开发... 4 6.收获和不足... 9 1.   程序代码: 2.   代码解读: Python是一门很强大的语言主要是因为它包含了很多使用的库,这里的程

《软件工程综合实践专题》 ——程序的理解与评价

该网上购书系统包含有三个类,分别是图书类.用户类.订单类. 图书类具有添加.读取.删除.搜索.查看.修改图书星系的功能.用户类包含读取.删除.搜索.查找用户信息及查看该用户的订单信息的功能.订单类包括:将用户.图书信息输入到订单信息中.选购图书.搜索.查找订单. 在主程序中,可以选择管理员身份登录或者用户身份登录.管理员具有添加.读取.删除.修改图书信息及查看.删除用户信息.订单信息的功能.用户可以查看图书信息.购书.查看订单信息及结算订单. 该系统实现了图书的管理与发布.订单处理.购物.网上提

《软件工程综合实践专题》

购买图书系统的评价与建议 一.     来源 来自17级软工1班陶彦婷和李思佳大一小学期作品. 二.系统功能介绍 此系统是一个简单的购物结账系统,主要用于用户购买图书并得到自己的订单信息,包括5个主要功能:查找购书人信息,查找全部图书信息,查找指定图书,购书和查询订单信息. 2-1系统五大功能 此系统用户是购书人,分为三个等级:普通,会员和贵宾.购书人可以查看自己的信息:可以通过购书界面获得自己所想购买的图书的价格:选择自己的等级,然后输入自己的编号就可以得出相应折扣后的价格:还可以查看自己的订

《软件工程综合实践》学习内容3

软件工程综合实践转眼已经接近尾声了,通过这九天的学习,我们可以说是收获颇丰. 在实践的最后几天,我们一步一步地完善网页页面,在网上找到相应的素材对其进行美工操作.网上的素材千千万万,但是找到合适的素材却不简单,好在经过一番耐心寻找之后,终于找到合适的代码.经过修改完善之后,我们的主要代码如下: (1)登陆操作的代码 <%@ page language="java" import="java.util.*" pageEncoding="utf-8&qu

软件工程综合实践心得(1)

软件工程综合实践心得(1) mysql 使用 sql 文的使用(增.删.改.查询) 创建数据库    mybatis a1.  表的创建   保存的表名  userinfo userid int 11 选中 username char 20 pwd char 20 CREATE TABLE `userinfo` ( `userid` int(11) NOT NULL auto_increment, `username` char(20) default NULL, `pwd` char(20)

软件工程综合实践(2)

软件工程综合实践(2) LoginAction  到底做了什么? 1.     通过String username = request.getParameter("username"); 获取了页面当中输入的用户名 2.     有可能获取到乱码,那可以通过 username = new String (username.getBytes("ISO-8859-1"),"utf-8"); 转码   如果 获取的信息不是乱码,那你就不要转码了,否则会

软件工程综合实践(1)

软件工程综合实践(1) 1.学习回顾  mysql 使用 a.  sql 文的使用(增.删.改.查询) 创建数据库    mybatis a1. 表的创建   保存的表名  userinfo userid int 11 选中 username char 20 pwd char 20 CREATE TABLE `userinfo` ( `userid` int(11) NOT NULL auto_increment, `username` char(20) default NULL, `pwd`

《软件工程综合实践》学习内容2

软件工程综合实践又过去了三天,学习了MVC.servelt(前后台交互)等相关内容,每天学习的内容都在更进一步,复杂难懂的东西也越来越多.好在老师十分耐心,在比较复杂难度的地方总会添加注释方便我们理解代码,还会向我们推荐一些网站学习. 在第四天,我们继续对代码进行拓展补充,使网页的功能更加完善,网页页面也初见端倪,可以进行简单的登录操作. 具体的主要代码如下: <%@ page language="java" import="java.util.*" page

软件工程综合实践的第二次实验报告

队伍:阙定1757127,李铮达1759118 这次是软件工程综合实践的第二次实验,本次任务是结对编程,就是找一个小伙伴一起写代码,一人写代码一人复审代码,这样可以更快的找出代码的错误,然后立即更改,提高开发效率. 下面是老师发布的任务截图 讨论分析 拿到任务后,我们先考虑用哪种编程语言来写,直接用较为基础的C或C++编写即可,因为逻辑较为简单,且不需要涉及面向对象的问题.然后开始分析用什么方法来实现,以及如何实现.讨论持续了一整天,因为白天有课,所以我们都是用零星的时间来讨论的. 下面是周二中