学会4种方法,掌握端到端测试处理数据..

news2024/11/18 1:26:46

推荐阅读:

[内部资源] 想拿年薪30W+的软件测试人员,这份资料必须领取~

Python自动化测试全栈+性能测试全栈,挑战年薪40W+

对Web应用程序运行自动化的端到端测试时,最常见的问题之一是如何处理测试数据。端到端测试通常会在通过应用程序中的测试用例时创建,更新和删除各种信息。

不可避免地,您会遇到问题,因为先前的测试运行会留下一堆陈旧的数据,这些数据可能会干扰您当前的测试执行。

对于其他形式的测试,管理数据并不是一个大问题。有些测试,如功能测试和集成测试,只检查应用程序的一小部分,使每次运行测试后更容易清理。在其他类型的测试中,比如较小的单元测试,您可以使用stub或mock任何必要的数据。

对于端到端测试,理想的场景是在整个系统中尽可能接近真实的使用情况。这意味着您需要确保您的系统服务拥有用于测试的正确数据,并在所有移动部件之间维护适当的数据完整性。您还需要将测试数据保持在不会干扰未来测试运行的状态。

可悲的是,说起来容易做起来难。根据应用程序的复杂性以及团队规模、可用技能集和组织预算等其他因素,可以采用不同的方式处理此问题。如果你正在努力寻找解决这个问题的方法,这里有一些方法可以让你思考如何最好地解决你的情况。

用于自动化测试的专用测试服务器

优点

您可以拥有被测试的整个应用程序的完整副本,其工作方式与生产应用程序相同。单独的环境不会妨碍手工或探索性测试。

缺点

如果你有一个复杂的系统架构,它会变得非常昂贵。

单独的服务器需要定期维护和升级,以保持系统平稳运行。

您仍然需要处理在测试运行之间保持数据处于良好状态的问题。

为了充分利用端到端测试,理想的做法是在尽可能接近生产环境的环境中执行它们。在一些组织中,您的生产应用程序将运行在专用的服务器上。很可能,它们也有用于UAT或登台目的的独立测试环境。虽然使用这些服务器运行自动化测试是可以接受的,但是最好有一个单独用于自动化测试的环境。

通过让专用服务器运行并准备好进行自动化测试,您可以创建相同的生产环境。这样,您就可以使用客户使用的相同结构的镜像对应用程序进行自动化操作。另外,拥有一个不会与手动或探索性测试产生冲突的独立环境也很有帮助。

这种方法确实有一些需要注意的地方。如果您的系统架构需要运行许多不同的服务,那么设置一个新环境可能会花费很多钱。如果有一个内部团队管理服务器,那么运行额外的服务器也会牺牲时间。最后,拥有一个不同的环境并不能完全解决在任何时候都拥有用于测试的正确数据的问题。它使得对数据的控制更易于管理,比如重新设置或恢复数据库。但是您仍然必须在测试中进行管理。

使用虚拟化或云计算来启动测试服务器

优点

您可以随意启动完整的测试环境。

方便开发人员和测试人员在本地或在线创建一次性测试环境。

比一直使用专用硬件更便宜。

缺点

需要一些预先的专业知识来开始启动。

如果您需要启动大量服务以使测试应用程序正确工作,那么它可能会降低测试周期。

你可能会不小心忘记关闭云服务,而这最终会花掉你一大笔钱。

与专用服务器一样,您还可以利用虚拟化和云服务来生成单独的测试环境。目前,大多数组织和初创企业都将其应用程序托管在某种形式的云服务上,在大多数情况下,创建单独的服务器不需要任何额外配置。

虚拟化和云的伟大之处在于,您可以在瞬间启动和关闭成熟的服务,因此不需要处理保持它们一直运行的时间和成本成本。此外,Docker等虚拟化工具帮助开发人员和测试人员在本地系统上复制相同的环境,从而简化未发布功能的端到端测试过程。在任何时候,测试人员都可以使用新数据重新生成新服务器。

虚拟化和云服务是中小型团队的最佳选择,但它也不是完美的解决方案。在开始时需要一些专业知识,以确保虚拟化服务按预期运行。如果您有很多服务要运行,那么启动新的服务可能会减慢团队的测试工作流程。最后,请记住,云计算公司通常根据服务运行时间收费。如果您在运行测试后忘记关闭服务器,那么您将会收到一笔惊人的服务费。

添加开发标志来控制现有登台环境上的数据

优点

允许测试人员在测试期间轻松地添加和删除数据。

它可以通过绕过长工作流来生成测试数据来加速一些测试场景。

缺点

它需要开发时间来实现,这在您的组织中可能是稀缺的。

这是开发人员需要在应用程序中维护的另一件事。

如果测试人员绕过长时间的工作流,不单独验证它们,那么它可以隐藏错误和回归。

一些团队在他们的应用程序中创建“开发标志”。这些标志是特殊的功能,允许团队执行生产环境中不可用的不同命令。例如,开发人员可以在使用特定帐户登录时访问应用程序中的特殊部分,或者访问绕过某些流的API端点。这些标志允许测试人员在运行测试场景之前自动创建数据库记录,而无需通过应用程序或清理数据库。

这种方法在测试环境中非常有用,因为您不需要过多地担心从一开始就在测试环境中拥有正确的数据。您可以在测试用例中包含一个设置步骤来清理数据库,并在每个场景之前生成所需的数据。它还可以显著加快测试速度,因为您可以跳过多个步骤来创建记录。一个典型的例子是在系统上创建新帐户时绕过电子邮件验证。使用开发标志,您可以创建一个有效的帐户,而不需要处理电子邮件验证部分。

开发标志的缺点是它需要开发人员实现和维护这些标志。在大多数组织中,开发人员每天可能有许多其他高优先级的任务要做,从特性到bug修复,以及两者之间的所有事情。这类任务的优先级通常较低,因为它不能直接为客户增加价值,所以团队构建和管理这些标志可能不可行。另一个问题是测试人员可能过于依赖这些标志,导致错误溜走,因为开发标志允许他们绕过应用程序的某些部分。

为测试api创建临时模拟数据服务

优点

它允许测试人员在开发应用程序时进行自动化工作。

很容易设置一个干净的状态并在将来修改它,而无需潜入数据库。

缺点

您并不是在真实的系统上进行测试,这是端到端测试的主要目标之一。

模拟服务不会暴露基础设施中的问题。

如果被测应用程序的数据结构不断变化,那么您将花费大量时间维护这些模拟服务。

测试应该在开发过程中尽可能早地开始。当开发团队仍在构建新特性和基础时,使用前面提到的策略之一可能不可能运行端到端测试。但这并不意味着在开发人员发布某些东西之前,您不能从测试自动化开始。根据您的应用程序,您可以模拟数据层,同时保持应用程序的其余部分用于测试。

目前,大多数应用程序使用RESTful api来检索和存储数据。如果你有一个API不完整的应用程序,你可以使用像Mirage JS这样的库来创建一个可以模拟最终API端点的服务。如果您不想构建模拟API服务,您可以使用在线服务,比如mockAPI。这些库和服务可以让您轻松地控制所需的数据和响应,并且适合在获得最终可用的API之前开始测试。

当然,使用模拟服务意味着您没有利用端到端测试的主要好处之一——针对您的环境运行您的测试场景。这些库和服务不会发现服务器可能遇到的潜在问题,比如安全漏洞或降低性能。另一个问题是,如果API规范以任何方式发生变化,您将不得不花费额外的时间更新模拟服务以实现奇偶性,即使这些变化并不影响您的测试。

总结

处理运行自动化的端到端测试所需的数据通常并不简单。这些测试遍历整个应用程序,并在测试环境中留下更改的踪迹,这使得为后续测试运行进行清理变得很棘手。根据您的组织和被测试的应用程序中的多个因素,您可以使用一些方法来帮助使测试过程对涉及的每个人都更舒适。

以下是本文所列策略的总结:
如果您的团队有技能、预算和可用的时间来维护额外的服务器,那么您可以设置专用的测试环境来复制生产服务。保持测试环境的独立性可以使您对数据有更多的控制,但是这样做的成本可能会很高,而且您仍然需要在每次测试运行之前将数据设置为可用状态。

如果您没有保持专用服务器运行以进行测试的预算,那么您可以利用虚拟化和云服务。这些服务允许您按需启动生产环境的镜像,并在完成后关闭它们。您甚至可以在本地运行这些环境。它需要预先投资才能正确运行,并且启动按需的应用程序会减慢测试周期。

如果您的开发团队能够做到这一点,他们可以向应用程序本身添加标志,以允许测试人员根据需要创建和删除数据。这些开发标志将使您能够通过不经过某些应用程序流来加速测试。然而,很容易忘记包含那些流的测试覆盖率,从而导致bug从裂缝中溜走。

对于依赖于仍在开发中的api的应用程序,可以根据需要创建模拟服务来模拟数据层。Mock服务允许您提前完成正在进行的工作,以便尽可能早地开始测试。但它不是一个真正的系统,因此这些服务不会暴露在最终产品上出现的潜在问题。

请注意,这四种策略并不是处理端到端测试测试数据的唯一方法。它们是一些最常见的方法,适用于不同的情况。不管您和您的团队如何处理这个棘手的场景,花时间使您的测试自动化尽可能顺利地进行是一个好主意。

您还有哪些方法没有在本文中介绍?在下面的评论中与他人分享你的建议吧!


资源分享【这份资料必须领取~】

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

授权服务器搭建以及授权码模式

前面的 GitHub 授权登录主要向大家展示了 OAuth2 中客户端的工作模式。对于大部分的开发者而言,日常接触到的 OAuth2 都是开发客户端,例如接入 QQ 登录、接入微信登录等。不过也有少量场景,可能需要开发者提供授权服务器与资源服务器&#xf…

Spring MVC【创建与使用】

Spring MVC【创建与使用】🍎一.Spring MVC介绍🍒1.1 什么是SpringMVC?🍒1.2 MVC 定义🍒1.3 Spring MVC 与 MVC 的区别🍒1.4 Spring MVC的基本功能🍎二. Spring MVC项目的创建🍒2.1 Spring MVC …

代码随想录DAY51 | 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

文章目录309.最佳买卖股票时机含冷冻期714.买卖股票的最佳时机含手续费309.最佳买卖股票时机含冷冻期 文章讲解:代码随想录 (programmercarl.com) 题目链接:309. 最佳买卖股票时机含冷冻期 - 力扣(LeetCode) 题目: …

Efficientdet源码详解

1.参数配置 最重要的参数配置如下 -p:配置文件,需要在project文件夹下新建配置文件-c:efficientdet的版本,efficientdet B0-B7-n:windows为0,linix根据自己的需求修改--batch_size:batch大小--data_path:数据集路径-p data --batch_size 16 其中&…

【Flask框架】——20 请求钩子

在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接; 在请求开始时,根据需求进行权限校验; 在请求结束时,指定数据的交互格式。 …

Dubbo 1 分布式系统中的相关概念 1.1 大型互联网项目结构目标

Dubbo 【黑马程序员Dubbo快速入门,Java分布式框架dubbo教程】 【非常重要就完事儿 了】 1 分布式系统中的相关概念 文章目录Dubbo1 分布式系统中的相关概念1.1 大型互联网项目结构目标1.1.1 传统项目 和 互联网项目1.1.2 互联网项目特点1.1.3 大型互联网项目架构…

【2022.12.17】备战春招Day12——每日一题 + 76. 最小覆盖子串 + 24. 两两交换链表中的节点

【每日一题】1764. 通过连接另一个数组的子数组得到一个数组 题目描述 给你一个长度为 n 的二维整数数组 groups ,同时给你一个整数数组 nums 。 你是否可以从 nums 中选出 n 个 不相交 的子数组,使得第 i 个子数组与 groups[i] (下标从 0…

C++绘制菱形(曼哈顿距离求解:贼快!!!)

思路: 1.双重for循环遍历输出是最基本的 2.了解曼哈顿距离 (1)菱形的输入一定是奇数 (2)我们是思想是填充 * 怎么填呢?我们来画图看看 以 3*3 的矩阵为例子! 我们来看看 距离是怎么定义的…

LInux进程优先级和nice值

文章目录一 定义描述二 查看nice值2.1 使用top命令交互式查看nice值2.2 使用ps命令查看nice值2.3 查看程序调度策略三 修改nice值3.1 启动特定nice值的进程3.2 更改现有进程的nice级别一 定义描述 大部分情况下,计算机需要运行的进程数超过了计算机拥有CPU的核心数…

[附源码]Python计算机毕业设计后疫情时期社区居民管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

uni-app卖座电影多端开发纪实(二):搭建导航

@创建4个Tab页 创建一个测试页hello 在pages目录上右键,新建页面执行如图操作,即可全自动生成页面组件+页面注册(pages.json)pages.json 中会生成这么一个玩意,就是页面声明了 pages:[{"path" : "pages/hello/hello","style" :

#ubuntu# 自动挂载硬盘 文件无权限Permission denied

操作前,切记做好备份工作。。。。 有时候我们服务器或电脑使用自动挂载硬盘后,发现没有权限。即使使用chmod 666 xxx也无济于事。无法让非root用户对该硬盘具有完全权限。 可以看到挂载的硬盘容量为1T 如果没有数据的话,可以尝试重新格式化硬…

老字号品牌营销杂志老字号品牌营销杂志社老字号品牌营销编辑部2022年第23期目录

中华老字号故事 全素斋 王红; 1 老字号研究《老字号品牌营销》投稿:cnqikantg126.com 刍议数字赋能天津老字号创新发展的路径 刘宝亮; 2-4 湖南老字号招牌广告的特征、价值与影响研究 毛凌云; 5-7 品牌与营销 西秦刺绣的传播路径研究——以“秦绣工…

爬虫?不是,mitmproxy帮你采集微信公众号留言

前言 有位朋友需要收集公司微信公众号的文章的留言,但苦于微信公众平台没有提供留言的API,所以朋友需要在每一篇文章下面去手动复制粘贴,朋友觉得很麻烦,于是来找到我!遂有此文。 下一篇,将结合uiautomatio…

Linux——进程管理

动态监控进程 介绍 top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。 基本语法 top [选项] 选项说明 查看的时候(大写锁定要开启)P就按CPU的使用率来排序&#…

c语言指针和存储值的格式,对地址中数据的读取

数值存储方式 以int型为例,当有四个字节时,位权大的内存地址较高 *(char*)(0x61FE1C))的含义分析,首先将地址做为一个字符变量的首地址,实际也就只有一个字节。最外层的*表示取这个地址下的值 一个实例 # include "stdio.…

致同会计事务所2023实习生招募

审计实习生 【工作职责】 1. 在项目经理或项目高级人员的指导下,完成项目的部分审计工作; 2. 完成工作底稿的编制、整理和归档工作,使其达到相关技术规范要求; 3. 在审计过程中发现问题及时与项目经理或项目高级人员沟通&…

【Python机器学习】PCA降维算法讲解及二维、高维数据可视化降维实战(附源码 超详细)

需要全部代码请点赞关注收藏后评论区留言私信~~~ 维数灾难 维数灾难是指在涉及到向量计算的问题中,当维数增加时,空间的体积增长得很快,使得可用的数据在空间中的分布变得稀疏,向量的计算量呈指数倍增长的一种现象。维数灾难涉及…

基于蒙特卡洛的电动车有序充放电(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 📝目前更新:🌟🌟🌟电力系统相关知识,期刊论文&…

JAVA类和对象重点笔记及理解(一)

1.类创建对象的详细过程 创建完成,dog就成了一个实例(对象),具有属性和方法 Dog类的属性:一般叫做成员变量 Dog类的方法:一般叫做成员方法 类是对象的抽象,对象是类的具体实例。 2.JAVA的数据…