90%測試工程師不知道的測試方法

vibe發表於2018-11-19

情景
小A接到一個泛靈犀的測試任務,其中有一個判斷網路為行動網路時出現的一個彈窗。但是伺服器邏輯在測試伺服器上,但是行動網路下又無法指代理。這可難倒了小A,因此一直愁眉苦臉。
對於小A遇到的問題,你有好的解決方案嗎?歡迎文末留言交流。今天小編先給大家介紹下調研時發現的一個易操作的解決方案。
知識普及

Hosts檔案的作用

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;

Stream應用中Hosts中新增測試伺服器地址
3)點選開始抓包,允許Stream應用開啟VPN許可權;
4)如果沒有安裝CA證書,根據應用中的引導安裝證書即可;
5)觸發需要測試的請求,就可以獲取到測試伺服器的資料了。
備註:此方法行動網路和WiFi下都可以使用
二、行動網路下抓包
對於WiFi情況下,我們如果想看手機傳送的請求和接收到的資料,可以通過連線fiddler代理抓取請求。但是行動網路下無法設定代理。那麼怎樣才能解決這個問題呢?
操作步驟:
1)手機上安裝Stream應用;
2)點選開始抓包按鈕;

手機Stream抓包
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


相關文章