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

怎样做好接口自动化测试?

今天介绍一下在接口自动化测试相关实践中总结到的一些经验。

接口自动化测试的目的

自动化测试的主要目的是用来回归测试的,当代码有变化时,有可能影响不应该变化的逻辑,这个时候为了确认这种情况,就需要进行回归测试。有时候回归测试的范围比较大,如果全由人工的测试,一次两次还可以接受,如果每次都这样做,人力成本不说,反反复复执行相同测试用例的测试人员也会抱怨。

通过接口自动化测试可以实现手工测试不容易做的验证,比如验证接口中大量数据的排序,多字段的比较,如果都通过手工来做,效率问题不可接受。

手工很难充分验证的功能逻辑,一些异常、极限的场景,通过手工很难构造,此时如果我们了解接口的内部逻辑,通过使用脚本有目的的构造这样的场景来触发接口的内部逻辑,从而对这些逻辑进行验证测试,相对来说是很容易的。

采用定时的针对线上接口的自动化测试,能启动一定的监控作用,当接口功能出现问题时,通过定时的巡检测试就可以及时发现。

接口自动化测试需要掌握的技能

首先就是对于业务要有相当程度的理解,如果要设计好的接口自动化测试用例,一定要对业务有着深刻的理解,因为接口自动化的前期会有一定的投入,如果我们可以将有限的投入聚焦业务中的核心功能点,会有事半功倍的效果。

其次是拥有设计功能测试用例所用到的测试设计基本功,自动化测试和功能测试一样,同样不可穷举、不能做到足够的充分测试,那么就需要经过一定的测试分析,来选择最有效的测试用例。

最后是有一些代码能力,架构设计能力。

接口自动化测试需要注意什么

由于开展接口自动化测试有一定的成本,所以编写接口自动化测试用例,实际上要有一个权衡的。

如果测试用例写得很细,我们测试了接口中每个功能点甚至是每一条分支路径都有涵盖,那么就会特别依赖被测代码的逻辑,如果被测代码逻辑稍微有点变化,测试用例可能就会执行失败。

如果我们的测试用例验证的内容没那么细的话,那有可能即使被测代码逻辑有变动,但是测试用例执行不容易失败,这时就有可能遗漏由于代码变动产生的真的bug。

所以开展自动化测试要找到一个平衡点,尤其是要注意和其他层面的测试相互配合,比如单元测试、UI自动化测试、人工测试等。我们可以事先定义出一套分层测试的规范,即哪些逻辑应该有接口自动化测试保证,哪些逻辑要由UI自动化测试保证,哪些逻辑要由人工测试保证。我们在进行不同层面的测试时,就能互相配合,达到一个较高的测试覆盖率。这个规范没有统一的标准,也是根据自己团队的实际业务、资源、人力等因素来设定的。

最后,接口自动化测试用例其实也是有生命周期的,从产生到修改、再到废弃。自动化测试用例只要在生命周期内才能发挥价值,所以我们要尽可能的延长它的生命周期,还要尽可能的降低case的产生成本和修改成本,所以整个自动化测试用例就要进行管理。说到管理,我们就不得不谈谈度量了。关于自动化测试的度量指标列举了一些供大家参考:

  • case总数量
  • case变更量
  • 代码覆盖率
  • 投入人力
  • 单个/所有case执行次数
  • 单个/所有case发现问题数
  • 人工参与的回归测试投入情况

当我们开展自动化测试时,就需要通过分析上述指标,以及这些指标一段时间内的趋势,来调整自动化测试方案和策略。

相关文章:

怎样做好接口自动化测试?

今天介绍一下在接口自动化测试相关实践中总结到的一些经验。 接口自动化测试的目的 自动化测试的主要目的是用来回归测试的,当代码有变化时,有可能影响不应该变化的逻辑,这个时候为了确认这种情况,就需要进行回归测试。有时候回…...

Leetcode刷题详解——找到字符串中所有字母异位词

1. 题目链接:438. 找到字符串中所有字母异位词 2. 题目描述: 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串(包括…...

Android 自定义view 圆形进度条

Android 自定义view 圆形进度条 前言一、码前分析二、开码1.画笔2.弧度3.圆弧的位置4.暴露给外部设置进度条的方法三、使用四、完整代码 总结 前言 先来看看效果,大概要实现这么一个圆形的进度条 一、码前分析 要实现这么一个进度条的效果,实际上是要画…...

混凝土基础的智能设计:VisualFoundation 12.0 Crack

实现混凝土基础的智能设计:工程师依靠 VisualFoundation:使用这个专注的工具可以更轻松、更强大地对基础进行建模。通用 FEA 工具(如VisualAnalysis)可以做很多事情,但对于特定于基础的工程来说,这更快、更智能。 草图边界 快速绘…...

C++中成员函数的重载覆盖与隐藏

1.重载与覆盖 重载:成员函数被重载的特征:在同一个类中,函数名相同,参数不同,vritual关键字可有可无。 覆盖:覆盖是指派生类函数覆盖基类函数,特征是:在有继承关系的类中&#xff0…...

电子器件系列49:CD4050B缓冲器

同相和反向缓冲器 还搞不懂缓冲电路?看这一文,工作原理作用电路设计使用方法 - 知乎 (zhihu.com) 缓冲器_百度百科 (baidu.com) 1、缓冲器的定义 缓冲器是数字元件的其中一种,它对输入值不执行任何运算,其输出值和输入值一样&…...

Leetcode 349 两个数组的交集 (哈希表)

Leetcode 349 两个数组的交集 (哈希表) 解法1 😋解法2 解法1 😋 自己的笨比方法:【哇这居然是标准解法之一,我不是笨比😋😋😋】 创建了两个hash数组,nums1出现一个就对应…...

基于YOLOv8模型的水下目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOv8模型的水下目标检测系统可用于日常生活中检测与定位鱼、水母、企鹅、海鹦、鲨鱼、海星、黄貂鱼,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统…...

vue-cli脚手架创建项目时报错Error: command failed: npm install --loglevel error

项目背景 环境:vue-cli 5.x 在工程文件中,后端模块wms已经创建完成,现在想新建一个名为vue-web的前端模块 执行命令vue create vue-web时, 报错Error: command failed: npm install --loglevel error 问题分析及解决 排查过程…...

c语言练习92:链表的中间结点

链表的中间结点 链表的结点为空时无法访问其next成员否则会报错 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; struct ListNode* middleNode(struct ListNode* head){if(h…...

CentOS(4)——关于Linux软件下载时:amd64、x86、x86_64、arm64 的说明

目录 一、简介 二、常见的CPU架构 三、Linux查看CPU架构命令 ①arch命令 ②uname -a 命令 ③lscpu 一、简介 在安装GitLab Runner的时候,去清华源下载RPM包时发现同一个软件有许多不同架构的安装包,常见的有amd64、x86、x86_64、arm64这些架构&am…...

简单易学,让你拥有个性化的二维码

在数字化时代,二维码已经成为了我们日常生活的一部分。然而,大多数二维码都是简单而乏味的,缺乏个性和吸引力。这篇文章将向你介绍如何使用乔拓云等免费在线海报制作工具来制作艺术二维码,让你轻松掌握二维码的美化技巧。 1. 选择…...

开源原生android的视频编辑软件

videoEditAndroid 介绍 开源原生android的视频编辑软件 本人android 新手,也是边写边学习中,感觉写的很乱,功能虽已实现,但是会不断优化代码 也欢迎有兴趣的小伙伴加入 码农不易,欢迎 star 项目页面功能完成列表 视频选择(待完善) 静音 视频编辑 导…...

10kb的照片尺寸怎么弄?几个步骤轻松搞定!

为了图片方便在互联网上分享、传输或存储,我们常常会有缩小图片的需求,那么如何进行操作呢?下面分享了三种实用的方法。 方法一:使用嗨格式压缩大师 1、在电脑上打开安装好的“嗨格式压缩大师”,在首界面中点击“图片…...

uniapp-vue3-微信小程序-标签选择器wo-tag

采用uniapp-vue3实现, 是一款支持高度自定义的标签选择器组件&#xff0c;支持H5、微信小程序&#xff08;其他小程序未测试过&#xff0c;可自行尝试&#xff09; 可到插件市场下载尝试&#xff1a; https://ext.dcloud.net.cn/plugin?id14960 使用示例 <template>&…...

数据结构与算法-(9)---双端队列(Deque)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…...

DTI综述(更新中)

Deep Learning for drug repurposing&#xff1a;methods&#xff0c;datasets&#xff0c;and applications 综述读完&#xff0c;觉得少了点东西&#xff0c;自己写个DTI综述 Databases(包括但不限于文章中的) DATABASEDESCRIBEBindingDB有详细的drug信息和对应的target&a…...

封装一个滑块控制灯光组件

效果如下gif 只进行了基础的事件和布局&#xff0c;可优化的地方&#xff1a;luminance-box这个div加上后&#xff0c;由于和slider-run-way都是absolute定位&#xff0c;导致slider-run-way的点击事件无法设置值&#xff0c;只能通过滑块设置。暂时想不到咋处理&#xff0c;有…...

flutter循环

flutter for循环&#xff1a; Wrap(children: <Widget>[for (int i 0; i < (xx.yy.data?.items?.length ?? 0); i)TextButton(onPressed: (){}, child: Text("${xx.yy.data?.items?[i].name.toString()} (${xx.yy.data?.items?[i].connId.toString()})…...

2.3 如何使用FlinkSQL读取写入到JDBC(MySQL)

1、JDBC SQL 连接器 FlinkSQL允许使用 JDBC连接器&#xff0c;向任意类型的关系型数据库读取或者写入数据 添加Maven依赖 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-jdbc</artifactId><version>3.1…...

浪潮 NF5270M4 装 ESXi 8.0 识别不到 RAID1?这样设置一次搞定

最近很多机友遇到了核心问题&#xff1a;RAID1 已创建&#xff0c;但 ESXi 8.0U3i 只看到两块独立 SATA 盘&#xff0c;没识别出 RAID 逻辑盘。这是浪潮 NF5270M4 ESXi 8.0 的典型兼容性 / 驱动 / 配置问题&#xff0c;按下面步骤排查即可解决。一、先确认核心前提(必做)1、你…...

OpenClaw 的模型推理是否支持异步非阻塞调用?如何实现?

在讨论OpenClaw模型推理是否支持异步非阻塞调用之前&#xff0c;不妨先回想一下日常生活中的一个场景。假设你需要同时处理几件事&#xff1a;一边用洗衣机洗衣服&#xff0c;一边在厨房煮汤&#xff0c;同时还在回复工作邮件。如果这三件事必须一件接一件地做&#xff0c;等衣…...

Rolify 项目部署指南:从开发环境到生产环境的完整迁移流程

Rolify 项目部署指南&#xff1a;从开发环境到生产环境的完整迁移流程 【免费下载链接】rolify Role management library with resource scoping 项目地址: https://gitcode.com/gh_mirrors/ro/rolify Rolify 是一款功能强大的角色管理库&#xff0c;支持资源范围的权限…...

如何快速创建专业图表:Mermaid数据可视化的完整指南

如何快速创建专业图表&#xff1a;Mermaid数据可视化的完整指南 【免费下载链接】mermaid mermaid-js/mermaid: 是一个用于生成图表和流程图的 Markdown 渲染器&#xff0c;支持多种图表类型和丰富的样式。适合对 Markdown、图表和流程图以及想要使用 Markdown 绘制图表和流程图…...

如何让AI成为你的第二大脑?AnythingLLM浏览器扩展使用指南

如何让AI成为你的第二大脑&#xff1f;AnythingLLM浏览器扩展使用指南 【免费下载链接】anything-llm 这是一个全栈应用程序&#xff0c;可以将任何文档、资源&#xff08;如网址链接、音频、视频&#xff09;或内容片段转换为上下文&#xff0c;以便任何大语言模型&#xff08…...

解决企业知识孤岛挑战:Outline多平台文档迁移架构与技术实现方案

解决企业知识孤岛挑战&#xff1a;Outline多平台文档迁移架构与技术实现方案 【免费下载链接】outline Outline 是一个基于 React 和 Node.js 打造的快速、协作式团队知识库。它可以让团队方便地存储和管理知识信息。你可以直接使用其托管版本&#xff0c;也可以自己运行或参与…...

nli-distilroberta-base效果展示:Entailment/Contradiction/Neutral三类判别置信度热力图

nli-distilroberta-base效果展示&#xff1a;Entailment/Contradiction/Neutral三类判别置信度热力图 1. 项目概述 nli-distilroberta-base是基于DistilRoBERTa模型的自然语言推理(NLI)Web服务&#xff0c;专门用于分析两个句子之间的逻辑关系。这个轻量级模型能够快速准确地…...

构建自主海上防御系统:Mirai Robotics融资420万美元

Mirai Robotics已筹集420万美元的Pre-Seed轮资金&#xff0c;旨在构建自主和智能的海上系统。本轮融资由Primo Ventures、Techshop和40Jemz Ventures领投&#xff0c;并有来自意大利和国际的天使投资人参与。 海洋是地球上最关键的基础设施之一。全球超过80%的贸易通过海路运输…...

Java毕业设计基于springboot+vue的校内兼职信息管理系统

前言 Spring Boot 校内兼职信息管理系统是以 Spring Boot 框架为核心搭建的&#xff0c;专门用于高效管理校园内各类 兼职信息的平台。随着校园生活的多元化发展&#xff0c;学生对兼职机会的需求日益增长&#xff0c;传统的兼职信息发布与管理方式杂乱无章&#xff0c;存在信息…...

STM32架构解析:哈佛与冯·诺依曼的工程实践

STM32处理器架构解析&#xff1a;哈佛结构与冯诺依曼结构的工程实践 1. 计算机体系结构基础 1.1 冯诺依曼体系结构 冯诺依曼体系结构&#xff08;Von Neumann architecture&#xff09;是现代计算机的基础设计范式&#xff0c;其核心特征包括&#xff1a; 统一存储结构 &am…...