自动化测试学习之接口测试

在我们学习接口测试之前首先需要知道两点,什么是接口?HTTP协议的请求过程和请求方法?

一、什么是接口?

  接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。

  系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,

从而达到数据共享的目的,比如说咱们用的app、网址这些它在进行数据处理的时候都是通过接口来进行调用的。

  程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,要发帖就得登录,那么这两个模块就得有交

互,它就会抛出一个接口,供内部系统进行调用。

  总之,接口就是从数据库里面取数据库、插入数据。

二、关于HTTP协议

2.1  HTTP协议用于客户端和服务端之间的通信。

请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一端称为服务端。

注:应用HTTP协议时,必定是一端担任客户端的角色,另一端担任服务端的角色。

2.2  使用方法下达命令

方法的作用在于,可以指定请求的资源按期望产生某种行为。常用的方法有GET和POST。

关于POST和GET方法的区别:

  1、get请求只有请求头,没有请求体,它的参数是写在url里面;

  2、get请求一般用来向服务器获取数据,post请求呢用来向服务器发送数据;

  3、get请求有参数长度限制,post请求没有;

  4、get请求没有post请求安全;

三、常用的接口测试工具

常用的接口测试工具主要有Postman和Jmeter。

Postman提供的功能相对比较简单,可以模拟和发送HTTP请求,并返回接口的数据。

Jmeter相比Postman功能更加强大,Jmeter提供用例的批量执行、接口返回结果的断言以及测试报告的生成等,主要用于测试接口的性能,验证接口处理并发的能力。

我们先启动Jmeter,写一个简单的接口测试脚本,这里使用的是Jmeter5.0+1.8JDK(环境配置就不在此讲述了)

1、右击【测试计划】,添加一个线程组(添加——线程——线程组)

  右击该线程组,选择取样器——HTTP请求

  右击该线程组,选择监听器——查看结果树

2、 点击【启动】运行该脚本,查看响应数据

刚刚完成了一个基础的接口测试脚本,使用的方法是GET方法,而实际上GET请求,不需要借助任何的工具,在浏览器里面就可以发请求。

下面我们使用POST请求做一个登录接口的脚本。

注:除GET请求外,其它请求方法都需要借助工具来实现

还需注意的一点,如果我们添加多个HTTP请求且它们的域名或IP一致时,可以用HTTP请求默认值

当请求的入参方式为key-value时,我们选择底部的【参数】上传即可

入参是json类型时,选择底部的【消息体数据】

如需上传文件,选择【文件上传】

点击【察看结果树】,查看登录接口返回的响应数据

 通过上面的两个脚本我们学会了POST和GET请求,那么新问题又来了,如果我再加一个请求,此请求的参数需要用到上面请求的响应数据,那这个脚本该如何去做呢?

示例:学生金币充值接口,这个接口是为了讲添加cookie以及身份验证的,该接口有权限验证,需要admin用户才可以做操作,需要添加cookie,cookie中key为登录的用户名,value从登录接口中获取,登陆成功之后会返回sign

具体思路:

1、先登录具有admin权限的账号,获取响应数据中的sign,即seesionid,

2、从查询学生信息的接口里面随便找一个学生的stu_id

3、然后把获取到的sign信息和stu_id传入金币充值的接口

在学生金币充值下,添加一个HTTP信息头管理器,名称:cookie,值:登录用户的账号=sign

这里也可使用HHTP Cookie管理器,但不推荐使用

点击【启动】,运行该脚本,我们可以看到,该学生的金币显示为200,充值前为100。

那么问题来了,如果切换登录的用户呢?或者对登录用户进行参数话,那么我们是否每次都要重新添加一次SessionID呢,答案是否定的,我们可以使用Json提取器(因为接口返回的数据是Json格式)来获取SessionID,获取后把sign传入到学生金币充值的HTTP信息头管理器中

查看金币是否充值成功

原文地址:https://www.cnblogs.com/huohuli/p/10568127.html