目录:导读
- 前言
- 一、Python编程入门到精通
- 二、接口自动化项目实战
- 三、Web自动化项目实战
- 四、App自动化项目实战
- 五、一线大厂简历
- 六、测试开发DevOps体系
- 七、常用自动化测试工具
- 八、JMeter性能测试
- 九、总结(尾部小惊喜)
前言
接口信息来源
与界面功能测试相比,除了要明确需求和测试目标之外,接口测试还需要有针对性地去设计测试数据和接口的组合,确定接口信息通常有两条路径,一是通过接口文档获取,二是通过接口抓包获取。
接口文档
开发人员一般不喜欢写接口文档,同时也讨厌别人不写接口文档,就像程序员一般不喜欢写注释,同时也讨厌不写注释的代码,所以测试人员想要获取一份相对完善的接口文档有时是比较麻烦的,这就需要驱动开发人员提供,这对于开发人员来说并不困难。
作为测试人员需要关注接口文档的有效性和及时性,包括:Request URL、Request Method、Content-Type、请求参数、响应结果、请求示例等。
抓包
如果没有接口文档,那就只能自己动手丰衣足食,通过抓包分析的方式来获取接口信息。
常见的抓包工具比如:浏览器 F12、Fiddler、Charles 等,还可以把 Fiddler 抓到的接口导出,通过工具转成接口平台可识别的脚本,进而提高效率。
在获取到接口信息后,还需要与开发人员多进行交流,明确接口参数的含义和来源,以便于我们有针对性地进行用例的设计。
有不明确的点应当直接找开发同学问清楚,而不应该自己过多的猜想,避免自己的猜想有误造成后续用例设计的错误。在此阶段,还需梳理接口的优先级和重要程度,根据优先级顺序进行用例设计,在有限的时间内,做最大价值的事。
单接口测试
单接口测试主要验证接口的请求地址、请求类型、请求格式、请求参数、权限、返回值等为主,目的是保证接口能跑通,这类用例一般在接口设计完成后定稿,使用过程中可配合 Mock 服务完成用例编写。
场景逻辑验证
场景逻辑验证是以用户场景为基础,验证接口间的参数传递和业务流程是否能够正常流转。
比如:用户注册接口 --> 用户登录接口 --> 修改用户信息接口,使得业务流程形成闭环。
这个阶段的用例复杂度较高,需要非常熟悉业务与接口之间的关系,同时也是接口测试的核心部分、最有价值的部分。
异常测试
与界面功能测试类似,除了测试各种正常场景外,还需要验证各种异常情况,主要验证参数异常。
比如:某个参数的类型是 String,当你传入其他类型时是否会报错并给出提示;某个参数的长度限制 200 个字符,当超过 200 个字符时是否给出提示;
某个参数是必填,当不传为空时是否有非空判断。还需要验证逻辑异常等情况下接口是否能够处理并给出友好的提示信息、提示是否准确清晰以及返回的信息是什么。
通常情况下,关注参数的异常场景会比较多,可以用等价类、边界值等方法进行传参的设计。
尽量做自动化
所有用例应该是非交互式的,能自动化就不要手动去获取。最常见的就是 token 的获取,获取 token 的方法也有很多种。
最常用的就是通过调用登录接口获取返回值中的 token,用于后续接口的鉴权,还有一些开放平台接口,token 有特定的生成规则,就可以将其写成脚本自动生成 token,而不是每次执行测试用例之前,需要手动生成 token 再复制粘贴到脚本中。
特别是分环境测试时就会很麻烦,而且 token 一般是有有效时间的,写成自动化脚本,每次都获取都是最新的,就不用担心 token 过期的问题了。
合理的断言
黑盒测试的重点是输入和输出,其实集成后的接口测试也属于黑盒测试,也许我们不需要关注内部的代码是如何实现的,更多的是关注请求参数和响应结果,因此在设计用例时,需要重点关注断言的设计。
好的断言能够帮助我们发现问题,没有断言的用例或者脚本就是在耍流氓,完全没有意义,如果没有断言,全部用例都是 pass,那我们也无法真正对系统放心,无法确保一定没有问题。
从接口层面上看,我们至少需要关注两方面的验证,一是数据结构验证,二是核心数值验证。
数据结构验证就是校验接口返回的数据结构是否与事先约定好的一致,调用方在处理数据时,肯定是按照事先约定好的数据结构来解析数据,如果数据结构发生了变化,那么对调用方来说,无疑是灾难性的事故,也就是说之前已经开发完成的程序在对接时就会出错,导致需要重新开发。
核心数值的验证需要根据不同的业务场景,有针对性地验证某些键值是否与预期一致,同时可以结合数据库查询的方式来验证。
比如:用户注册接口调用成功后会返回一个用户 ID,此时就可以使用 SELECT * FROM user_table WHERE user_id = “”; 以判断是否真的注册成功,这个比较依赖于测试人员对于业务的了解程度,根据实际情况灵活设计即可。
除此之外,还有一些额外的验证点在需要的时候也可以进行校验。
比如:返回的 URL 是否能访问、涉及到数据流转的、返回的数据是否真的有必要(避免返回数据量过大导致意外情况发生)。
通过添加合理的断言,才能让接口自动化用例有一定的业务价值,能够真正帮助到团队提升效率,这样的测试结果才能让人安心。
接口自动化测试用例
1、公共参数
接口自动化测试中一个很重要的环境就是测试数据的准备,要想让脚本可以在多套环境中运行,那么测试数据就不能写得太死,需要根据具体环境去自动获取一些数据值。
公共参数就是通过不同作用域或标识的区分,有一个专门的模块来处理一些公用数据的存放,比如:不同环境的账号密码,不同环境的 URL 等。
2、数据集合
通过特定的 API 或数据库 SQL,事先生成一些所需的数据作为前置条件,然后存放到一个特定的集合中,需要的时候再从数据集合里面取。
3、数据模板
由于测试环境一般会有多套,为了方便环境的切换,我们不应该把太多的数据信息写死,而是通过填写一些简单的信息,再调用基础接口,自动生成一整套业务数据。
比如:用户信息包含用户名、手机号、邮箱、注册时间等,此时我们不应该把这些信息都写死,而是通过用户 id 去调用用户信息查询接口获取一整套用户信息数据等等。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
每一天都是一个全新的开始,不要停下脚步,勇敢前行!只有坚持不懈,才能收获成功的喜悦。不要怕失败,要敢于尝试,相信自己一定能够克服任何困难,实现自己的梦想。只要心怀信念,就能创造奇迹!
只有不断奋斗才能实现自己的梦想,不要畏惧挫折和失败,要坚持不懈地追求自己的目标。每一次努力都是积累,每一天都有可能改变命运,加油吧!
每一次的坚持和努力,都会有回报,无论是成功或失败,都是成长的一部分。所以不要放弃,不要停下脚步,继续前行,在路上遇到的风景和惊喜,都将成为你奋斗路上最美的记忆。