浅谈如何设计自动化测试框架

摘要:
它是一个由一个或多个自动化测试基本模块、自动化测试管理模块、自动测试统计模块等组成的工具集。在设计测试框架时,我们应该尽量将这些模块有机地结合起来,有效地组织和一致地应用脚本,提高测试脚本的可维护性和可读性。

关于测试框架的好处,比如快速回归提高测试效率,提高测试覆盖率等这里就不讨论了。这里主要讨论自动化框架包含哪些内容,以及如何去设计一个测试框架。

1. 什么是自动化测试框架?

它是由一个或多个自动化测试基础模块、自动化测试管理模块、自动化测试统计模块等组成的工具集合。

以常见的前端UI测试为例,一个测试框架大概包括测试对象,测试组件,基础类和函数,工具类,测试数据,异常处理,测试日志,断言和测试报告等这些模块。

在设计测试框架的时候,我们要尽可能的将这些模块有机的结合起来,将脚本能够有效的组织、连贯应用起来,提高测试脚本的可维护性和可读性。

2. 没有万能的测试框架,适合自己项目的,能提高工作效率的就是好框架。

由于应用系统技术五花八门,几乎没有测试框架能应用在多个项目上并体现出应有的价值,所以一般情况都需要根据项目自身情况来定制化我们的测试框架,常用的有数据驱动,关键字驱动和两种方式的混合。

a. 数据驱动 (DDT)- 如果被测系统业务逻辑固定不变或变动较小,我们可以使用数据驱动,通过不同数据来保证测试覆盖率,通常数据都是保存在外面文件或数据库中,运行时自动获取。特点是数据与测试脚本分离,基于模块化的测试库,一个驱动脚本可以执行多个相似测试,这样非常容易建立新测试。

b.关键字驱动 - 将数据与关键字结合来描述如何使用数据执行测试。这种方法具备数据驱动的优势,同时非编程人员也能建立新类型测试。

3. 设计框架的思路:

a. 高内聚低耦合,高内聚就是每个模块尽可能独立完成自己的功能,不依赖于模块外部的代码;低耦合就是模块与模块之间接口的复杂程度,比如在类内部尽可能减少方法之间的调用,否则一个方法的变动会影响调用它的另一个方法。

比如,你要做两个功能:对文本文件的读写,对 word 读写,同是IO你可以放在一个类里的不同方法,高内聚。
比如,写了一个类,“人”类,“人”有自己的名字年龄等属性,每个“人”又有一条狗做为自己的属性,你可以把“人”类的属性和“人”的狗的属性都写在“人”类里,这就成了高耦合,
而,把狗的属性剥离出来,写成“狗”类,在“人”类里只放一个对“狗”的对象做引用,这个“狗”类,即可做为“人”的属性,也可以做它用。即 低耦合

b. 脚本分离:

对象、测试数据、业务逻辑相互剥离、灵活调用,在前端UI测试上可以得到明显的效果,我们可以使用PageObject设计模式来实现对象和业务逻辑的剥离,使用DataProvider来实现数据业务逻辑分离。

c. 模块化设计用例,脚本的可重用

如果时间充裕且项目提供支持,可以遵循以下顺序进行测试: 页面对象 - 功能点 - 业务逻辑 - 业务流程。

从实现来说就是:先测试底层的页面操作对象,通过调用操作对象、及业务逻辑实现对功能点的验证,再通过调用业务逻辑组合功能点实现对业务流程的验证。不同的业务流程,对于底层的操作组件、中间层的功能点函数是完全可以复用的,只是调用的业务逻辑的差异,或者是测试数据的差异性。这样的好处是脚本相互独立性,代码复用,易维护,如有新的业务流程可以调用已有代码来组合。

d. 封装基础方法,对于一些较通用的方法,可以封装,比如log,assert,异常处理,文件读写操作,数据库读写操作,保存页面截图等等。在需要的时候直接在测试用例里调用即可。

如何开展自动化测试

  • 抓住业务测试工作中的痛点和领导的痛点,多沟通多交流,优先解决基层的工作痛点,我相信一个好的领导会看到你的责任心和付出;
  • 技术选型和方案可行性调研,多投入时间和精力,有的人性子急,前期做的很快,如果一开始的方向错了,最终会得不偿失;
  • 如果是比较复杂的解决方案,尽量前后端分离、保证各模块的独立性、可融合性、解耦不解体,做到灵活可扩展,要有下一盘大棋的准备。

免责声明:文章转载自《浅谈如何设计自动化测试框架》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇青岛公司法人实名举报恒丰银行青岛分行行长韩民开放领域关系抽取文献综述下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Go优秀开源项目推荐

前言   本文主要是收集Go语言开发的一些优秀项目和框架,个人见识有限肯定还有很多优秀的Go项目没有收录的,假如大家有好的Go项目可以在文末留言(排名不分先后)。 Go优秀项目收集仓库 GolangFamily​github.com/GolangFamily awesome-go 精选的 Go 框架、库和软件的精选列表。 https://github.c...

Spring Boot框架技术总结

1、技术概述,描述这个技术是做什么?学习该技术的原因,技术的难点在哪里。 技术概述 Spring Boot是基于Java语言的一种框架,Spring Boot框架的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置,能够帮助我们快速搭建Java应用程序。 学习技术原因:根据Java路线图学习框架,并且完成软工实践的项目开发。 难点:...

python+requests接口自动化测试实战

python+request+unittest+HTMLTestRunner 首先介绍一下python的requests模块: requests的使用介绍:requests快速入门 环境说明: 1.WIN 7, 64位2.Python3.4.3 (pip-8.1.2)3.Requests —>pip install requests4.Unittes...

Yii和ThinkPHP对比心得

本人小菜鸟一只,为了自我学习和交流PHP(jquery,linux,lamp,shell,javascript,服务器)等一系列的知识,小菜鸟创建了一个群。希望光临本博客的人可以进来交流。寻求共同发展。搭建平台。 本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加)。 QQ群: 281442983 (点击链接加入群:http://jq.q...

面向个人的免费插件仓库iOpenWorks平台终于成型发布了

面向个人的免费插件仓库iOpenWorks平台终于成型发布了 经过5年的努力,一个平台的梦想终于初步实现,我们的插件仓库iOpenWorks平台(http://www.iopenworks.com)初步成型。iOpenWorks平台是一个面向软件开发者的免费插件仓库,致力于让开发者可以以“组装”的方式来实现软件的开发。平台梦的原型源于2008年,我和几个师...

主流JavaScript框架(Dojo、Google Closure、jQuery、Prototype、Mootools和YUI)的分析和对比

本文主要选取了目前比较流行的JavaScript框架Dojo、Google Closure、jQuery、Prototype、Mootools和YUI进行对比,主要是根据网上的资料整理而成,希望可以供大家参考,如有错误欢迎指出:) 主流框架对比 Dojo(重量级框架) Dojo是一个强大的面向对象JavaScript框架。主要由三大模块组成:Cor...