自动化测试如何做?分层自动化测试如何实施?一篇概全...

news2024/9/24 17:12:19

目录:导读

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


前言

分层的自动化测试

1、单元自动化测试
定位:对软件中最小可测试单元进行检查和验证
谁做:由开发做更合适

测试人员做的优化是具备测试思维,在设计用例时考虑的更加全面,劣势是不熟悉被测代码

开发做的优势是熟悉自己的代码,只需要掌握单元测试框架的使用和一些常用的测试方法,即可写单元测试,而且定位BUG时更加方便

2、接口自动化测试
web应用的接口自动化测试大体分为两类:模块接口测试和协议接口测试。
模块接口测试,主要测试程序模块之间的调用与返回。它主要强调对一个可实现完整功能的类、方法或函数的调用的测试。

协议接口测试,主要测试对网络传输协议的调用,如HTTP/SOAP等,一般应用在前端和后端开发之间,以及不同项目之间。

谁做:模块接口测试由开发去做。协议接口测试既可以开发也可以测试。

3、UI自动化测试
UI自动化以实现手动测试用例为主,可降低系统功能回归测试的成本
谁做:由测试做更合适

Google把产品测试类型划分为:小测试、中测试、大测试。采用70%、20%、10%的比例,分别对应Unit层、Service层、UI层

4、适合自动化的项目
需求稳定,不会频繁变更;
软件维护周期长;
比较频繁的回归测试;
需要在多个平台上运行相同测试案例,大量重复的任务;
通过手工测试无法实现,或者手工成本太高;
被测软件系统开发较为规范,能够保证系统的可测试性;
测试人员具备较强的编程能力;
每日构建后的测试验证;
软件系统界面稳定,变动少;
项目进度压力不太大,资源充足;
具备大量的自动化测试平台;

一般满足以下三点即可做:
软件需求变动不频繁;
项目周期长;
自动化测试脚本可重复使用;

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

自动化测试模型

自动化测试模型可分为线性测试、模块化与类库、数据驱动测试、关键字驱动测试

线性测试:
这是早期自动化测试的一种形式,通过录制或编写对应用程序的操作步骤来产生相应的线性脚本,每个线性脚本相对独立,且不产生依赖与调用,只是单纯地模拟用户完整的操作场景

模块化与类库:
线性测试的缺点是不易维护,所以采用模块化思想,将重复的操作单独封装成公共模块。当需要用到该模块时,只需要对其进行调用。

消除了代码重复,从而提高测试用例的可维护性。

数据驱动测试:
在有些场景中,测试步骤一致,但数据不一致,比如测试不同用户登录。模块化测试并不能解决这类问题。于是有了数据驱动测试。

数据驱动测试就是,数据的改变驱动自动化测试的执行,最终引起测试结果的改变。简单说就是把数据驱动所用到的测试数据参数化,可以用多种方式来存储和管理这些参数化的数据。

可将测试数据放到数据文件中,如txt文件、Excel、CSV、JSon、Yaml、Xml。测试用例脚本中直接调用文件中的数据

关键字驱动测试:
关键字驱动测试又被称为表驱动测试或基于动作字测试。这类框架会把自动化操作封装成“关键字”,避免测试人员直接接触代码,多以填表格的形式降低脚本的编写难度

Robot Framework 是主流的关键字驱动测试框架之一
这几种测试模型并非后者淘汰前者的关系,在实际过程中,需要相互结合使用。

POM设计模式

POM(Page Object Model):页面对象模型,是一种设计模式,用来管理维护一组web元素集的对象库。使用POM设计模式最终的目的是为了程序松耦合。

设计思想:把元素定位和元素操作进行分层,好处是当元素发生变化时,只需要维护page层的元素定位,不需要关心哪些测试用例中使用了哪些元素,在编写测试用例时,也不需要关心元素是如何定位的。

在POM下,应用程序的每一个页面都有一个对应的page class
每个page class都维护着该web页面的元素集和操作这些元素的方法

POM三层模型

第一层
Base基础页面层:抽取每个页面的相同方法、相同属性(即公共方法、公共属性)到一个基础类BasePage。例如:元素定位方法封装

第二层
PO页面层:每个页面定义其自己的page Object类,定义该页面的元素定位、封装页面功能的方法

第三层
测试用例层:用例操作流程
三层之间的关系:第二层继承第一层,第三层调用第二层里面的方法
当元素发生变化时,只需要修改第二层的元素定位。

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

生命如同一场马拉松,每一步都需要坚韧与毅力。不论起点如何,只要你奋力向前,你就能超越自我,迎接胜利的喜悦。相信自己的力量,努力奋斗,创造属于自己的辉煌人生!

当你为梦想奋斗时,困难和挑战会不期而至。但不要屈服,勇往直前,因为只有奋斗,才能超越自我,书写属于自己的传世之路。相信自己,坚持努力,创造一个不可替代的人生奇迹!

脚步虽微弱,但信念铸就坚强;困境虽险峻,但勇气引领前行。奋斗的路上,愈挫愈勇,磨难成就辉煌之梦。

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

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

相关文章

qt简易闹钟

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ui->stopBtn->setDisabled(true);this->setFixedSize(this->size()); //设置固定大小this->s…

【Spring Cloud Alibaba】限流--Sentinel

文章目录 概述一、Sentinel 是啥?二、Sentinel 的生态环境三、Sentinel 核心概念3.1、资源3.2、规则 四、Sentinel 限流4.1、单机限流4.1.1、引入依赖4.1.2、定义限流规则4.1.3、定义限流资源4.1.4、运行结果 4.2、控制台限流4.2.1、客户端接入控制台4.2.2、引入依赖…

(双指针) 剑指 Offer 57. 和为s的两个数字 ——【Leetcode每日一题】

❓ 剑指 Offer 57. 和为s的两个数字 难度:简单 输入一个递增排序的数组和一个数字 s,在数组中查找两个数,使得它们的和正好是 s。如果有多对数字的和等于 s,则输出任意一对即可。 示例 1: 输入:nums [2…

1400*C. Strong Password

Example input 5 88005553535123456 2 50 56 123412341234 3 111 444 1234 4 4321 4321 459 2 49 59 00010 2 10 11output YES NO YES NO YES解析: 题目要求有一种密码不在数据库中即可,所以枚举每一位的所有可能的数字,记录这一位数字在数…

帆软 FineReport/FineBI channel反序列化漏洞分析

事件背景 热点漏洞 漏洞说明 1. 漏洞原理:FineReport/FineBI channel接口能接受序列化数据并对其进行反序列化。配合帆软内置CB链会导致任意代码执行。 2. 组件描述:FineReport是一款企业级报表设计和数据分析工具,它提供了丰富多样的组件…

教你轻松又简单的绘制地铁线路图

地铁是主要以地下运输为主的交通系统。其轨道通常在地下隧道内。其中:地铁线路中的M,L,S,R分别代表:MMetro地,LLight轻轨,SSuburb市郊铁路,Rrapid,快速铁路。地铁线路图则可以简单理解为地铁的运行路线轨道…

基于Java+SpringBoot+vue前后端分离足球青训俱乐部管理后台系统设计实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

【自动话化运维】Ansible常见模块的运用

目录 一、Ansible简介二、Ansible安装部署2.1环境准备 三、ansible 命令行模块3.1.command 模块3.2.shell 模块3.3.cron 模块3.4.user 模块3.5.group 模块3.6.copy 模块3.7.file 模块8&#xff…

Java阶段五Day15

Java阶段五Day15 文章目录 Java阶段五Day15分层其他依赖dao-apidao-implinfrustructuredomainadaptermain 测试整合项目main前台师傅功能luban-front配置师傅相关表格ER图ER练习案例鲁班表格ER关系(非常重要) 前台师傅接口——师傅入驻adapterdomaininfr…

【C语言】指针进阶(二)

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

使用xtcp映射穿透指定服务

使用xtcp映射穿透指定服务 管理员Ubuntu配置公网服务端frps配置service自启(可选) 配置内网服务端frpc配置service自启(可选) 使用者配置service自启(可选) 通过frp实现内网client访问另外一个内网服务器 管理员 1)配置公网服务端frps2)配置内网服务端…

2023年 React 最佳学习路线

CSS CSS JavaScript JavaScript TypeScript 目前没有找到比其他文档好很多的文档地址 可以先看官网 React 新版 React 官方文档无敌 React React-router-dom V5 V6 Webpack webpack Antd antd

基于贴花的热力图呈现方法参考

首先是热力图信息类: using System; using UnityEngine;[Serializable] public class HeatMapInfo {public Rect rect Rect.zero;public float pixelDensity 1;public float valBase 0;public float valRange 1;public PercentColor[] ribbon;//色带public Col…

关联分析-Apriori

关联分析-Apriori 1. 定义 关联分析就是从大规模数据中,发现对象之间隐含关系与规律的过程,也称为关联规则学习。 2. 相关概念 2.1 事务、项与项集 订单号购买商品0001可乐、薯片0002口香糖、可乐0003可乐、口香糖、薯片 以上面的订单为例&#xf…

一套流程6个步骤,教你如何正确采购询价

采购询价(RFQ)是一种竞争性投标文件,用于邀请供应商或承包商就标准化或重复生产的产品或服务提交报价。 询价通常用于大批量/低价值项目,买方必须提供技术规格和商业要求,该文件有时也称为招标书或投标邀请书。询价流…

客户问题解决平台-帮助与支持中心

在现代企业中,帮助与支持中心扮演着至关重要的角色。随着市场的竞争日趋激烈,客户对于产品和服务的期望也越来越高。因此,建立一个高效的客户问题解决平台是企业成功的关键之一。本文将探讨帮助与支持中心的作用,介绍其功能和优势…

Linux(二)--Linux基础命令

我们在前面学习的Linux命令,其实它们的本体就是一个个的二进制可执行程序。 和Windows系统中的.exe文件,是一个意思。 一.Linux的目录结构 Linux的目录结构是一个树形结构。 Windows系统可以拥有多个顶级目录,称之为盘符,如C盘&…

Journal of Information Security and Applications (JISA) 投稿经验分享

Journal of Information Security and Applications (JISA) 投稿经验分享 基本情况: 中科院三区 JCR Q2 2023影响因子:5.6 老牌信息安全类期刊 投稿经验: With editor 周期: 1-2个月,稍微有点慢 Under review 周期: 2…

Nautilus Chain 即将发行治理通证 NAUT ,生态发展进程加速

独特且优势明显的 Nautilus Chain 目前,行业内首个模块化底层 Nautilus Chain 已经上线主网,并且即将有超过 70 个应用原生部署在 Nautilus Chain 上。Nautilus Chain 本身是一个以 Layer3 为定位的区块链系统,其通过 Celestia 模块化底层来获…

C++初阶之一篇文章让你掌握string类(模拟实现)

string类模拟实现 1.为什么要模拟实现string2.string的模拟实现需要注意哪些问题3.经典的string类问题4.写时拷贝5.传统版写法的String类(参考)6.现代版写法的String类(参考)7.string类的模拟实现(讲解)7.1…