【译】人人都该知道的测试自动化基础知识

译自:The test automation basics every software developer should know

没有必要告诉您,测试自动化将会提高您的软件质量,拯救您的软件开发组织,避免在手动回归测试中花费不必要的时间和费用。 这种论调您应该听说过一百万次。

你需要知道的是如何到达那里。

【译】人人都该知道的测试自动化基础知识_第1张图片
pyramid.png

您不需要在开发周期结束时花费数周时间以上进行硬性编码阶段,而是只需要运用一小部分时间的来进行自动化测试,并在每次构建中运行回归测试。 不幸的是,许多组织从用户界面层开始,投资回报最小。 这就是Mike Cohn的测试自动化金字塔概念可以帮助你的地方。 当您开始测试自动化时,请遵循本指南,以获得最大的收益。

使用测试自动化金字塔

不要刚开始的时候就去聘用临时工去做用户界面级自动化。相反,花点时间熟悉测试自动化金字塔。然后,准备好后,创建一个可以优化投资回报率的测试自动化策略。

Cohn首次在敏捷成功学中引入测试自动化金字塔,显示了如何最大化自动化,从金字塔最底层的单元测试开始,并进入服务层级的测试。用户界面测试位于最上方。单元测试快速可靠。服务层允许在API或Service级别测试业务逻辑,而您不受用户界面(UI)的限制。层级水平越高,测试越慢越脆弱。最后,虽然应该进行一些UI测试自动化,但是这样的测试比较慢,更难维护,更容易破解。把它们保持在最低限度。

底层:单元测试自动化

单元测试是编写高质量代码的重要组成部分。当软件组织的人员讲测试自动化时,他们倾向于考虑诸如统一功能测试(UFT)或Selenium等工具,提供测试自动化框架。然而,开发人员应该在单元测试级别写大多数自动化测试。

开发人员可以使用单元测试框架,例如xUnit或Microsoft的Visual Studio单元测试框架来创建小单元代码的自动测试。一些敏捷团队使用测试驱动开发,一种在代码之前编写单元测试以帮助驱动代码设计的技术。但您不需要编写自动化单元测试。一些开发人员首先编写代码,但是在开发相关的自动化单元测试之前,不要考虑代码的完成。您可以评估每个代码路径是否已经通过测试覆盖工具(如DotCover)进行测试。

自动化单元测试执行速度非常快,您将在每次构建后运行它们。当您的代码基础继续增长和发展时,这种方法将使您的团队在回归发生时立即获得反馈。由于测试非常小巧且具体,因此在出现故障时很容易进行故障排除。通过这些测试,您的开发团队可以放心地自信地重构,安全的知道他们会快速检测到任何导致回归的新代码。

中间层:你所有的服务

Cohn指的是金字塔的中间层作为服务层,但它也被称为自动API测试,自动化组件测试或验收测试的层。您可以使用此自动化层来测试业务逻辑,而不涉及用户界面(UI)。通过在UI之外测试,您可以测试API或服务的输入和输出,而无需UI引入的所有复杂性。

在这个级别的测试可让您的测试人员选择设置数据,并通过您在单独的电子表格或文件中定义的输入和预期输出进行一系列测试。这可以让您的团队针对边界条件,边缘情况或错误条件创建自动测试,而不涉及UI。这些测试比单元测试更慢,更复杂,因为它们可能需要访问数据库或其他组件。然而,您应该绝对使用它们,因为它们比UI测试更快更可靠。

顶层:UI层

恭喜:现在,您的大部分代码和业务逻辑都已经过测试,大多数用户界面测试已被消除。您现在在UI层面的重点只是确保UI本身正常工作。 UI测试非常脆弱,所以将这些测试保持在最低限度。这些自动化测试在UI改变的任何时候都需要维护,并且由于在运行模拟屏幕上的点击(如网络速度)的测试时,有如此多的因素会发挥作用,因此这种测试可能导致错误的测试失败。您不能忽视这些测试失败,但是您不想花费更多的时间来排除故障并维护UI测试,而不是花费查找实际的代码缺陷。

通过强大的自动化测试设计,自动化UI测试将很好地整合您的自动化测试套件。如果您需要更多帮助,我建议Chris McMahon的文章“自动化测试”:功能设计的七个提示。在其中,McMahon提供技术建议,用于创建功能强大且可维护的UI自动化测试。

拿起测试自动化金字塔图并将其放在墙上。它应该提醒大多数自动化测试应该在单元测试级别,然后是可以在API或Service级别执行的测试级别。最后,通过强大的测试设计,您可以编写一套最小的自动UI测试来完成自动化测试套件。一旦你有了这套可靠的自动化测试,回归测试就会变得轻而易举。


CC先生的小黑板
目前业界比较流行的自动化框架就RobotFramework
如果你喜欢的是Python语言,可以使用以下的方式:
单元测试工具可以使用Pyunit;
Service测试工具可以使用SOAPUI等,Python的Requests库也觉得是一个利器;
UI测试工具可以使用Selenium(最新版为3.0,稳定一点就用2好了)。

对自动化方面感兴趣的小伙伴们也可以一起来讨论呀。

【译】人人都该知道的测试自动化基础知识_第2张图片
nekousenesi.gif

你可能感兴趣的:(【译】人人都该知道的测试自动化基础知识)