接口测试随笔

postman、jmeter里有正则表达式提取器和json提取器
一、正则表达式提取 "age":'(.*?)'
import request,re

res=request.get(url)
reslut=re.search("age":'(.*?)',res.text)
print(reslut.group(1))


二、jsonpath提取器,只能提取json格式的数据

1、$ 根节点
2、. 或者[]获取子节点的对象
如:
$.jiaoyu
$["mashang"]
区别在于[]的方式功能更强大,可以同时取多个节点,
如取多个:$["mashang","jiaoyu"]

3、.. 表示通过相对路径取值,通过递归取值
$..name

4、*通配符
$.* 匹配到根节点下所有的节点值
$..* 递归匹配到根节点下所有的对象或值

5、列表的处理方式,通过[]来处理,如
$.mashagn[0].student[1].name 0代表取数组的第1个值
列表切片取值:从start(包含)开始到end(不包含)结束 $.mashagn[1:3]

6、[?表达式 过滤表达式] 不完全
$.mashagn[?(@name=="百里")]


python示例:
import request,re,jsonpath

class TestApi:

def test1(self):
res=request.get(url)
print(res.text)
#正则表达式提取
eslut=re.search("age":'(.*?),',res.text)
print(reslut.group(1))

def test2(self):
res=request.get(url)
print(res.text)
#通过jsonpath取值
value=jsonpath.jsonpath(res.json,"$.mashagn[0].student[1].name")
print(value)

if __name__=='__main__':
pytest.main()

三、cookie、session、token有什么相同的和不同点
相同点:都是用于鉴权并且都是服务器生成的
不同点:
1、cookie保存在客户端浏览器上,cookie不安全,可以去分析存在本地的cookie进行cookie欺骗
2、session保存在服务器内存,默认保存30分钟,比cookie安全,确定就是当登录的用户越多,比较占用服务器资源
。session一般会生成一个seeionid,sessionid可以通过cookie传输
3、token存储在服务器的数据库里面,通过一个接口或者通过登录获取,然后后续所有的接口都必须要传token才可以请求成功,
token也可以通过cookie传输

四、依赖登录状态的接口如何测试
依赖登录状态的接口本质上是每次发送请求的时候需要带上cookie和session才能够发送成功,在请求时需要加上cookie和session。
如果通过postman来测试,postman会自动去管理,如果是通过jmeter来测试,需要添加cookie管理器组件。如果是通过代码实现,
需要生成session对象,然后通过session对象来发送请求

五、接口测试过程中发现过哪些bug
1、常规bug:接口没实现,没有按接口文档返回结果,输入异常值(空值,特殊字符),接口报错,没有返回合理的错误提示
如:购买商品接口,其中有价格参数,我去测试时把商品的价格改成-3,购买成功
2、搜索时特殊字符:,搜索不出结果,开发把:做成了分割
3、修改不同商品信息接口,要求只有商家和超管才有全选修改,传入一个普通用户id或者其他商家id,修改成功
4、修改成不按规定的请求方式,报500

六、接口测试中怎么校验结果是否正确
1、第一种状态码校验,验证返回的状态码为200
2、第二种业务校验,错误码、响应报文比较短比较固定校验是否一致
3、接口响应报文比较长,比较多的情况下,校验最核心的业务信息,关键字段
4、接口响应报文非常复杂多层级xml格式或json格式,通过xpath、jsonpath、正则表达式的匹配方式获取到最关键字的业务节点
然后校验
5、查询数据库校验或者其他接口校验

七、如何分析一个bug是前端还是后端
通过抓包,查看请求报文,请求报文对比接口文档没有问题,就是前端的问题,返回数据不对就是后端问题

八、依赖于第三方数据的接口如何进行测试?
接口关联(依赖)是项目中的接口依赖于本项目的接口
可以通过postman搭建mock服务,但是postman的mock服务有次数限制
也可以通过servlet,flask等技术来实现接口mock服务

九、对于加密接口,签名接口如何进行测试
加密签名接口:
在调用加密签名接口的时候,先弄清楚接口的加密方式是什么?
如:
1、常用base64方式加密、只加密不解密、混合加密
2、了解加密规则之后,在请求之前先要对参数做对应的加密之后再发送请求。单一加密方式,postman和jmeter
有些是支持的,postman使用JavaScript脚本实现,jmeter使用beanshell中的java代码实现

十、接口测试之jmeter持续集成
命令行运行方式:jmeter -n -t test.jmx -l result.jtl -e -o results
1、-n -t
-n 表示命令行运行jmeter脚本,不能单独使用,必须和-t一起使用
-t 表示用来指定jmeter脚本
运行后只能看到一个没有作用的jmeter.log日志文件

2、-l
-l表示指定报告文件,文件格式是.jtl格式,这种格式的报告可以通过jmeter的任意监听器查看
特别注意:必须要修改配置文件bin\jmeter.propties才能使用,改成如下:
jmeter.save.saveservicce.output_format=xml
jmeter.save.saveservicce.response_data=true
jmeter.save.saveservicce.samplerData=true
修改完后重启jmeter,让配置生效

3、-e -o (执行之前把所有的非用例文件全部删除)
-e表示生成html网页格式的报告,不能单独使用,必须和-o一起使用
-o表示指定存放html网页格式报告的文件夹,文件夹必须是空目录
jmeter.save.saveservicce.output_format=csv

4、通过Ant和build执行jmeter的脚本并且声称详细报告
1、下载ant包并且把ant目录下的bin配置在path环境变量里
2、配置build.xml,用于构建报告
3、配置库文件
把D:\apache-jmeter-5.5\extras\ant-jmeter-1.1.1.jar 拷贝到ant的lib文件夹下
4、配置jmeter.propties文件
jmeter.save.saveservicce.output_format=xml
5、执行ant命令:在脚本文件夹下执行 输入:ant 即可

5、jmeter+ant+jenkins实现持续集成

十一、接口统一请求,接口关联
token鉴权码
1、通过接口获取token
2、通过登录接口获取token
3、通过隐藏域或者cookie等获取token

token关联:
1、通过全局变量,类变量(试用纯python代码的接口关联,简单的接口关联)
2、通过yaml关联文件处理(适用于大型项目,并且有错综复杂的多接口串联场景)
中间变量统一管理

cookie关联
做接口测试必须要掌握的
cookie可以用来传输token的session
1、在HTML源码中带上:csrf_token
2、在响应头中包含鉴权码
如set-cookie:csrf-token=xxx

cookie产生的时间以及原理:第一次给服务发送请求

1、必须带请求头的接口、token关联、cookie关联

session关联:会话,自动关联cookie

posted @ 2022-08-26 11:04  ilspring  阅读(57)  评论(0编辑  收藏  举报