以下为作者观点:

如果你正在考虑建立你自己的测试自动化框架,请再想一想。在大多数情况下,你最好可以考虑一个或多个可用的开源选项。

这是因为,一般来说,框架是一套可以跨团队使用的最佳实践、假设、通用工具和库。你根本不需要为你的开发环境建立一个独特的框架。一个框架将有助于使你的测试自动化代码可重复使用、可维护和稳定–并使你的企业免于陷入代价高昂的缺陷。毕竟,即使是小错误也会导致大问题。

所以,完全可以利用现有的开源工具和库,无需编写任何代码就可以满足团队的需求,而且在大多数情况下,效果更好。

虽然使用开源工具通常比从头开始建立自己的框架更好,但我并不是说开源测试自动化工具是你所需要的全部。一旦你了解了如何为你组织中的每个角色选择正确的测试自动化工具,你最终可能会混合使用商业和开源的选项。

–超越GUI的测试

大多数人在寻找测试自动化框架时忘记了包括另一个领域,那就是测试API的能力。我非常相信在可能的情况下测试用户界面(UI)以外的功能,而且由于集成/API测试绕过了用户界面,它们往往比GUI测试更快、更可靠。

这就是为什么要有一个测试套件来测试你的应用程序的几个不同层次。为此,你需要能同时测试你的应用程序的UI和非UI组件的工具。

因此,在你落入 “建立你自己的框架 “的陷阱之前,一定要看看以下这11个开源的测试自动化框架。

1.Serenity

如果你需要一个与行为驱动开发(BDD)工具(如Cucumber和JBehave)集成的基于Java的框架,Serenity BDD(原Thucydides)可能是你想要的工具,它能够使编写自动化验收和回归测试更容易。

它还允许你将测试场景保持在较高级别,同时在报告中容纳较低级别的实现细节。

Serenity在Selenium WebDriver和BDD工具上充当包装器。它使编写BDD和Selenium测试更容易,因为它抽象了你有时需要开始编写的大量模板代码。

Serenity还提供了大量的内置功能,如处理WebDriver管理、管理步骤之间的状态、截图、并行运行测试、促进Jira集成等等–所有这些都不需要写一行代码。

—提供详细的报告

Serenity创建了高度详细的报告。开箱即用,它创建了实时文档,你不仅可以用来查看你的Selenium BDD测试结果,还可以用来记录你的应用程序。

它还有一个额外的注释方法,叫做@Step。当正确使用时,@Step给你一个额外的抽象层次,使你的测试更可重用和可维护。

Serenity最近增加了与REST Assured的集成,REST Assured是一个流行的用于测试RESTful APIs的开源Java库。它围绕REST Assured创建了另一个封装器,使Serenity Selenium测试无缝运行。Serenity超强的报告功能还包括REST信息,这意味着你可以在测试报告中轻松看到并验证所有的请求和响应细节,而不需要明确添加任何额外的日志代码。

如果你创建自己的BDD框架,Serenity会处理通常需要从头开始编码的许多事情。它是目前较好的开源框架之一,尽管我可能有点偏见,我在自己的日常测试自动化工作中使用的就是这个工具。

Serenity还创建了一个名为SerenityJS的JavaScript版本。由于许多前端开发者也负责测试,所以自动测试工具的JavaScript版本是非常有帮助的。

2.Cypress

它有一个与Selenium不同的架构;Selenium WebDriver在浏览器外远程运行,而Cypress在浏览器内运行。

这种方法提供了更一致的结果,因为Cypress可以了解浏览器内外发生的一切。它还为你提供了对每个对象的本地访问,而不需要你处理对象的序列化或线上协议。

因此,它可以同步通知你在浏览器内发生的每一件事,这样你就可以对每个分布式对象模型(DOM)元素进行本地访问。

Cypress还能使你轻松地将调试器放入你的应用程序,这反过来又使你在开发时更容易使用开发者工具。

3.Robot Framework

如果你想使用Python进行测试自动化,那么使用Robot Framework是不会错的。这个成熟的产品是为测试人员创建的,它使用关键字驱动的方法,使测试可读并易于创建。而且它还包括你可以使用的许多测试库和其他工具。

Robot Framework是基于Python的,但你也可以使用Jython(Java)或IronPython(.NET)。

虽然Selenium WebDriver库可能是最常用的外部测试库,但Robot Framework可以测试网站以外的东西,如FTP、MongoDB、Android和Appium。除了所有这些开源的强大功能,它还有很多API,有助于使其尽可能地扩展。

Robot Framework使用的关键字方法对于已经熟悉其他基于供应商的、关键字驱动的测试工具的测试人员来说非常好,使他们更容易过渡到开源。

如果你的团队主要由测试人员组成,Robot Framework是你自动化框架的一个很好的选择。

4.TestProject.io

你是否渴望有一个完全免费的自动化工具,并且有一个强大的社区构建在它周围?

如果是这样,你一定要看看TestProject。

在写这篇文章的时候,SDK的Java和C#实现已经可用。我被告知,对Python、JavaScript和其他编程语言的支持目前正在进行中。

TestProject的框架是为了让更多的测试人员和组织从两个主要的自动化开源工具中受益:Selenium和Appium。

TestProject的独特之处在于它的附加组件,它允许全球的测试人员使用其他测试人员在TestProject中共享的功能,这可以把它们看作是可以被他人重用的测试自动化建筑块。

它还具有比如测试记录器、全局自动化网格等等更多其他的功能,如果你的团队主要由不会编程的QA/测试人员组成,TestProject.io是一个必须尝试的工具。

5.Sahi

Sahi是为测试Web应用程序而开发的,它提供了开源和专业版。它作为一个代理服务器工作,你可以在浏览器中使用。从Sahi仪表板上,你可以启动你想测试的浏览器。

Sahi控制器会引导你记录和捕捉你想对应用程序进行的互动。例如,当你把鼠标悬停在Sahi浏览器中的任何元素上时,它会显示你可以对该元素执行的所有操作。

你还可以使用控制器来回放你的脚本。Sahi的记录和回放功能使你很容易开始对简单的HTML应用程序进行自动化测试。

但要小心依赖这些记录和回放;这种方法已被证明是创建可维护的、强大的自动化测试的不太好的做法。它可以帮助创建一个初始测试,但你需要定制它的专业版以使其可靠和可维护。

6.Galen Framework

如果你的自动化工作专注于用户体验设计(UX)或布局测试,Galen Framework可能非常适合你的需求。

Galen是专门为用户体验测试创建的,它有一个特殊的语法和规则,你可以用来描述和验证你的应用程序的布局。它还可以让你指定你的浏览器大小,然后针对你的应用程序运行测试,以验证布局规格。Galen的测试还可以生成带有屏幕截图的详细HTML报告,该工具包括一个与酷炫热图功能的视觉图像对比。

你可以在一个简单的文本文件中使用Galen的语法、JavaScript或Java来编写测试。

7.Gauge

Gauge是比较新的开源测试自动化工具之一,适用于Mac、Windows和Linux,由ThoughtWorks公司的人开发–与创建Selenium的公司相同。

TDD和BDD的实践者非常欣赏Gauge对创建实时的和可执行的文档的关注。

Gauge的自动化测试被称为 “specs”,是在Eclipse和Visual Studio等开发者IDE中使用Java、Ruby和C#以简单的markdown语言语法编写的。你还可以通过对插件的支持来扩展Gauge的功能。

如果你的团队喜欢前沿的测试开发,你可以试一试它。

8.WebDriverIO

你是否在寻找一个利用Selenium并允许你用JavaScript编程的自动化框架?

WebdriverIO为你提供了一个现成的完整框架。它不需要你像直接使用Selenium那样从头开始实现任何东西。

它提供了你建立可扩展和可持续的测试套件所需的一切,并包含了Selenium版本所没有的额外功能。如果你的团队是由能够编码的JavaScript开发人员和测试人员组成的,这个框架可能是你所需要的。

9.OpenTest

OpenTest是我最近刚刚了解到的一个框架,可以用来测试Web和移动应用以及API。

如果你看一下OpenTest的架构,你会发现很少有测试自动化场景不被支持。只要设备可以运行Java,该设备就可以作为你的分布式测试的一部分,而且是无缝地进行。

OpenTest的主张之一是,它不需要编码技能。这是用英文写的动作(关键词)的组合来实现的,并存储在YAML文件中。这种方法类似于Gauge的工作方式。

如果跨平台自动化对你的团队至关重要,那么OpenTest可能是你想要尝试的一个框架。

10.Citrus Framework

Citrus是一个开源的框架,可以帮助你对几乎所有的消息传输协议或数据格式进行自动化集成测试。如果你的测试流程需要你的应用程序与其他服务进行交互,那么使用Selenium等功能测试工具的API和组件就无能为力。

如果你使用任何一种消息传输,如HTTP、REST、SOAP或JMS,Citrus是测试消息传输集成的首选框架。

Citrus还可以与Selenium集成。如果你需要与用户界面互动,然后验证后端流程,这就很方便了。例如,假设你不得不点击一个 “发送电子邮件 “的按钮,并在后端验证是否收到了电子邮件。Citrus可以接收该邮件或由用户界面触发的JMS通信,并验证后端结果,所有这些都在一个测试中完成。

通过这种方式,Citrus为你提供了真正的端到端测试覆盖,这是你在GUI测试工具中无法得到的。

11.Karate-DSL

如果你已经在使用Cucumber,而且还需要测试REST API,那么Karate-DSL可能是你的一个完美选择。它已经存在近一年了,越来越多的人采用它来满足他们的API测试需求。

由于Karate的REST测试工具是建立在Cucumber-JVM之上的,你可以就像任何标准Java项目一样,运行你的测试,查看报告,并利用任何其他Cucumber功能。

你怎么选择呢?

在你写下第一行代码来创建你自己的框架之前,要确保没有一个你可以利用的现有库或框架。不要再浪费你的时间去重新发明轮子了,先看看这些自动化框架。

这些工具是我(作者)的选择,但它们只是现有开源测试自动化框架的一小部分。

如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以加入我们的QQ群:746506216,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】