接口测试实战学习笔记(概念相关)
安卓模拟器 emulator 简要命令
-
emulator -list-avds
列出可用的安卓模拟设备(Android Virtual Device) -
emulator @{devicename}/emulator -avd {devicename}
启动某个安卓模拟设备
代理简介
-
正向代理
正向代理是一种特殊的网络服务,允许一个客户端通过这个服务与服务端进行非直接的连接。 -
反向代理
反向代理也是建立在客户端和服务端之间,客户端通过反向代理服务器与真实服务器进行数据交换,可以起到负载均衡的作用。 -
两者区别
乍一看,两者说的好像是同一个东西,但其本质上的区别在于,正向代理模拟的是客户端,反向代理模拟的是服务端。正向代理作用在于我们访问某个服务端时通过跳转服务器进行一次转发,此时被访问的服务端就不知道我们的真实IP。
反向代理作用在于客户端不需要知道具体访问那个服务器,只要访问反向代理即可,对客户端来说反向代理就是服务端,反向代理服务器会帮我们进行请求转发等工作。
知乎上大牛的解释:
正向代理中,proxy和client同属一个LAN,对server透明;反向代理中,proxy和server同属一个LAN,对client透明。by阿笠硕士
代理工具分类
-
代理工具 charles, burpsuite, fiddler, mitmproxy, zap
- charles:跨平台强,适用于开发及测试
- burpsuite:黑客常用
- fiddler:windows上常用
- mitmproxy:测试开发必知,可自动生成边界值等价类等
- zap:测试工程师安全测试工具
-
高性能代理服务器:squid, dante
-
反向代理:nginx
-
流量转发与复制:em-proxy, gor, iptable, nginx
-
socks5代理:ssh -d
优秀代理工具必备特性
-
代理功能:支持http/https,socks5
-
请求模拟工具: 拼装请求,重放请求,重复请求
-
网络环境模拟:模拟限速、超时、返回异常等,弱网测试时使用
-
mock:对请求或响应进行修改
-
fake:用测试环境替代真实环境
nc演示简单的代理实现
mkfifo /tmp/fifo
nc -lk 8080 < /tmp/fifo | sed -l -e 's/^Host.*/Host:site.baidu.com' | tee -a /tmp/req.log | nc site.baidu.com 80 | tee -a /tmp/res > /tmp/fifo
charles常用功能
http/https抓包
- charles监听端口设置,无论是抓http还是https协议的数据包,第一步都需要先在charles设置监听端口。在菜单栏中:Proxy>ProxySettings,打开后修改Port或者保持默认。
-
端口号提示被占用怎么办?
windows下可以在终端使用netstat -ano|findstr {端口号}
查看占用当前端口号的pid是多少。再使用tasklist|findstr {进程id}
查看是什么应用。
Linux下使用netstat -apn | grep {端口号} | awk '{print$7}' | awk -F'/' '{cmd="ps -ef|grep "$1;system(cmd)}'
查看占用当前端口号的程序。 -
如何判断当前监听端口是否生效?
本地使用curl {访问的网址} -x 127.0.0.1:{端口号}
来访问某个网址,然后查看charles上是否捕获到对应的请求。
-
安卓虚拟机连接代理,上述设置完成后,打开安卓虚拟机的设置,设置其网络代理为charles所在的服务器ip加监听的端口号。到此,Http协议的数据包可以抓取了,但是Https协议的还需要再继续安装证书。
-
证书的安装
(1) 如果charles是第一次安装则需要先安装根证书,在菜单栏中:Help\SSL Proxying\Install Charles ROOT Certificate。点击后根据提示安装证书。
(2)安装完后可以点击菜单栏中:Help\ssl Proxying\Install Charles ROOT Certificate on a Mobile Device,查看在安卓虚拟机上安装证书的方法。
(3)打开安卓虚拟机浏览器访问chls.pro/ssl,系统提示输入名称,输入charles后根据提示进行设置即可。
搞完上述证书安装后,https协议的数据包也可正常的捕获了。
Mock对请求与响应进行修改
Rewrite
可以单点修改发出的响应或请求,可根据需求更改响应内容从而查看UI层的展示情况
Map Local
通过将响应结果重定向到本地的json文件,通过修改json文件可以任意修改UI层的展示内容
限速模拟
交互式拦截请求与响应
Fake用测试环境替代线上环境
Fake用本地cache替代线上环境
(未完待续…)