云化背景下的接口测试覆盖率自动化检查

2023-10-31

一、问题来源

在云化场景下,API的测试覆盖是一项重要评估与考察指标。除了开发者自测试外(UT),还可以利用云化测试平台、流水线等方法进行相关指标的检查与考核。利用这种方法既可以减轻开发者测试工作量,不必在本地做大量的、降低人为指标灰度空间,又可以自动识别重要接口,实现测试数字化与自动化、复用测试用例资产。
这里,我们简单对接口测试覆盖率自动化检查办法的相关实践进行说明。

二、基本思路

首先,在目前的常见DevOps云化平台中,基本都有各自对应的测试平台,用于方便、快捷地在线编写用例、执行相关测试任务。
其次,在服务部署时,云化背景中都是通过DevOps流水线来进行的,而为了保证发布版本的合规与可信,我们通常会在流水线中添加相关检查与卡点门禁。
最后,在服务上线后的运维阶段,APM(应用性能管理)平台会对服务线上接口调用情况做各个维度的统计分析,其中就包括了最基础的接口调用环境与具体内容。
基于以上三点思考,我们提出利用实际调用链用户侧使用数据聚合统计API实例,并利用门禁插件与云化测试相结合的方法,来实现对服务接口测试覆盖率的自动检查功能。

三、实践办法

1、API基线统计方法

对于哪些API需要看护统计,这其中是需要我们做自动化的识别与统计的。正如第二部分所提到的,我们可以直接利用调用链数据来做聚合统计分析,找到哪些接口调用次数最多、哪些接口是在生产环境中被实际使用到的。对于这类接口,自然是重要等级的接口,因此在测试覆盖上我们就需要有强制要求。
通过这种接口分层分级的方法,我们便能够快速识别重要接口,在保证测试覆盖核心接口的同时,减少服务自身用例编写与维护的工作量。

2、云化测试用例

在云化测试平台中,接口测试本质上就是利用可视化的AW(ActionWord,可以理解为一个接口单元)进行用例撰写,并通过在线的执行机发起测试请求、通过对比检查点来判断用例是否执行通过。
因此,服务方面只需要在平台中导入对应的接口设计文档yaml文件,编辑维护好对应的测试用例,并将对应的测试用例统一编排在同一个测试任务中,就能够一次全量执行、作为一个统一的视角对外提供,用以表达当前服务接口功能的可用性与正确性。

3、流水线插件检查方法

在目前的DevOps流水线体系中,服务只需要点击按钮、跑一下流水线,就能够自动的将代码仓中的内容部署到现网的机器中。这种方式虽然方便,但为了保证整体上线功能的可靠性,我们会在流水线的各个环节中添加门禁与卡点,包括安全问题、病毒扫描、开源风险等等。
基于这种门禁卡点与检查的逻辑,我们便能够直接在流水线中强制添加一个接口覆盖率检查的环节,通过获取服务对应云化测试任务中所有接口的测试结果,并根据我们API基线的统计数据分析,以此对比得出对应服务的重要接口是否有测试用例覆盖。

四、发散与扩展

在上述所说的接口检查中,本质上只做了API是否有用例覆盖的相关检查,并没有更详尽的检测,而在接口测试维度,依旧存在着很多痛点与问题。
用例,代表了服务对用户调用接口行为的模仿与预测,并制定出的执行测试样例。虽然在一定程度上可以检验接口功能的可用性,但是会存在一些问题:对于一个接口而言,不同的参数调用组合,实际代表的其实是用户不同的行为逻辑,而这种不同的参数组合在代码层面可能会代表截然不同的行径与分支,从而带来各种各样的结果。测试人员在编写用例时,只能在局限的范围内尽可能模仿用户的使用行为逻辑,但很难将用户的全部行为都囊括在其中。
因此,基于调用链大数据分析手段,我们对海量的用户接口调用与参数情况做聚类分析,并提出了一种名为“用户场景覆盖率”的看护维度。

1、用户场景覆盖情况

该场景原始数据来源为鲁班调用链,经过我们大数据聚合分析之后可以得到具体结果:在生产环境中,用户调用的相关实际接口、调用参数组合以及各参数组合的调用次数情况。
同时,针对大数据的分析手段,我们可以对具体参数组合调用次数做分析统计,并针对性地引入“高频”的概念以定级:对于调用次数较少的的级别的场景,我们倾向于是不重要的或异常的调用,找出调用次数多的高频场景。

2、用例场景覆盖情况

基于微服务所配置的功能测试套,解析对应的用例接口以及相应的参数选择情况,就可以找到服务侧所定义的接口场景覆盖情况。
最后,上述两种的参数组合覆盖情况的差集,就可以得到了接口对应用户场景未覆盖的情况。
加之结合用例自动化的生成手段,就可以较为方便快捷的为服务提供接口调用场景的缺失与待补充情况,作为用例设计的指导。

五、小结

接口测试一直是服务的一项重点工作,如何又快又好的完成接口在线测试、同时发现测试遗漏点,是我们一直探究的目标。上述的相关实践只是其中的一个环节,实测有效,仅做参考。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

云化背景下的接口测试覆盖率自动化检查 的相关文章

  • HTTPS 请求仅在 iOS、Ionic 2 上失败

    我有一个Ionic 2调用一个应用程序Spring Boot用于向其他设备发送推送通知的 API API 配置为 HTTPS The API POST请求适用于一切except iOS 我在服务器上的 SSL 证书是自签名的 也许就是这样
  • 如何在 .NET 应用程序中使用 W3C 标记验证器 API?

    我发现有一个W3C 标记验证器的 API http validator w3 org docs api html 我之前曾问过 是否有适用于 W3C 标记验证器 API 的 NET 库 https stackoverflow com que
  • Google BigQuery 与 PHP 集成

    我需要帮助将 google bigquery 代码集成到 PHP 中 所以我可以从 php 代码本身执行查询和其他类型的操作 需要您的帮助并建议我一些工作示例链接 提前致谢 这是一段代码 正确地创建一个Google Client using
  • 如何使用 Visual C++ 在 win32 API 中创建圆形/圆形按钮

    我有一个 Visual C 中的 Window Win32 API 应用程序 我没有使用MFC 我必须创建一个带有位图图像的圆形 圆形按钮 我的应用程序有一个皮肤视图 任何人都可以帮助我完成这项任务吗 按钮是窗口 您可以使用 CreateW
  • 如何在使用 Piwik 进行分析的页面上显示点击/访问计数器

    我想在主页上显示当天的访问量 该页面由 Piwik 跟踪 如何将 API 与 PHP 结合使用来获取今天的 唯一 访问量和点击量 以便我可以将它们显示在页面上的某个位置 result file get contents http mysit
  • RabbitMQ HTTP API 请求 401 未经授权

    我正在尝试访问 RabbitMQ Rest 但收到 401 未经授权的错误 我想访问队列信息并获取消息编号 我发现这是一个解决方案 DefaultHttpClient httpClient new DefaultHttpClient Htt
  • 如何从 Google Fit API 获取步数?

    请原谅我的笨蛋 我对 Android 和 Google API 完全陌生 我有以下连接到 GoogleFit 的代码 我还有一个 API 密钥和 Oauth 我在哪里 如何使用 API 密钥和 Oauth 关于如何获取它们的指南有很多 但关
  • 用于高级搜索/过滤的.Net Web API URL 约定

    我对 Microsoft 的 REST 和 WebAPI 比较陌生 我们正在实现一个中心 REST 服务 它将容纳多种类型的对象获取和设置 作为该项目的领导者 我的任务是提出我们正在使用的正确的 Uri 设计 我想知道关于战争什么想法更好
  • MongoRuntimeError:连接池已关闭

    我看到我的猫鼬池在插入数据之前似乎已关闭 因为在调用云集群中的猫鼬数据库时出现此错误 MongoRuntimeError Connection pool closed 但我正在等待所有的电话 所以我不确定为什么会看到这个问题 也许这与我定义
  • 如何在 PHP 中使用 Amazon 的 API 来搜索书籍? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一款用于图书共享 评论和推荐的 Facebook 应用程序 我搜索了网络 使用我能想到的每个
  • 如何使用版本一 API 获取项目和冲刺燃尽图?

    我正在尝试使用版本一 http www versionone com 用于获取项目和冲刺燃尽图的 api 我在读这一页 https community versionone com Developers Developer Library
  • 如何以编程方式将图片上传到 Facebook?

    好的 这是我的第一个问题 如何允许我网站上的访问者在他们的 Facebook 新闻源上分享我的照片 https webapps stackexchange com questions 10140 how do i allow visitor
  • 字典 API(词汇)[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人知道一个好的 NET 字典 API 吗 我对含义不感兴趣 而是我需要能够以多种不同的方式查询单词 返
  • 如何在 Google 知识图谱中搜索具有特定属性的条目?

    应如何制定搜索查询kgsearch googleapis com查找给定类别中的所有条目 例如 如果我想搜索 Schema org 类别中的内容应用类别 http schema org applicationCategory 我该怎么办呢
  • SoftLayer_Account::getOperatingSystemReloadImages

    我想在 OSReload 期间使用 API 获取可用操作系统列表 我发现提到了 SoftLayer Account getOperatingSystemReloadImages 方法 但找不到该方法的用法 谁能帮我解决这个问题 谢谢 我找不
  • Android REST API 连接

    我有点傻 对此感到抱歉 我编写了一个 API 它返回一些 JSON 我的目标是从 Android 应用程序使用此 API 我已经尝试过使用 AsyncTask 但失败了 我想像这样使用它 调用该类 告知 URL 和结果的类型 哪个json
  • 通过 PayPal REST API 示例获得折扣?

    PayPal GURUS 我需要帮助 如何插入折扣 我使用 REST API 可能是某个 可以显示代码示例吗 有什么方法可以使用 PHP REST API 发送折扣金额吗 目前 REST 支付 API 不支持折扣 您最好的选择是计算您端的折
  • Twitter api 文本字段值被截断

    为什么文本字段值被截断以及如何获得完整的值 截至目前 我正在尝试获取如下所示的文本字段值 do if let responseObject try NSJSONSerialization JSONObjectWithData respons
  • 嵌入式签名 api 文档签名

    我正在使用 DocuSign 将电子签名添加到我的请求中 一切正常 现在 我使用嵌入式方法发送签名请求 通过导航到 URL 立即启动我的工作流程 登录后 执行以下代码 我得到 嵌入视图 但是当我粘贴网址尝试在导航中签署文档时 但会将我重定向
  • Microsoft.Graph - 如何从具有不同用户名的共享邮箱发送?

    我目前正在将使用 SMTP 的服务代码移植到 Office 365 通过 SMTP 我可以使用 发件人 字段在来自共享收件箱的邮件上设置不同的用户名 同时保留共享电子邮箱地址 这似乎无法通过 Office 365 运行 其工艺流程为 客户填

随机推荐

  • python wifi密码本下载_WifiPass下载 WifiPass(Python获取本机保存的所有WIFI密码) 免费版 下载-脚本之家...

    WifiPass Python获取本机保存的所有WIFI密码 是由大神写的一个python脚本 可用于获取PC上保存过的所有WIFI密码 因为XP和Win7系统保存的位置不相同 XP在注册表 而Win7 Vista等在ProgramData
  • 网络编程套接字,Linux下实现echo服务器和客户端

    目录 1 一些网络中的名词 1 1 IP地址 1 2 端口号port 1 3 端口号 和 进程ID 1 4 初始TCP协议 1 5 UDP协议 2 socket编程接口 2 1 socket 常见API 2 2 sockaddr结构 3 简
  • chatgpt赋能python:Python手动安装whl文件的方法

    Python手动安装whl文件的方法 Python是目前最为流行的编程语言之一 广泛应用于数据分析 AI Web开发等领域 Python的强大之处不仅在于其灵活的语法 更在于丰富的第三方库资源 这些库资源往往以 whl文件格式提供 而手动安
  • kali linux破解wifi密码-超详细过程

    前期准备 VMware Workstation虚拟机 在虚拟机安装好kail linunx系统 无线网卡 芯片为3070或者1887L都支持Linux 或者直接某宝上查kali无线网卡 一 打开终端 用airmon ng命令查看 如果出现无
  • Matplotlib学习---用matplotlib画散点图,气泡图(scatter plot, bubble chart)

    Matplotlib里有两种画散点图的方法 一种是用ax plot画 一种是用ax scatter画 一 用ax plot画 ax plot x y marker o color black 二 用ax scatter画 ax scatte
  • jav中spark迁移hive到mongo(更新数据)

    业务中的数据库使用的mongo 离线使用spark计算的每天统计指标需要累加到历史指标中 然后将结果写到mongo库中 如果mongo库中已经有这条记录则覆盖 mongo库中没有此记录则为新增 我们如果根据 MongoSpark save
  • StringUtils.isAnyBlank() StringUtils.isNoneBlank()

    StringUtils isAnyBlank 是否包含任何真空值 包含空格或空值 StringUtils isAnyBlank null true StringUtils isAnyBlank null foo true StringUti
  • Dapp开发教程一 Asch Dapp Hello World

    1 基本流程 Asch有三种net localnet testnet mainnet 后两种是发布到线上的 可通过公网访问 第一种localnet是运行在本地的 只有一个节点的私链 主要是为了方便本地测试和开发 Dapp的开发同样要涉及到这
  • HDFS的副本数量配置

    众所周知 hdfs的默认副本数量是3个 配置在 etc hadoop conf hdfs site xml中
  • uni-app多端开发注意事项

    关于vue 1 注意 如果使用老版的非自定义组件模式 即manifest中 usingComponents false 部分模版语法不支持 但此模式已于2019年11月起下线 2 data 必须声明为返回一个初始数据对象的函数 否则页面关闭
  • iOS进阶—Runtime基础

    iOS进阶 目录 GitHub参考 RunTime 基础 一个程序的执行过程 大概就是代码 gt 编译链接 gt 执行 C语言 import
  • Acwing-4645. 选数异或

    暴力解法 TLE了 呜呜呜呜 include
  • Linux系统下安装Redis

    文章目录 下载Redis 上传至Linux服务器 安装Redis 基本环境安装 运行Redis redis benchmark性能测试 下载Redis 下载地址 https redis io 上传至Linux服务器 可借助任何一款ftp软件
  • IT人员必学最基础知识(一)——总括

    作为一个真正的IT人员 我们不仅要懂得高级语言的编程使用 更要懂得电脑最基础的知识 这是我们成为杰出的IT人员的基石 只要踏上这些基础知识我们才能走的更高 首先我们要懂得电脑是如何工作的 大千世界无奇不有 繁彩纷呈 而一台小小的电脑就可以处
  • 算法入门:双指针法

    一 双指针法 例子1 求一个有序数组中和 8的下标 设置两个不同的指针 或者头 或者尾 在一个递增的序列中 根据结果分类 说明指针的下一步应该怎么移动 结果分类 a i b j 8则i j 都相互靠近 a i b j lt 8 需要移动指针
  • 使用react-grid-layout和echarts-for-react实现一个支持拖拽的自定义响应式dashboard页面

    文章目录 使用react grid layout和echarts for react实现一个支持拖拽的自定义响应式dashboard页面 需求概要 技术栈 简单实现 参考 使用react grid layout和echarts for re
  • python画聚类树状图_聚类分析python画树状图--Plotly(dendrogram)用法解析

    1 前言 聚类分析是机器学习和数据分析中非常常见的分类方法 当我们用到层次聚类 系统聚类 时 最常用的分析方法就是绘制树状图 比较常见的统计软件像SPSS SAS R等都可以直接绘制树状图 比较简单 今天主要介绍下python怎么绘制 2
  • 校园欺凌——四位学生的乱伦之战!!!

    校园欺凌 Impossible 学生之战 Non existent 乱伦 Take leave ok 兄弟姊妹们 今天我们来学习循环结构第一章 gt gt gt While与Do Whlie 循环 重复得做某一件事情 Such as 打印5
  • QVariant的用法

    前言 QVariant这个类很神奇 或者说方便 很多时候 需要几种不同的数据类型需要传递 如果用结构体 又不大方便 容器保存的也只是一种数据类型 而QVariant则可以统统搞定 介绍 帮助文档上说 The QVariant class a
  • 云化背景下的接口测试覆盖率自动化检查

    一 问题来源 在云化场景下 API的测试覆盖是一项重要评估与考察指标 除了开发者自测试外 UT 还可以利用云化测试平台 流水线等方法进行相关指标的检查与考核 利用这种方法既可以减轻开发者测试工作量 不必在本地做大量的 降低人为指标灰度空间