8年测试老鸟总结,接口自动化测试测试用例编写(全覆盖场景)

news2024/11/15 22:57:17

目录:导读

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


前言

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

Python接口自动化测试:https://www.bilibili.com/video/BV16G411x76E/

大家似乎更关注的是哪个工具更优秀,甚至出现“ 做平台的 > 写脚本的 > 用工具的 ”诸如此类的鄙视链,工具并没有高低贵贱之分,只能说哪个更适合,适合当前的业务以及适合当前的团队协作。

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

下面就来和大家聊聊接口自动化测试用例如何设计。

接口信息来源

与界面功能测试相比,除了要明确需求和测试目标之外,接口测试还需要有针对性地去设计测试数据和接口的组合。

确定接口信息通常有两条路径:
一是通过接口文档获取;
二是通过接口抓包获取;

接口文档

开发人员一般不喜欢写接口文档,同时也讨厌别人不写接口文档,就像程序员一般不喜欢写注释,同时也讨厌不写注释的代码,所以测试人员想要获取一份相对完善的接口文档有时是比较麻烦的,这就需要驱动开发人员提供,这对于开发人员来说并不困难。

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

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

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

抓包

如果没有接口文档,那就只能自己动手丰衣足食,通过抓包分析的方式来获取接口信息。

常见的抓包工具比如:浏览器F12、Fiddler、Charles等,还可以把Fiddler抓到的接口导出,通过工具转成接口平台可识别的脚本,进而提高效率。

在获取到接口信息后,还需要与开发人员多进行交流,明确接口参数的含义和来源,以便于我们有针对性地进行用例的设计。在此阶段,还需梳理接口的优先级和重要程度,根据优先级顺序进行用例设计,在有限的时间内,做最大价值的事。

单接口测试

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

场景逻辑验证

场景逻辑验证是以用户场景为基础,验证接口间的参数传递和业务流程是否能够正常流转。

比如:用户注册接口 --> 用户登录接口 --> 修改用户信息接口,使得业务流程形成闭环。

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

异常测试

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

比如:
某个参数的类型是String,当你传入其他类型时是否会报错并给出提示;
某个参数的长度限制200个字符,当超过200个字符时是否给出提示;
某个参数是必填,当不传为空时是否有非空判断。还需要验证逻辑异常等情况下接口是否能够处理并给出友好的提示信息、提示是否准确清晰以及返回的信息是什么。

通常情况下,关注参数的异常场景会比较多,可以用等价类、边界值等方法进行传参的设计。

尽量自动化

所有用例应该是非交互式的,能自动化就不要手动去获取。

最常见的就是token的获取,获取token的方法也有很多种,最常用的就是通过调用登录接口获取返回值中的token,用于后续接口的鉴权。

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

独立性

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

可重复性

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

合理的断言

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

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

核心数值的验证需要根据不同的业务场景,有针对性地验证某些键值是否与预期一致,同时可以结合数据库查询的方式来验证。

比如:用户注册接口调用成功后会返回一个用户ID,此时就可以使用SELECT * FROM user_table WHERE user_id = “”;
以判断是否真的注册成功,这个比较依赖于测试人员对于业务的了解程度,根据实际情况灵活设计即可。

除此之外,还有一些额外的验证点在需要的时候也可以进行校验。

比如:返回的URL是否能访问、涉及到数据流转的、返回的数据是否真的有必要(避免返回数据量过大导致意外情况发生)。

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

公共参数

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

公共参数就是通过不同作用域或标识的区分,有一个专门的模块来处理一些公用数据的存放。

比如:不同环境的账号密码,不同环境的URL等。

数据集合

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

数据模板

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

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

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

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

没有天生的英雄,只有不断努力的人。每一次的坚持和拼搏,都是迈向成功的必经之路。让我们紧握双拳,勇往直前,成就属于自己的辉煌!

人生短暂,时间宝贵。只有勇于追求,才能在生命的舞台上留下浓墨重彩的一笔。别让青春虚度,别让机会流失。振作精神,坚持不懈地奋斗。

成功的路上,从不会有捷径可走。只有拼搏,才能开创属于自己的辉煌。让心中的信念成为前行的动力,用汗水浇灌梦想的花朵,最终收获自己所期待的美好未来。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

15-721 Chapter 6 索引

最先是解释了一个古老的,现在没什么人用数据结构----T-tree,因为现代的cpu到cache和到memory差异巨大,同时memory的容量也变大了。 T-tree 两个key标志着范围,决定到哪里找key,然后存的都是指针,指向pare…

CANopen | 对象字典OD 05 - 创建对象字典变量,映射到RPDO

文章目录一、前言二、实验目的三、对象字典OD四、通过RPDO修改变量rx_Value4.1、NMT指令让CANopen从站进入操作状态4.2、RPDO修改变量rx_Value一、前言 该章节的源代码地址:github 以上摘自《CANopen_easy_begin》的第7章。 二、实验目的 CANopen从站有一个变量…

【博学谷学习记录】超强总结,用心分享 | 架构师 MySql扩容学习总结

文章目录1. 停机方案2.停写方案3.日志方案4.双写方案(中小型数据)5.平滑2N方案(大数据量)1. 停机方案 发布公告 为了进行数据的重新拆分,在停止服务之前,我们需要提前通知用户,比如&#xff1a…

网络io与select,poll,epoll

一个形象的类比 水龙头等水 水龙头就是内核进程 等水复制到内核区 学生就是进行io的进程或线程 阻塞io 学生在那里 等水来 非阻塞io 学生看数据没准备好,先回寝室,一会儿再过来检查下,看水准备好没 多路复用io 阿姨帮忙看着水龙头,等来水的时候通知学生 前面三个都是同步…

HQChart实战教程60-如何定制十字光标输出内容

HQChart实战教程60-如何定制十字光标输出内容 十字光标效果图步骤:1. 注册事件2. 外部格式化输出内容Y 轴输出说明X轴输出说明HQChart插件源码地址完整的demo源码十字光标 当鼠标或手势在K线上移动的时候, 会出现一个十字线,已经X轴和Y轴对应数值的输出。X轴输出日期+时间 …

2.1.1网络io与io多路复用select/poll/epoll

关于网络io&#xff0c;我们可以通过一个服务端-客户端的示例来了解&#xff1a; 这是一段TCP服务端的代码&#xff1a; #include <stdio.h> #include <errno.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include &l…

Android系统启动流程--zygote进程的启动流程

在上一篇init进程启动流程中已经提到&#xff0c;在init中会解析一个init.rc文件&#xff0c;解析后会执行其中的命令来启动zygote进程、serviceManager进程等&#xff0c;下面我们来看一下&#xff1a; //文件路径&#xff1a;system/core/init/init.cppstatic void LoadBoot…

电子商务转化率对你来说有多重要?

有许多电子商务企业遇到了瓶颈期&#xff0c;低转化率并不总是表明您的业务出了大问题&#xff0c;但它们确实表明您可以做得更多&#xff0c;赚得更多。在文中&#xff0c;我们将讨论电子商务转化率对你的重要性&#xff0c;以及提高电子商务转化率的最佳久经考验的方法。 一、…

如何选择IT培训机构?

作为学习IT技术的一种方式、平台&#xff0c;培训班存在已久。而作为国内培训机构的老大哥&#xff0c;北大青鸟于1999年成立&#xff0c;是IT职业教育的开创者&#xff0c;专注于软件、网络、营销等各个IT技术领域&#xff0c;为IT行业输送了奖金百万技术人才。24年以来&#…

网络编程学习,项目er图

https://note.youdao.com/s/FEoXGdFe 思路&#xff1a;将每位上的数存放在一个数组里&#xff0c;每次从最高位开始遍历&#xff0c;先找到最大的位数&#xff0c;再根据是否为0&#xff0c;得到要加的数 网络编程是使用Java语言编写网络应用程序的过程。Java提供了一系列API&…

操作系统作业 18-22章

第十八章 1.根据题中所给参数计算线性页表大小和不同情况下的变化 paging-linear-translate.py -P 1k -a 1m -p 512m -v -n 0 paging-linear-translate.py -P 1k -a 2m -p 512m -v -n 0 paging-linear-translate.py -P 1k -a 4m -p 512m -v -n 0 页大小为1kb&#xff0c;地址空…

Git详细教程,彻底理解Git运作机制

Git详细教程前言git常用命令版本管理远程仓库分支管理正文git版本管理版本回退工作区和暂存区工作区版本库&#xff08;Repository&#xff09;撤销修改删除文件git远程仓库github使用添加远程库小结从远程库克隆git分支管理创建和合并分支git merge vs git rebase解决冲突第一…

即视角|元宇宙社交:新瓶旧酒 or 老树新芽?

即视角 Insight 共享即构新洞察&#xff0c;共建行业新动能——ZEGO即构科技基于音视频技术领域的多年深耕&#xff0c;综合面向各行业的服务经验&#xff0c;在【即视角】栏目发布即构对行业的洞察。 近期我们将聚焦于#元宇宙商业化#话题&#xff0c;共分为三篇&#xff1a;…

自从上了数据结构课之后就想自学c++了

所以今天是摆烂的第三天&#xff1a; 就是来总结一下自己刚学c常犯的小错误&#xff08;在注释里&#xff09;和总结吧&#xff1b; 先来看看hello world输出代码&#xff1b; //打了四遍这个代码终于对了TAT //在一整个程序里面如果有多个文件并且不止一个main函数的话&…

聊聊Redis sentinel 机制

Redis 的哨兵机制自动完成了以下三大功能&#xff0c;从而实现了主从库的自动切换&#xff0c;可以降低 Redis 集群的运维开销&#xff1a; 监控主库运行状态&#xff0c;并判断主库是否客观下线&#xff1b;在主库客观下线后&#xff0c;选取新主库&#xff1b;选出新主库后&…

C语言函数大全-- j 开头的函数

C语言函数大全 本篇介绍C语言函数大全– j 开头的函数 1. j0&#xff0c;j0f 1.1 函数说明 函数声明函数功能double j0 (double x);计算 x 的 第一类 0 阶贝塞尔函数&#xff08;double&#xff09;float j0f (float x);计算 x 的 第一类 0 阶贝塞尔函数&#xff08;float&…

AndroidNDK开发——使用Cmake编译生成so文件

文章目录AndroidNDK开发——使用Cmake编译生成so文件1.添加Cmake文件&#xff1a;2.添加Cmake依赖&#xff1a;3.jni文件如下&#xff1a;4.Android.mk文件&#xff1a;5.Application.mk文件6.SerialPort.c文件&#xff1a;7.SerialPort.h文件&#xff1a;8.运行项目&#xff1…

剑指 Offer II 049. 从根节点到叶节点的路径数字之和

中等题题目 &#xff1a; 给定一个二叉树的根节点 root &#xff0c;树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字&#xff1a; 例如&#xff0c;从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。计算从根节点到叶节点生…

BloombergGPT: 首个金融垂直领域大语言模型

BloombergGPT: 首个金融垂直领域大语言模型 Bloomberg 刚刚发布了一篇研究论文&#xff0c;详细介绍了他们最新的突破性技术 BloombergGPT。BloombergGPT是一个大型生成式人工智能模型&#xff0c;专门使用大量金融数据进行了训练&#xff0c;以支持金融行业自然语言处理 (NLP…

ORACLE EBS 系统架构与应用实践(一)

一、从ERP到EBS 从上世纪70年代晚期的物料需求计划MRP&#xff08;Material Requirements Planning&#xff09;到80年代的MRP II&#xff0c;再到90年代的企业资源计划ERP&#xff08;Enterprise Resource Planning&#xff09;&#xff0c;企业管理软件&#xff08;或曰应用…