探索自动化测试断言:提升测试效率与质量的关键!

前言

断言在自动化测试中起着关键的作用,它是验证测试结果是否符合预期的重要手段。如果在自动化测试过程中忽视了断言,那么这个测试就失去了其本质的意义,因为我们无法得知测试结果是否达到了预期的效果。因此,断言在自动化测试中的重要性不言而喻。那么,面对这样一个重要的环节,我们应该如何去进行有效的自动化测试断言呢?

本文主要是探讨 API 自动化里面断言的实战思考。

自动化目的

自动化测试的目的主要是为了提升测试效率、降低成本。不同公司、团队和业务可能有不同的自动化目的,常见的几个目的如下:

  • 测试过程测试数据准备时间比较长,为了解决造数据来做的自动化或者脚本。

  • 冒烟测试自动化,为了快速验证提测版本是否存在阻碍问题。

  • 项目回归测试用例太多,人力执行耗时长,为了提升回归效率。

  • 存在重复复杂的操作比较耗时,为了释放人力,去做更有价值的工作。

  • 测试过程中数据统计,例如每天缺陷的各种状态数据、月度、年度数据统计。

自动化的目的可能不止上面几点,但主要围绕成本和效率展开。通过自动化技术手段,可以提升测试效率、降低成本,实现降本增效的目标。

发展阶段

这个阶段有自动化开展阶段、业务发展阶段等不同的方面,我们先来探索这些有哪些阶段,仅个人观点,供参考。

自动化开展阶段

  • 探索阶段:在这个阶段,团队部分人开始探索自动化的潜力和可行性。主要特点包括:

    • 研究和评估不同的自动化技术和工具。

    • 进行部分业务的尝试,以验证自动化的效果和可行性。

    • 重点是技术探索和创新,以确定最佳的自动化解决方案。

  • 个人阶段:在这个阶段,个人开始尝试和应用自动化技术。主要特点包括:

    • 个人自主地学习和应用自动化技术。

    • 个人通过试错和实践来提高自己的自动化能力。

    • 个人可能会使用一些简单的自动化工具和脚本来提高工作效率。

  • 团队阶段:在这个阶段,团队开始协作和共享自动化经验。主要特点包括:

    • 团队成员之间开始分享自动化的最佳实践和经验。

    • 团队建立共享的自动化工具和资源库。

    • 团队开始协作开发和维护自动化解决方案。

  • 成熟阶段:在这个阶段,自动化已经成为组织的一部分,并得到广泛应用。主要特点包括:

    • 自动化成为组织的标准工作流程和流程的一部分。

    • 自动化解决方案得到持续改进和优化。

    • 自动化的效益和价值得到认可,并在组织中得到广泛应用。

需要注意的是,这些阶段的划分是一种理想化的描述,实际情况可能因组织和团队的不同而有所差异。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

业务发展阶段

  • 初创阶段:在这个阶段,团队刚刚组建,业务规模较小,主要任务是确定产品或服务的市场需求,并建立初步的商业模式。此阶段的重点是产品开发、市场验证和初步的客户认可。

  • 成长阶段:这个阶段产品业务已经进入成长阶段。此阶段的目标是更加快速的占领市场,推广业务,逐渐有了产品的质量意识,当前阶段有了一定的用户群体。

  • 成熟阶段:此阶段产品已经在市场上建立了一定的品牌知名度和市场份额后,进入成熟阶段。此阶段的重点是巩固市场地位、提高产品质量和服务水平,公司对于产品的质量要求已经有很高的追求。

  • 衰退阶段:在一定的市场周期后,公司可能会进入衰退阶段。此阶段的特点是市场竞争激烈,盈利能力下降,公司面临业务调整和转型的压力。

自动化断言

对于自动化的断言,常用的断言方式都是基于以下几个方面。

  • 状态码:这是最基本的断言,检查返回的 HTTP 状态码是否符合预期。例如如果你发送的是一个 GET 请求,那么预期的状态码应该是 200。

  • 业务码:这是用来检查 API 业务逻辑是否处理成功。例如一般业务处理成功,未出现异常,可能返回响应内容业务码为 0。

  • Body体关键msg信息:这是用来检查 API 返回的数据是否符合预期。例如你检查返回的 JSON 对象中的某个字段是否有预期的值。

  • 响应Header关键msg信息:这是用来检查 API 返回的响应头数据是否符合预期。例如你检查返回的 Header 对象中的某个字段是否是预期的值。

  • Body 结构:这是用来检查 API 返回的响应数据结构是否符合预期。例如你检查返回的 JSON 对象中是否是预期的结构体。

  • 全Body体:这是用来检查 API 返回的数据是否符合预期。例如你检查返回的 JSON 对象中的所有内容是否和预期的值一致。

  • 响应时间:这是用来检查 API 响应的速度是否在可接受的范围内。如果响应时间过长,可能会影响用户体验。

  • 入库数据:如果 API 操作会影响数据库,那么你可以检查数据库中的数据是否符合预期。

那我们该怎么在API自动化测试过程合理的使用断言呢?这需要我们根据自动化的目的、产品的不同阶段、自动化的不同阶段等这些方面来进行考虑。

如你的目标是检查 API 的基本功能,那么状态码断言和响应内容断言可能就足够了。如果你的目标是性能测试,那么响应时间断言就很重要。

在产品的早期阶段,可能需要频繁地修改和调整 API,所以选择一种容易修改的断言方案会更有利。在产品的后期阶段,API 的稳定性和性能可能更重要,所以可能需要更复杂的断言方案。

在自动化的早期阶段,你可能需要快速地编写和运行测试,所以选择一种简单的断言方案会更有利。在自动化的后期阶段,你可能需要更精确地控制测试结果,所以可能需要更复杂的断言方案。

下面我们列举几种工作中的使用场景,供大家参考:

  • 监控环境、服务是否可用:就采用状态码断言

  • 刚开始做自动化时,这时候需要快速反馈出效果采用业务码+关键 msg断言

  • 对于数据准确性非常高的场景:采用全Body体+入库数据断言

  • 对于微服务之间的通讯接口:采用业务码+关键 msg断言+Body 结构断言

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

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

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

相关文章

完美解决idea一直indexing,无法操作的问题

今天主要分享一下在使用idea 2020.3版本开发maven项目的时候,一直出现有效件index, 有时候是scaning indexing, 有时候是update indexing, indexing的时候,idea基本上就没办法操作了,连跳入到类或方法里都跳不了。不厌其烦。 于是…

导出功能开发

1.导出功能(仅表头) package nc.ui.yhlypx.yhlypxfkd.ace.action;import java.awt.event.ActionEvent; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List;import nc.ui.pubapp.uif2app.model.BillManageModel; imp…

keycloak部署

https://downloads.jboss.org/keycloak/11.0.2/keycloak-11.0.2.zip 1.上传zip 并解压 uzip keycloak-11.0.2.zip 2.创建mysql数据库 CREATE SCHEMA keycloak DEFAULT CHARACTER SET utf8 ; 3.安装mysql的jdbc驱动 下载mysql的JDBC驱动(mysql-connector-java-8…

代码随想录 Leetcode15. 三数之和

题目&#xff1a; 代码(首刷看解析 2024年1月15日&#xff09;&#xff1a; class Solution { public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> res;int n nums.size();sort(nums.begin(),nums.end());for(…

如何在 Ubuntu 22.04 上使用 LEMP 安装 WordPress

前些天发现了一个人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;最重要的屌图甚多&#xff0c;忍不住分享一下给大家。点击跳转到网站。 如何在 Ubuntu 22.04 上使用 LEMP 安装 WordPress 介绍 WordPress 是互联网上最流行的内容管理系统 (CMS) 之一…

清华裴丹|大模型时代的AIOps

在大模型时代下&#xff0c;运维界普遍关注一些问题&#xff1a;大模型能带来哪些收益&#xff1f;面临哪些技术挑战&#xff1f;与以往的 AIOps小模型是什么关系&#xff1f;有了大模型之后&#xff0c;那么AIOps的整体框架是什么&#xff1f;近期、中期、长期有哪些应用&…

基于ssm的线上旅游体验系统+vue论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

工程项目管理系统源码与Spring Cloud:实现高效系统管理与二次开发

随着企业规模的不断扩大和业务的快速发展&#xff0c;传统的工程项目管理方式已经无法满足现代企业的需求。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;企业需要借助先进的数字化技术进行转型。本文将介绍一款采用Spring CloudSpring BootMybat…

java基础之线程知识点

线程 进程的概念 操作系统(OS)中并发(同时)执行的多个程序任务 进程的特点 宏观并行,微观串行 在一个时间段内,CPU会将时间段划分为若干个时间片,一个时间片是能被一个程序拥有,且只有拥有时间片的程序才能执行自身内容,所以当时间片的划分足够细小,交替频率足够快,就会形…

9 - 数据分片概述|部署MyCat服务

数据分片概述&#xff5c;部署MyCat服务&#xff5c;测试配置 数据分片概述分库分表分割方式水平分割&#xff08;横向切分&#xff09;垂直分割&#xff08;纵向切分&#xff09; 提供分库分表存储服务软件&#xff08;中间件&#xff09;MyCAT软件分片服务器的工作过程 部署M…

[Kubernetes]10. k8s部署Goweb+mysql项目实战演练

一.安装docker构建镜像 如果要本地构建镜像的话,对应节点还需要安装docker,安装教程见:[Docker]一.Docker 简介与安装 linux环境,centos8下 docker及docker compose安装教程 k8s部署Goweb+mysql项目有两种方法:第一种是传统部署方法,第二种是通过ConfigMap实现应用配置分离部署…

OPenCV中的开闭运算

闭运算是先膨胀再腐蚀的过程&#xff0c;可以用来清除小黑点 开运算同理 开运算是先腐蚀再膨胀的过程&#xff0c;可以清除一些小两点和毛刺 闭运算和开运算使用不同大小的结构元素是因为它们的目标不同。 闭运算的目标是尽量消除小黑点&#xff0c;保持较大的连通区域。因此…

最佳利用Mock提升测试效率的7个技巧!

再聊这个问题之前&#xff0c;我们先了解一下公司技术架构的演变过程&#xff0c;这样我们才能真正体会到我们为什么要使用 Mock功能。 单体应用 在早期&#xff0c; 大部分公司的应用技术栈主要可以分为两大类&#xff1a;LAMP&#xff08;Linux Apache MySQL PHP&#x…

1.50A、0.75A、1.50A、1.20A电流控制型比例马达放大器

1.50A、0.75A、1.50A、1.20A、0.70A、0.60A、1.40A控制电流型比例阀、比例泵、比例马达放大器&#xff0c;带数显区显示及当前参数现场可调&#xff0c;如指令、电流、上下斜坡、颤振频率等&#xff1b; 模块式及插头式外观&#xff0c;可现场调试各种参数&#xff1b; 兼容多…

TortoiseGit 2.15.0.0 安装与配置(图文详细教程)

TortoiseGit的安装与配置 TortoiseGit是Tortoise为Git提供的版本可视化工具&#xff0c;简化了记忆Git命令行的过程&#xff0c;将命令行可视化。 确保自己电脑中已经下载好了git 官网下载TortoiseGit Download – TortoiseGit – Windows Shell Interface to Git 选择64-bi…

如何定位和优化程序CPU、内存等性能之巅

如何定位和优化程序CPU、内存等性能之巅 摘要 性能优化指在不影响系统运行正确性的前提下&#xff0c;使之运行得更快&#xff0c;完成特定功能所需的时间更短&#xff0c;或拥有更强大的服务能力。本文将介绍性能优化的基本概念以及如何定位和优化程序中的CPU、内存和IO瓶颈…

树形控件中的子项点击显示按钮弹窗

效果 MainWindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include"QStandardItemModel" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass MainWindow : public QMainWindow {Q_OBJECTpublic:Main…

学习怎么能从复杂的开始?,开始学一个个人博客吧

做一个个人博客第一步该怎么做&#xff1f; 好多零基础的同学们不知道怎么迈出第一步。 那么&#xff0c;就找一个现成的模板学一学呗&#xff0c;毕竟我们是高贵的Ctrl c v 工程师。 但是这样也有个问题&#xff0c;那就是&#xff0c;那些模板都&#xff0c;太&#xff01;…

(一)环境部署

Python虚拟环境 安装virtualenv pip install virtualenv 创建环境 virtualenv -p D:\python\python.exe(python解释器目录) env-py3.6(虚拟环境目录&#xff0c;名称随意) 在当前目录下生成env-py3.6目录。 激活环境 ...\env-py3.6\Scripts> .\activate 关闭&#xf…

mybatis中的驼峰转换

一、有啥用 开发时常用对象来存储从数据库中的记录&#xff0c;开启驼峰转化即可实现数据库字段(通常使用_下划线连接)与对象属性的对应&#xff0c;如数据库中的first_name字段会转化为firstName与对象中的firstName属性对应。 二、配置 三、相关报错 数据库字段与对象属性…