情景
小A接到一个泛灵犀的测试任务,其中有一个判断网络为移动网络时出现的一个弹窗。但是服务器逻辑在测试服务器上,但是移动网络下又无法指代理。这可难倒了小A,因此一直愁眉苦脸。
对于小A遇到的问题,你有好的解决方案吗?欢迎文末留言交流。今天小编先给大家介绍下调研时发现的一个易操作的解决方案。
知识普及
hosts 文件存放的是IP和域名对,将某个域名和其对应的IP地址一记录到 hosts 文件中。这时候如果你的浏览器访问某个域名时,如果你的 hosts 文件中已经记录了该域名的IP 地址,则浏览器直接访问该IP 地址,而直接省略了DNS 解析这一步。
一、移动网络下连接测试服务器
连接内网测试服务器
1)手机越狱;
2)打开手机上的Filza应用,路径:/private/etc,打开hosts文件;
3)在文件中输入要指的测试服务器地址,如:10.129.155.63 www.sogou.com ,前面是测试服务器的IP地址,后面是被转发的请求域名,中间用空格分隔,保存文件;
4)手机上安装连接VPN的应用,打开VPN;
5)触发要被测试的请求。
备注:
1)如果是HTTPS请求,一直没有获取到测试服务器的数据,需要和相关开发确认测试服务器上的HTTPS证书是否有效。
2)hosts文件中添加的测试服务器地址是最后一行时,要在最后加一个换行,避免hosts不生效。
连接外网测试服务器
1)手机上,从APP store安装Stream应用;
2)Stream应用中Hosts中添加测试服务器地址,如10.129.155.63 www.sogou.com;
3)点击开始抓包,允许Stream应用打开VPN权限;
4)如果没有安装CA证书,根据应用中的引导安装证书即可;
5)触发需要测试的请求,就可以获取到测试服务器的数据了。
备注:此方法移动网络和WiFi下都可以使用
二、移动网络下抓包
对于WiFi情况下,我们如果想看手机发送的请求和接收到的数据,可以通过连接fiddler代理抓取请求。但是移动网络下无法设置代理。那么怎样才能解决这个问题呢?
操作步骤:
1)手机上安装Stream应用;
2)点击开始抓包按钮;
3)触发要抓的请求;
4)在stream应用中点击抓包历史可以找到要抓的请求数据。
三、调研方法时遇到的那些坑
问题一:小编更改了手机hosts文件后,HTTPS请求一直没有获取到测试服务器的数据。
解决思路:
小编更改了一个HTTP的请求,发现HTTP请求没有问题,只有HTTPS请求有问题。
开始猜测问题和HTTPS有关,根据iPhone手机指fiddler代理的经验,推测可能HTTPS请求也需要安装一个证书。网络上查找没有找到相关答案。
猜测之前的方向不对,然后将更改过hosts文件的手机,在Mac电脑通过调式代码上打log,发现服务器返回给客户端的请求提示服务器证书无效。联系测试服务器开发,发现测试服务器上的证书已过期,开发更改证书后验证还是提示证书无效。因为是测试服务器,所以装的证书是开发自己生成的。所以开发和相关同学沟通将线上服务器的证书放到测试服务器后,再次验证问题解决。
问题二:使用stream应用更改hosts文件后,移动网络下使用公司VPN功能时,无法获取到测试服务器数据。
解决思路:
上文已经介绍了stream工具hosts文件生效需要打开抓包功能,抓包功能需要VPN权限,而在实现移动网络访问公司内部网络时也使用了VPN,猜测可能同时使用两个VPN发生了冲突。然后不使用stream应用改hosts文件,直接更改越狱手机下的hosts文件,此方法不需要VPN权限,再次验证可以正常获取测试数据。网上查询,发现VPN是在手机和服务器之间建立一个专用通道,数据通过专用通道到达目标服务器,所以在发送请求时数据只有一份,不能同时走两个通道,导致其中一个VPN失效,所以没有达到预期效果。
软件测试学习交交流群:747981058