Java三代单元测试工具的比较[转贴]

06-09-14 bluemountain
第一代:JUnit :

优点:1.开源

2.测试后代码的质量提高明显

3.JUnit是Java写的

4.开发者写出测试代码。它证明代码需要做什么。如果有Bug会报错。

缺点:1。完全手动工作

2.为达到覆盖率,每100行代码写200-400行的测试代码

3.需要写很多的setup()、 shutdown()方法

4.测试代码难以维护,代码改变后,测试代码就无用了。

5.测试的覆盖率很难上去,测试只是静态的,线型的,只能测试有限的Path

第二代基于生成JUnit 测试脚本的: JTest.

优点:1.出来5年了,很多IDE支持。

2.产生的测试代码(JUnit)近似开发者手写的。

3.自动产生测试代码,减少了写JUnit测试代码的时间。

4.静态的代码分析。

缺点:1。证明了代码做了什么,而不是保证了“需要做什么”给人安全的错觉。

Example:

• Method to add 2 numbers together

• Developer mistakenly write code: A+B=A

• Script generator will write tests to validate that:

1+1=1, 4+6=4,10+20=10

• When tests run, they will all pass!

• Only perfect code will generate valid tests

2.开发者必需手动复查数以千行的JUnit代码。看正确与否。

3.复查机器产生的代码是很痛苦的。

4.很多重复的JUnit代码,到处都有。

5.报告的信息过多,不正确的测试将无法获取Bug。

6.它使用了私有的库,而不是纯的JUnit。

7.几乎不支持迭代/敏捷的开发模型。

(1) 同步/再生问题使它们没有办法使用。

(2)手动维护的话,失去了原有的自动化的意义。

8.要写许多的注释、说明在代码中。

9.静态的技术已经不能满足Java了。

(1)传统的静态的数据流分析只适合结构化的编码。

(2)对简单静态的代码有用,对JAVA复杂的代码用处不大。

(3)interface, abstract, private的类、方法都不可测。

10.不可动态生成测试用例的弊端:

If(date day=SystemDate.day)and

(date month=SystemDate.month) then

return true;

else return false;

像这样,今天是 return true 明天就是false;

11. 特殊用法:(1)生成的脚本是通过一个生产框架来完成的。

(2)生成的脚本只能最小的覆盖率。

(3)要提高覆盖率要用手动.

(4)脚本的维护是手工而且很容易变得陈旧。失去自动化的意义

第三代:全新的自动化单元测试:Agitar Software

Agitator的优点:

1. 完全不用写和维护测试脚本。

2.完全的面向对象的测试。

3.保证了代码“需要做什么”

4.把代码运行的真实情况(行为)直接反馈给开发者。

5.能有效地动态地生成数据(测试用例),对JAVA进行动态分析。

6.Agitation(数据分析,静态分析,动态分析)。

7.Observation暴露代码运行情况,simple click断言就生成了。

8.Factoies:200个不同的factory类型来规范输入,匹配逻辑。

9.Pattion: 规范输出,使逻辑更清晰。

10.Snapshort, stacktarce,跟踪代码,查找BUG,更容易。

11.自动创建智能MOCK对象,提供尽可能的代码

12.测试配置以XML格式保存,耐用,易改变,最有效的测试资产。

Dashboard的优点:

1. 标准和HTML表现形式,易于广泛访问和存取。

2. 清楚地看出软件的健康和测试努力的状态。

3. 项目汇总――复杂度,使用情况,风险情况、测试质量,覆盖率。测试点通过/失败的状态。

4. 所有权的分配,每个人,每个问题的负责划分非常清楚。

5. 分等级视图,提供包、类的细节信息,只要一,一目了然。

bluemountain
2006-09-14 11:28
Junit与Jtest在网上能搜索到大量的资料

Agitar产品可以上其网站了解更多详www.agitar.com 或www.madetek.com有相关的中文信息。

galaxystar
2006-09-20 18:05
乱说的!不代表国内大部分公司!

univerz
2007-02-07 15:48
前面的两点写得不错,关于agitator就只提到优点没有提到缺点。

猜你喜欢