Automated tests 谁编写自动化UI测试?开发人员还是测试人员?

Automated tests 谁编写自动化UI测试?开发人员还是测试人员?,automated-tests,regression-testing,ui-testing,Automated Tests,Regression Testing,Ui Testing,我们正处于一个大型项目的初始阶段,并且已经决定某种形式的自动化UI测试可能会对我们有用,但还没有弄清楚这将如何工作 主要目标是自动化应用程序的基本安装和运行,这样,如果开发人员造成重大破坏(例如:应用程序无法安装、网络无法连接、窗口无法显示等),测试人员就不必浪费时间(并为安装和配置破坏的版本而烦恼) 第二个目标是帮助测试人员处理重复性任务 我的问题是:谁应该创建这些类型的测试?我们团队中隐含的假设是测试人员会这样做,但我在网上读到的所有内容似乎都暗示开发人员将创建它们,作为一种“扩展单元测试”

我们正处于一个大型项目的初始阶段,并且已经决定某种形式的自动化UI测试可能会对我们有用,但还没有弄清楚这将如何工作

主要目标是自动化应用程序的基本安装和运行,这样,如果开发人员造成重大破坏(例如:应用程序无法安装、网络无法连接、窗口无法显示等),测试人员就不必浪费时间(并为安装和配置破坏的版本而烦恼)

第二个目标是帮助测试人员处理重复性任务

我的问题是:谁应该创建这些类型的测试?我们团队中隐含的假设是测试人员会这样做,但我在网上读到的所有内容似乎都暗示开发人员将创建它们,作为一种“扩展单元测试”

一些想法:

  • 开发人员似乎能够更好地做到这一点,因为他们知道控件ID、类等,并且对应用程序的工作方式有更好的了解

  • 测试人员的优点是不知道应用程序是如何工作的,因此可以生成可能更有用的测试

  • 我已经使用和编写了一些初始脚本。这非常有效,功能强大,可以做任何事情,但是您需要能够编写代码来编写UI测试

  • 我们尝试过的所有自动化UI测试工具(TestComplete等)似乎都非常复杂和脆弱,虽然测试人员可以使用它们,但需要花费大约100倍的时间,而且它们不断遇到UI测试工具造成的“意外复杂性”

  • 我们的测试人员不会编码,虽然他们非常聪明,但当我建议测试人员可以编写简单的ruby脚本时,我得到的只是一副滑稽的表情(尽管所说的脚本比自动化UI测试工具标准的乱七八糟的按钮和数据网格要容易读写大约100倍)

我非常感谢在开发人员和测试人员团队中尝试UI自动化的其他人的反馈。谁做了什么,做得好吗?提前谢谢


编辑:所讨论的应用程序是一个C#WPF“富客户端”应用程序,它使用WCF连接到服务器。根据我的经验,能够编写代码的测试人员会跳槽,作为开发人员加薪


我同意你关于自动化UI测试工具的看法。我工作过的每一个地方都有足够的钱来支付WinRunner或LoadRunner的费用,但却没有足够的员工来实际使用它。价格可能已经发生了变化,但在当时,这些价格是高5位数到低6位数的价格标签(想想一套入门房的价格)。这些产品很难使用,而且通常会被放在一个上锁的柜子里卸载,因为每个人都担心弄坏它们会惹上麻烦

我发现最合理的选择是拥有足够的规格,这样QA人员就可以剔除测试,基本上弄清楚他们想在每个“屏幕”或每个组件上测试什么,然后剔除它们。这些存根的命名应该使它们能够很好地描述它们正在测试的内容。这也提供了一种将功能需求结晶化的方法。事实上,以这种方式完成需求特别容易,并且可以帮助非技术人员在他们自己的过程中真正渡过泥潭


存根可以通过QA/dev人员的组合填写。这使您能够廉价地培训QA人员如何编写测试,并且他们通常会在提高他们的工作安全性时含糊其辞。

我认为让开发人员编写测试将是最有用的。这样,您可以在整个开发周期中进行“破损检查”,而不仅仅是在开发结束时。如果你每晚都进行自动构建,你就可以在bug很小的时候捕获并修复它们,然后再将它们变成巨大的、卑鄙的、吃人的bug。

理想情况下,最终编写测试的应该是QA。使用程序化解决方案的问题在于让QA人员掌握使用该工具的最新速度所涉及的学习曲线。开发人员当然可以通过指导帮助完成这一学习过程,但这仍然需要时间,而且会拖累开发

另一种方法是使用一个简单的GUI工具,该工具支持一种语言(和数据脚本),并使QA能够可视化地构建脚本,只有在真正必要时才深入研究该语言的更精细细节——这里也可以涉及开发

我见过的最成功的尝试肯定是后者,但设置这一点是困难的。Selenium在简单的web应用程序和应用程序中的简单线程中运行良好。JMeter(用于web服务的脚本化web对话)也工作得很好。。。另一个选项是内部构建的测试工具,它是脚本语言(Groovy、Python、Ruby)之上的一个简单工具,允许QA通过GUI或数据文件将测试数据放入应用程序。数据文件可以是简单的属性文件,或者在更复杂的情况下是结构化的(如YAML甚至Excel)数据文件。通过这种方式,他们可以构建基本的冒烟测试,然后将其扩展到各种场景驱动的测试中


最后。。。我认为富客户端应用程序更难通过这种方式进行测试,但这取决于语言的性质和可用的工具

那么提出测试的测试人员和实际编写测试的开发人员呢?

我认为,首先,这在很大程度上取决于您使用的工具

我们公司目前使用(我们是一家Java商店)

Selenium IDE(在Firefox中记录操作)工作正常,但开发人员需要手动纠正它对我们的Web应用程序所犯的错误,因此QA不太适合这样做
selenium.clickButton("Button Text")