jmeter接口测试
在做接口测试之前呢,先给大家说一下什么是接口测试,接口测试在什么时候进行,怎么做接口测试
什么是接口测试
接口测试时测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部的各个子系统之间的交互点。测试的重点是要检查接口参数传递的正确性,接口功能实现的正确性,输出结果正确性,以及对各个异常情况的容错处理的完整性和合理性。
针对软件接口的分类一般有以下几种情况:
- 系统与系统之间的调用,如:微信向用户提供统一对外的接口,程序员调用接口完成基于微信的小程序等;
- 同一系统内部上层服务对下层服务的调用,如:一个软件程序一般分为表示层,业务层,数据层。表示层调用业务层的接口来完成自己的工作,而业务层又会调用数据层的接口来实现相应的业务等。
(1)能够提早发现 bug,符合质量控制前移的理念。
(2)接口测试低成本高效益,因为接口测试可以自动化并且是持续集成的。
(3)接口测试从用户的角度对系统接口进行全面检测。实际项目中,接口测试会覆盖一定程度的业务逻辑。
使用范围
- 接口测试一般会用于多系统间交互开发,或者拥有多个子系统的应用系统开发的测试。接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统,主要测试这些系统对外部提供的接口,验证其正确性和稳定性。接口测试同样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大。接口测试在淘宝的应用是一个自下而上的发展过程。
- 接口测试实施在多系统多平台的构架下,有着极为高效的成本收益比,接口测试天生为高复杂性的平台带来高效的缺陷监测和质量监督能力。平台越复杂,系统越庞大,接口测试的效果越明显。
- 接口测试的目的是测试接口,尤其是那些与系统相关联的外部接口,测试的重点是要检查数据的交换,传递和控制管理过程,还包括处理的次数。外部接口测试一般是作为系统测试来看待的。
- 不是所有的团队都可以在一个隔离的测试环境中进行测试工作的,因此使得对外部接口的测试显得困难。我们应该确保较早地与相关的组织协调好并确定进行外部接口测试的方案。有时候相关的组织只是人工的静态的审阅一次数据而并不真正的用这些数据来测试。等等这些都增加了实际测试执行中遇到的风险,但有些时候是可以避免的。
接口测试在什么时候进行
(单元测试)之后,系统(功能)测试(黑盒测试)之前。
PS:前几篇文章有讲到什么是单元测试&系统测试
怎么做接口测试
- 根据参数的要求,进行判断是否满足要求,参数要符合他的要求,比方假如让输入一个数字,那么就判断输入数字----整数、小数、负数、复数等数字进行正常测试,或者超大数值和超小数值,异常测试就是判断当不输入数字,保持为空,或者输入的为字符串,不为数字时,反应是否正常。
- 参数是否为必填项,如果为必填项,将所有的必填项都填写,进行接口测试当必填项未填写时,进行接口测试,查看是否报错
- 如果参数为选填项,则进行测试,如果有多个选填项,一个个进行测试,填入所有必填项,和要求的一个选填项,接口返回是否正确,再测试,当选填项保持为空时,是否能够正常返回,当多个选填项时,是否返回正常
- 如果参数名称填写错误是否报错,如果存在不合法的参数,是否报错等等
- 对每个接口进行逻辑的测试,就是比方为新增一个数据,查对应的url,就得显示新增的数据,也就是所描述的每次新增,删除或者改动后都要进行检查查询。
- 接口中还得考虑一些异常情况,比方权限问题,a方建立了多个内容,b方采用接口是否可以删掉。
- 接口测试还得考虑各种逻辑和现实问题,这个就需要就是根据项目本身的可用性,可以完全想象成功能测试进行测试
- 还要考虑反复提交接口,是否报错
- 异常情景,如请求超时,快速连续点击、请求失败等情况
- 安全性问题,比方登录的密码是否需要加密。
PS:下面请看教程
PS:如:获取某系统登录的token
1.首先我们打开jmeter
PS:安装教程我们叫不说了
右击我们新建一个线程组
右击线程组我们在新建一个http请求
接下来我们要根据接口文档填写接口信息
填写完成之后,我们要新建一个正则表达式,来提取登录的token
新建正则表达式
在正则表达式里面填写以下内容
PS:这个里面呢,有很多函数使用啊,大家可以网上搜索以下,我这里呢就不多说了
欧克,建好之后呢,我们来加一个断言
这里呢,我们再新建一个查看结果树
新建查看结果树
欧克了,我们运行之后看下什么情况
运行看结果
PS:你会发现登录的token已经获取到了,那么会有同学说,我想直接把登录的token传到第二个接口上面,这样就不用一个一个的接口运行了
欧克,那么看下面的操作
新建BeanShell取样器将token设为全局变量
我们再填写一些内容
欧克,这个时候再新建第二个接口的http请求头,以及把内容填写完成,和第四步一样的操作
这里填写的参数呢,要引用上面的变量,不然是有问题的
${token}
ok,我们再加一个断言和结果树来看一下
到这里呢,就会发现两个接口同时都完成了