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

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

什么是自动化测试框架?

它是由一个或多个自动化测试基础模块、自动化测试管理模块、自动化测试统计模块等组成的工具集合。以常见的前端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环境搭建;

自动化开展建议:

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

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

 最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/51868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt22双缓冲机制

Qt22双缓冲机制 知识点drawwidgetdrawwidget.hdrawwidget.cpp mainwindowmainwindow.hmainwindow.cpp main.cpp运行图 知识点 双缓冲就是在内存区申请一块缓存;然后显卡直接从这块内存读取数据.。 这样就不用鼠标边画,经过IO来读取这个环节;…

EasyExcel实现复杂Excel的导入

最近项目中遇到一个复杂的Excel的导入,并且数据量较大。因为数据不规则,所以只能使用POI进行自定义读取,但是发现数据量大之后,读取数据非常耗时。后面换成EasyExcel,性能起飞。 1. Excel样板 如上图,需要…

【C++】汇编分析,函数是如何调用,传参,返回

传参 有的是用寄存器传参,有的用push传参 我在MSVC编译测出来的是PUSH传参(debug模式),具体过程如下 long func(long a, long b, long c, long d,long e, long f, long g, long h) {long sum;sum (a b c d e f g h);ret…

VMware安装windows虚拟机详细过程

目录 准备工作配置虚拟机为虚拟机设置操作系统镜像安装windows10 准备工作 安装好VMware软件并激活,激活码自行查找 准备好系统镜像文件,可以在MSDN中下载,地址:https://next.itellyou.cn/ 配置虚拟机 选择自定义 默认 选择稍后…

骨灵冷火!Solon Cloud Gateway 照面发布

骨灵冷火,是练药的好火哟。极冷,又极热。在冰冻中被烧死:) 1、认识 Solon Cloud Gateway Solon Cloud Gateway 是基于 Solon Cloud、Vert.X 和 Solon Rx(reactive-streams) 接口实现。小特点: 纯响应式的接口体验流…

[Linux]:基本指令(上)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 与Windows环境不同,我们在linux环境下需要通过指令进行各操作&…

13.DataLoader 的使用

DataLoader 的使用 dataset:告诉程序中数据集的位置,数据集中索引,数据集中有多少数据(想象成一叠扑克牌)dataloader:加载器,将数据加载到神经网络中,每次从dataset中取数据&#x…

Zynq7000系列FPGA中的DDRC纠错码(ECC)

仅在半总线宽度(16位)数据宽度配置中提供可选的ECC支持。这种配置下,外部DRAM DDR设备需要26位,其中16位用于数据,10位用于ECC。每个数据字节使用独立的5位ECC字段,这种模式提供了单错误纠正和双错误检测的…

UE5蓝图 抽卡出货概率

SSR概率0.1 SR概率0.2 R概率0.7 ps:数组内相加为1。且从小到大排序。

C练手题--Two Oldest Ages 【7 kyu】

一、原题 链接:Training on Two Oldest Ages | Codewars The two oldest ages function/method needs to be completed. It should take an array of numbers as its argument and return the two highest numbers within the array. The returned value should b…

网络-多路io

了 fcntl 函数来操作文件描述符的状态标志,其中主要是为了设置非阻塞模式。下面是对 fcntl 函数及其参数的详细解释: fcntl 函数 fcntl 是一个用于操作文件描述符的系统调用,可以用来设置或获取文件描述符的各种属性。其原型如下&#xff1…

Ubuntu Linux Server安装Kubernetes

本文主要描述在Ubuntu Linux Server操作系统中安装Kubernetes云原生对应的microk8s组件。 sudo snap install microk8s --classic 如上所示,在Ubuntu服务器中安装microk8s组件完成,对应的版本是microk8s v1.30版本 microk8s enable dashboard 如上所…

华为云征文|基于Flexus云服务器X实例的应用场景-定时给微信群中推送新闻简报

🔴大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂 先看这里 写在前面效果华为云Flexus X实例服务器部署开源的热点新闻项目ssh连接服务器docker部署今日热点项目访问今日热点项目 搭建微信交互工具获取token创建发送的公共方法…

【Spring】获取cookie,session,header(3)

本系列共涉及4个框架:Sping,SpringBoot,Spring MVC,Mybatis。 博客涉及框架的重要知识点,根据序号学习即可。 目录 本系列共涉及4个框架:Sping,SpringBoot,Spring MVC,Mybatis。 博客涉及框架的重要知识点,根据序号学习即可。…

Linux主机网络参数的设置—IP地址的作用和类型

网络参数管理 一.网络参数 主机名,IP地址,子网掩码,网关,DNS服务器地址 1.配置主机名 hostname命令来查看当前系统的主机名, hosnamectl set-hostname 修改centos7的主机名, 建议以FQDN的&#xff…

惠中科技光伏清洗剂:点亮绿色能源未来

在当今全球追求可持续发展的时代,光伏产业作为清洁能源的重要代表,正发挥着日益关键的作用。而在光伏产业的高效运行中,惠中科技的光伏清洗剂犹如一颗璀璨的明珠,为光伏板的清洁与维护贡献着卓越力量。 一、光伏产业的挑战与需求…

STM32嵌入式面试知识点总结

一、STM32F1和F4的区别? 解答: 参看:STM32开发 – STM32初识内核不同:F1是Cortex-M3内核,F4是Cortex-M4内核;主频不同:F1主频72MHz,F4主频168MHz;浮点运算:…

【C++ Primer Plus习题】8.3

问题: 解答: #include <iostream> #include <string> #include <cctype> using namespace std;void function(string& str) {for (int i 0; i < str.size(); i){str[i]toupper(str[i]);} }int main() {string str;while (true){cout << "…

od机试题目

od试题 日志采集TLV 日志采集 思路&#xff1a; 处理输入&#xff1a; Scanner 拿到整个输入 放入string[] 按照" "分隔 调用Integer.parseInt 将string转int类型 解题&#xff1a; 用一个变量count记录当前日志数量&#xff0c;初始为输入的第一个参数 用一个max变…

Java中类的成员介绍

我的后端学习大纲 我的Java学习大纲 4.类的成员&#xff1a; 3.1.类的成员 -> 属性介绍&#xff08;成员变量&#xff09;&#xff1a; a.语法格式&#xff1a; 1.修饰符 数据类型 属性名 初始化值 ;2.说明1: 修饰符 常用的权限修饰符有&#xff1a;private、缺省、prot…