史上最细,接口自动化测试用例设计编写总结,一篇带你打通...

本文主要是介绍史上最细,接口自动化测试用例设计编写总结,一篇带你打通...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

说到自动化测试,或者说接口自动化测试,多数人的第一反应是该用什么工具,比如:Python Requests、Java HttpClient、Apifox、MeterSphere、自研的自动化平台等。

大家似乎更关注的是哪个工具更优秀,甚至出现“ 做平台的 > 写脚本的 > 用工具的 ”诸如此类的鄙视链,但却很少有人去关注接口测试用例的设计问题。

在我看来,工具并没有高低贵贱之分,只能说哪个更适合,适合当前的业务以及适合当前的团队协作。

自动化测试的本质还是测试,自动化只是为了提高测试的效率,而测试的基础是测试用例,因此我们不应该忽略接口自动化测试用例的设计问题。

换言之,当你掌握了自动化测试用例的设计思想以及方法,无论用什么工具,都能得心应手,因为工具的东西多练多操作肯定能学会,而思维认知的东西则需要在学习他人好的方法的基础上自己琢磨领悟,并形成一套自己的经验总结。

想象一下,回归测试的时候,成百上千的接口执行下来,没有报错,我们真的对系统放心吗,我们又是怎样衡量自动化脚本是否合理的呢?

1、接口信息来源

与界面功能测试相比,除了要明确需求和测试目标之外,接口测试还需要有针对性地去设计测试数据和接口的组合,确定接口信息通常有两条路径,一是通过接口文档获取,二是通过接口抓包获取。

2、接口文档

开发人员一般不喜欢写接口文档,同时也讨厌别人不写接口文档,就像程序员一般不喜欢写注释,同时也讨厌不写注释的代码。

所以测试人员想要获取一份相对完善的接口文档有时是比较麻烦的,这就需要驱动开发人员提供,这对于开发人员来说并不困难。

统一的接口文档管理方式也是比较多的,比如:在wiki上创建一个接口文档目录空间专门用于维护接口信息、系统后台管理中有专门的接口文档模块、在需求单子下面备注、使用apifox工具进行接口文档的维护管理等。

同时现在也有很多插件或工具能够帮助开发人员自动生成接口文档,比如:swagger、apidoc、yapi。

作为测试人员需要关注接口文档的有效性和及时性,包括:Request URL、Request Method、Content-Type、请求参数、响应结果、请求示例等。

3、抓包

如果没有接口文档,那就只能自己动手丰衣足食,通过抓包分析的方式来获取接口信息,常见的抓包工具比如:浏览器F12、Fiddler、Charles等,还可以把Fiddler抓到的接口导出,通过工具转成接口平台可识别的脚本,进而提高效率。

在获取到接口信息后,还需要与开发人员多进行交流,明确接口参数的含义和来源,以便于我们有针对性地进行用例的设计。

有不明确的点应当直接找开发同学问清楚,而不应该自己过多的猜想,避免自己的猜想有误造成后续用例设计的错误。在此阶段,还需梳理接口的优先级和重要程度,根据优先级顺序进行用例设计,在有限的时间内,做最大价值的事。

4、单接口测试

单接口测试主要验证接口的请求地址、请求类型、请求格式、请求参数、权限、返回值等为主,目的是保证接口能跑通,这类用例一般在接口设计完成后定稿,使用过程中可配合Mock服务完成用例编写。

5、场景逻辑验证

场景逻辑验证是以用户场景为基础,验证接口间的参数传递和业务流程是否能够正常流转,比如:用户注册接口 --> 用户登录接口 --> 修改用户信息接口,使得业务流程形成闭环。

这个阶段的用例复杂度较高,需要非常熟悉业务与接口之间的关系,同时也是接口测试的核心部分、最有价值的部分。

6、异常测试

与界面功能测试类似,除了测试各种正常场景外,还需要验证各种异常情况,主要验证参数异常。

比如:某个参数的类型是String,当你传入其他类型时是否会报错并给出提示;某个参数的长度限制200个字符,当超过200个字符时是否给出提示;某个参数是必填,当不传为空时是否有非空判断。

还需要验证逻辑异常等情况下接口是否能够处理并给出友好的提示信息、提示是否准确清晰以及返回的信息是什么。通常情况下,关注参数的异常场景会比较多,可以用等价类、边界值等方法进行传参的设计。

7、尽量自动化

所有用例应该是非交互式的,能自动化就不要手动去获取。最常见的就是token的获取,获取token的方法也有很多种,最常用的就是通过调用登录接口获取返回值中的token,用于后续接口的鉴权。

还有一些开放平台接口,token有特定的生成规则,就可以将其写成脚本自动生成token,而不是每次执行测试用例之前,需要手动生成token再复制粘贴到脚本中,特别是分环境测试时就会很麻烦,而且token一般是有有效时间的,写成自动化脚本,每次都获取都是最新的,就不用担心token过期的问题了。

8、独立性

用例之间相互独立,不能有依赖,需要在每一个用例里处理好前置条件,而不是多个用例相互依赖。

9、可重复性

用例测试应该是可以重复执行的,因此需要注意参数的生成方式。

10、合理的断言

黑盒测试的重点是输入和输出,其实集成后的接口测试也属于黑盒测试,也许我们不需要关注内部的代码是如何实现的,更多的是关注请求参数和响应结果。

因此在设计用例时,需要重点关注断言的设计,好的断言能够帮助我们发现问题,没有断言的用例或者脚本就是在耍流氓,完全没有意义,如果没有断言,全部用例都是pass,那我们也无法真正对系统放心,无法确保一定没有问题。

从接口层面上看,我们至少需要关注两方面的验证,一是数据结构验证,二是核心数值验证。

数据结构验证就是校验接口返回的数据结构是否与事先约定好的一致,调用方在处理数据时,肯定是按照事先约定好的数据结构来解析数据,如果数据结构发生了变化,那么对调用方来说,无疑是灾难性的事故,也就是说之前已经开发完成的程序在对接时就会出错,导致需要重新开发。

核心数值的验证需要根据不同的业务场景,有针对性地验证某些键值是否与预期一致,同时可以结合数据库查询的方式来验证,比如:用户注册接口调用成功后会返回一个用户ID,此时就可以使用SELECT * FROM user_table WHERE user_id = “”;以判断是否真的注册成功,这个比较依赖于测试人员对于业务的了解程度,根据实际情况灵活设计即可。

除此之外,还有一些额外的验证点在需要的时候也可以进行校验,比如:返回的URL是否能访问、涉及到数据流转的、返回的数据是否真的有必要(避免返回数据量过大导致意外情况发生)。

通过添加合理的断言,才能让接口自动化用例有一定的业务价值,能够真正帮助到团队提升效率,这样的测试结果才能让人安心。

11、公共参数

接口自动化测试中一个很重要的环境就是测试数据的准备,要想让脚本可以在多套环境中运行,那么测试数据就不能写得太死,需要根据具体环境去自动获取一些数据值。

公共参数就是通过不同作用域或标识的区分,有一个专门的模块来处理一些公用数据的存放,比如:不同环境的账号密码,不同环境的URL等。

12、数据集合

通过特定的API或数据库SQL,事先生成一些所需的数据作为前置条件,然后存放到一个特定的集合中,需要的时候再从数据集合里面取。

13、数据模板

由于测试环境一般会有多套,为了方便环境的切换,我们不应该把太多的数据信息写死,而是通过填写一些简单的信息,再调用基础接口,自动生成一整套业务数据。

比如:用户信息包含用户名、手机号、邮箱、注册时间等,此时我们不应该把这些信息都写死,而是通过用户id去调用用户信息查询接口获取一整套用户信息数据。

对于接口自动化测试用例的设计,可能不同的人有不同的思路和想法,我们要做的就是取其精华,把一些好的思路和方法在具体项目中实践,并形成一套自己的经验总结。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

追逐梦想的路上,不畏艰难险阻,坚持不懈是成功的钥匙。每一步脚印,都铸就辉煌未来,让心中的火焰照亮前行的道路。

在奋斗的征途中,让汗水成为最亮丽的风景,每一次挑战都是向着梦想迈进的步伐,坚持信念,砥砺前行,终将收获属于你的辉煌。

面对风雨与挑战,把握每一个现在,用不懈努力编织成功的篇章。心怀梦想,脚踏实地,让每一天的辛勤汇聚成未来的璀璨星河。

这篇关于史上最细,接口自动化测试用例设计编写总结,一篇带你打通...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/788410

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter

整数Hash散列总结

方法:    step1  :线性探测  step2 散列   当 h(k)位置已经存储有元素的时候,依次探查(h(k)+i) mod S, i=1,2,3…,直到找到空的存储单元为止。其中,S为 数组长度。 HDU 1496   a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 。 x在 [-100,100] 解的个数  const int MaxN = 3000

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机