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

什么是自动化测试框架?

它是由一个或多个自动化测试基础模块、自动化测试管理模块、自动化测试统计模块等组成的工具集合。以常见的前端UI测试为例,一个测试框架大概包括测试对象,测试组件,基础类和函数,工具类,测试数据,异常处理,测试日志,断言和测试报告等这些模块。在设计测试框架的时候,我们要尽可能的将这些模块有机的结合起来,将脚本能够有效的组织、连贯应用起来,提高测试脚本的可维护性和可读性。

好框架的定义

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

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

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

设计框架的思路

1、高内聚低耦合:

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

比如,你要做两个功能:对文本文件的读写,对 word 读写,同是IO你可以放在一个类里的不同方法,高内聚。

比如,写了一个类,“人”类,“人”有自己的名字年龄等属性,每个“人”又有一条狗做为自己的属性,你可以把“人”类的属性和“人”的狗的属性都写在“人”类里,这就成了高耦合。

而把狗的属性剥离出来,写成“狗”类,在“人”类里只放一个对“狗”的对象做引用,这个“狗”类,即可做为“人”的属性,也可以做它用,即 低耦合。

2、脚本分离

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

安装相应的环境依赖:

  • 安装python3.7(要保证pip能用,一般安装python3.7会自动安装pip)
  • 安装pytest框架---- pip install pytest
  • 安装request库---- pip install request
  • 安装openpyxl库(测试数据保存在excel中,需要依赖读取excel的库)---- pip install openpyxl
  • 安装pycharm(编写python脚本工具)

3、模块化设计用例

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

  • common:存放公共方法;
  • config:存放环境配置信息;
  • lib:存放第三方库;
  • main:框架主入口;
  • report:存放allure测试报告;
  • test_case:存放测试用例;
  • test_data:存放测试数据;

4、封装基础方法

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

如何开展自动化测试

自动化测试实施思路:

1.项目准备:安装相应的环境依赖;

2.设计基于pytest的测试框架结构:

3.实现接口公共文件:封装http请求;

4.抽离测试环境配置信息:获取不同环境的URL,放到config目录;

5.创建conftest.py放置一些公共的fixture;

6.将测试数据放到excel中;

7.编写自动化测试业务代码;

8.集成allure;

9.自动化执行生成结果;

10.Jenkins环境搭建;

自动化开展建议:

抓住业务测试工作中的痛点和领导的痛点,多沟通多交流,优先解决基层的工作痛点,相信一个好的领导会看到你的责任心和付出;

技术选型和方案可行性调研,多投入时间和精力,有的人性子急,前期做的很快,如果一开始的方向错了,最终会得不偿失;
如果是比较复杂的解决方案,尽量前后端分离、保证各模块的独立性、可融合性、解耦不解体,做到灵活可扩展,要有下一盘大棋的准备。

最后: 可以关注公众号:伤心的辣条 ! 进去有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!喜欢我们自动化的小伙伴们,可以加入我们的技术交流扣扣群:914172719(里面有超多学习资料免费分享哟)


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

测试人如何高效地设计自动化测试框架?相关推荐

  1. 基于pytest设计自动化测试框架实战

    简介 基于pytest实现测试用例收集方案.自定义参数化方案.页面元素定位数据存储方案.测试用例数据存储和维护方案,这样可直接进入到设计编写测试用例业务代码阶段,避免重复设计这些方案以及方案不统一导致 ...

  2. Python自动化测试框架

    Python自动化测试框架 1 什么自动化测试框架 什么是工具--工具(Tools)类似框架,只是工具屏蔽了底层的代码,提供单独的操作界面,以此供用户操作,比如:Selenium IDE.Postma ...

  3. 自从掌握了Selenium自动化测试框架设计,我在公司都横着走!

    测试工作对技术的要求不低,测试工程师更是高技能职位.但有很多新入行的伙伴认为,测试工作就是钟"点"工,用鼠标在软件点里点~点~点~就能做测试.这种思维是很可怕的,这会对测试人的职业 ...

  4. 一套完整的Selenium自动化测试框架设计实战,这次38K, 妥了

    金九银十,大家都铆足干劲想抓住机会涨薪进大厂.结合这几年的行业趋势,想要挑战大厂面试,首先必须吃透Selenium自动化测试框架设计. 这里说一下原因: 首先,一线互联网大厂无一例外,全都要求测试人掌 ...

  5. 火影推荐程序连载23-Robot Framework自动化测试框架核心指南-如何做好自动化测试平台框架的设计

    自动化测试如果需要能高效快速的支撑软件项目的测试,项目的快速迭代以及上线,除了以上我们介绍的需要许多的Lib来支持以及需要高效的去编写自动化测试案例外,还需要一个好的自动化测试框架平台来支撑我们的自动 ...

  6. 《精通自动化测试框架设计》—第1章 1.3节五天太久,还能压缩吗

    本节书摘来自异步社区<精通自动化测试框架设计>一书中的第1章,第1.3节五天太久,还能压缩吗,作者陈冬严 , 邵杰明 , 王东刚 , 蒋涛,更多章节内容可以访问云栖社区"异步社区 ...

  7. 《精通自动化测试框架设计》—第2章 2.3节测试数据交互基本方法

    本节书摘来自异步社区<精通自动化测试框架设计>一书中的第2章,第2.3节测试数据交互基本方法,作者陈冬严 , 邵杰明 , 王东刚 , 蒋涛,更多章节内容可以访问云栖社区"异步社区 ...

  8. 《精通自动化测试框架设计》目录—导读

    作者简介 精通自动化测试框架设计 陈冬严,浙江大学硕士,具有10年软件测试和团队管理的工作经验,先后服务于ITSM.PLM软件研发企业,现就职于某金融行业核心机构IT规划部门.业余时间喜欢园艺. 邵杰 ...

  9. 对接接口文档_接口自动化测试框架设计思路

    接口自动化测试--框架设计思路 1 前言 之前文章跟大家分享了一下自己在接口自动化测试中进行测试准备的一些相关知识点,接下来本篇文章详细分享一下接口自动化框架设计的思路总结,希望能对初次探索接口自动化 ...

最新文章

  1. banana pi 板上跑树莓派镜像
  2. IP、MAC和端口号——网络通信中确认身份信息的三要素
  3. Java要掌握哪些技术才能顺利找到工作?分享这6项
  4. 第四天:规划范围管理
  5. C#如何安全、高效地玩转任何种类的内存之Memory(三)
  6. 多线程循环输出abcc++_C ++循环| 查找输出程序| 套装4
  7. Blazor服务器应用程序中使用EF Core的多租户
  8. IIS7中查看w3wp进程
  9. 2020最新微信小程序学习资源汇总,包括文档、视频、系列教程、开源项目、框架!
  10. win10 win11 网络共享显示网络路径不存在时解决办法
  11. 什么是游戏盾,如何使用
  12. 1.12 Cubemx_STM32F4 步进电机(四)----S曲线理论
  13. 白帽子黑客:手把手教你如何在Kali使用ibus拼音输入法?
  14. 2021年软考时间阶段
  15. Android启动活动用什么方法,Android - 使用intent uri从命令行启动活动
  16. 【绝对详细!不好使你顺着网线敲我!】Django3.1在Ubuntu16.04上的部署
  17. 计算机开关机操作记录,win7电脑操作记录怎么查看|win7查看电脑操作记录的方法...
  18. 在tomcat集群下利用redis实现单点登陆
  19. 通过这一篇文章,可以把Java中的类加载器了解的七七八八了
  20. CNKI e study 去除word插件

热门文章

  1. python 声明不赋值_为什么Python赋值不返回值?
  2. 【免费毕设】IT产品网上物流管理信息系统的设计与实现(源代码+lunwen)
  3. 龙族幻想最新东京机器人位置_龙族幻想:最强“人形兵器”格斗家降临卡塞尔学院...
  4. Java多线程详解(线程池)
  5. Java存储任意对象_浅析java设计模式(一)----异构容器,可以存储任何对象类型为其他类提供该对象...
  6. 下拉推广系统立择火星推荐_【电商干货】拼多多搜索推广 如何选对致命关键词 ?...
  7. c语言编写conio库函数,c语言库函数头文件注释
  8. 二相步进电机和三相步进电机有什么区别?
  9. c语言程序构建,c语言开发环境构建及简单的c程序设计.doc
  10. UE4 VR中一种比较清晰的UI制作方式