一、前言
移動端測試經過近十年的發展,方法和工具已經非常成熟。很多時候,我們不一定自己非得開發什么工具和平臺,利用現有的工具,也能提高質量和測試效率。本文主要根據作者積累的App測試的方法和經驗,總結一些App測試的技巧,以及如何利用工具提升測試效率。
二、App常用測試技巧
1. App測試的正確姿勢
在進行App測試的時候,手機一定要連接到電腦,同時開啟命令行抓取日志和網絡抓包工具。這樣,如果發現Bug,我們能第一時間通過錯誤日志和網絡請求,分析定位Bug。常用的抓包工具,Windows下建議Fiddler,Mac下建議Charles。
2. 如何提供最有效的Bug信息
在保證產品質量的過程中,測試人員的主要工作在于發現產品研發過程中出現的各種Bug,開發人員根據我們的Bug描述,定位并解決Bug。由于問題的發現和解決并非同一個人,測試人員對Bug信息的描述就非常重要。那么怎樣提供最有效的Bug信息呢?我提供幾點參考。
-
復現步驟的描述能用視頻盡量不用文字。
大部分的Bug系統都支持gif圖片的展示。gif圖片其實是一種網頁端的視頻格式。因為,如果我們把復現步驟錄制成一個gif圖片,附在Bug單里面,將會更加清晰明了。這里介紹一個錄制gif視頻的小工具:LICEcap,它可以快速對PC屏幕進行錄制,然后轉成gif視頻,效果如下:
-
Logcat日志不可少
通常開發同學會在代碼中加入一些調試日志,一旦程序出現異常,會在日志中打印出來。因此,我們如果將Bug出現前后的日志截取下來,將會給開發同學的問題定位帶來效率的提升。
對于實時日志的獲取,Android系統可以通過Android sdk中的adb logcat工具抓取:
logcat
iOS通過libimobiledevice獲取:
brew install libimobiledevice
idevicesyslog [-u <device-udid>]
-
不要忽視網絡請求
絕大多數的App產品都需要與后端進行交互。很多Bug有可能是后端返回異常導致的。因此,我們可以對發生Bug前后的網絡日志進行抓取提供給開發同學。關于抓包方法的介紹參考慶豐的文章-移動應用抓包調試利器Charles。
3. 如何通過Mock測試提高效率
Mock一般是指模擬某個服務器接口的返回數據。在App的測試中,我們為了測試某個服務器接口的不同返回結果對前端交互的影響,經常需要反復構造不同參數的網絡請求。這個過程繁瑣又效率低下,其實最好的方法就是通過Mock工具,將請求的返回數據進行修改。
例如,對于我們熟知的登錄接口,有登錄超時、操作超時、登錄被擠下線、登錄系統繁忙、賬戶和密碼錯誤、賬戶鎖定、賬戶解密失敗等多種情況。如果是在沒有mock的情況下,我們需要實際構造10多種場景,有些比如系統繁忙,超時等場景通過傳統的方法根本沒法構造出來。利用Mock方法,我們可以借助一些工具,例如charles打斷點,截取接口返回的response的json數據,進行一些模擬。
這里推薦的Mock工具還是Charles,它提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以達到修改服務器返回內容的目的。這三者在功能上的差異是:
- Map 功能適合長期地將某一些請求重定向到另一個網絡地址或本地文件。
- Rewrite 功能適合對網絡請求進行一些正則替換。
- Breakpoints 功能適合做一些臨時性的修改。
具體的使用方法也可以參考慶豐的文章-移動應用抓包調試利器Charles。
4. 模擬器的妙用
我們的測試同學一般習慣在真機上進行測試,覺得這樣更加符合用戶的真實場景。其實,仔細想想你會發現,大部分的測試工作都是在驗證產品本身的功能,與手機本身無關。那么我們是不是也可以在模擬器上進行測試呢?很多人可能會覺得Android自帶的模擬器性能不好,但是現在市場上出現了很多非常優秀的模擬器,比如Genymotion,網易mumu,Droid4X等,這些模擬器的性能都與真機媲美,對于iOS系統,自帶的模擬器我們就不用多說了。除此之外,我這里還要給大家說說模擬器的妙用。
(1)模擬GPS位置
大多數的Android模擬器都有位置模擬功能,我們設置特定的GPS位置,即可讓你定位到指定的位置,從而測試需要區分地域的場景。
(2)設置分辨率
App測試中,我們經常需要測試不同屏幕尺寸,不同分辨率下的UI展示情況。通常的做法,是去購買各種屏幕尺寸和分辨率的手機,從而進行兼容性的測試。這樣的做法適合土豪團隊,同時效率也比較低下。從節約成本上來考慮的話,我們可以使用模擬器,Android的模擬器一般支持分辨率和屏幕尺寸的自定義設置,iOS可以啟動不同機型的模擬器。
(3)快速截圖和錄制視頻
真機上發現Bug,我們截屏后,需要將圖片從手機傳輸到電腦,然后提交到Bug系統,這個過程影響工作效率。而且有的App還禁止了手機的截屏功能。在模擬上,我們不僅可以快速截屏,還可以用前面介紹的LICEcap工具錄制gif視頻。
5. 模擬網絡環境
由于手機的移動性,App的網絡場景非常復雜,網絡丟包率和延時有時候會非常高。為了測試不同網絡環境下App的功能是否正常,我們經常需要去一些信號不好的地方進行測試。其實也可以有便捷的方式模擬網絡環境。常見的抓包工作Fiddler和Charles都支持丟包和延時的設置。只要我們知道不同網絡場景的丟包率和延遲參數,即可通過工具模擬出來。然后通過手機連接模擬出來的網絡進行測試。下面是常見網絡場景的參數設備列表,僅供參考。
6. 免費的工具和平臺
這里不做過多的介紹,具體可以參考我之前的文章-移動測試工程師必須知道的10個開源框架
三、總結
荀子說過“君子生非異也,善假于物也”。善于利用現有的工具解決實際問題,也是一項非常重要的能力。本文只是拋磚引玉,由于業務場景的限制,很多方法不一定是最好的,總結也不是很全面,歡迎大家多多留言,共同探討。