2015-10-20 44 views
0

现在,我的编码UI测试使用它们的app.config来确定它们执行的域,它与环境具有1-1的关系。为了简化计算:在多种环境下执行编码的UI测试

  • www.test.com
  • www.UAT.com
  • www.prod.com

和App.config中我有类似:

<configuration> 
    <appSettings> 
     <add key="EnvironmentURLMod" value ="test"/> 

为了在不同的环境下运行测试,我手动更改了运行之间的值。比如我这样打开浏览器:

browserWindow.NavigateToUrl(new Uri("http://www." 
       + ConfigurationManager.AppSettings.Get("EnvironmentURLMod") 
       + ".com")); 

显然这样不雅。我想我有一个愿景,我们会为每次运行放入一个新的app.config,但作为扰流器,这个测试将在〜10个环境中运行,而不是3个,并且它可能运行的环境可能会改变。

我知道我可以分离这些环境URL修改另一个XML文件,并测试顺序访问它们在data-driven scenario。但即使这似乎不是我所需要的,因为如果一个环境失败了,那么整个测试就会崩溃。我已经看到Environment Variables作为一个建议,但这需要为每个环境创建一个测试代理,修改其注册表,并在每个环境中运行测试。如果确实如此,但它看起来像是一个巨大的虚拟机带宽,用于收集字符串。

在一个理想的世界,我想这些URL MODS绑成类似测试设置,MTM环境,或构建。我想为每个域执行一套测试并单独报告。

总之,参数化这些测试的最佳方法是什么?有没有一种方法不涉及排队新建或删除配置文件?数据驱动测试的答案是什么?我是否错误地构建了我的解决方案?这似乎应该是这样一个常见的情况,但我的谷歌搜索并不能让我在那里。

任何及所有的帮助表示赞赏。

回答

0

这里的答案是数据驱动的测试,可惜没有总银弹即使有选项“最要好”。

使用的任何数据源,您可以通过在多种环境中的测试(或你能够想到的任何其他变量),并且基本上迭代返回3个不同的试验结果 - 一个用于每个排列或数据行。 但是您必须更新您的断言才能显示您当前正在执行的环境,因为测试结果仅显示“数据行0”或类似的默认设置。如果测试通过,您将无法知道数据行中实际成功运行的内容,,除非您将此信息嵌入到操作日志中!我很幸运,我的用例自动执行这个操作,因为我只是使用URL Mod,但其他人可能需要自己做。

为了让我们测试在什么环境对即时变化,我们选择使用一个TestCase的数据源。这具有很大的灵活性 - 可能比使用数据库或XML更多 - 但它有其自身的缺点。像所有数据驱动的场景一样,您必须将测试用例ID本质地“硬编码”到您的测试方法之上的装饰器中(因为它被认为是属性)。我希望我们可以在我们想改变我们使用的测试用例的时候将一个app.config放到构建放置位置,至少,但它看起来像我们将不得不在整个解决方案中进行查找+替换。

如果有人知道更好的方法来解耦测试ID或连接字符串的任何其他部分与代码,我会在这里给你一个答案。对于其他人,您可以在MSDN上找到更多信息。