谈前端测试的重要性

news2025/1/17 15:31:14

如果正确完成前端测试,将使我们的用户感到满意,并在使用我们的应用程序时获得良好的性能体验。

根据 Bob 大叔的说法,测试是系统的一部分;许多开发人员认为相反,因为他们没有部署。他宣称这是一个灾难性的观点,因为测试的作用是支持开发并保持系统的健壮性和易于更改。

在前端,通常会测试最终用户与我们应用程序的交互。我们应该向用户保证,当他们登录、打开弹出窗口、添加评论或与我们的应用程序进行任何其他交互时,不会遇到任何错误和不愉快的体验。

在前端进行测试,如果正确完成,将使我们的用户感到满意,并在使用我们的应用程序时获得良好的性能体验。另一方面,对于开发者来说,会节省大量的时间去解决bug,或者在添加新特性的时候,不会破坏代码之前的行为。

为什么测试会不利?如何设计测试系统?

测试需要时间,也需要与开发过程中的变化保持一致。此外,随着设备和浏览器的发展,我们需要与时俱进。在软件测试中,有一个称为脆弱测试问题的概念。这可以定义为导致数百个测试失败的系统中的一个更改。Bob 大叔强调了设计良好的测试系统对于我们系统的稳定性和回归的预期好处的重要性(Clean Architecture,Robert C. Martin,2018)。

我们将描述一些可能有助于我们测试系统设计的方法和策略:

Martin Fowler 在他的文章“关于测试的多样化和奇异的形式”中讲述了当他们向测试专家询问单元测试的定义时他的那一刻。他说,这位专家的回答是,他在培训课程的第一天早上就涵盖了 24 种不同的单元测试定义。由于单元测试有许多不同的定义,在本文中,我们将包括 Fowler 称为单独测试的一种。

在著名的测试金字塔中,在底部,我们遇到了测试覆盖率较低但执行速度最快的单元测试。在第二层,我们看到了集成测试,它的覆盖率更高,但速度较慢,因为它可能会连接到外部部件。最后,我们有E2E 测试或一些呼叫验收测试,它们覆盖了应用程序的很大一部分,但它们执行起来最慢。

单元测试单独检查我们的组件是否正常工作。它们还涵盖了要测试的边缘案例,这使我们的代码库更加可靠。单元测试之后是集成测试的实施。集成测试检查相互连接时独立开发的两个软件单元或模块之间的通信。他们分析系统连接时的行为,并检查微服务之间的交互。它们还包括 API 连接,这就是为什么它们在单元测试方面速度较慢的原因,因为连接可能会延迟,或者服务可能会关闭。在前端,集成测试用于检查返回 API 的数据是否具有正确的对象、数组或格式。

E2E 测试模拟用户行为并检查用户与我们应用程序的所有交互。它们是在真实浏览器中执行的集成测试的专门版本。它们通常在合并或发布之前运行,因为完成测试的执行可能需要数小时。

在下文中,我们还提到了测试技术,例如 Accessibility 和 UI:可访问性测试检查用户界面是否可供每个用户轻松使用,并使我们的应用程序可用于残障人士。Jest-axe 是一个很棒的 Jest 测试库,它允许我们检查应用程序的可访问性。

UI 测试检查我们应用程序的用户界面是否正常工作。如果用户输入内容、单击复选框或删除元素,应该可以正常工作并按预期更新 UI 状态。

一些前端测试库回顾

Jest 是一个主要用于前端单元和集成测试的库。由于其巧妙的并行测试机制实现,对于测试文件较多的大型项目来说速度非常快。

测试库是一个我们可以编写单元和集成测试的库。它有助于方便的选择器、触发事件、配置、处理异步代码等等。

Cypress 是一个将其测试注入 Cypress.io 在浏览器中自行运行的网站的库。我们可以高效地编写单元、集成和端到端测试。它为开发者提供了更快的体验,我们可以很容易地在它的浏览器上看到错误。

Applitools 用于视觉回归测试。凭借其先进的 AI 技术,它可以检测图像和 DOM 之间的差异。检查我们网站的外观是否与前一个相同或是否发生错误非常有用。此外,如果用户在移动设备或网络上可以正确看到网站上的任何项目或按钮,它还会检查不同的浏览器和平台。

结论

前端测试应该是我们开发的一部分,以便在代码投入生产之前解决代码中的问题。我们应该编写单元测试来检查我们应用程序中的每个功能,还应该开发集成测试来检查所有组件和模块是否一起正常工作。另一方面,我们应该编写 E2E 测试来自动化手动点击测试,并以用户与我们的应用程序交互的方式为中心。

我们应该编写测试来提供信心,而不仅仅是改进指标。正如 Robert C. Martin 所说,我们应该避免编写与系统强耦合的测试。因为即使是最微不足道的更改也会导致许多测试中断。
 

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

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

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

相关文章

数据可视化之平台数据分析

一 前言 近年来,随着网络技术和电子商务的发展,对科学数据分析的研究提出了更高的要求,数据分析技术随之发展起来。我们可以通过数据分析技术,发现大量金融、通信和商业数据中隐含的规律,从而为决策提供依据。这已成为…

HTML5期末考核大作业 基于HTML+CSS+JavaScript仿王者荣耀首页 游戏网站开发 游戏官网设计与实现

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

Native 内存warp

Native 启动-动态/静态&libc &linker https://www.cnblogs.com/ilocker/p/4645308.html https://www.cnblogs.com/ilocker/p/4645308.html 修改LD_PRELOAD hook java native 库函数 https://blog.csdn.net/m0_57036414/article/details/126811772 Native malloc_debug …

如何用潜类别混合效应模型(Latent Class Mixed Model ,LCMM)分析老年痴呆年龄数据

全文下载链接:http://tecdat.cn/?p24647线性混合模型假设 N 个受试者的群体是同质的,并且在群体水平上由独特的曲线 Xi(t)β 描述(点击文末“阅读原文”获取完整代码数据)。相关视频背景和定义相比之下,潜在类别混合模…

国鸿氢能冲刺港股:年亏损7亿 云浮工业园与青岛城投是股东

雷递网 雷建平 11月28日国鸿氢能科技(嘉兴)股份有限公司(简称:“国鸿氢能”)日前递交招股书,准备在港交所上市。年亏损7亿国鸿氢能成立于2015年6月,是一家以氢燃料电池为核心产品的企业&#x…

MySQL监控主从复制

show slave status; show slave status; 不够准确 使用下面的

JetpackCompose从入门到实战学习笔记3——Text的简单使用

JetpackCompose从入门到实战学习笔记3——Text的简单使用 上一篇文章我们讲解了modifier的一些简单用法,本篇就开始讲解基础控件Text的一些简单用法. 1.源码分析: Composable fun Text(text: AnnotatedString,//要显示的文本modifier: Modifier Modi…

【PAT乙级】一百一十道真题刷后大汇总——C/C++

技巧总结避免精度丢失查询数据是否存在容器之间的比较是否相等缓存区中字符残留问题巧妙输入巧妙使用hash数组简单数学质数俩数最大公约与最小公倍数因子常用的头文件及其内部函数< map >< set >< pair >< string >< vector >< algorithm >…

算法排序基础(全版)

一、简单排序 这大概是我整理的最全的有关算法排序的内容啦&#xff01;欢迎大家前来学习&#xff0c;同时也希望多多支持一下博主哦&#xff01; ​ 在我们的程序中&#xff0c;排序是非常常见的一种需求&#xff0c;提供一些数据元素&#xff0c;把这些数据元素按照一定的规则…

【C++ STL容器】:vector存放数据以及存放自定义的数据类型

前言 时不可以苟遇&#xff0c;道不可以虚行。 STL 中最常用的容器为&#xff1a;vector&#xff0c;暂且把它理解为我们之前学过的数组Array。 一、创建一个vector容器&#xff08;数组&#xff09; 添加头文件&#xff1a;#include <vector> vector<int> v;二、…

VauditDemo靶场代码审计

靶场搭建 将下载好的VAuditDemo_Debug目录复制到phpstudy的www目录下&#xff0c;然后将其文件名字修改成VAuditDemo&#xff0c;当然你也可以修改成其他的 运行phpstudy并且访问install目录下的install.php&#xff0c;这里我访问的是http://127.0.0.1/VAuditDemo/install/in…

Linux 性能分析工具- Atop安装和使用

Atop下载&#xff1a;Atoptool.nl 安装时&#xff0c;可能会出现报错&#xff1a;error: Failed dependencies 提示很需要安装python3&#xff0c;所以yum -y install python3&#xff0c;然后再装atop就没问题了。 atop 常用命令 您可在打开日志文件后&#xff0c;使用以下命…

R语言使用马尔可夫链对营销中的渠道归因建模

介绍 在这篇文章中&#xff0c;我们看看什么是渠道归因&#xff0c;以及它如何与马尔可夫链的概念联系起来。最近我们被客户要求撰写关于马尔可夫链的研究报告&#xff0c;包括一些图形和统计输出。我们还将通过一个电子商务公司的案例研究来理解这个概念如何在理论上和实践上…

QT开发教程:QScroller实现home界面滑动效果

在上章我们学习了QScroller实现home界面滑动效果,但是该界面是实现的上下滑动效果,如果想模拟手机home滑动界面,则需要实现左右滑动效果. 本章,则重写QStackedWidget类,来真正的模拟手机,来实现home界面左右滑动效果. 1.SmoothStackedWidget类实现 demo界面如下图所示(创建了…

[附源码]计算机毕业设计springboot第三方游戏零售平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Discourse 在 2022-11 的最新版本中提供了新的边栏

官方有关这个边栏的说明和解释文章请参考链接&#xff1a; Try out the new sidebar and notification menus! - announcements - Discourse Meta 中的内容。 在这个新设计的边栏中包含了一些所有人都需要使用的快捷链接&#xff0c;同时还包括一些定义的快捷分类链接和 Tag 链…

haproxy keepalive实践

1 安装haproxy wget http://download.openpkg.org/components/cache/haproxy/haproxy-2.6.6.tar.gz tar -zxvf haproxy-2.6.6.tar.gz cd haproxy-2.6.6 mkdir -p /app/haproxy # 安装依赖,解决haproxy.c:80:31的问题 sudo yum -y install gcc openssl-devel pcre-devel system…

【Python】一、Python程序运行方式

文章目录实验目的一、熟悉Python的安装二、熟悉PyCharm安装三、启动IDLE&#xff0c;进入Python Shell&#xff0c;熟悉环境&#xff0c;运行教材案例&#xff1a;输出“hello world&#xff01;”四、打开“命令提示符”窗口&#xff0c;使用pip安装管理pygame、numpy等第三方…

算法训练Day30 回溯算法专题 | LeetCode332. 重新安排行程;51.N皇后(棋盘问题);37.解数独(二维的递归)

前言&#xff1a; 算法训练系列是做《代码随想录》一刷&#xff0c;个人的学习笔记和详细的解题思路&#xff0c;总共会有60篇博客来记录&#xff0c;计划用60天的时间刷完。 内容包括了面试常见的10类题目&#xff0c;分别是&#xff1a;数组&#xff0c;链表&#xff0c;哈…

android 自定义view: 跑马灯-光圈

本系列自定义View全部采用kt **系统: **mac android studio: 4.1.3 **kotlin version:**1.5.0 gradle: gradle-6.5-bin.zip 本篇效果: 前沿 最近在bilibili看到一个跑马灯光圈效果挺好, 参考着思路写了一下. bilibili地址,美中不足的是这是html代码 QaQ 实现思路 将效果…