持续集成 修改手机 Host 测试不同环境任务策略

hello · 2018年10月18日 · 最后由 hello 回复于 2018年10月22日 · 4011 次阅读

前言

搞自动化持续集成,只回归生产环境是远远不够的,各种测试环境都回归到位才能保障上线后功能正确性。回归测试环境时,同一个测试手机可能根据测试用例执行环境不同,而进行不同 host 切换,来满足在不同环境下回归验证。

常规方式:Charles 和 Fiddler 设置代理的方式来实现切换 Host

以 Charles 为例,下载安装 Charles

  • 安卓

1,设置 Charles 端口如下操作:

2,设置代理如下操作:

配置自己要拦截的 url 和监听端口

3,手机网络设置

代理主机名就是 Charles 宿主机 IP,代理服务的端口即为 Charles 设置的端口

4,用 SwitchHosts 设置切换到你想要测试的环境

这样就可以用这个手机或者模拟器在想要要的环境进行测试了

  • IOS

1,执行命令 sudo chmod -R 777 hosts 设置 hosts 读写权限,
下载 Charles 安装证书

2,设置 Charles 端口。方法:Proxy -> Proxy Setting,设置 Port

3,IOS 模拟器代理设置
a,设置开启 macOS Proxy 代理。方法:Proxy -> macOS Proxy

b,把想监听的 URL 设置开启 Enable,不想监听的设置 Disable

c,设置完成后想要代理生效,重启 Charles 和模拟器,一定要先打开 Charles 再打开模拟器

4,IOS 真机代理设置
a,打开手机,设置->无线局域网下的 HTTP 代理

b,IOS 手机安装信任证书 ,在 safari 浏览器中输入 chls.pro/sll ,访问并安装信任证书

常规方式切换 Host 的弊端

  • 每次都有手动去设置很麻烦
  • 同一台测试机,要循环不间断的执行不同环境的测试任务时,来回手动切换不现实
  • 每个手机只测试指定的环境,测试机器不能最大利用,浪费硬件资源

安卓端解决的二策略

  • 通过 adb 修改手机的 host,可以写一段 shell 脚本,执行测试任务前,根据环境参数判断执行不同的代码,把相关的 host 推进手机

@echo off
setlocal enabledelayedexpansion
set env=%1
call adb root
call adb remount
call adb shell "mount -o rw,remount /system"
if "%env%"=="0" (
call adb push D:\newauto\config\testhosts /system/etc/hosts
)
exit

这样就不需要开启代理,同一个手机就可以根据测试任务设置的环境参数不同,回归不同环境下的测试任务了。
分享一下自己解决这个问题的方法,反哺一下和我一样 low 的兄弟们。方法比较挫,也许不能解决您的问题,轻喷谢谢!

IOS 策略?

各位大神有没有好的便捷的方法改变 IOS 的 host,来支持灵活切换 host,达到高效率复用手机,灵活回归不同环境的目的???
欢迎留言讨论不吝赐教您的骚方案

后记

感谢社区,给予很多精神食粮。解决问题的方法,就像平 X 的妹子的 R 沟,挤一挤总归还是有点的,多来论坛逛逛,多多学习,多动手实践,总会有解决的方向。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 9 条回复 时间 点赞

appStore 下个 DNS 浏览器应用试试

搞个无线,在无线那边管理 dns 呀

真不错,正准备弄这个事情

samidare 回复

感觉不可行

恒温 回复

谢谢大神指点,我研究一下看看

simple 回复

大神搞好,分享一下经验思路~

samidare 回复

不可行的吧。用什么去调用,切换?

hello 回复

自己写脚本切换,不要用 SwitchHosts

安卓的是自己写脚本啊。关键是 IOS 的怎么整?

hello 2018 年 度个人测开账单 中提及了此贴 01月25日 18:37
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册