65.9K
CodeProject 正在变化。 阅读更多。
Home

RemoteInstall:在 VMWare 基础设施上自动测试 Windows 安装程序

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.33/5 (3投票s)

2009年11月24日

Eclipse

2分钟阅读

viewsIcon

31214

downloadIcon

301

一个使用虚拟化来测试 Windows 安装程序的框架。

引言

RemoteInstall 是一种实用的测试方法,并且在 我的日常工作中非常成功。我们经历了几个测试框架迭代,但无法进行任何自动化。我们尝试了昂贵的系统和开源软件。我们花了钱。我们将自动化放在首位。但它仍然是一条死胡同。

与此同时,我们疯狂地编写 MSI 安装程序。我们必须处理一个大型分布式系统,该系统具有很高的部署失败率,该系统由许多组件组成。我们有数百个升级路径,很明显我们需要自动化它。看到公司的自动化工作陷入僵局,我决定不再尝试另一个昂贵的测试系统,而是让实习生编写一个可以利用 VMWare 基础设施的简单工具。

背景

在它开始时,RemoteInstall 做以下事情

for each virtual machine {
 for each snapshot {
  restore the snapshot
  install the software
  report success or failure
 }
}

够简单吗?您可以通过一个简单的配置文件开箱即用地获得此行为。这是 CruiseControl 中的输出外观。这将测试应用程序的全新安装和从各种已知快照的升级。

结果非常棒。对于成千上万的客户来说,我们在生产中的部署失败几乎为零。

然后,最终,我们在这方面做得很好,添加了许多有用的功能。如果您有多个虚拟机,则可以并行执行此操作。 RI 与构建自动化集成。它可以从网络共享等位置获取您的最新安装程序。

接下来,我们想到:为什么不在每次成功安装后运行一些测试?所以我们添加了任务和一些简单的集成。因此,您可以在远程计算机上安装后执行 JUnit 或 NUnit 测试。

NUnitSample.jpg

这使其成为一个成熟的测试框架。我们现在用 C# 和 Java 编写测试,并通过 RI 远程运行它们,以针对多个配置运行。

实现

最新的 C# 源代码可以在 Subversion 中找到:https://remoteinstall.svn.codeplex.com/svn。以下是一些有趣的代码方面,可帮助您入门。

RemoteInstall 库是一种模块化方法,它使用配置文件中的声明性语法来驱动执行。

  • 安装程序是单个安装程序,无论是 MSI 还是 DNI。
  • 驱动程序执行实际安装。
  • 驱动程序任务按顺序执行驱动程序(安装程序)。
  • 任务是插入序列中的附加命令。
  • 虚拟机电源驱动程序管理单个已启动的虚拟机快照。

VMWareTasks 用于控制 VMWare 虚拟机和快照。

RemoteInstaller 是一个命令行工具,它使用 RemoteInstall 库来驱动执行。

使用代码

从 CodePlex 下载 RemoteInstall 的最新版本。打开帮助文件并按照入门指南进行操作。

历史

  • 2009/11/24:初始版本。
© . All rights reserved.