当前位置: 首页 > news >正文

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文件&#xf…...

谈谈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 在北京三里屯开业,这是喜茶新业态的首家黑金店型。该店在延续喜茶茶坊“鲜、茶、纯”的精品茗茶特色和宋代茶文化审美意趣的基础上,首次升级呈现了铜锅手煮烹茶工艺、娟姗牛乳制茶等创新尝试&#xff0…...

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] 输出…...

从GC停顿2.3s到零暂停:Java函数GraalVM Native Image迁移全周期复盘(含12个兼容性雷区)

第一章:从GC停顿2.3s到零暂停:Java函数GraalVM Native Image迁移全周期复盘(含12个兼容性雷区)在高吞吐、低延迟的Serverless函数场景中,一个Spring Boot微服务因频繁Full GC导致单次停顿高达2.3秒,严重违反…...

避坑指南:pyzbar识别模糊二维码的5种图像预处理技巧(Python+OpenCV)

提升pyzbar识别率:5种图像预处理技术解决模糊二维码难题 1. 模糊二维码识别的核心挑战 在现实应用中,二维码识别经常遇到各种图像质量问题。我曾在一个物流仓储项目中亲眼目睹,由于包装反光和运输磨损,标准识别流程的失败率高达40…...

Qwen3.5-2B图文理解实战:上传建筑平面图,自动标注房间功能与面积

Qwen3.5-2B图文理解实战:上传建筑平面图,自动标注房间功能与面积 1. 引言:当AI遇见建筑设计 想象一下这样的场景:你刚拿到一张复杂的建筑平面图,需要快速标注每个房间的功能和面积。传统方法可能需要花费数小时手动测…...

**发散创新:基于Python的虚拟原型快速构建实践与实战代码解析**

发散创新:基于Python的虚拟原型快速构建实践与实战代码解析 在现代软件开发流程中,虚拟原型(Virtual Prototype) 已成为产品设计前期验证的核心手段。它不仅加速了需求确认过程,还显著降低了后期返工成本。本文将深入…...

别再只记*#*#284#*#*了!揭秘小米手机日志抓取的‘售后模式’:CIT工具(*#*#6484#*#*)的隐藏用法与解读

解锁小米手机CIT工具的隐藏潜能:从硬件诊断到日志深度解析 在智能手机高度普及的今天,用户对设备问题的自主排查需求日益增长。小米手机内置的CIT工具(Customer Interface Test)作为售后服务的核心诊断利器,其实蕴藏着…...

从编译错误到版本管理:C语言“商人过河”游戏代码的现代化改造之旅

1. 从古董代码到现代项目:一场技术考古与修复之旅 第一次打开那份"商人过河"的C语言游戏代码时,我仿佛穿越回了二十年前。满屏的编译错误、过时的函数调用、混乱的格式,还有那些早已被现代编译器抛弃的写法。这让我想起刚入行时接手…...

如何高效使用Zettlr:开源写作工具的实用配置与技巧指南

如何高效使用Zettlr:开源写作工具的实用配置与技巧指南 【免费下载链接】Zettlr Your One-Stop Publication Workbench 项目地址: https://gitcode.com/GitHub_Trending/ze/Zettlr 还在为学术写作和知识管理寻找一个功能全面、界面简洁的跨平台工具吗&#x…...

4个步骤掌握Faze4机械臂开发:从硬件组装到智能控制的完整实践指南

4个步骤掌握Faze4机械臂开发:从硬件组装到智能控制的完整实践指南 【免费下载链接】Faze4-Robotic-arm All files for 6 axis robot arm with cycloidal gearboxes . 项目地址: https://gitcode.com/gh_mirrors/fa/Faze4-Robotic-arm Faze4开源六轴机械臂项目…...

5. 大模型核心基础概念(三):模型量化、蒸馏、微调的核心逻辑(通俗解读)

001、开篇:为什么大模型需要“瘦身”与“调教”?——量化、蒸馏、微调的必要性 上周在产线调试一个端侧部署的视觉模型,设备跑着跑着就内存溢出了。同事盯着日志问我:“模型在服务器上明明跑得好好的,怎么一到嵌入式板子上就崩了?” 我看了眼那 2GB 的 RAM 和板载的 8GB …...

异构计算与边缘协同:基于 ARM/X86 的企业级 AI 视频中台架构设计

引言:算力碎片化时代的“异构”挑战 在 AI 落地安防的深水区,架构师面临的最大挑战不再是算法模型的精度,而是算力底座的碎片化。项目现场往往呈现出复杂的“万国牌”局面:总部机房可能部署着 NVIDIA A100 的 x86 服务器用于离线训…...