客户端/服务器Windows桌面应用程序的自动集成测试

时间:2014-12-03 15:06:26

标签: continuous-integration integration-testing chef cruisecontrol.net continuous-delivery

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

  • 将来我们会想要添加更多功能和更多测试,以及 曾经是一个简单的脚本很快就会爆炸(像往常一样),所以我想要 最小化自定义脚本,如果我需要编写脚本,我 更喜欢bash / cygwin(我不熟悉Python或Ruby)。
  • 我想要一个能够报告当前进度的网络信息中心,以及是否 失败的事情 - 显示日志
  • 我需要一些主管来监控被测试的应用程序 报告是否挂起或崩溃
  • 我们还需要在Linux上测试它
  • 理想情况下,我想在PC之间协调一些测试步骤 (例如,在PC1上运行测试X并在PC2上并行测试Y,等到它们 两个完成,然后在PC1上运行测试Z,同时监控没有 在PC2上崩溃等)

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

我们最新的发展是在厨房放置一台大电视,并附上测试结果摘要,以便人们更容易了解他们破坏了什么!

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