3

我不敢相信我是第一个经历这个思考过程的人,所以我想知道是否有人可以帮助我解决这个问题。

现状:开发者写一个网站,运维部署它。部署后,开发人员会对其进行烟雾测试,以确保部署顺利进行。

对我来说这感觉不对,它本质上意味着需要两个人来部署一个应用程序;在我们的案例中,这两个人位于地球的相反两侧,时区开始发挥作用,造成严重破坏。但事实仍然是,开发人员知道最少的测试集是什么,并且可能会随着时间而改变(尤其是对于我们应用程序的 Web 服务部分)。操作,尽管对他们有充分的尊重(他们自己会这么说),但他们是需要一组指令才能遵循的按钮推动者。

手动解决方案是我们记录测试用例和操作,每次部署时都遵循该文档。这听起来很痛苦,而且他们可能会将不同的版本部署到不同的环境(特别是 UAT 和生产环境),并且可能需要为每个环境提供不同的指令集。

最重要的是,我们近期的一个计划是拥有一个自动化的日常部署环境,因此我们必须指导计算机如何部署我们的应用程序的给定版本。我非常想添加有关如何对应用程序进行烟雾测试的说明。

现在开发人员更擅长为计算机记录指令而不是为人类记录指令,因此显而易见的解决方案似乎是使用 nUnit 的组合(我知道这些本身不是单元测试,但它是为目的而构建的测试runner) 和 Watin 或 Selenium API 来运行明显的浏览器步骤并调用 Web 服务并向操作人员解释如何运行这些单元测试。我能做到;我大部分已经做到了。

但是,如果我能让这个过程变得更简单,那不是很好吗?

此时,运维人员和计算机必须知道哪一组测试与应用程序的哪个版本相关,并告诉 nUnit 运行程序它应该指向哪个基本 URL(例如,www.example.com = v3. 2 或 test.example.com = v3.3)。

如果测试运行程序本身有办法给它一个基本 URL 并让它下载一个 zip 文件,解压缩它并在运行它在那里找到的任何测试装置之前自动编辑一个配置文件,那不是更好吗?

有没有可以做到这一点的开源应用程序?有需要吗?有没有使用 nUnit 以外的东西的解决方案,也许是 Fitnesse?

作为记录,我首先关注的是基于 .NET 的工具,因为大多数开发人员主要是 .NET 开发人员,但我们并没有与之结婚。如果存在使用其他语言编写测试的此类工具,我们会很高兴地适应,只要有适用于 Windows 的测试运行程序。

4

7 回答 7

2

我曾在 ASP.NET 应用程序的冒烟测试编写器中工作。我们使用了QuickTest Pro,测试运行的自动化是通过Quality Center完成的(它被称为 Test Director。)。这涉及编写数百个测试脚本来自动化 Web 浏览器与 Web 应用程序的交互。这些测试在我们的生产服务器上推出之前验证构建。Quality Center 允许您定义测试机器的“池”,以允许您以多线程方式运行大量测试脚本。

更简单的冒烟测试是记录应用程序产生的所有错误/异常并针对系统运行蜘蛛。这不会获得非常“深度”的代码覆盖率,但冒烟测试并不意味着深度代码覆盖率。此错误日志记录应该是生产应用程序的一部分,以处理出现的错误。错误总是会从裂缝中溜走,遗憾的是,最好的测试人员将是您的用户。

于 2010-04-16T19:15:09.877 回答
2

我过去曾使用 Selenium 为 Web 部署进行此类冒烟测试。您可以编写一套测试脚本,然后在不同环境中针对同一站点运行。

于 2010-04-16T19:23:07.783 回答
1

我也对这个序列进行了一些思考,并建议采用声明性方法进行部署和验证,请参阅此处了解我的想法,

http://jimblogdog.blogspot.co.uk/2010/10/introducingdeclarative-deployment.html

我还为我的开源项目 Wolfpack 创建了一些插件来自动化整个过程。本质上,您将“部署冒烟测试”打包为 NuGet 包并将其发布到您的私有 NuGet 源。Wolfpack 将自动检测包的新版本并下载它,连同 NUnit.Runner NuGet 包并解压所有文件。然后它将使用 NUnit 控制台运行程序静默运行您的测试,并将结果解析为您可以通过电子邮件、咆哮、hipchat 等方式接收的警报。

http://wolfpack.codeplex.com/

http://wolfpackcontrib.codeplex.com/wikipage?title=NUnitDeploymentPublisher

于 2012-08-22T11:32:13.653 回答
0

Telerik 有一些免费和非免费的 UI 测试工具,任何可能对此有所帮助的人都可以自动运行这些工具。

于 2010-04-16T19:44:30.870 回答
0

我不知道您使用的是哪个 VCS,但您可以编写一个解决方案,通过中介服务从 VCS 中提取特定于版本的配置文件。

您可以编写一个 powershell 脚本或应用程序,从 Web 服务或 Web 应用程序下载配置文件,并将测试 URL 作为参数传递。服务器或应用程序将在可以访问 VCS 的计算机上运行,​​因此它可以返回文件内容。一旦检索到,脚本或应用程序就可以启动测试。

于 2010-04-16T20:21:28.947 回答
-2

通常,您的 nUnit 测试就足够了,如果它们都通过了,那么代码库应该可以正常工作。如果您通过 nUnit 测试部署代码并在网站上遇到故障,那么出于同样的原因,您需要添加一个同样失败的附加 nUnit。然后,当您修复代码以使 nUnit 传递时,您就知道您已经修复了已部署代码所存在的问题。出于这个原因,大多数自动构建系统可以配置为首先自动运行所有 nUnit 测试,然后如果任何测试失败,则“失败”构建。

于 2010-04-16T19:07:00.013 回答
-2

在浪费了很多时间试图制定一个更简单的解决方案之后,我们最终向运维团队介绍了如何使用 NUnit 的 Gui runner。这比预期的要容易,并且工作正常。

于 2010-08-12T11:29:50.010 回答