接口测试笔记
一、自动化测试包含:
- 接口自动化
- Ui自动化(web端、移动端(android、ios))
二、接口测试:
接口测试的必要性:
1、可以发现很多在页面上操作发现不了的bug
2、检查系统的异常处理能力
3、检查系统的安全性、稳定性
4、前端随便变,接口测好了,后端不用变
接口也分为前端和后端,一般来说,越是在底层发现的bug解决的成本越低,所以后端接口测试越来越重要,不仅可以提升产品质量,有可解决产品开发成本
目前用到的接口测试工具有postman和jmeter,后期可通过学习自己编写测试工具。
接口测试更加类似于功能测试,比ui测试简单,其原理就是通过接口请求将数据库查到的数据返回回来。
接口测试流程:需求评审,熟悉业务和需求;开发请求接口文档;编写接口测试用例;用例评审;提测后开始测试;提交测试报告
其中开发提供的接口文档至少要求其包含:
1、接口说明
2、调用url
3、请求方法(get\post)
4、请求参数、参数类型、请求参数说明
5、返回参数说明
接口返回的数据都是josn类型(josn是一种通用的数据类型,即任何一种语言都可以通过josn进行数据之间的互通)
三、http请求
get请求和post请求的区别
get请求它的请求数据是在放在url里面的(目前地址栏已无长度限制)
post请求他的数据是放在body里面的
cookie:存放在本地的一个键值对,数据是从服务器请求得来,存储在本地
session:存在服务器的一个键值对,具有时效性
每发出一个http请求之后,都会有一个响应,http本身会有一个状态码,来标示这个请求是否成功,常见的状态码有以下几种:
1、200 2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了。
2、300 3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了,
3、400 400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面
4、500 5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果
http请求包含请求头和请求体
get请求
get请求头
url?k=v&k=v
header 传输一些额外的信息
四、jmeter工具
Jmeter 性能测试工具 java开发的
jmeter查看结果树乱码
1、在jmeter的bin目录下找到jmeter.properties这个文件添加上sampleresult.default.encoding=utf-8
2、重启jmeter
jmeter body data里面有乱码怎么解决
1、在jmeter的bin目录下找到jmeter.properties这个文件添加上jsyntaxtextarea.font.family=Hack
2、重启jmeter
jmeter装json path插件
http://www.nnzhp.cn/archives/322
jmeter操作数据库:
- 首先,我们在测试计划下,把JDBC驱动包添加上,也可以将驱动包放入jmeter的lib目录下,即可自动加载。
- 然后,新建一个线程组→JDBC Connection Configuration(连接数据库组件)→JDBC Request(JDBC请求)
- 接下来,配置JDBC Connection Configuration
Ps 下面介绍比较重要的几个参数其他地方可照截图配置即可。
Variable Name:连接名称,自定义填写。
Validation Query:验证查询,不同版本的填写格式可能不同(比如3.1是Select 1,2.6是Select1),格式错误会报错。最新的Jmeter3.3已经做成下拉框,比较人性化。
Database URL:数据库url,格式固定。
jdbc:mysql://{ip}:{port}/{dbname}?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
jdbc:mysql:// 表明连接的数据库是mysql
ip 数据库服务器地址
port mysql端口号
dbname 数据库名称
useUnicode=true 使用Unicode编码格式(字符集编码格式)
characterEncoding=utf8 使用UTF-8解码(字符集编码格式)
allowMultiQueries=true 允许多个query一起使用(1个请求中添加多个sql语句)
- 配置完毕,接下来填写JDBC请求
Variable Name:与JDBC Connection Configuration中的Variable Name保持一致
Query Type:语句类型,查询用select,增删改用update,一起用可以选择callable
jmeter 参数化
1、用户定义的变量
2、函数助手里面的
__random
__time
yyyyMMddHHmmdd 时间的格式
jmeter里面取到时间戳是精确到毫秒的
3、文件里面读取
默认不写绝对路径的话,是从jmeter的bin目录下读取文件
文件里面可以写多列,多列的话,以逗号隔开,参数名也要写多个。
jmeter 压测
并发用户数
tps 服务端每秒钟处理的请求数 越大越好
响应时间 越快越好
并发用户数/响应时间=tps
时间戳就是从计算机诞生那一天到现在过了多少秒