E2E测试学习
一、什么是E2E测试
e2e(end to end),也叫端到端测试,是一种用于测试应用程序流是否从头到尾按设计执行的方法。 执行端到端测试的目的是识别系统依赖关系,并确保在各种系统组件和系统之间传递正确的信息。端到端测试的目的是测试 整个软件的依赖性、数据完整性以及与其他系统、接口和数据库的通信,以模拟完整的生产场景。
这种测试覆盖了整个应用程序的工作流程,包括前端(用户界面)、后端(服务器)、数据库以及任何外部系统或服务的交互。E2E测试的目标是验证系统作为一个整体是否按预期工作,确保各个组件协同合作无误。
二、E2E测试特点
- 全面性:覆盖整个应用的业务流程,确保端到端的功能正确性。
- 模拟真实场景:反映用户实际操作,发现集成和交互问题。
- 非技术依赖性:测试设计通常不需要深入代码细节,更关注功能表现。
- 自动化友好:大多数E2E测试工具支持脚本编写,便于自动化执行。
三、E2E测试优点
- 确保系统集成性:验证不同模块或服务间的交互无误。
- 提高用户信心:直接关联用户操作,确保用户体验质量。
- 发现问题早:在部署前发现并修复高层面的缺陷,减少生产环境问题。
- 自动化测试效率:一旦设置好,可以快速重复执行,节省人力成本。
四、E2E测试缺点
- 运行缓慢:相比单元测试,E2E测试通常更耗时,因为它们涉及更多组件和网络交互。
- 维护成本高:随着应用变更,测试脚本可能需要频繁更新。
- 测试稳定性:由于依赖真实环境,网络延迟、第三方服务不稳定等因素可能导致测试结果波动。
- 资源消耗大:启动浏览器、加载页面等操作需要较多计算资源。
五、Python 和golang 常见E2E 测试框架
E2E测试工具广泛应用于不同的开发环境中,以满足不同编程语言和技术栈的需求。以下是几种常见的E2E测试工具,包括针对Python和Golang的:
5.1、Python E2E测试工具
-
Selenium: Selenium是一个非常流行的Web应用程序测试框架,支持多种浏览器。它提供了强大的API来模拟真实用户操作,如点击、填写表单、导航等。Selenium WebDriver是其核心部分,允许编写自动化测试脚本来控制浏览器行为。
-
PyTest + pytest-selenium: PyTest是一个通用的Python测试框架,而pytest-selenium是一个插件,使得使用PyTest编写Selenium测试变得简单。结合这两个工具,开发者可以编写简洁、易读的测试代码。
-
Cypress (Web UI Testing): 虽然Cypress主要与JavaScript生态系统关联,但它可以通过Python的HTTP请求库(如requests)间接用于驱动测试,特别是在API测试方面。Cypress以其出色的开发者体验和实时反馈机制而受到喜爱。
-
Behave: Behave是一个用于行为驱动开发(BDD)的Python库,它允许以自然语言风格的特性(Features)和场景(Scenarios)来编写测试,非常适合非技术人员理解和参与。
5.2、Golang E2E测试工具
-
Go-Webdriver: 或称为
go-webdriver, 是一个用于与Selenium WebDriver协议交互的Golang库,允许你用Golang编写E2E测试脚本,控制浏览器行为,适用于Web应用程序的自动化测试。 -
Rod: Rod是一个基于Chrome DevTools Protocol的高级Web自动化库,专为Golang设计。它提供了强大的API来操作浏览器,支持UI测试、爬虫开发等。Rod因其高效、灵活且易于使用而受到欢迎。
-
Ginkgo: Ginkgo是一个行为驱动的测试框架,类似于Python的Behave或Java的JUnit,它为Golang提供了结构化的测试语法,特别适合编写清晰、可读性强的E2E测试。
-
Gomega: Gomega通常与Ginkgo一起使用,作为断言库,提供了丰富的匹配器来验证测试结果。这两者的组合为Golang项目提供了一个强大的BDD测试解决方案。
参考文档
1、https://shenyu.apache.org/zh/blog/E2eTest-Analysis/
2、https://blog.csdn.net/u012961419/article/details/123821205
3、https://www.cnblogs.com/jinsdu/p/12183298.html
相关文章:
E2E测试学习
一、什么是E2E测试 e2e(end to end),也叫端到端测试,是一种用于测试应用程序流是否从头到尾按设计执行的方法。 执行端到端测试的目的是识别系统依赖关系,并确保在各种系统组件和系统之间传递正确的信息。端到端测试的目的是测试 整个软件的…...
基于死区补偿的永磁同步电动机矢量控制系统simulink仿真模型
整理了基于死区补偿的永磁同步电动机矢量控制系统simulink仿真,该模型使用线性死区补偿的PMSM矢量控制算法进行仿真,使用Foc电流双闭环 。 1.模块划分清晰,补偿前后仿真有对比,易于学习; 2.死区补偿算法的线性区区域可调; 3.自…...
GSCoolink GSV6125 替LT6711A HDMI2.0转Type-C/DP1.4
GSCoolink GSV6125 在 Type C/Dp monitor,线材,VR/AR,系统均有大量的应用机会,且目前只有龙迅LT6711A 竞争对手。 Gscoolink GSV6125是一款高性能、低功耗的HDMI 2.0转Type-C/DP1.4转换器。通过集成增强型微控制器,GS…...
【自然语言处理】【大模型】DeepSeek-V2论文解析
论文地址:https://arxiv.org/pdf/2405.04434 相关博客 【自然语言处理】【大模型】DeepSeek-V2论文解析 【自然语言处理】【大模型】BitNet:用1-bit Transformer训练LLM 【自然语言处理】BitNet b1.58:1bit LLM时代 【自然语言处理】【长文本…...
前端面试题日常练-day10 【面试题】
题目 希望这些选择题能够帮助您进行前端面试的准备,答案在文末。 1. 下面哪个CSS属性用于设置元素的字体样式? a) font-size b) font-color c) font-style d) font-weight2. 如何在JavaScript中判断一个变量的类型? a) typeOfb) getTypec)…...
conan2 基础入门(04)-指定编译器(gcc为例)
conan2 基础入门(04)-指定编译器(gcc为例) 文章目录 conan2 基础入门(04)-指定编译器(gcc为例)⭐准备生成profile文件预备文件和Code ⭐使用指令预览正确执行结果可能出现的问题 ⭐具体讲解conancmake ENDsettings.yml ⭐准备 生成profile文件 # 生成默认profile文件…...
谈谈std::map的lower_bound
我们知道std::map内部是一个红黑树,放到std::map里的数据等有一个能比较大小的方法。它相当于java里面的TreeMap。 它里面有个lower_bound方法,返回一个迭代器,它指向map里第一个大于等于参数的元素。 方法的签名很简单,但是在不同…...
不知道代理IP怎么挑?一文带你了解挑选的关键点!
IP代理在如今的网络环境中扮演者至关重要的角色。通过使用代理IP,可以增强用户个人信息和网络的安全。但想要挑选到适合自己的代理IP,并非是一件易事。今天就为大家带来挑选代理IP的关键注意点,帮你轻松筛选出最佳的选择。 稳定性与速度&…...
java 并发线程应用
java 并发线程相关 线程状态 新建(NEW): 创建后尚未启动。可运行(RUNABLE): 正在 Java 虚拟机中运行。但是在操作系统层面,它可能处于运行状态,也可能等待资源调度(例如处理器资源),资源调度完成就进入运行状态。所以该状态的可运行是指可以被运行,具体有没有运行要看底层…...
Java面试八股文(SpringCloud篇)
****************************************************...
PWRWER
编译烧录完代码之后,按下复位键屏幕会进行刷新,数据不会丢失 如果按下按键,进行页擦除,之后再按下复位键,发现屏幕不会再进行刷新,原因是程序已经被擦除,损毁,无法运行,此…...
怎样恢复E盘里删了的文件夹,2024让EasyRecovery来帮你轻松恢复
使用EasyRecovery易恢复进行数据恢复非常简单。首先,用户需要选择需要恢复的数据类型,如文档、图片、视频等。然后,软件会对选定的存储设备进行全面扫描,以寻找可恢复的数据。在扫描过程中,用户可以预览部分已找到的文…...
OSPF实验
需求: 1、R6为ISP只能配置IP地址,R1-R5的环回为私有网段。 2、R1/4/5为全连的MGRE结构,R1/2/3为星型的拓扑结构,R1为中心站点。 3、所有私有的网段可以互相通讯,私有网段使用OSPF协议完成。 第一步、搭建拓扑并按如…...
喜茶·茶坊黑金首店入驻北京三里屯,率先引入珍稀娟姗奶制茶
发布 | 大力财经 近日,喜茶茶坊 BLACK 在北京三里屯开业,这是喜茶新业态的首家黑金店型。该店在延续喜茶茶坊“鲜、茶、纯”的精品茗茶特色和宋代茶文化审美意趣的基础上,首次升级呈现了铜锅手煮烹茶工艺、娟姗牛乳制茶等创新尝试࿰…...
C++(week3):数据结构与算法
文章目录 (十一) 常用数据结构1.动态数组(1)模型(2).h与.c(3)实现 2.链表(1)模型(2)分类(3)基本操作(API)(4)实现(5)链表常见面试题(6)空间与时间 3.栈(1)模型(2)基本操作(3)实现(4)栈的应用 4.队列(1)模型(2)基本操作(API)(3)实现(4)队列的应用 5.哈希表(1)哈希表的提出原因(2…...
✅HTTPS和HTTP的区别是什么?
一、问题解析 HTTP和HTTPS是两种协议,分别是Hypertext Transfer Protocol和HyperText Transfer Protocol Secure。 HTTPS还经常被称之为HTTP over SSL或者HTTP over TSL,HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。 他们的区别主要…...
AIGC、LLM 加持下的地图特征笔记内容生产系统架构设计
文章目录 背景构建自动化内容生产平台系统架构设计架构详细设计流程介绍笔记来源笔记抓取干预 笔记 AIGC 赋能笔记 Rule 改写笔记特征库构建 附录Bash Cron 定时任务Golang 与 Pyhon AIGC 实践 小结 背景 在大模型的浪潮下,ChatGPT、Sora、Gemini、文言一心 等新技…...
快速入门go语言学习笔记
文章目录 1、初识go1.1、go语言1.2 第一个Go程序 2、基础类型2.1、命名2.2、变量2.2.1 变量声明2.2.2 变量初始化2.2.3 变量赋值2.2.4 匿名变量 2.3、常量2.3.1 字面常量(常量值)2.3.2 常量定义2.3.3 iota枚举 2.4、基础数据类型2.4.1 分类2.4.2 布尔类型2.4.3 整型2.4.4 浮点型…...
MS41908M替代AN41908
产品简述 MS41908M 是一款用于网络摄像机和监控摄像机的镜头 驱动芯片他可完全替代AN41908。 芯片内置光圈控制功能;通过电压驱动方式以及扭矩纹 波修正技术,实现了噪声微步驱动。 主要特点 电压驱动方式,256 微步驱动电路(两通道…...
Lc33---- 414. 第三大的数(java版)---排序(去重/复制到新数组)
1.题目描述 给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。 示例 1: 输入:[3, 2, 1] 输出:1 解释:第三大的数是 1 。 示例 2: 输入:[1, 2] 输出…...
别再用Delay了!用GD32的TIMER5实现精准1ms定时,让你的嵌入式程序更高效
告别阻塞式延时:用GD32 TIMER5构建高效嵌入式系统心跳 在嵌入式开发中,时间管理如同系统的心跳,决定了整个应用的响应速度和执行效率。许多开发者习惯使用delay_ms()这类阻塞式延时函数,却不知这会让CPU陷入无意义的等待状态&…...
LangChain框架使用说明
LangChain框架的安装与环境配置 LangChain的安装可通过Python包管理器快速完成。核心库包括langchain、langchain-community和langchain-core,建议使用以下命令进行完整安装: pip install langchain langchain-community langchain-core openai环境配…...
数学动画音频同步:让几何图形随音乐起舞的技术实现
数学动画音频同步:让几何图形随音乐起舞的技术实现 【免费下载链接】manim A community-maintained Python framework for creating mathematical animations. 项目地址: https://gitcode.com/GitHub_Trending/man/manim 在数学可视化领域,Manim…...
Mermaid Live Editor:5分钟掌握专业图表制作的在线实时编辑器
Mermaid Live Editor:5分钟掌握专业图表制作的在线实时编辑器 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live…...
OBS智能背景移除插件:无绿幕实时抠图与低光增强完整指南
OBS智能背景移除插件:无绿幕实时抠图与低光增强完整指南 【免费下载链接】obs-backgroundremoval An OBS plugin for removing background in portrait images (video), making it easy to replace the background when recording or streaming. 项目地址: https:…...
PUBG罗技鼠标宏:告别压枪困扰的终极解决方案
PUBG罗技鼠标宏:告别压枪困扰的终极解决方案 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中的武器后坐力而烦恼…...
食品批发厂家口碑推荐榜
在食品批发行业,选择一家口碑良好的厂家至关重要。优质的食品批发厂家不仅能提供高品质的产品,还能保障稳定的供应和良好的售后服务。今天,我们就来为大家推荐一些口碑出众的食品批发厂家,其中惠州市佳德旺食品有限公司表现尤为突…...
手把手教你用llama.cpp的RPC功能,把旧笔记本变成大模型推理服务器(附性能对比)
用llama.cpp的RPC功能将旧笔记本改造成大模型推理服务器的完整指南 1. 为什么需要分布式推理环境? 当我在2023年第一次尝试在个人笔记本上运行7B参数的大语言模型时,即使经过量化处理,生成每个token仍需要近10秒——这种体验简直令人崩溃。但…...
SPM12实战:手把手教你搞定fMRI数据预处理(从时间矫正到空间平滑)
SPM12实战:零基础入门fMRI数据预处理全流程解析 第一次接触功能磁共振成像(fMRI)数据分析时,面对SPM12复杂的界面和晦涩的术语,很多新手都会感到无从下手。这篇文章将带你从零开始,用最直观的方式掌握fMRI数…...
数据库课程设计融合AI:使用PyTorch构建智能图书馆推荐系统
数据库课程设计融合AI:使用PyTorch构建智能图书馆推荐系统 1. 项目背景与价值 高校图书馆管理系统是数据库课程的经典设计选题,但传统方案往往只关注基本的增删改查功能。将AI推荐系统融入课程设计,不仅能让学生掌握数据库设计核心技能&…...
