java

位置:IT落伍者 >> java >> 浏览文章

不仅仅只有JUnit


发布日期:2022年03月29日
 
不仅仅只有JUnit

今年忙乎了大半年的自动化测试写了一个测试框架一直就想写点东西总结一下由于懒总是没有心性来写些东西今天无聊乘机写点不然又不知猴年马月才能动笔了^_^

本文不想讨论自动化测试的利弊Web测试和性能测试也不是本文的讨论范畴本文只讨论单元测试以及集成测试阶段的问题只谈了JUnit的一些缺陷以及我们是否有更好的选择以及开发者的测试是否能让测试人员也能玩得动呢如果你没兴趣不防就此别过以免你后悔

言归正传说到用JUnit进行单元测试对于Java开发人员来说再熟悉不过了即使

没有用过也一定听过吧

在项目的过程中如果你是开发人员你也许有这样的想法偶们知道用JUnit来写单元测试的好处可偶们没时间写功能够用了可还是繁琐一开始还用的可后来忙于改代码接口改动又大也就没时间坚持用下去了

如果你是测试人员你或许会这样想偶觉得开发人员写的单元测试可能过于粗略很可能有些边界没检查到但我对Java不太熟悉无法通过修改他们的测试代码来进行更完善的测试只能通过现象猜本质在功能测试阶段多点几下鼠标也就可能出错了

也许我猜错了我怎么能懂得测试人员的心思呢实际上我都不是一个称职的测试人员

我们来看看JUnit都有哪些令人不爽的地方

繁琐维护的成本不低XP提倡为每个方法都加一个测试方法不少XP的追随者也是真能做到的但当项目的代码行达到万以上时为每个方法增加一个测试方法令人不爽的是需要几乎跟源码一样多的测试代码甚至更多老大不是我不想做我是做不完啊

测试代码的质量不好检查如果你是一个敬业的人相信不会有这样的问题但是人都有惰性尤其是日复一日地重复写代码的你当面临加班写测试代码和回家看球赛的选择时我想还是选看球赛的人大有人在反正简单得很不会出错的关键的是头儿不会知道的

在单元测试阶段的效果比较明显在其它测试阶段几乎就难于胜任了也难怪望文生意JUnit本来就是Java Unit测试嘛你XXX要求还真高

关键不是我要求高是我们这些coding的共同敌人要求高啊所以问题不能不解决于是就有一些先驱们做了一些尝试

Software Agitator

什么是Software Agitator?当年JUnit的缔造者Kent Beck的又一力作它是一个自动的运行软件代码并提供软件代码行为观察报告的一种方法它帮助开发人员单元测试他们的代码而不用手动编写测试代码使用该方法开发人员将创造出更好更容易维护和健康的软件产生很少的bug具有更高的生产效率因为他们花了很少的时间去分析失败和改写他们的代码

Software Agitator的主要特性有

自动生成测试数据自动创建智能的Mock 对象提供尽可能多的代码覆盖

全面的报告代码覆盖率报告方法输出语句行和条件覆盖率

超过个Factory库也可以通过简单的Java API 延伸factory控制输入数据和

转化数据格式

支持TDD(测试驱动开发)

支持JUnit等

支持Regression测试(也就老外这么多名词说白了就是测试用例在不同的项目中

重复利用)

存储信息在XML文件里(包括用例报告)不需要数据库

自动检测代码标准违规

完全集成Eclipse开发环境

显然Agitator的功能非常强大阵对性强个人觉得起码有如下好处

基于XML来描述用例信息比robot和Quest Test都易于使用这使测试人员都能参与其中题外话我一直想不通robot和Quest Test为何要自己发明一套自己的脚本?除了自我封闭排除异己之外实在没有其它有说服力的道理可言

它能大大减轻了开发人员的重复劳动这是开发人员不能坚持用JUnit进行测试的罪魁啊基本上弥补了JUnit的缺陷真不愧为JUnit的始俑者一句话懒人只需要一个理由

测试报告全面而且是xml形式的通过测试报告也能比较可靠地检查质量

Agitator的缺陷也明显

不适合于Web测试和GUI测试

它不是免费的这是最大的缺点了吧如果能象JUnit那样免费……我想得也太 美了

可惜拿不到Agitator的试用版不然能做些例子但能给我们不少启发

测试框架需要进一步减轻开发人员的工作量

测试用例的开放性(XML格式)别只顾自己玩代码让开发经验欠缺的测试人员也玩玩 如何?自动化测试有必要学习其他脚本语言吗?除了商业利益的因素外没有任何令人信服的理由

测试的智能化全面的报告支持Regression测试自动定时执行等等

是啊真的是个好东东啊难道就没有其它免费的吗?我还真没发现如果你知道请告诉我谢谢

不过如果你能读到这为了报答你的拜读之情就介绍一款免费的测试框架以致不会令你太失望

上一篇:hibernate的多条件动态查询

下一篇:Struts里一个简单好用的过滤器