一、前言
移動(dòng)端測(cè)試經(jīng)過(guò)近十年的發(fā)展慨代,方法和工具已經(jīng)非常成熟邢笙。很多時(shí)候,我們不一定自己非得開(kāi)發(fā)什么工具和平臺(tái)鱼响,利用現(xiàn)有的工具鸣剪,也能提高質(zhì)量和測(cè)試效率。本文主要根據(jù)作者積累的App測(cè)試的方法和經(jīng)驗(yàn),總結(jié)一些App測(cè)試的技巧筐骇,以及如何利用工具提升測(cè)試效率债鸡。
二、App常用測(cè)試技巧
1. App測(cè)試的正確姿勢(shì)
在進(jìn)行App測(cè)試的時(shí)候铛纬,手機(jī)一定要連接到電腦厌均,同時(shí)開(kāi)啟命令行抓取日志和網(wǎng)絡(luò)抓包工具。這樣告唆,如果發(fā)現(xiàn)Bug棺弊,我們能第一時(shí)間通過(guò)錯(cuò)誤日志和網(wǎng)絡(luò)請(qǐng)求,分析定位Bug擒悬。常用的抓包工具模她,Windows下建議Fiddler,Mac下建議Charles懂牧。
2. 如何提供最有效的Bug信息
在保證產(chǎn)品質(zhì)量的過(guò)程中侈净,測(cè)試人員的主要工作在于發(fā)現(xiàn)產(chǎn)品研發(fā)過(guò)程中出現(xiàn)的各種Bug,開(kāi)發(fā)人員根據(jù)我們的Bug描述僧凤,定位并解決Bug畜侦。由于問(wèn)題的發(fā)現(xiàn)和解決并非同一個(gè)人,測(cè)試人員對(duì)Bug信息的描述就非常重要躯保。那么怎樣提供最有效的Bug信息呢旋膳?我提供幾點(diǎn)參考。
-
復(fù)現(xiàn)步驟的描述能用視頻盡量不用文字途事。
大部分的Bug系統(tǒng)都支持gif圖片的展示验懊。gif圖片其實(shí)是一種網(wǎng)頁(yè)端的視頻格式。因?yàn)槎⑺铮绻覀儼褟?fù)現(xiàn)步驟錄制成一個(gè)gif圖片鲁森,附在Bug單里面祟滴,將會(huì)更加清晰明了振惰。這里介紹一個(gè)錄制gif視頻的小工具:LICEcap,它可以快速對(duì)PC屏幕進(jìn)行錄制垄懂,然后轉(zhuǎn)成gif視頻骑晶,效果如下:
-
Logcat日志不可少
通常開(kāi)發(fā)同學(xué)會(huì)在代碼中加入一些調(diào)試日志,一旦程序出現(xiàn)異常草慧,會(huì)在日志中打印出來(lái)桶蛔。因此,我們?nèi)绻麑ug出現(xiàn)前后的日志截取下來(lái)漫谷,將會(huì)給開(kāi)發(fā)同學(xué)的問(wèn)題定位帶來(lái)效率的提升仔雷。
對(duì)于實(shí)時(shí)日志的獲取,Android系統(tǒng)可以通過(guò)Android sdk中的adb logcat工具抓取:
iOS通過(guò)libimobiledevice獲取:
brew install libimobiledevice
idevicesyslog [-u <device-udid>]
-
不要忽視網(wǎng)絡(luò)請(qǐng)求
絕大多數(shù)的App產(chǎn)品都需要與后端進(jìn)行交互碟婆。很多Bug有可能是后端返回異常導(dǎo)致的电抚。因此,我們可以對(duì)發(fā)生Bug前后的網(wǎng)絡(luò)日志進(jìn)行抓取提供給開(kāi)發(fā)同學(xué)竖共。關(guān)于抓包方法的介紹參考慶豐的文章-移動(dòng)應(yīng)用抓包調(diào)試?yán)鰿harles蝙叛。
3. 如何通過(guò)Mock測(cè)試提高效率
Mock一般是指模擬某個(gè)服務(wù)器接口的返回?cái)?shù)據(jù)。在App的測(cè)試中公给,我們?yōu)榱藴y(cè)試某個(gè)服務(wù)器接口的不同返回結(jié)果對(duì)前端交互的影響借帘,經(jīng)常需要反復(fù)構(gòu)造不同參數(shù)的網(wǎng)絡(luò)請(qǐng)求。這個(gè)過(guò)程繁瑣又效率低下淌铐,其實(shí)最好的方法就是通過(guò)Mock工具肺然,將請(qǐng)求的返回?cái)?shù)據(jù)進(jìn)行修改。
例如腿准,對(duì)于我們熟知的登錄接口狰挡,有登錄超時(shí)、操作超時(shí)释涛、登錄被擠下線加叁、登錄系統(tǒng)繁忙、賬戶(hù)和密碼錯(cuò)誤唇撬、賬戶(hù)鎖定它匕、賬戶(hù)解密失敗等多種情況。如果是在沒(méi)有mock的情況下窖认,我們需要實(shí)際構(gòu)造10多種場(chǎng)景豫柬,有些比如系統(tǒng)繁忙,超時(shí)等場(chǎng)景通過(guò)傳統(tǒng)的方法根本沒(méi)法構(gòu)造出來(lái)扑浸。利用Mock方法烧给,我們可以借助一些工具,例如charles打斷點(diǎn)喝噪,截取接口返回的response的json數(shù)據(jù)础嫡,進(jìn)行一些模擬。
這里推薦的Mock工具還是Charles酝惧,它提供了 Map 功能榴鼎、 Rewrite 功能以及 Breakpoints 功能,都可以達(dá)到修改服務(wù)器返回內(nèi)容的目的晚唇。這三者在功能上的差異是:
- Map 功能適合長(zhǎng)期地將某一些請(qǐng)求重定向到另一個(gè)網(wǎng)絡(luò)地址或本地文件巫财。
- Rewrite 功能適合對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行一些正則替換。
- Breakpoints 功能適合做一些臨時(shí)性的修改哩陕。
具體的使用方法也可以參考慶豐的文章-移動(dòng)應(yīng)用抓包調(diào)試?yán)鰿harles平项。
4. 模擬器的妙用
我們的測(cè)試同學(xué)一般習(xí)慣在真機(jī)上進(jìn)行測(cè)試赫舒,覺(jué)得這樣更加符合用戶(hù)的真實(shí)場(chǎng)景。其實(shí)闽瓢,仔細(xì)想想你會(huì)發(fā)現(xiàn)号阿,大部分的測(cè)試工作都是在驗(yàn)證產(chǎn)品本身的功能,與手機(jī)本身無(wú)關(guān)鸳粉。那么我們是不是也可以在模擬器上進(jìn)行測(cè)試呢扔涧?很多人可能會(huì)覺(jué)得Android自帶的模擬器性能不好,但是現(xiàn)在市場(chǎng)上出現(xiàn)了很多非常優(yōu)秀的模擬器届谈,比如Genymotion枯夜,網(wǎng)易mumu,Droid4X等艰山,這些模擬器的性能都與真機(jī)媲美湖雹,對(duì)于iOS系統(tǒng),自帶的模擬器我們就不用多說(shuō)了曙搬。除此之外摔吏,我這里還要給大家說(shuō)說(shuō)模擬器的妙用。
(1)模擬GPS位置
大多數(shù)的Android模擬器都有位置模擬功能纵装,我們?cè)O(shè)置特定的GPS位置征讲,即可讓你定位到指定的位置,從而測(cè)試需要區(qū)分地域的場(chǎng)景橡娄。
(2)設(shè)置分辨率
App測(cè)試中诗箍,我們經(jīng)常需要測(cè)試不同屏幕尺寸,不同分辨率下的UI展示情況挽唉。通常的做法滤祖,是去購(gòu)買(mǎi)各種屏幕尺寸和分辨率的手機(jī),從而進(jìn)行兼容性的測(cè)試瓶籽。這樣的做法適合土豪團(tuán)隊(duì)匠童,同時(shí)效率也比較低下。從節(jié)約成本上來(lái)考慮的話塑顺,我們可以使用模擬器汤求,Android的模擬器一般支持分辨率和屏幕尺寸的自定義設(shè)置,iOS可以啟動(dòng)不同機(jī)型的模擬器茬暇。
(3)快速截圖和錄制視頻
真機(jī)上發(fā)現(xiàn)Bug首昔,我們截屏后寡喝,需要將圖片從手機(jī)傳輸?shù)诫娔X糙俗,然后提交到Bug系統(tǒng),這個(gè)過(guò)程影響工作效率预鬓。而且有的App還禁止了手機(jī)的截屏功能巧骚。在模擬上赊颠,我們不僅可以快速截屏,還可以用前面介紹的LICEcap工具錄制gif視頻劈彪。
5. 模擬網(wǎng)絡(luò)環(huán)境
由于手機(jī)的移動(dòng)性竣蹦,App的網(wǎng)絡(luò)場(chǎng)景非常復(fù)雜,網(wǎng)絡(luò)丟包率和延時(shí)有時(shí)候會(huì)非常高沧奴。為了測(cè)試不同網(wǎng)絡(luò)環(huán)境下App的功能是否正常痘括,我們經(jīng)常需要去一些信號(hào)不好的地方進(jìn)行測(cè)試。其實(shí)也可以有便捷的方式模擬網(wǎng)絡(luò)環(huán)境滔吠。常見(jiàn)的抓包工作Fiddler和Charles都支持丟包和延時(shí)的設(shè)置纲菌。只要我們知道不同網(wǎng)絡(luò)場(chǎng)景的丟包率和延遲參數(shù),即可通過(guò)工具模擬出來(lái)疮绷。然后通過(guò)手機(jī)連接模擬出來(lái)的網(wǎng)絡(luò)進(jìn)行測(cè)試翰舌。下面是常見(jiàn)網(wǎng)絡(luò)場(chǎng)景的參數(shù)設(shè)備列表,僅供參考冬骚。
6. 免費(fèi)的工具和平臺(tái)
這里不做過(guò)多的介紹椅贱,具體可以參考我之前的文章-移動(dòng)測(cè)試工程師必須知道的10個(gè)開(kāi)源框架
三、總結(jié)
荀子說(shuō)過(guò)“君子生非異也只冻,善假于物也”庇麦。善于利用現(xiàn)有的工具解決實(shí)際問(wèn)題,也是一項(xiàng)非常重要的能力喜德。本文只是拋磚引玉女器,由于業(yè)務(wù)場(chǎng)景的限制,很多方法不一定是最好的住诸,總結(jié)也不是很全面驾胆,歡迎大家多多留言,共同探討贱呐。