史上最强,Python自动化测试框架整理,搭建框架看这篇就够了...

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

什么是测试框架呢?

框架是一组准则,一个体系结构,遵循这些准则可以产生有益的结果。测试框架就是为自动化测试脚本提供执行环境而搭建的支架,它是一套准则,例如编码标准,测试数据处理,对象库处理等。

在自动化脚本编写过程中遵循这些准则可产生有益的结果,例如增加代码重用,更高的可移植性,降低的脚本维护成本等。准则而非规则;

它们不是强制性的,你仍然可以在不遵循准则的情况下编写脚本。但是你会错过拥有框架的优势。

使用测试框架的好处主要有:
1、提高测试效率
2、降低维护成本
3、最少的人工干预
4、最大的测试范围
5、代码的可复用

常见的自动化测试框架

我接下来会站在实践角度,来说说常见的自动化测试框架。现在用的最多的就是,Web UI 自动化和接口自动化两块其次是App自动化

接口自动化测试方向:Python+requests+pytest+yaml+alluer+Jenkins;
web自动化测试方向:Python+selenium4+pytest+POM+allure+Jenkins;
app自动化测试方向:Python+appium+POM+pytest+allure+Jenkins;

需要大家注意的是,常见的 Robot Framework,Selenium 也可以单独称为框架,也可以称为工具。这些都是概念和术语,大家不必特别纠结。

通过上面的一些常见框架,你发现了什么?

它们都拥有共同特性:编程语言+单元测试框架+扫描编译工具+持续集成工具+数据库+项目管理工具,可以根据需求进行相应调整。

测试框架总体而言可以参考软件开发框架来构建,下面从软件开发框架原则中提取测试框架的属性:

1、测试框架是在测试开发过程中 提取特定领域测试方法共性部分形成体系结构(软件框架是软件开发过程中提取特定领域软件的共性部分形成体系结构)

2、测试框架的作用:在其基础上重用测试设计原则和测试经验,调整部分内容即可满足需求,可提高测试用例设计开发质量,降低成本,缩短时间;

3、不同技术测试领域有不同的测试框架类型;

4、测试框架不是一个现成可用的系统,是一个半成品,需要测试工程师基于它结合自己的测试对象知识转化为自己的测试用例

5、测试框架是提供给测试人员开发响应领域测试用例的测试分析设计工具;

6、测试框架不是测试用例集,而是通用的,具有一般性系统的主体部分。测试人员像填空一样,根据具体业务完成特定应用系统中与众不同的特殊部分

7、测试设计模式的思想(等价类,边界值)在测试框架中应用。

框架的组成部分

需要配置文件管理;
业务逻辑代码和测试脚本分离;
报告和日志文件输出;
自定义的库的封装 管理;
执行测试用例方式;
第三方插件的引入;
持续集成;

测试框架组成部分的解释

配置文件管理:
我们需要一各配置文件去控制一些环境信息、开关等,配置文件可以使
txt/xml/yaml/properties/ini等格式的文件,一般properties较多的使用在java代码里,本文是基于python开发的测试框架,所以我们会选择ini文件

业务逻辑代码和测试脚本分离:
将业务逻辑代码和测试脚本写到不同的目录的py文件中,这样可以做到代码复用、封装、代码重构,使测试项目的目录更加清晰,适合多人开发测试脚本,方便调试和维护

报告和日志文件的输出:
执行testcase的结果怎么样需要用报告来展示,一般采用第三方的插件来实现,如HTMLTestRunner,风格简单明了。

日志的输出很重要,如果发生错误,脚本执行失败,通过日志可以快速定位

用户自定义库:
在自己的测试项目中有很多功能需要重复调用,这样我们就写成一个公共方法,方法哦工具包下,方便每次调用,必须做到封装

管理和执行脚本:
python中的单元测试框架unittest/pytest使用效率非常高,负责管理测试用例集,执行测试用例

第三方插件:
有时候我们测试项目的一些功能需要借助第三方插件能够更好的实现,比如parameterized参数化 第三方html报告生成的插件 htmltestrunner 可以放在第三方插件包中管理

持续集成:
git svn ant maven Jenkins,我们会把这些整合到Jenkins达到持续集成,一键执行测试脚本

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

不论遇到多少挫折与困难,只要你保持坚持与努力,勇往直前,就能超越自我,创造属于自己的奇迹。相信自己的实力与潜力,勇敢追求,每一次奋斗都是一次进步,每一次努力都是一次蜕变。

人生犹如一场马拉松,不论起点如何,只要坚持奋斗,不放弃追求,才能超越自我,迎接属于自己的辉煌。相信自己的能力与潜力,勇往直前,每一步都是成长,每一次奋斗都是进步,成功将与你相伴而行。

在人生的舞台上,不怕困难与挫折,坚持奋斗的脚步,用汗水浇灌梦想的花朵。相信自己的才华与能力,不断努力,每一次奋斗都是一次进步,只有拼搏,才能书写属于自己的辉煌篇章。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ruby on rails】M1遇到的一些安装问题

1. homebrew位置变了 原来的Cellar Homebrew Caskroom 都是在 /usr/local/下面 M1在/opt/homebrew下面 2. 装ruby M1电脑安装ruby,装不上的问题 RUBY_CFLAGS"-w" rbenv install 2.7.43. 装puma报错 gem install puma -v 5.5.2 -- --with-openssl-dir…

兵兵数码:网络机顶盒哪个好?2023最新网络机顶盒排名

网络机顶盒让电视机重生,解决卡顿、资源少、广告多等问题,我们每年都会进行网络机顶盒测评,今年已经测评过17款,通过多角度对比筛选了五款表现最佳的产品整理成网络机顶盒排名,近期想买网络机顶盒不知道网络机顶盒哪个…

Linux学习之自定义函数

函数是把一些重复使用的命令封装成一个集合,之后可以使用函数名调用。 定义函数的格式如下: function 函数名() {指令集(若干条语句) return n }要是直接在Shell中直接定义函数,那么直接在Shell中直接使用函数名 参数…

matlab BP神经网络对iris数据集进行分类

iris数据集 本文所用数据集👉👉👉iris分类数据集 1.数据预处理 %% 1.数据预处理 oridatareadtable(Iris.xls,Sheet,Sheet1); Xtable2array(oridata(:,(1:4))); % X转化为array类型 Ytable2array(oridata(:,5)); % Y因为包含中文字符&…

在Mac系统下搭建Selenium环境并驱动Chrome浏览器

本文带领那些使用Mac的童鞋们实现Selenium驱动Chrome浏览器,虽然会有坑,但是我们可以凭借敏捷的身手躲过。下面就开始吧: 安装selenium 打开终端 ->pip安装(安装命令:pip3 install selenium) 安装浏览…

iperf3 编译安装及网讯WX1860千兆网口测试

iperf3 编译安装及网讯1860千兆网口测试 编译安装 安装包下载地址:https://github.com/esnet/iperf/archive/refs/tags/3.8.tar.gz 将安装包iperf-3.8.tar.gz拷贝测试系统盘桌面,使用如下命令进行编译安装: tar zxvf iperf-3.8.tar.gz cd iperf-3.8 ./configure make s…

vue中通过JavaScript实现web端鼠标横向滑动触控板滑动效果-demo

JavaScript实现web端鼠标横向滑动&触控板滑动效果 支持鼠标拖动滑动&触控板滑动效果 web端实现滑动&#xff0c;就是对鼠标按下、鼠标松开、鼠标移动事件进行监听 效果图 代码 结构代码 <template><div class"swiper"><div class"co…

【论文阅读】通过解缠绕表示学习提升领域泛化能力用于主题感知的作文评分

摘要 本文工作聚焦于从领域泛化的视角提升AES模型的泛化能力&#xff0c;在该情况下&#xff0c;目标主题的数据在训练时不能被获得。本文提出了一个主题感知的神经AES模型&#xff08;PANN&#xff09;来抽取用于作文评分的综合的表示&#xff0c;包括主题无关&#xff08;pr…

实时云渲染技术:VR虚拟现实应用的关键节点

近年来&#xff0c;虚拟现实&#xff08;Virtual Reality, VR&#xff09;技术在市场上的应用越来越广泛&#xff0c;虚拟现实已成为一个热门的科技话题。相关数据显示&#xff0c;2019年至2021年&#xff0c;我国虚拟现实市场规模不断扩大&#xff0c;从2019年的282.8亿元增长…

(css)AI智能问答页面布局

(css)AI智能问答页面布局 效果&#xff1a; html <!-- AI框 --><div class"chat-top"><div class"chat-main" ref"chatList"><div v-if"!chatList.length" class"no-message"><span>欢迎使…

特定Adreno GPU的Android设备发生冻屏问题

1&#xff09;特定Adreno GPU的Android设备发生冻屏问题 ​2&#xff09;Unity版本升级后&#xff0c;iOS加载UnityFramework bundle闪退 3&#xff09;关于RectTransfrom.rect在屏幕空间中表示的相关问题 4&#xff09;Unity Mesh泄露问题 这是第345篇UWA技术知识分享的推送&a…

【每日一题】2050. 并行课程 III

【每日一题】2050. 并行课程 III 2050. 并行课程 III题目描述解题思路 2050. 并行课程 III 题目描述 给你一个整数 n &#xff0c;表示有 n 节课&#xff0c;课程编号从 1 到 n 。同时给你一个二维整数数组 relations &#xff0c;其中 relations[j] [prevCoursej, nextCour…

Linux安装部署Nacos和sentinel

1.将nacos安装包下载到本地后上传到linux中 2.进入nacos的/bin目录,输入命令启动nacos [rootlocalhost bin]# sh startup.sh -m standalone注:使用第二种方式启动,同时增加日志记录的功能 2.2 startup.sh文件是不具备足够的权限,否则不能操作 给文件赋予执行权限 [rootlocalh…

yo!这里是STL::string类简单模拟实现

目录 前言 常见接口模拟实现 默认成员函数 1.构造函数 2.析构函数 3.拷贝构造函数 4.赋值运算符重载 迭代器 简单接口 1.size() 2.c_str() 3.clear() 操作符、运算符重载 1.操作符[] 2.运算符 3.运算符> 扩容接口 1.reserve() 2.resize() 增删查改接口 …

【数字IC基础】竞争与冒险

竞争-冒险 1. 基本概念2. 冒险的分类3. 静态冒险产生的判断4. 毛刺的消除使用同步电路使用格雷码增加滤波电容增加冗余项&#xff0c;消除逻辑冒险引入选通脉冲 1. 基本概念 示例一&#xff1a; 如上图所示的这个电路&#xff0c;使用了两个逻辑门&#xff0c;一个非门和一个与…

mybatis-spring

简介 通过简化实现流程&#xff0c;把MyBatis的最核心的内容展示出 mybatis的加载过程 执行流程 类图 核心流程 public class ApiTest {Testpublic void test_queryUserInfoById() {String resource "mybatis-config-datasource.xml";Reader reader;try {reader…

工业平板电脑优化汽车工厂的生产流程

汽车行业一直是自动化机器人系统的早期应用领域之一。通过使用具有高负载能力和远程作用的大型机械臂&#xff0c;汽车装配工厂可以实现点焊、安装挡风玻璃、安装车轮等工作&#xff0c;而较小的机械手则用于焊接和安装子组件。使用机器人系统不仅提高了生产效率&#xff0c;还…

STM32+FPGA的导常振动信号采集存储系统

摘 要 &#xff1a; 针 对 工 厂 重 要 设 备 运 输 途 中 可 能 损 坏 的情 况 &#xff0c; 本 文 设计 了一 套 采 用 &#xff33;&#xff34;&#xff2d;&#xff13;&#xff12;&#xff26;&#xff11;&#xff10;&#xff13;&#xff0b;&#xff26;&#xff3…

nginx mirror代码分析

实现方式 mirror逻辑的工作阶段&#xff1a; ngx在log phase之后&#xff08;在ngx_http_free_request处调用&#xff09;已完成向client端返回response&#xff0c;在log phase之后完成close connection&#xff08;短链接&#xff09;&#xff0c;在该阶段处理mirror逻辑不…

Godot 4 源码分析 - 获取属性信息

在管道通信基础上&#xff0c;可进行宿主程序与Godot的双向通信。 先拿属性信息试试手。 DrGraph端 static UnicodeString command "Book.position"; if (InputQuery("输入窗口", "请输入待获取的属性信息", command)) {TDrStream_Get drGet…