基于知识库的接口自动化测试——结果模型化方法与装置的分析

一、背景

随着自动化测试的设计理念不断完善、新的技术不断应用,自动化测试资产的积累代价和维护成本不断降低,自动化测试资产的数量持续增长。同时,随着DevOps的普及,应用研发过程越来越敏捷,自动化测试能力逐步从测试部门输出至开发部门,在每日构建、制品晋级、版本发布等流程中成为必备环节。

随着自动化测试执行能力的不断提升,自动化测试执行结果数据指数级增加,大量的结果分析处理工作成为自动化测试开展的瓶颈。本文介绍一种基于知识库的接口自动化测试结果分析方法与装置,通过接口测试结果模型化方法和基于错误码库、非缺陷知识库的错误归类分析方法,辅助测试人员高效实施大规模、多系统的接口自动化测试结果分析处理。

二、接口测试结果模型化

接口自动化测试,简单地说,就是按测试需求装报文,发送给被测系统,接收并解析返回报文,判断测试成功失败。

在自动化测试平台中,对接口测试过程模型化统一封装:

(1)通讯过程是报文发送和接收,其相关内容抽象为通讯组件;

(2)报文是被测系统与其客户端或调用方针对具体接口约定的交互信息。其中,报文组装和解析相关内容抽象为报文组件,具体接口交互信息抽象为报文格式,对发送给被测系统的报文称为输入报文,被测系统返回的报文称为输出报文。

三、对测试结果的第一级分析:根据返回标志位进行初步判断

一般而言,符合一定开发规范的应用系统,会在返回报文公有域特定字段返回应用级处理结果。若应用级处理错误,则还会在返回报文公有域特定字段返回错误码和错误信息。

因此,在接口自动化测试执行过程中,执行程序将接口测试结果预处理为统一数据模型,包括结果标志、错误码、错误信息和返回报文,便于后续处理。

其中,结果标志分为5类:

(1)应用级处理正确,则结果标志为N,此时错误码、错误信息均为空;

(2)应用级处理错误,则结果标志为E,错误码、错误信息存储返回报文提取的相应信息;

(3)在金融系统中,为保证安全,重要金融交易一般会涉及双人复核或者远程授权的过程,此时应用级处理结果为“需要授权”,则结果标志为A,错误码、错误信息均为空;

(4)在平台执行接口测试的过程中,若出现任何程序未处理的内部异常,则结果标志为I,此时错误码、错误信息均为空;

(5)在常见的HTTP/HTTPS、TCP等通讯方法中,若无法正常通讯并拿到预期的返回报文,则认为在通讯级发生异常,结果标志为U,此时错误码、错误信息均为空。

通过第一级分析,可以对接口测试结果进行初步分类,辅助测试人员判断接口测试报错类型,排除网络等环境因素造成的误报。

四、对测试结果的第二级分析:根据错误码库和非缺陷知识库进行精准判断

仅通过返回报文分析,对于“大幅降低接口测试误报率”的预期是不够的,需要配合错误码库和非缺陷知识库进行第二级精准分析。其实现方式是:自动化测试平台按系统名称为各系统提供错误码库,对结果标志为E的接口测试结果细分错误码,分别设置错误描述、匹配方式和匹配表达式。匹配方式分为三种:

(1)精确匹配:该匹配方式适用于统筹设计良好的系统,项目组能够较好的归类业务错误、分配错误码,并在系统接口设计中在公有域有固定字段返回错误码和错误信息,此类系统直接采用错误码库中的错误码与接口测试结果模型中的错误码匹配;

(2)错误信息模糊匹配:该匹配方式适用于能够从固定字段输出错误信息,但没有固定字段返回错误码或者错误码定义不规范(如错误码是中文信息)的系统,此类系统错误码和错误信息由测试人员自行定义,每类错误码需对应设计匹配表达式,即一条正则表达式,若接口测试结果模型中的错误信息能匹配该正则表达式则归为该类错误;

(3)返回报文模糊匹配:该匹配方式适用于接口设计不规范、无固定字段返回错误信息的系统,此类系统错误码和错误信息由测试人员自行定义,每类错误码需对应设计匹配表达式,即一条正则表达式,若接口测试结果模型中的返回信息能匹配该正则表达式则归为该类错误。

在实际接口测试中,由于被测系统配置错误、被测系统铺底数据异常等问题而出现的错误并非本次测试结果中需重点关注的内容,对于该类错误,将错误码库中的对应错误条目增加标志位,即纳入非缺陷知识库。

经过实践,在实施第二级精准分析后,往往能大幅降低接口自动化测试的误报率,减少一线测试团队的分析工作量。

五、接口测试结果归类分析

基于接口测试结果的模型化和两级分析,我们将接口测试的结果分类分析,输出概要表和错误分类表。

概要表如下:

执行错误的交易将进一步处理为错误明细表,如下:

利用该分析结果,测试人员可重点关注结果类型为“执行错误”的分类,确认为缺陷的应提交给开发人员修复;对于“执行错误非缺陷”的分类,应在解决对应问题后再次测试相关接口。

六、结语

本文介绍的接口自动化测试结果分析方法,将不同系统、不同通讯方式、不同报文协议的接口测试结果标准化为的统一数据模型,并依据组织级错误码库和非缺陷知识库对标准化的测试结果进行分类分析,大大降低测试结果的人工分析工作量。其中,错误码库及配套的三种错误匹配方式,使得测试人员可以灵活自主地为被测系统定制错误归类识别方案,在不同应用系统接口设计标准化程度不一的场景下,解决了接口测试结果的错误识别问题;非缺陷知识库的设计,使得测试人员可以预设部分不关注的错误类型,以获取重点更加突出的错误分析结果,辅助测试人员更加高效地完成测试活动。

接口自动化测试的误报率控制,是提升自动化测试效能的关键点,笔者也将继续探索相关方法,致力于自动化测试效能的不断提升。

文末了:

可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。同时我邀请你进入我们的软件测试学习交流平台,大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,了解测试行业的最新趋势,助你快速进阶Python自动化测试/测试开发,稳住当前职位同时走向高薪之路。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构复习之路】图(严蔚敏版)两万余字超详细讲解

专栏:数据结构复习之路 复习完上面四章【线性表】【栈和队列】【串】【数组和广义表】【树和二叉树】,我们接着复习 图,这篇文章我写的非常详细且通俗易懂,看完保证会带给你不一样的收获。如果对你有帮助,看在我这么辛…

[Kubernetes]3. k8s集群Service详解

在上一节讲解了k8s 的pod,deployment,以及借助pod,deployment来部署项目,但会存在问题: 每次只能访问一个 pod,没有负载均衡自动转发到不同 pod访问还需要端口转发Pod重创后IP变了,名字也变了针对上面的问题,可以借助Service来解决,下面就来看看Service怎么使用 一.Service详…

RLC防孤岛负载测试:电力系统安全运行的重要保障

在电力系统中,孤岛效应是一个严重的问题,它可能导致电力系统的不稳定甚至崩溃。为了确保电力系统的安全运行,必须进行RLC防孤岛负载测试。RLC防孤岛负载测试是一种模拟电网故障后,对电力系统进行检测的方法,主要用于检…

LinuxCNC的使用

先进行程序设置 点击“开始”,选择“创建新的配置” 设置好机床名称和单位 关键是需要设置并口地址 查看并口使用命令:lscpi -v 将使用的并口填入: 这里是设置页面

21、同济、微软亚研院、西安电子科技大提出HPT:层次化提示调优,独属于提示学习的[安妮海瑟薇]

前言: 本论文由同济大学、微软亚洲研究院、西安电子科技大学,于2023年12月11日中了AAAI2024 论文: 《Learning Hierarchical Prompt with Structured Linguistic Knowledge for Vision-Language Models》 地址: [2312.06323]…

8款AI写作神器,轻松创作高质量内容

随着AI技术的不断发展,AI生成文案平台也逐渐成为一种新型的写作工具。这些平台利用先进的算法和自然语言处理技术,能够快速生成高质量的文案内容。不仅可以提高写作效率,还可以帮助创作者更好地表达思想和创意。AIGCer介绍几款好用的AI写作工…

4.docker镜像及相关命令

目录 1 查看所有镜像 docker images 1.1 基本用法 1.2 docker images -q 只显示所有镜像ID 1.3 docker images -f [筛选条件] -q 只显示符合条件的所有镜像ID 1.4 docker images --no-trunc 显示完整的IMAGE ID 1.5 docker images --format [模板] 使用模板 2 从…

Kafka--从Zookeeper数据理解Kafka集群工作机制

从Zookeeper数据理解Kafka集群工作机制 这一部分主要是理解Kafka的服务端重要原理。但是Kafka为了保证高吞吐,高性能,高可扩展的三高架构,很多具体设计都是相当复杂的。如果直接跳进去学习研究,很快就会晕头转向。所以&#xff0c…

纵横字谜的答案 Crossword Answers

纵横字谜的答案 Crossword Answers - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 翻译后大概是&#xff1a; 有一个 r 行 c 列 (1<r,c<10) 的网格&#xff0c;黑格为 * &#xff0c;每个白格都填有一个字母。如果一个白格的左边相邻位置或者上边相邻位置没有白格&…

计算机组成原理-CPU数据通路(单总线结构和专用通路结构)

文章目录 数据通路CPU内部单总线方式例题小结 专用数据通路方式专用数据通路方式-取指周期专用数据通路方式-例题小结 数据通路 CPU内部单总线方式 同一时刻内一个总线只可以支持一组部件的数据交互 CPU与各个寄存器的in out线接通可以控制其输入还是输出 Y和ALU有专用数据通…

生物化学 荒诞医学史笔记:重金属(暂记)

“理论基础” 四液说 根据希罗多德的说法&#xff0c;古埃及人为了维持自身健康&#xff0c;每月都会使用催吐剂。希波克拉底也提倡定期呕吐。之后的好几千年中&#xff0c;这种建议不断出现。直到最近几十年&#xff0c;催吐剂还被认为是医学处方的重要组 成部分。 大…

Python:(Sentinel-1)如何解析SNAP输出的HDF5文件并输出为GeoTIFF?

博客已同步微信公众号&#xff1a;GIS茄子&#xff1b;若博客出现纰漏或有更多问题交流欢迎关注GIS茄子&#xff0c;或者邮箱联系(推荐-见主页). Python&#xff1a;&#xff08;Sentinel-1&#xff09;如何解析SNAP输出的HDF5文件并输出为GeoTIFF&#xff1f; 01 前言 最近…