如果使用传统的xUnit风格的方法(如各种转换器,XSLT等)很难测试,我经常会使用基于输出比较的技术。测试程序在第一次运行时会产生一些输出。我确定它是正确的,并保存以备后用。在下面的运行中,程序将新输出与先前保存的输出进行比较,并显示任何差异。之后,我可以修复程序以使输出再次匹配或(,这很重要!)我可以接受更改,以便用于比较的数据被更新。是否有我使用的测试技术的名称?
当然,还有其他方面,例如使用不同的预处理进行比较和比较,例如, XML使用规范表示法进行比较,首先解析JSON,使用lisp阅读器等读取s表达式,而使用漂亮的表示法表示差异。可以使用某些指定的转换(如删除部分输出)来重新运行比较。
我使用这样的技术,用于python,其中驱动程序使用测试脚本中定义的请求调用WSGI应用程序,以及一些Common Lisp程序,包括从随机/断开的HTML转换为专有XML格式和线性加速器控制系统其中控制算法在使用产生一些输出的设备模拟器执行时产生基于s-expr的输出。
问题是,我不知道这种技术的确切名称是什么。我知道它在其他地方使用,甚至有一个名为izh-test的测试框架使用类似的东西。但我从来没有听说过任何具体的名字,包括'接受变化'部分。数据驱动的测试?似乎不完全。有什么建议么?
弥补它的名字,关于它的博客,写一篇文章,维基百科条目和一本关于它的书。你可以在围绕它的测试会议中旅行。严重的是,它是如何工作的。 – 2010-09-24 06:34:25