谁在写自动UI测试?开发人员或测试人员?

问题描述:

我们正处于一个大型项目的初始阶段,并且已经决定某种形式的自动化UI测试可能对我们很有用,但还没有完全弄清楚这将如何工作......谁在写自动UI测试?开发人员或测试人员?

主要目标是自动化应用程序的基本安装和运行,因此如果开发人员导致重大破坏(例如:应用程序不会安装,网络将无法连接,窗口不会显示,等)测试人员不必浪费时间(并获得由恼火)安装和配置一个破碎的构建

第二个目标是重复的任务打交道时,以帮助测试人员。

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

的几点思考:

  • 的开发商似乎是一个更好的位置,要做到这一点,因为他们知道控制的ID,类等,并有应用程序是如何更好的图片工作

  • 测试仪已经不知道该应用程序是如何工作的,因此可以产生

  • 我已经写了使用一些初步的测试脚本,这可能是有用得多的优势和White。这个工作非常好,而且足够强大,可以完成任何事情,但是你需要能够编写代码来编写UI测试。

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

  • 我们的测试人员无法编写代码,虽然他们非常聪明,但当我建议测试人员可能编写简单的ruby脚本时(尽管所述脚本大约容易读写100倍)比看起来是自动化UI测试工具的标准的按钮和数据网格的混乱混乱)。

我真的很感谢来自其他人在开发人员和测试人员团队尝试过UI自动化的任何反馈。谁做了什么,并且做得很好?提前致谢!

编辑:有问题的应用程序是一个C#WPF“富客户端”应用程序,连接到使用WCF

理想情况下,最终应该由QA负责编写测试。使用程序化解决方案的问题在于让QA人员熟悉使用该工具的学习曲线。开发人员当然可以帮助学习这条曲线并通过指导帮助完成这一过程,但这仍然需要时间,并且会阻碍开发。

另一种方法是使用一个简单的GUI工具,它支持一种语言(和数据脚本),并使QA能够可视化地构建脚本,只有在真正需要时才能深入了解语言的更精细的细节 - 开发也可以参与到这里。

我见过的最成功的尝试肯定与后者有关,但设置这一点是难的部分。 Selenium在简单的Web应用程序和简单的线程中运行良好。 JMeter也适用于Web服务的脚本化Web对话。另一种选择是内置测试工具 - 一种在脚本语言(Groovy,Python,Ruby)顶部的简单工具,它允许QA通过GUI或数据文件将测试数据放入应用程序中。数据文件可以是简单的属性文件,也可以是更复杂的结构化文件(如YAML甚至Excel)数据文件。这样他们就可以开始基本的烟雾测试,然后将其扩展到各种情景驱动的测试。

最后......我想丰富的客户端应用程序的方式更难以通过这种方式来测试,但它取决于语言的本质,并为您提供的工具...

+0

我们决定选择让QA人员编写基本的“存根”脚本(使用IronRuby,这非常容易读写),然后让开发人员修复代码并实现部分质量保证人员无法做到。希望它会好起来 – 2009-08-20 23:06:25

+0

也许代替Selenium就像应用程序一样,您应该尝试IBM Functional Tester,HP QuickTestPro,Borland Silktest或MSVS Test Edition等产品。至于web应用程序,还有专门的库,如WebAii或WatiN,可以帮助编写脚本。无论如何,让您的质量保证人员学习和采用。非常像开发人员 - 每天都需要学习新东西。 – yoosiba 2010-02-04 08:02:11

以我的经验服务器,测试人员谁也代码将跳槽加薪的开发商。

我同意你关于自动化UI测试工具。我工作过的每个地方都有足够的钱来承担WinRunner或LoadRunner无法承担的工作人员实际使用它。价格可能已经发生了变化,但是当时,这些价格处于高位5位数到低6位数的价格标签(想想起家的价格)。这些产品很难使用,并且通常被保存在一个上锁的柜子里,因为每个人都害怕因为摔坏而惹上麻烦。

+1

我开始在QA :-) – 2009-08-19 00:28:58

+1

LoadRunner的是性能测试和实际上是很难掌握。问题不在于它使用的C,而在于相关性和分析网络流量。至于GUI自动化测试,QTP是更好的选择。它允许通过记录和回放来构建测试,但也可以在VBScript中编写相同的测试脚本。仍然价格可能是问题。 – yoosiba 2010-02-04 07:56:43

我发现最合理的选择是有足够的规格,这样QA人可以将测试存根,基本上找出他们想要在每个“屏幕”或每个组件上测试的东西,并将它们。应该对存根进行命名,以便它们对于他们正在测试的内容具有很强的描述性。这也提供了一种结合功能要求的方法。事实上,以这种方式来满足要求是非常容易的,并且帮助非技术人员真正在他们自己的泥水中工作。

存根可以通过QA/dev人员的组合填写。这使您能够熟练地培训QA人员如何编写测试,并且他们通常会为进一步提高工作安全性而努力。

+1

质量保证民俗会如何进行测试?他们会写一个充满测试的实际代码文件吗?或者递给你一个满足要求的文字文件?我认为开发人员会用实际的UI自动化代码填充存根(stub)? – 2009-08-19 00:06:09

+0

QA实际上是功能存根,或者其他任何可能的功能。这些名称应该用作敏捷文档。你应该能够解析这个,并且在骆驼案例上运行一个简单的分割来得到粗略的句子来排列每个需求。 – Saem 2009-08-19 21:27:43

我认为让开发人员编写测试将是最有用的。这样,您可以在整个开发周期中进行“破损检查”,而不仅仅是结束。如果你进行夜间自动化构建,那么当它们变小时,你可以捕捉并修复错误,然后它们会变成巨大的,吝啬的,吃人的错误。

怎么样的测试人员建议测试,和开发人员实际上写它?

+1

一般来说,开发人员都忙于编写QA将要测试的代码,并且没有时间写测试。我不知道你的公司,但是在我工作过的每一个人中,如果开发者有时间写测试,那么(错误)管理者会批评开发者,因为开发者应该添加更多功能。 – Tangurena 2009-08-19 00:33:34

+1

虽然网络“扭曲”应用程序看起来是沿着这种东西建模的 – 2009-08-19 00:45:28

我相信起初它很大程度上取决于你使用的工具。

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

Selenium IDE(它在Firefox中记录动作)工作正常,但开发人员需要手动纠正它对我们的Web应用程序所犯的错误,所以它不适合QA编写测试。

我过去试过的一件事(有些成功),就是将库函数编写为Selenium函数的包装器。他们读为纯英文:

selenium.clickButton("Button Text") 

...但在幕后检查按钮上的布局和标签是否正确,有编号等。

不幸的是,这需要很多设置,以便于编写测试。

我最近开始意识到一个名为Twist(来自Thoughtworks,建立在Eclipse引擎上)的工具,它是Selenium的包装器,允许编写简单的英式测试。我希望能够提供给测试人员,他们可以用简单的英语写简单的断言!

它也会自动为新的断言创建存根,所以测试人员可以编写测试,并在需要新代码时将它们传递给开发人员。

+0

这基本上是我用我的ruby脚本(抽象白色框架)所做的。我有类似“ok_button = window.find_button(”OK“); ok_button.click” – 2009-08-19 00:46:32

在我最终切换到测试和测试自动化之前,我作为应用程序开发人员工作了7年。测试比编码更具挑战性,任何想要成功的自动化开发人员都应掌握测试技能。

前段时间我在一些博客文章中将我的想法放在技巧矩阵中。

如果有兴趣讨论:

http://automation-beyond.com/2009/05/28/qa-automation-skill-matrices/

感谢。

+0

“的代码哦,对于安装和基本的贯穿式自动化,没有实际的功能测试,您并不需要QTP或TestComplete。 尝试AutoIt(它是免费的)。 – 2009-08-28 13:53:21

+0

我非常怀疑任何质量保证工资与优秀开发人员的薪水相匹配,因此从开发人员转向质量保证似乎是一件奇怪的事情,职业明智。说'测试比编码更具挑战性'是一种非常基于观点的行为。我做这两件事,宁愿编码更多 – vsync 2016-01-20 14:47:52

我认为这主要取决于测试团队的技术水平,可用的工具以及开发人员和测试人员如何相互交互的团队文化。我目前的情况是,我们有一个相对技术性的测试团队。所有测试人员都应具备开发技能。在我们的例子中,测试人员编写UI自动化。如果你的测试团队没有这些技能,他们将不会成功。在这种情况下,开发人员可能最好为您编写UI自动化。

其他因素需要考虑:

什么其他的测试任务是在测试者的板? 你的客户是谁?他们对质量有什么期望? 开发团队的技术水平是什么?他们愿意承担测试自动化工作的意愿是什么?

-Ron