首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动化GUI测试:与我们折中

自动化GUI测试:与我们折中
EN

Stack Overflow用户
提问于 2009-05-04 21:55:18
回答 6查看 1.8K关注 0票数 10

我的任务是开发一个用于自动GUI测试的系统,我需要一些建议。幸运的是,我们正在对我们的GUI进行重大的重新设计,做这项工作的开发人员愿意让他们的代码对自动化更加友好。我的问题是,我不确定该要求他们添加什么。无论添加什么钩子,都不会影响界面的功能、外观或安全性,也不会对性能产生明显的影响。除此之外,天空是无限的!

所讨论的应用程序是一个通过AJAX访问的基于web的Java应用程序。大多数现有功能都是使用jsp、Javascript和少许Flash8编写的。下一波功能将使用YUI Javascript library完成。我几乎决定使用Selenium作为测试工具,因为它的灵活性和价格(免费)。要点:我的目标是测试可重用性和易维护性。我更喜欢编写检测、验证和练习页面元素的代码,而不是使用记录和回放系统进行测试开发。

有没有人可以提供一些指导,说明可以在代码中放置哪些挂钩或一些最佳实践,以使测试开发更容易,测试本身更健壮?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-05-08 05:27:08

基本指导原则:如果他们想要你测试一些东西,测试人员需要一种方法来让应用程序进入这种状态,一旦进入这种状态,就需要一种方法来验证状态是正确的。

因此,首先要确保他们理解自动化就是编程,而UI就是你的API。

不随意更改UI的

  • 协议--如果测试人员Bob看到组件从按钮更改为链接,并且它与规范相匹配,则单击并继续。虽然自动化中的代码更改相对容易,但它可能需要在多个位置进行更改。(作为测试人员,您的工作是了解更改的发生,并将维护成本降至最低;他们的工作是只进行重要的更改并了解其影响)
  • 确定您所在的页面的方法...Bob可以分辨登录和订单输入之间的区别,但是自动化如何知道呢?如果输入带有“用户名”标签的字段,则会显示登录页面。如果是具有订单号的输入域,则为订单域。

不好--更好的做法是使用一致的UI元素来标识页面--页面标题、隐藏组件等。

  • 唯一标识需要交互的每个元素(单击、键入、验证等)的方法而不是INPUT_42...
  • 询问开发人员测试人员可以为他们提供哪些信息来加快调试速度,并要求他们将这些信息放入日志文件中,以便转储program
  • Consistent error handling
  • reporting (也只是良好的UI设计)的状态
票数 6
EN

Stack Overflow用户

发布于 2009-05-04 22:44:05

与大多数问题一样,这取决于。主要取决于你的网站的外观和页面上的控件--有很多重复的元素吗?

我在使用Selenium RC和Selenium IDE方面取得了很多成功。主要的事情是习惯使用Selenium和它的命令。习惯于在页面上定位对象(XPaths和CSS选择器,以及“包含”函数)也很有帮助。您不想要的是许多具有相同选择路径的元素。如果下面的表和div没有唯一的部分,可能会给测试增加额外的复杂性。

代码语言:javascript
复制
<html>
  <body>
    <table>
      <tr>
        <td>
          <div></div>
          <div></div>
          <div></div>
        </td>
      </tr>
    </table>
    <table>
      <tr>
        <td>
          <div></div>
          <div></div>
          <div></div>
        </td>
      </tr>
    </table>
  </body>
</html>

要测试图像,能够基于图像文件名以外的其他内容检查它们的存在是很好的,所以当图像更新时,您不必更改测试。如果你需要测试Flash对象,可以使用check out this site

除此之外,我注意到没有太多东西可以整合到开发方面。一旦您开始设置测试并在页面上定位元素,您可能很快就会看到开发人员需要做些什么来帮助您。

票数 5
EN

Stack Overflow用户

发布于 2009-05-05 19:34:20

一条建议:将测试代码保持在至少两层抽象中

  1. upper layer:这应该是某种面向特定应用程序、术语/操作等的外观。这一层不会直接使用Selenium RC库。它在后台使用...
  2. ...低层:一个带有一些常见测试模式的库(例如:“断言单选按钮控件的值X被选中”),该库使用Selenium RC库。

这样,您的测试将更易于维护,并且更容易理解正在测试的内容。我们甚至尝试了一种三层方法,即third (uppermost) layer being the tests specified using XML。这是为了让我们的非编程测试人员能够在不钻研C#代码的情况下指定验收测试。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/822275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档