因此,我已成功使用 Vagrant 和 Chef 将 MSI 安装到 Windows 来宾 VM 上。哇!然后,我用 ServerSpec 编写了一些测试,检查在安装 MSI 后,文件是否被放入了适当的位置等等。
我的问题是:在接受测试安装这样的包时,我应该有什么样的目标?我应该检查特定文件吗?但是如果有很多文件怎么办?还是检查每个文件的级别太低?太接近实现细节?在为成功的软件包安装编写验收测试时,我应该处于什么级别?
因此,我已成功使用 Vagrant 和 Chef 将 MSI 安装到 Windows 来宾 VM 上。哇!然后,我用 ServerSpec 编写了一些测试,检查在安装 MSI 后,文件是否被放入了适当的位置等等。
我的问题是:在接受测试安装这样的包时,我应该有什么样的目标?我应该检查特定文件吗?但是如果有很多文件怎么办?还是检查每个文件的级别太低?太接近实现细节?在为成功的软件包安装编写验收测试时,我应该处于什么级别?
我使用测试驱动开发,所以我通常在我的配方中对每个资源进行一个测试。我先写测试。所以如果我的基本设计是:
然后我会在我的 serverspec 中编写三个测试。
package
以确保安装发生file
以确保配置文件存在,具有正确的模式、所有者、组和内容service
服务是否正在运行。然后我会使用package
,file
或template
, 和service
资源来编写我的食谱。
就个人而言,我从未订阅过这种级别的测试。Windows Installer 已经有 15 年多的历史了,而且非常可预测。它已经是一种声明性语言,如果您开始编写测试来验证结果,那么您基本上是在维护两组不同的数据。也许我错了,你自己决定吧。
就我个人而言,我会编写测试来验证 1 个条目是否在“添加删除程序”中,并且它是您期望的版本。然后,您可能会走得更远,以验证卸载是否“干净”。您可能必须列出已知用户数据的例外情况。我能想到的唯一其他测试是安装新的和安装旧的,升级新的让你到相同的文件集。
然后我会编写测试来验证应用程序功能本身。如果应用程序有效,则安装良好。如果它失败,根本原因,修复应用程序或安装程序并冲洗并重复。