如果您可以使用文本与您的软件进行交流,那么我在过去使用expect滚动我自己的框架的项目中取得了成功。
我制作的框架使用简单的 xUnit 样式标记将测试存储为 XML 文件。然后使用样式表将 xml 文件转换为可执行测试。我最终将测试转换为 Tcl/Expect,但您可以将它们转换为任何东西。事实上,如果您愿意,您可以根据需要将它们转换成多种语言。
当他们询问为什么我会选择 Tcl 而不是一些更现代的语言时,有几个人好心地提醒我(就像你提醒你可怜的溺爱的祖父关于他下巴上的口水一样)我们正处于 21世纪。事实证明,出于这种测试的目的,我还没有找到更好的选择。Tcl 语言仍然在这个领域发挥作用。相信我,我没有一天醒来对自己说“我自己,我需要一个用每个人都会讨厌的脚本语言实现的测试框架!”
信不信由你,我真的在寻找一种工具,任何工具,它具有以下特点:
- 跨平台。这是没有商量余地的。我们做了很多跨平台开发,我们已经使用了太多不支持跨平台开发的工具。
- 简单的语法。说出你对 Tcl 的要求,但语法非常规则。我知道一些本机代码甚至可能会渗入 XML 文件(最初它只是 Tcl,没有 XML),我希望非程序员可以理解语法。这种简单性是 Tcl 的核心优势。事实证明,它也使转换 XML 变得更加容易。
- 自由的。我最喜欢的价格;-)
- 将测试编写为简单的 xml 文件允许非程序员编写客户接受级别测试 - 无需编程。
- 轻松扩展。
我没有打算回家把它发展到我有的程度。最初,我查看了已建立的测试框架,例如DejaGnu和android。大多数情况下,它们的功能太多了。它们的功能如此之多,以至于我认为如果没有大量的前期培训,项目将不会很容易开始使用。看着DejaGnu,让我对 Tcl 产生了兴趣,在简单地看了一下tcltest 之后,我几乎放弃了。DejaGnu 和 tcltest 都假设您是高级 Tcl 脚本编写者,我认为我公司的任何人都不会是。此外,我希望测试框架(如果可能的话)支持 xUnit 类型的测试框架,而这些工具都没有。
最终我找到了TclTkUnit,这是一个基于 Tcl 的测试框架,它是按照 xUnit 线设计的。意识到我可以在 Expect 中而不是 tclsh 中运行 TclTkUnit 并获得我需要的一切,这只是一个短暂的逻辑飞跃。
随着它最终被更多地使用,我添加了另一个样式表以在 Web 浏览器中很好地呈现 xml 文件。测试框架生成了它自己的文档。
在另一个项目中,我们需要一个非常基本的 sim / stim 环境来模拟一个人在我们没有的硬件上投掷开关和按下按钮。破解测试框架以充当模拟器只需要几个小时。创建框架需要一些工作,但我们认为从长远来看它确实带来了好处。我真的相信,创建自己的工具会产生这些不可预见的后果,这就是为什么敏捷社区和 XP 中的人们一直如此强烈支持的原因。