课前准备
- hook体系
加密与解密
加密方法
- 请求加密:摘要加密 把原文或者原始请求中的部分字段做摘要算法的加密,把加密后的结果也放到原始请求中发送。
- 响应加密:返回的整个响应或者响应中的部分字段被加密,我们需要找到解密办法,还有一个名字叫摘要算法。
加密与签名的区别
- 加密通常代表是对称加密,这种加密是可以解密的。比如base64,主要用于的数据传输。
- 签名通常代表是非对称加密,这种加密不可逆不可解密。比如rsa、md5。通常用于认证内容未被篡改。
解密方式
- 自己解决通用解密算法
- 需要研发提供加解密的lib
- 需要加密方提供远程解析服务,这样算法仍然是保密的。
解密方法,加解密不要体现在测试用例中。
- 封装一层封装,显式转换
- 修改requests,加入hook,隐式转换数据
隐式转换
- venv/lib/python3.7/site-packages/requests/models.py
多环境支持
常见环境
- 研发环境
- 测试环境
- 联调环境
- 预发布环境
- 压测环境
- 线上环境
差异分析
手工解决多环境测试方法
- 修改host 类似 106.75.214.88 testerhome.com
- dns server设置
- proxy map remote
自动化的方案
#把host修改为ip,并附加host header
env={
"docker.testing-studio.com": {
"dev": "1.1.1.1",
"test": "1.1.1.2"
},
"default": "dev"
}
data["url"]=str(data["url"]).replace(
"docker.testing-studio.com",
env["docker.testing-studio.com"][env["default"]]
)
data["headers"]["Host"]="docker.testing-studio.com"
res=requests.request(data["method"], data["url"], headers=data["headers"])