.NET自动探索式测试工具:Pex

文/Al Tenhundfeld  译/霍泰稳 出处/Infoq

Pex是微软研究院的一个白盒测试生成工具。不像我们平时在给定的方法中为每个执行路径手写独立测试,Pex允许开发人员编写单独的参数化测试方法。这样Pex就能生成一套标准的单元测试,在目标方法里测试执行路径。Pex一个指令一个指令地分析.NET代码,解释代码执行时的动作,然后“以一种完全自动的方式,计算出那些能触发边角代码的相关测试输入。”


引用:
给定一个手写的参数化单元测试,Pex完全自动地分析代码,来决定相关的测试输入。其结果就是生成一个有着高度代码覆盖的传统单元测试,另外,Pex还会建议程序员如何去修复所发现的Bug。

Pex实际上并没有减少开发人员多少工作量,他们依然需要手写那些定义和覆盖了方法基本行为的单元测试,来确保API和函数符合必要用例和用户故事的需求。但是,Pex可被用作一个附加的方法来确保测试充分地覆盖这些实现的代码。在方法中识别不确定的行为和错误时,这个自动探索式测试工具尤其有用。


和其他大多数生成工具一样,Pex在确定的环境下使用效果很好。单元测试驱动(TDD)的设计原则是保持方法简短和可测试,这个原则也让Pex生成的测试更为可读。在实现符合TDD的设计目标时,Pex也是很不错的工具,比如如果Pex为某方法生成了许多复杂的测试,那么这个方法很有可能需要重构。在方法是以基础类型做参数,而不是自定义的对象时,Pex的效果也不错。


Pex默认集成于Visual Studio 2008和MSTest中,但是Pex的扩展允许下载并支持NUnit、MbUnit或者xUnit.Net。另外Pex还基于扩展反射可管理子协议API (Extended Reflection managed profiling API)对监测应用程序的集成提供了支持。


需要提醒的是,Pex目前还只是微软研究院的一个试验项目,不会像微软正式产品一样获得支持。不建议将Pex作为写单元测试的首要选择,但是它的自动测试生成能有效覆盖边缘的用例。

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [软件测试] 的这些文章也感兴趣:

在.NET环境中使用单元测试工具NUnit
qtp里面xml检查点之架构验证(原创)
c#中使用nunit支持数据库单元测试
用NUnit2.1简单实现.net的测试驱动开发(TDD)
Silverlight 2.0 命中测试(HitTest)
.NET自动探索式测试工具:Pex
软件测试与开发(针对想入测试的新同行们)
谁来检查我们的单元测试?NCover2!
Gallio .NET测试自动化平台
[Unit Testing]Introduction On Pex