如果使用传统的xUnit样式方法难以测试,例如各种转换器,XSLT等,我经常使用基于输出比较的技术。测试程序在第一次运行时会产生一些输出。我确保它是正确的并保存以供以后使用。在以下运行中,程序将新输出与先前保存的输出进行比较,并显示任何差异。之后我可以修复程序以使输出再次匹配或(这很重要!)我可以接受更改,以便更新用于比较的数据。
当然,还有其他方面,例如使用不同的预处理进行比较和差异,例如:使用规范表示比较XML,首先解析JSON,使用lisp读取器等读取s表达式,而使用漂亮打印的表示用于差异。可以使用一些指定的转换重新运行比较,例如删除部分输出。
我在python中使用这样的技术,其中驱动程序使用测试脚本中定义的请求调用WSGI应用程序,以及一些Common Lisp程序,包括从随机/破碎HTML到专有XML格式的转换器和线性加速器控制系统,其中控制算法在使用产生一些输出的设备模拟器执行时产生基于s-expr的输出。
问题是,我不知道这种技术的确切名称是什么。我知道它在其他地方使用过,甚至还有一个名为izh-test的测试框架使用类似的东西。但我从来没有听说过任何具体名称,包括“接受改变”部分。数据驱动测试?似乎并不完全。有什么建议吗?
答案 0 :(得分:4)
ABT,或自适应基线测试。您可以建立基线,但可以根据测试结果调整该基线。
ABT的问题在于我完全弥补了这一点。我不确定是否有更广泛使用的名称,但期待阅读其他答案,看看是否有其他人知道。
答案 1 :(得分:0)
你做的是黑匣子测试。
如果您有经过验证的黄金副本(“我确保它是正确的并保存以供以后使用。”)并且在某些时候您决定更换它,您将再次验证它。
在任何情况下,您应该做的是验证新的黄金副本(“我可以接受更改,以便更新用于比较的数据”)。
无论你身处何种情况,它仍然是黑盒测试。你有一个输入,你得到一个输出,你将输出与预期结果进行比较。