本节课注册讲解接口测试的内容
自动化测试的主要分为接口自动化以及UI自动化
UI自动化测试分为:WEB端自动化、移动端自动化
接口测试的必要性:发现前台测试发现不了的问题、检查系统的异常处理能力、检查系统的安全性和稳定性
接口测试的用例设计主要覆盖面:
通过性验证:确保正常输入是,接口正常工作
参数组合:多个参数时,组合输入参数检查接口返回结果是否符合接口文档描述
接口安全:主要有绕过验证、绕过身份验证、参数加密验证、密码复杂性验证
接口异常性验证:主要异常类型:必传非必传、参数类型、入参长度
根据业务逻辑设计用例
常用的接口测试工具:Postman、Jmeter、SoupUI
基本概念定义:
1、接口:分为程序内部接口和系统对外接口,我们常做的接口测试主要指系统对外接口的测试,即测试本系统与外部系统之间的交互点,测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等
2、前端:如web端的网页以及APP端的页面,负责前台页面的显示
3、后端:负责后台的业务逻辑、功能等的处理,前端通过接口调用实现与后台的交互
4、接口分类:webservice接口和http api接口,其中:
webservice接口:走soap协议通过http传输,请求报文和返回报文都是xml格式,可以使用soupui工具进行模拟测试
http api:走http协议,常用的请求方式有GET和POST,通过路径来区分调用的方法,请求报文一般都是key-value形式的,返回报文一般都是json串
5、json:通用数据类型,什么语言都认识他,所有接口返回的都是json串,json串中字符串类型的参数值必须使用双引号,其他类型可以不添加,如:
例:{"name":"nina","data":1212}
6、GET请求:主要用来获取数据,可以直接在浏览器输入
7、Post请求:主要用来发送数据,如登录时需要传参,需要借助工具发送
8、接口规范文档:接口测试的依据,主要包含接口说明、调用url、请求方法、请求参数说明(参数名、参数类型)、返回参数说明
9、header:是服务器以http协议传html资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔
10、http状态码:发出http请求,响应中会有状态码,常用状态码如下:
2开头的都表示这个请求发送成功,200代表这个请求发送成功且服务器也返回了
3开头的代表重定向,302代表把这个请求重定向到别的地方了
400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面
500代表服务器内部异常,504代表服务器端超时,没返回结果
11、cookie:存在于本地的一个文件,如保存登录信息(加密后)
12、seesion:存在于服务端,如cookie和seesion相匹配时实现自动登录
http接口测试:
1、直接在浏览器中输入拼接后的url,格式为url?param1=value¶m2=value【问号前面是接口请求url,后面是请求的参数名和参数值,多个参数用&来连接】
例:https://i.cnblogs.com/EditPosts.aspx?opt=1
2、如果入参是json串、需要添加header、需要添加cookie、需要上传文件时,则要通过工具进行测试,如Postman和Jmeter
接口测试工具常用方法:
Postman
1、GET请求,入参为key-value格式:
2、Post请求,入参是json类型:
3、GET请求,需要添加header,Content-Type application/json
4、Post请求, 需要添加cookie,token token是写死的token12345
5、Post请求,向服务器指定目录传送文件
Jmeter---开源性能测试工具(接口测试,压力测试)
1、新建线程组
打开Jmeter工具,右键点击测试计划,选择添加->Threads(Users)->线程组
线程数:设置最大并发值
Ramp-Up Period(in second):多少秒内启动并发数,0表示同时执行
循环次数:循环次数表示一个线程执行的次数,默认配置为1,表示执行完毕后不循环,勾选永远表示永久循环
调度器:勾选后,支持按调度器配置,其中持续时间和启动区间任选其一,不要同时选(可用于稳定性测试)
启动延迟(秒):多长时间后启动
2、添加http请求&添加查看结果树
右键点击线程组,选择添加->Sampler->HTTP请求
右键点击线程组,选择添加->监听器->查看结果树
3、添加http header管理器
右键点击线程组,选择添加->配置元件->HTTP信息头管理器
3、添加http cookie管理器
右键点击线程组,选择添加->配置元件->HTTP cookie管理器
4、添加响应断言
断言:用来检查返回结果是否正确
右键点击需要添加断言的请求,选择添加->断言->响应断言
模式匹配规则:包括和匹配支持正则表达式,Equal和Substring不支持正则表达式,包括和Substring表示返回的结果包含输入的内容,匹配和Equal返回的结果完全匹配输入的内容
要测试的模式:需要和返回结果进行对比的内容
Jmeter操作mysql
1、导入jdbc的jar包
2、创建数据库连接配置,mysql的url、端口号、账号、密码
右键点击线程组,选择添加->配置元件->JDBC Connect Configuration
Variable Name:配置数据库连接池的名称
Jmeter数据库驱动列表:
3、输入sql语句
新建线程组,右键点击线程组,选择添加->Sampler->JDBC Request
Query Type:选择sql语句的类型
4、查看sql执行结果
4、查看响应时间(压力测试)
右键点击线程组,选择添加->监听器->聚合报告
执行数据库查询后,可以查看聚合报告,检查数据库查询的处理时间,(压力测试一般运行10到15分钟)
TPS(Throughput):每秒钟处理事物数 ,tps越高表示效率越高
sample:总共发出的请求数
average:每个请求的平均响应时间,单位为毫秒
error:压测的错误率
Jmeter参数化
参数化:把需要经常变的值,改成可以变化的或者是提前设置好的一些值
Jmeter参数化的方式:用户定义的变量、函数生成器、从文件中读取
1、用户定义的变量:定义一个参数,且这个参数只会对应一个值,方便批量修改应用了这个参数的请求
右键点击线程组,选择添加->配置元件->用户定义的变量
名称是这个参数变量的名称,也就是脚本里面取的值,值就是参数变量的值,在取参数化的值的时候,使用${balance},balance即变量名称
在原本的参数值位置填写参数化的变量名称
2、函数生成器:参照一定的规则生成数据,比如说生成一些随机数
点击选项->函数助手对话框
常用的功能:
随机数__Random,可以在你指定的一个范围内取随机值
取当前时间__time,日期格式如:yyyy-MM-dd HH:mm:ss
取唯一id__UUID,每次会生成一个随机的uuid,都是唯一的
点击生成,生成对应的参数化变量名
3、从文件中读取:事先写好一些数据,然后从文件中读取
添加一个CSV Data Set Config:
右键点击线程组,选择添加->配置元件->CSV Data Set Config
Filename:输入需要进行参数化的文件的路径
Variable Names:为文件内容对应的参数化名称
recycle:读完后是否重新读取
stop:读完之后是否停止线程
delimiter:多个参数的时候以什么分割列(最好不要分割)
在原本的参数值位置填写参数化的变量名称