当前位置:网站首页 > 技术博客 > 正文

在线api测试



自动化测试从分类上来说,可以把它分为客户端自动化测试和服务端自动化测试,或者可以更加具体的说就是API的自动化测试,API的测试是软件测试的一种测试模式,它包含了两个维度,在狭义的角度上指的是对应用程序接口的功能进行测试,在广义的维度上是指集成测试中,通过调用API测试整体的功能来完成度,可靠性,安全性和性能。相比较客户端自动化测试,API测试是可以有效的提升测试的效率,以及满足在DevOps的理念下的持续交付的能力。另外一个点,目前出去找工作不管是那个级别的测试工程师,都要求会API的测试,只不过不同层级对服务端的测试能力在深度和广度上有区别,但是有一点必须得承认,API的测试技术是每一位测试工程师都要求必须掌握的测试技能。

要系统全面的掌握API的测试能力,可以主要从这么几个维度来看它的技术栈分布和学习路线,第一部分是协议原理;第二部分是API测试的维度,以及如何来测试API,API不是单纯的拿个工具去请求一下,然后返回响应数据就认为已经完成了这样的一个测试过程;第三部分是API测试用例的编写和实战,最后就是它的框架设计和稳定性容量规划的测试,在这里我主要介绍第一至第三部分,后续会逐步的写文章介绍稳定性以及容量测试需要考虑的点。

针对第一部分协议原理,这也是很多人比较模糊而又觉得没必要去学习的知识体系之一,但是在API测试的知识体系中,这部分的知识体系是最核心也是最基础,必须要求掌握的知识。HTTP是基于应用层的协议,它不需要关注底层网络传输层协议的事情,但是这个过程比如,打开浏览器,输入https://item.jd.com/12516591.html,按下回车键,跳转到书籍《Python自动化测试实战》书籍的详情页。感兴趣的同学也可以购买我的书籍:

这个过程的请求步骤是需要掌握的,这就涉及到一个完整的HTTP的请求流程,以及keep-alive的概念以及HTTP版本发展的历史过程。当然还有一个更加具体的例子,比如用户访问你测试的一个系统,用户操作有时候是正常的,有时候提示未知的错误信息,或者说根本没提示任何的错误提示信息,用户无法操作,API的接口都返回是401,那么这个时候到底是什么原因导致的了? HTTP是一个无状态的协议,但是在互联网的产品形态中,一个用户登录系统成功后,需要记录下谁登录了这个系统,以及这个用户它其他的数据信息,这就需要很清楚的掌握COOKIE的请求流程,当然这中间有这么几点是需要清楚的知道的,分别是COOKIE的请求流程,SESSION的请求流程,TOKEN的请求流程,以及HTTPS的请求流程,当然了还有我们经常面试被问到的请求方法,如GET,METHOD请求方法,案例刚才案例说的401错误信息,这些都是基于协议原理的框架下来进行展开的。抛开概念性的东西来说,就拿一个接口测试来说,发送一个接口信息,获取用户主页的信息,有时候可以,有时候又不可以,那么是什么导致了又不可以了?为什么请求它被重定向到登录的页面,应该如何来定位和解决该问题了,如果请求如上说的请求流程,其实就自己能够很清楚的知道是什么原因导致了这样的结果。

继续来看这二部分,API的测试维度,给了一个接口要求对它测试,并且输出测试结果以及判断是否可以上线,那么测试什么?每个测试点都是基于业务形态来展开,真地方我们就抛开业务这部分,如下的接口,我们如何来测试它,接口的源码如下所示

基于如上的接口,或者说针对API的测试分类,可以分为单接口的测试,以及针对业务场景的API的测试,我们先来说针对单个API的测试维度,主要可以总结为如下几点:

1、验证必填参数是否为空

2、验证参数的数据类型是否做了校验

3、验证参数的字段⻓度是否做了校验

4、接口的安全性校验和性能校验

对单个API的测试,如果测试的API涉及到支付以及与金钱有关系的接口,都需要考虑API的安全测试,可以从下面几个维度来思考,分别是:

1、是否增加了反爬虫的机制

2、是否增加了请求次数的限制

3、是否增加了对应的请求头信息

3、是否增加了坚权的认证信息(基本认证,常规认证,自定义认证)

4、是否对请求进行了加密

5、是否在被请求的服务端增加了IP的限制(白名单设置和IP的限制请求)

API的性能测试主要是基于服务的测试,可以使用常规的测试工具如JMeter测试工具来进行这部分的测试。

单个接口测试是必要的,但是无法保障到全链路的产品质量保障,所以需要基于产品全链路的质量保障,也就是业务场景的测试,简单的说就是通过API的测试技术,模拟人的操作行为,实现产品业务场景的覆盖,这种覆盖包含了产品正常的业务逻辑以及异常的程序逻辑判断。在基于业务场景的测试中,需要考虑的是参数上下关联的解决方案和思路,如有一个图书管理系统,可以增加书籍,查看增加书籍的信息,修改书籍的信息以及删除数据的信息,那么在链路的测试场景设计中,需要考虑的是添加书籍信息成功后,需要拿到书籍的ID,这样在后面的业务测试中才能够对添加的书籍信息进行信息的查询,信息的修改和信息的删除。这地方就会涉及使用到函数的返回值,把添加书籍成功后书籍ID通过函数返回值返回后,在下个请求中调用这个变量。如编写一个函数返回值的代码具体如下:

下来说说第三部分,也就是API测试用例的编写方法,在一个完整的API测试用例编写中,需要考虑到每个测试点的初始化,测试步骤,测试断言以及清理的操作,在常用的单元测试框架中都已经提供了这部分的信息,如在Python的技术栈中常使用的测试框架Pytest和unittest都提供了这部分的思路和知识体系。完整的测试用例编写思路具体为:

被测试的API的源码如下:

把请求参数的数据都存储在yaml的文件里面,文件的内容具体为:

下面使用Pytest测试框架来演示这部分的测试用例编写,实现代码如下:

执行后,输出的结果信息如下:

服务端程序的请求流程如下:

框架这部分的设计后续我会详细的在公众号里面介绍它的设计思想,以及结合具体的案例来演示它的应用。我从本周以及未来两周,从三节课程的角度,分别以直播的形式来详细的介绍HTTP协议原理,API测试维度,API测试用例编写和实战三个维度来详细的说明API测试的点,这个过程,可以带领0基础的同学进入到入门的阶段以及下一步的学习思路。本周主要分享HTTP的协议和原理,以及COOKIE,SESSION,TOKEN的原理以及基本认证的详细讲解。也欢迎您的参与。想参与的同学,扫描如下二维码,支付一分钱就可以参加哦,参加后进入VIP的学习群,通过三周三个维度的方式,学会从零到一的API测试维度。直播结束后会分享课程课程以及以及直播期间的案例源码。

版权声明


相关文章:

  • cname域名解析原理2025-05-18 16:01:00
  • 如何利用左移右移指令实现流水灯plc2025-05-18 16:01:00
  • blp模型规定了4种安全级别2025-05-18 16:01:00
  • 二叉树的遍历图2025-05-18 16:01:00
  • java中assert断言语句有哪些2025-05-18 16:01:00
  • 接口设计怎么写2025-05-18 16:01:00
  • unicode编码转换工具下载2025-05-18 16:01:00
  • centos7远程桌面连接2025-05-18 16:01:00
  • oracle的视图是什么2025-05-18 16:01:00
  • scanf函数格式2025-05-18 16:01:00