自动化软件测试策略

作为一名软件开发人员,我在不同的公司工作过,具有不同的软件测试流程。在大多数情况下,没有特定/记录的测试方法......因此该过程的内容/方式取决于各个开发人员。与大多数情况一样,当没有强制执行或至少记录在案的政策时,事情会在一段时间后开始脱轨。

在糟糕的测试堆栈中,您会看到类似以下内容:

  • 重复或半重复测试。在没有计划的情况下盲目地到处添加测试用例可能会导致重复测试的结果。您可能会说这至少比没有测试要好,但我们肯定可以做得更好。
  • 不同类型的测试,塞在同一个 TestClass 中。测试单元和集成案例或系统和单元案例。是的,在所有这些测试中,您正在测试同一类,但级别不同。
  • 由于整个套件(甚至已知的慢速类型测试)一起运行,测试花费了太长的时间。这会使本地开发变得非常缓慢和无聊。快速测试和慢速测试之间的微小分离可能会大有帮助,但是您需要将这些类型的测试分开才能单独运行它们(提示上一点!!)
  • 测试必须按特定顺序运行。因此,添加新的测试就像玩倒置的 Jenga,如果没有仔细地将测试添加到与其余测试相匹配的位置,那么整个测试就会崩溃,您将必须调试测试并找到正确的测试顺序。
  • 对我们的测试套件没有信心,或者它实际上意味着测试正在通过。这是作为软件开发人员最糟糕的感觉。当它应该是相反的时候,它会带来压力和焦虑。您的测试应该给您信心,最大限度地减少部署的风险和恐惧,从而实现更连续的部署设置。您可能听说过类似“周五不部署”之类的话!
  • 由于前面几点的混乱,人们会灰心丧气并停止编写质量测试或任何测试。这就是当狗屎遇到麻烦的时候,没有意愿改进测试阶段,整个事情只是漫无目的地进行,直到所有开发人员精疲力尽并中止这艘船。

那么我们应该如何测试呢?

免责声明!!!

  • 根据我之前的经验,这个示例测试策略主要集中在普通的 SaaS 类商业软件上。任何其他更利基或特殊的产品很可能会偏离这一点。但您可以根据基本想法进行推断并制定自己的策略。
  • 遗憾的是,我还没有成功地将这个策略应用到实际的生产产品中。因此,对我来说,讨论将是有理论基础的。希望在某个时候,我可能足够幸运将其付诸实践,然后我可以让你知道它是如何进行的:P
  • 显然,划分测试类型的想法并不是您以前从未听说过的新的突破性想法。我只是想简化这个想法,希望它可以更容易地向非技术人员解释(或销售)为什么这是我们成功产品所需要的东西。此外,对于我们作为开发人员来说,实际实现这样的测试堆栈具有相当的成功率,因为​很容易被压力和截止日期冲昏头脑,并退回到不良的测试实践。

介绍

该策略的整体思想是根据以下条件拆分测试

  • 它们的水平有多 低或多高。例子:单元测试是低级测试系统测试,是更高的测试
  • 它们在 技术或业务上的相关程度如何。集成测试是技术性的BDD 测试是业务测试

通过这种方式,我们希望在不同的层面上并基于不同的价值结果来测试我们的软件。同时,这些价值结果甚至可能有不同的利益相关者负责(或更关心)以改进该阶段的测试结果。例子:

  • 程序员可能会更关心单元系统测试
  • 产品人员会更关心BDD测试
  • 基础设施人员会更关心性能测试

再次强调,这只是一个例子。根据您的情况,您可能有 3 名开发人员负责整个测试堆栈,或者每个阶段都有一个团队。以下测试堆栈是我希望在我过去工作过的一些项目中看到的示例堆栈。

测试堆栈

正如您从楼梯图中看到的,您从低级测试到高级测试,从技术测试到更多业务相关类型的测试。

让我们看看每种类型/步骤代表什么:

单元测试

单元测试是一种软件测试,其中测试软件的各个单元或组件。目的是验证软件代码的每个单元是否按预期执行。测试隔离一段代码并验证其正确性。单元可以是单独的功能、方法、过程、模块或对象。

用法:

  • 开发人员通过定期执行单元测试获得有关代码质量的快速反馈。
  • 单元测试迫使开发人员处理代码而不仅仅是编写代码。也就是说,开发人员在收到单元测试的反馈后,必须不断重新思考自己的方法论,优化编写的代码。
  • 以隔离的方式运行每个测试用例,并使用“存根”或“模拟”来模拟外部依赖关系。这确保单元测试仅考虑当前被测单元的功能。
  • 单元测试可实现高测试覆盖率。
  • 在开发生命周期的早期频繁运行。

集成测试

集成测试被定义​​为一种测试类型,其中软件模块被逻辑地集成并作为一个组进行测试。典型的软件项目由多个软件模块组成,由不同的程序员编码。此级别测试的目的是暴露这些软件模块集成时交互中的缺陷。此外,还测试与依赖项的交互(数据库、文件、api 等)。

用法:

  • 确保每个集成模块/依赖项正常运行
  • 集成时使用“真实”数据(数据固定装置、测试文件、模拟或开发 API 等)

冒烟测试

冒烟测试是系统测试用例的一个子集,涵盖组件或系统最重要的功能,
用于帮助评估软件的主要功能是否正常工作。我称其为“优化”,因为它们也用作故障保护,如果这些测试失败,那么我们就不会继续运行完整的系统测试,这可能会是一个较慢的过程。由于此阶段测试最重要的功能,我还看到这些测试在每次部署之后或以 cron 方式针对生产环境运行。当以这种方式使用时,它们也可能被称为“实时测试”。

用法:

  • 确定计算机程序是否应该接受进一步、更细粒度的测试,例如系统/bdd/性能测试,这些测试通常是更耗时的测试。
  • 通过定期运行这些测试(实时测试)来确定生产时的计算机程序状态是否仍符合预期。

系统测试

系统测试测试整个系统,看看系统是否与所有集成模块和组件协调工作。在我的“书中”,您以“黑盒”方式执行这些测试,从外部向内进行测试,而无需真正使用内部工作原理的知识。测试阶段属于技术测试领域,这意味着您应该尝试坚持技术测试(例如身份验证、验证、CRUD 请求、错误处理等)

注意:系统测试对于不同的团队来说可能意味着很多很多的事情。正如前面的免责声明中提到的,我主要关注普通的 SaaS 类商业软件。因此,在这种情况下,这些测试意味着通过 API 交互来测试功能。

用法:

  • 验证对应用程序中每个输入的彻底测试,以检查所需的输出。
  • 在集成测试中使用“类似真实”的数据(数据固定装置、测试文件、模拟或开发 API 等)

业务驱动开发测试

BDD 使用人类可读的软件用户需求描述作为软件测试的基础。
每个测试都基于一个用户故事。系统测试更高一级,因为在这些 BDD 测试中,我们将以
与系统测试(API 调用)相同的方式进行测试,但采用用户故事(场景)的格式来断言幕后故事/流程按预期工作。

用法:

  • 使用 BDD 的团队应该能够以用户故事的形式提供大部分“功能文档”,并补充可执行场景或示例。
  • 它巧妙地帮助非技术人员轻松理解自动化测试(人类可读的描述)。
  • 与领域驱动设计 (DDD) 一样,BDD 的早期步骤是定义利益相关者、领域专家和工程师之间的共享词汇表。

性能测试

到目前为止,我们测试了一切在技术和功能方面都运行正常。事情看起来很棒,我们很高兴!但是,这些正确的回答是否及时返回?!如果还有 5 个以上的用户使用我们的服务,或者 10 个用户怎么办?在我们开始注意到响应时间延迟之前,我们可以处理多少个并发用户或请求。因此,这就是我们试图通过这些测试来涵盖的内容,即使我们返回正确的结果,我们也会以预期的响应时间返回它们

用法:

  • 一些要测试的指标是:响应时间:API返回响应所花费的时间吞吐量:单位时间内处理的请求数。并发性:API 可以处理的并发用户数或请求数。

结论

我们在这篇简短的文章中介绍的是在不同级别(低 - 高)和不同价值结果(技术 - 业务)上测试软件的示例策略/管道/流程(随你怎么称呼),以及一些关于事情如何进行的示例当没有定义好的测试堆栈过程时就会结束。显然,这是测试堆栈的 10k 英尺视图!每个单独的步骤都需要更多的工作、文档和规划才能在测试堆栈中实际正确实施。然而,心中有一个初步计划可能会给你带来比即兴发挥更好的结果!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

齐护K210系列教程(七)_LCD显示数据

LCD显示数据 文章目录 LCD显示数据1,显示英文2,显示传感器的数值3,显示中文4,课程资源 联系我们 LCD的最大分辨率为320*240,所以当我们设置文字或图像坐标时,后面要记住这一点,当然,…

如何将web content项目导入idea并部署到tomcat

将Web Content项目导入IntelliJ IDEA并部署到Tomcat主要涉及以下几个步骤: 1. 导入Web Content项目 打开IntelliJ IDEA。选择“File” -> “New” -> “Project from Existing Sources…”。浏览到你的Web Content项目的文件夹,并选择它。Intell…

QA的成长之路——深入测试的奇妙之旅

引言 功能测试的小伙伴,你们是否遇到过这些问题: 1、工作中重复性很高:尽管尽可能地让一个 case 覆盖更多场景,但仍有许多重复性 case,耗费大量时间,让人感到枯燥疲惫; 2、覆盖度不全&#x…

Bitmap 原理简述

之前写过一篇 bitmap 应用场景的文章https://blog.csdn.net/maray/article/details/136923316 本文介绍 bitmap 的原理: 下面有三张表:user_info_base, user_prefer, user_device,我们希望查询“喜欢电子产品并且使用iPhone的女性用户”&…

食用油5G智能工厂数字孪生可视化平台,推进食品制造业数字化转型

食用油5G智能工厂数字孪生可视化平台,推进食品制造业数字化转型。在食用油产业中,数字化转型已成为提升生产效率、优化供应链管理、确保产品质量和满足消费者需求的关键。食用油5G智能工厂数字孪生可视化平台作为这一转型的重要工具,正在推动…

数据结构之顺序表(java版)

目录 一.线性表 1.1线性表的概念 二.顺序表 2.1顺序表的概念 2.2顺序表的实现 1.顺序表的接口 1.2顺序表的功能实现 1.顺序表初始化 2.新增元素功能: 3.清空顺序表是否为空&&获取顺序表长度&&打印顺序表: 4.判断是否包含某个…

关于开设YOLOv8专栏及更新内容的一些说明

​ 专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,助力高效涨点!!! 专栏介绍 ⭐后期更新包含模块、卷积、检测头、损失等改进,目前已有70!现在入手仅$ 69.9,早入早发论文!⭐ ⭐…

【前端技术】HTML基础入门篇

1.1 HTML简介 ​ HTML(HyperText Markup Language:超文本标记语言)是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组…

uView u-parse 在nvue页面中无作用踩坑

问题起因: 在uni-app开发的app nvue页面中有需要回显渲染字符串形式的富文本内容 但使用v-html和uniapp的rich-text组件都无法起到作用,就想到了使用uView中u-parse进行尝试。 uView我是使用uniApp插件市场导入的方式将插件导入项目的uni_modules中 …

2024年教你学浪视频抓取#小浪助手

在2024年,学浪平台已经成为学习者们追逐知识、获取学习资源的热门平台之一。然而,尽管学习平台提供了丰富多样的学习内容,但有时候我们还是希望能够将这些学习资源下载下来,以便随时随地进行学习。那么,如何学习学浪视…

【layoutlmv3推理】无法识别的pdf使用ocr识别代码demo实例

目录 前情提要一、安装依赖1、直接安装的依赖2、需要编译的依赖1)Leptonica2)icu3)Tesseract 3、需要自行配置的依赖 二、模型下载三、更改transformers源码四、加载光学字符识别语言包五、运行代码 前情提要 在做pdf转文本时,发…

用于割草机器人,商用服务型机器人的陀螺仪

介绍一款EPSON推出适用于割草机器人,商用服务型机器人的高精度陀螺仪模组GGPM61,具体型号为GGPM61-C01。模组GGPM61是一款基于QMEMS传感器的低成本航向角输出的传感器模组,它可以输出加速度、角速度及姿态角等信息,为控制机器人运…

航空业微服务架构中台的构建与实践

随着航空业的快速发展,航空公司需要面对更加复杂的业务环境和客户需求。在这样的背景下,构建一个稳健、高效的微服务架构中台成为了航空公司的当务之急。本文将探讨航空业微服务架构中台的设计理念、关键技术以及实践经验,帮助航空公司构建具…

「Java开发指南」如何利用MyEclipse启用Spring DSL?(二)

本教程将引导您通过启用Spring DSL和使用Service Spring DSL抽象来引导Spring和Spring代码生成项目,本教程中学习的技能也可以很容易地应用于其他抽象。在本教程中,您将学习如何: 为Spring DSL初始化一个项目创建一个模型包创建一个服务和操…

面向多源异质遥感影像地物分类的自监督预训练方法

源自:测绘学报 作者:薛志祥, 余旭初, 刘景正, 杨国鹏, 刘冰, 余岸竹, 周嘉男, 金上鸿 摘 要 近年来,深度学习改变了遥感图像处理的方法。由于标注高质量样本费时费力,标签样本数量不足的现实问题会严重影响深层神经网络模型的性能。为解决这一突出矛盾…

将本地项目推送至gitlab仓库

1. gitlab上新建一个空白项目 gitlab上点击new project按钮,新建一个项目 新建空白项目 项目名称与本地新建项目名称相同,其余根据具体需要选择 2. 初始化本地仓库并commit项目 进入本地项目根目录下,右击 git bash here打开命令窗口 初始化…

MappedStatement解析流程

前言 之前写了一篇博文,介绍了mybatis的解析过程,其中mapper标签只演示了如何使用,这篇博文我们来探究mapper标签解析流程 源码解析 核心方法入口 引入mapper方式 使用相对于类路径的资源引用使用完全限定资源定位符(URL&…

“五之链”第十六期沙龙活动在呆马科技成功举办

2024年4月19日,由临沂呆码区块链网络科技有限公司(呆马科技)承办的第十六期“五之链”物流主题沙龙活动成功举办。此次活动邀请了政府相关部门、知名科研院所、物流企业等20余家单位参与,共同探讨物流数据要素流通与智能应用的发展…

新版ONENET(2024/4/24)通过view3.0可视化保姆级教程(一学就会)附效果图

⏩ 大家好哇!我是小光,想要成为系统架构师的嵌入式爱好者。 ⏩上一篇是STM32通过ESP8266连接最新版的ONENET,成功将数据上传之后,本篇文章使用ONENET的view3.0可视化对数据进行可视化做一个详细教程。 ⏩感谢你的阅读,…

AnaTraf网络流量分析仪:实时分析工具助您优化网络架构

导言: 在如今高度互联的数字时代,网络流量分析成为了企业和组织必备的工具之一。AnaTraf网络流量分析仪作为一款高性能的实时网络流量分析工具,不仅能够帮助用户进行全流量回溯分析、网络流量监控和网络性能分析,更可以快速排除网…
最新文章