服务端接口测试实战
Charles配置
代理配置
抓取HTTPS的设置
完成以上配置就可以避免因为抓不到https而出现红色的unknown
证书安装

根据需要安装证书
数据抓取
- 完成Charles和Mumu的配置,接下来就到抓包分析数据了,下面内容会详细讲解
实战配置说明
抓包工具Charles
Charles抓包工具需要设置代理抓取mumu模拟器中的请求:
- 安装证书
- 代理设置
详细见上面步骤
模拟器Mumu
Mumu模拟器中配置Charles的代理
设置–>WLAN–>鼠标左键长按–>修改网络–>代理–>手动–>设置服务器主机名和端口号–>保存
Charles查看HTTP请求和响应
通过抓包得到的数据,分析HTTP协议构成,请求和响应,注意:Charles默认设置是不显示Request和Response的标签,具体如下:
如果我们要看详情的Request和Response,我们需要进行设置
之后,会提示需要重新启动Charles
完成配置后,我们就看到了Request和Response的标签页
Request和Response分开显示会更清晰些,使用哪种方式看个人习惯
maplocal修改数据
Charles抓取数据包,并复制响应到本地
本地使用工具格式化输出JSON,找到股票名称进行修改
使用maplocal修改指向本地的数据
点击[OK]保存
完成以上配置,在回到App查看界面(需要刷新)内容
json数据处理神器-jq
jq的详细使用,请查看文章:https://jinglv.github.io/2020/12/26/linux/jq/
过滤方式
- 这是一个过滤器,它接受输入,并将其不变地生成为输出
.key
过滤.[index]
通过角标过滤.[index-start:index-end]
前闭后开
将上面保存到本地的响应,使用jq过滤
1 | bogon:~ jinglv$ cat /Users/jinglv/Documents/quote.json | jq '.data.items[].quote.name' |
常见用法
组合
echo '{"user":"xiaohong","titles":["java class","python class"]}' | jq '{(.user):.titles}'
1
2
3
4
5
6
7bogon:~ jinglv$ echo '{"user":"xiaohong","titles":["java class","python class"]}' | jq '{(.user):.titles}'
{
"xiaohong": [
"java class",
"python class"
]
}
计算
echo "10" | jq '(.+2)*5'
echo null | jq '{a:1}+{b:2}+{c:3}+{a:42}'
echo '["xml", "yaml", "json"]' | jq '. - ["xml"]'
echo '{"a":5}' | jq '.a+=10'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17bogon:~ jinglv$ echo "10" | jq '(.+2)*5'
60
bogon:~ jinglv$ echo null | jq '{a:1}+{b:2}+{c:3}+{a:42}'
{
"a": 42,
"b": 2,
"c": 3
}
bogon:~ jinglv$ echo '["xml", "yaml", "json"]' | jq '. - ["xml"]'
[
"yaml",
"json"
]
bogon:~ jinglv$ echo '{"a":5}' | jq '.a+=10'
{
"a": 15
}
获取长度
echo '[[1,2],"string", ["a":2], null]' | jq '.[] | length'
1
2
3
4
5bogon:~ jinglv$ echo '[[1,2], "string", {"a":2}, null]' | jq '.[] | length'
2
6
1
0
测试实战
以上完成了对应非配置,接下来我们进行实战,场景如下:
- 修改股票列表某支股票的名字
- 正常修改
- null值修改
- ‘ ‘修改
通过修改字段的类型,查看客户端在获取接口中的数据不同的处理,避免App出现异常
1 | bogon:~ jinglv$ cat /Users/jinglv/Documents/quote.json | jq '.data.items[0].quote.name=" "' > quote1.json |
生成新的数据,使用Charles maplocal配置文件,再到App上查看界面显示是否有异常等