1

我的团队正在开发用于客户端-服务器设置的桌面应用程序(混合 C++/Tcl)。目前它仅适用于 Windows,但很快我们需要将其移植到 Linux。CruiseControl.NET 每晚都会从 SVN 中的源代码构建它,并将其打包到 NSIS 安装程序中,但我们没有要运行的自动化测试。
添加任何单元测试几乎是不可能的,但应用程序的集成测试很容易,因为它已经大量基于脚本。
主要任务是将应用程序安装到 3 台 PC 上,配置它(包括复制一些文件),运行它,监控可能的崩溃,等待集成测试完成,收集摘要,发送电子邮件。可以使用一堆自定义 PowerShell 脚本来完成,但是

  • 将来我们会想要添加更多的功能和更多的测试,而过去的简单脚本很快就会崩溃(像往常一样),所以我想尽量减少自定义脚本,如果我需要编写脚本,我更喜欢 bash/cygwin (我不熟悉 Python 或 Ruby)。
  • 我想要一个可以报告当前进度的 Web 仪表板,如果出现故障 - 显示日志
  • 我需要一些主管来监控被测应用程序并报告它是否挂起或崩溃
  • 我们还需要在 Linux 上对其进行测试
  • 理想情况下,我想在 PC 之间编排一些测试步骤(例如,在 PC1 上并行运行测试 X,在 PC2 上并行测试 Y,等到它们都完成,然后在 PC1 上运行测试 Z,同时监控 PC2 上没有崩溃等)

因此,我正在寻找一种 COTS 工具/工具集来帮助我做到这一点并且没有陡峭的学习曲线。理想情况下,免费,但如果它真的很好并且价格合理,我的公司可能会购买许可证。
当 NSIS 安装程序准备好时,应该从 CruiseControl.NET 触发该过程,然后执行上述所有操作。基本上,它至少应该允许远程安装软件、运行自定义脚本并拥有一个 Web 仪表板。
显然,可以使用像 Chef 这样的 SCCM 工具,但到目前为止,它们都不支持 Windows 服务器,只支持节点。我想避免为此设置 Linux VM,尽管我可以做到,如果我别无选择的话。此外,Chef 似乎有点矫枉过正 - 对 10k 机器有好处,但我只有 3 台……将来可能有 5 台。而且我对编排分布式测试的机会特别好奇。
StackOverflow 和互联网上的大多数类似问题都与 Web 应用程序、Java 容器、Maven 等有关,并且有很多工具和插件可供这些工具评估。
提前致谢。

4

2 回答 2

1

在您的测试机器上安装 ccnet。让那些 ccnet 项目监听一个在新安装程序准备好时被编辑的文件。让测试机器安装新的安装程序并运行测试。你去吧。ccnet 发送电子邮件,以便您进行基本报告。

使用 gSOAP 通过 Web 服务将测试结果报告到数据库中(这就是我们所做的)。对于 linux,如果必须,您可以运行 java Cruisecontrol。编写一个启用 gSOAP 的测试控制器程序来报告来自测试机器的测试结果。一个小的 c++ 应用程序就可以了。然后编写一个网站(我们使用 ASP.NET)来查询数据库(Postgresql)并显示结果。让测试机器通过 SVN 自动更新,以获取对配置的最新更改。使用南特。Nant 远远优于仅使用 ccnet 运行任务。Nant 通过 ccnet 工作。将 XML、XSL 和 CSS 与 ccnet 一起使用,使测试电子邮件具有您想要的信息(新通过、新失败、SVN 与代码库的差异等...)

我们最新的发展是在厨房里放置一台带有测试结果摘要的大电视,这样人们就可以更容易地知道他们弄坏了什么!

我要开始工作的第一件事是测试机器监听新安装程序,安装它,运行一些基本测试并将结果通过电子邮件发送回来。将 ccnet 和 nant 配置放入版本控制中,并在测试机器上自动更新,这样您就不必在每次进行更改时登录每台测试机器并进行更新。

于 2014-12-10T17:04:52.547 回答
0

这是非常广泛的,非常接近基于意见的。Chef 可以处理将应用程序部署到测试机器等步骤,但它不是 GUI 测试框架,因此您需要其他东西来处理它。Jenkins 支持将测试分发到 Windows 主机,因此这在这方面似乎是一个不错的选择,但在多节点测试或它们之间的编排方面并不是很好。我怀疑您需要根据要求自己编写大部分内容。

于 2014-12-04T00:06:52.007 回答