第十期_接口测试加解密与多环境测试_20191022

课前准备

  • 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"])

关闭