每一个测试人员都应该理解每种框架的优缺点,以帮忙你的团队更好地确定最适宜的测试的框架,以达到事倍功半。
什么是测试自动化框架?
自动化测试框架就是用于测试自动化的框架。具体来说,它提供了自动化测试用例编写、自动化测试用例执行、自动化测试报告生成等根底性能。咱们只须要基于这个框架,实现和业务高度相干的测试用例设计和实现即可。另外,框架会为咱们解决好复杂度与扩展性的问题,咱们无需为此操心。
测试自动化框架是在创立和设计测试用例时应用的一组最佳实际或准则。
测试准则集能够包含编码标准,对象存储库,测试数据处理办法,无关内部存储拜访的信息等。
这些准则并非强制,然而在自动化脚本过程中,它们进步了测试的效率并产生了无益的后果。
应用测试自动化框架的益处
- 更全的测试范畴
- 升高脚本保护老本
- 节俭人力老本
- 进步测试速度和效率
- 可重用的测试代码
- 易于报告
依据需要应用适配的自动化测试框架有助于放慢测试过程,并打消人为谬误。它还使测试保护更加容易,放慢测试进度,节省成本、工夫和精力。此外,框架 QA 团队可能充沛开发、执行和报告测试过程,同时还使代码可在多种状况下重用。
5 种最风行的自动化测试框架类型
团队依据团队规模、教训程度、用户需要等因素来抉择测试框架。以下是五种最风行的框架及其优缺点:
1、线性框架
这是最根本的框架类型。它通常被称为“记录和回放(record and playback)”框架。
在这个过程中,测试代码的创立和执行是按线性或程序编写的——测试人员手动记录每一个步骤,并主动回放记录的脚本。这些步骤包含导航、用户输出和检查点。它最适宜小型应用程序或团队。
在此过程中,测试代码的创立和执行以线性或程序形式编写 - 测试人员手动记录每个步骤并自动播放记录的脚本。这些步骤包含导航,用户输出和检查点。最适宜小型应用程序或小团队。
长处:
线性框架最大的益处是生成测试用例的速度快,间接录制;毋庸代码根底,毋庸手动编写测试代码,因而门槛较低、易于上手。
毛病:
然而线性框架的不足之处也很显著:录制的脚本是固定的(hardcode),不可重用。这意味着,当利用产生渺小变动时,上一次录制的脚本可能就无奈应用了,须要从新录制(rework),从而产生大量的前期保护老本。
2、基于模块化的框架
顾名思义,此框架容许将被测应用程序划分为独自的模块,单元或局部。每个模块都会为它们创立独立的测试脚本。因而,每个模块及其测试脚本的组合能够构建代表各种测试案例的更大的测试。
长处:
该框架在创立模块时应用形象。因而,应用程序更改将只影响与它们相关联的测试脚本所波及的模块,而不影响其余局部。
高度的模块化,这使得保护更加容易且具备老本效益
创立测试用例所需的精力起码,因为能够重复使用不同模块的测试脚本。
毛病:
如果没有语言开发根底,则建设框架可能会很艰难。
因为将数据硬编码到测试脚本中,因而无奈重复使用数据集——因为测试是独自执行的。
3、库构造框架
该库体系结构框架建设在模块化框架的根底上,但具备其余益处。这样做的益处是,它不仅能够将被测应用程序划分为测试脚本,还能够将测试脚本中的类似工作划分为通用性能。
而后创立一个库,该库形成了 AUT 的罕用性能,能够在须要时由测试脚本调用。
长处:
高度的模块化,这使得测试保护简略且估算敌对。
它具备高度的可重用性,因为它的公共函数库能够被几个测试脚本应用。
毛病:
框架中引入的库使其更加简单。
测试数据也被硬编码到测试脚本中。因而,数据中的更改必须实用于测试脚本。
测试脚本的开发须要更多的工夫和技术。
4、数据驱动框架
在数据驱动框架中,测试数据和测试脚本是拆散的。在许多测试场景中,须要应用不同的测试数据屡次测试同一性能或个性。如果测试数据是 hardcode 进测试脚本的,那么每更换一次测试数据都须要批改测试脚本。这是很大的工作量。此时,能够应用数据驱动框架。具体来说,测试脚本是固定的,而测试数据能够从内部的数据文件,以 Excel、CSV、SQL 等模式作为参数传入测试脚本。这样,咱们只须要保护一份脚本和一份数据文件即可。
长处:
总体来说,这种框架最大的益处就是易于保护。
测试脚本中的任何更改都不会影响测试数据。因而,能够防止对数据进行硬编码。
能够应用多组数据进行测试。
能够通过更改内部数据库中的测试数据来测试各种测试计划,从而缩小所需的测试脚本数量。
毛病:
筹备和打算框架的通用测试脚本,辨认与格式化测试数据须要破费工夫。
框架设计的应用须要经验丰富的测试人员,因为它的复杂性,须要具备多种编程语言常识。
5、关键字驱动框架
该框架是数据驱动框架的扩大。测试数据和测试脚本也被拆散,不同的是,该框架要更进一步地将测试脚本中的通用性能剥离进去,造成关键词(keyword)。测试脚本实质上就是对一系列通用的或者自定义的关键词的调用。这样做的益处是关键词能够在多个测试中复用,并且测试脚本更加易于保护。不过,实现这样一个框架并非易事。
长处:
与数据驱动不同,运行此框架不须要脚本常识。
能够独立于被测应用程序构建测试脚本。
一个关键字能够在多个测试脚本中应用。因而该代码是可重用的。
毛病:
设计框架和保护关键字对自动化的专业知识要求比拟高。
实现该框架的老本绝对较高,而且设置起来也比拟耗时和简单。
综上所述,实现用于自动化测试的框架须要抉择一种灵便的工具。该工具应反对宽泛的应用程序,并满足测试要求。另外,应该有正确的策略来定义应该自动化哪些局部。
须要指出的是,业界曾经有了实现上述各种测试自动化框架的工具。通常来说,咱们并不需要从新创造一个新的框架,而是基于已有的框架去进行优化降级,使之适宜本人的我的项目需要,来实现自动化测试工作。
那么,面对一个新的自动化测试框架,如何着手工作呢?
咱们应该聚焦在以下四个问题上。
1、如何生成测试用例?
不同的框架,生成测试用例的办法不一样。
对于线性框架来说,毋庸编写脚本,只须要点击预设的按钮就可能生成测试用例;比方 Katalon,间接录制生成测试用例。
对于少数框架来说,生成测试用例须要编程。当然,不同框架应用的编程语言、编程格调有差别。
对于 Selenium 框架来说,应用的是通用编程语言 Java 和 Python,可能更多的是对 Selenium 进行二次封装,以便更好更快的生成用例;
对于 Robot Framework 来说,应用的是其专用的 Robot Framework 编程语言。
一般来说,应用框架编程的过程很多时候就是调用库接口的过程。因而作为前提,在编写用例之前,咱们须要相熟框架提供的库的品种和性能,以及这些库所提供的 API 的应用办法。
2、如何执行测试用例?
当测试用例实现之后,咱们须要运行测试用例。
自动化测试是通过 GUI 图形界面来触发,还是通过 CLI 命令触发,这因框架而异。
当然,仅仅晓得如何触发测试是不够的。咱们通常有更多的需要。
例如,如何选择性地执行满足特定条件的测试用例子集?
如何设置全局的执行参数 (超时工夫、日志门路、报告模式等)?
如何动静地给测试用例集传入参数?
一般来说,一个残缺的框架须要提供足够多的管制选项,从而让咱们依据需要定制执行测试的形式。
以 Robot Framework 为例,其执行用例的命令具备 30 多个不同的选项。
这提供了足够的自由度和一些十分棒的性能。例如其 dryrun 选项,能够让咱们在不理论执行用例的状况下,疾速查看出测试用例中参数不匹配、语法不正确、关键词找不到、库导入失败等谬误,十分实用。
3、如何查看测试后果?
测试执行完结之后,咱们须要关注测试后果。不同的框架会以不同模式提供测试后果。例如,测试后果既能以控制台日志的模式体现、也可能以图表和报告的模式体现,并以邮件发送或者展现在网站上。
依据测试后果,咱们能够很容易地理解测试的执行状况,包含测试的胜利 / 失败状况、测试的整体 / 部分用时等。
当测试失败时,咱们尤其须要关注测试失败的具体情况。
通常,咱们关怀失败是因为咱们应用框架的办法不当造成的,还是因为被测软件的品质问题。这一点,只能通过检查和分析测试后果失去。
4、如何扩大测试框架?
一般来说,框架只是提供了最根本的性能。很多时候,框架并不能间接满足自动化测试的需要。这时咱们能够寻求第三方的、与框架自身兼容的库或者插件。如果第三方工具不能满足咱们的需要,咱们就须要开发本人的库和工具。
例如,对于 HTTP、SSH 等私有协定,咱们很容易在网络上找到某个框架的第三方库;
而对于只用于公司产品的公有协定,咱们通常无奈找到第三方库,只能本人开发。
本人开发时,须要留神的是要听从框架的标准,使得开发出的库可能与框架无缝兼容。
说在最初,抉择了一个框架,在享受其益处时,也不得不接受其有余。
如果咱们的要害需要受制于框架,并且框架也不容易扩大,那么咱们就可能须要开发本人的框架。这是一件投入较大的事件。在大多数状况下,还是倡议重用和无限扩大已有的框架。毕竟,不要从新创造轮子——Don’t reinvent the wheel!