這是我購買的"極客時(shí)間"上的一套課程的筆記圃泡,總共52講,定期對(duì)其中的內(nèi)容做一筆記愿险,鞏固學(xué)習(xí)內(nèi)容颇蜡。
20 與時(shí)俱進(jìn):淺談移動(dòng)應(yīng)用測(cè)試方法與思路
在作者看來,無論移動(dòng)端和PC段測(cè)試辆亏,都屬于GUI測(cè)試的范疇风秤,所以基本的測(cè)試思路是相通的。所以之前所說的腳本分層的實(shí)現(xiàn)方法也同樣適用于移動(dòng)端的GUI測(cè)試扮叨。
移動(dòng)端應(yīng)用又可以進(jìn)一步細(xì)分為三大類:Web App, Native App 和 Hybird App缤弦。
三類移動(dòng)應(yīng)用的特點(diǎn)
Web App本質(zhì)上就是Web網(wǎng)頁彻磁。
Native App:移動(dòng)端的原生應(yīng)用。
Hybird App:介于上述二者之間尘喝。
三類不同移動(dòng)應(yīng)用的測(cè)試方法
如果你的 Web 頁面是基于自適應(yīng)網(wǎng)頁設(shè)計(jì)(即符合 Responsive Web 設(shè)計(jì)的規(guī)范)瞧省,而且你的測(cè)試框架如果支持 Responsive Page鞍匾,那么原則上你之前開發(fā)的運(yùn)行在 PC Web 端的 GUI 自動(dòng)化測(cè)試用例橡淑,不做任何修改就可以直接在移動(dòng)端的瀏覽器上直接執(zhí)行梁棠,當(dāng)然運(yùn)行的前提是你的移動(dòng)端瀏覽器必須支持 Web Driver符糊。
對(duì) Native App 的測(cè)試呛凶,雖然不同的平臺(tái)會(huì)使用不同的自動(dòng)化測(cè)試方案(比如模闲,iOS 一般采用 XCUITest Driver尸折,而 Android 一般采用 UiAutomator2 或者 Espresso 等)实夹,但是數(shù)據(jù)驅(qū)動(dòng)亮航、頁面對(duì)象以及業(yè)務(wù)流程封裝的思想依舊適用塞赂,你完全可以把這些方法應(yīng)用到測(cè)試用例設(shè)計(jì)中宴猾。
對(duì) Hybrid App 的測(cè)試仇哆,情況會(huì)稍微復(fù)雜一點(diǎn)油讯,對(duì) Native Container 的測(cè)試陌兑,可能需要用到 XCUITest 或者 UiAutomator2 這樣的原生測(cè)試框架兔综,而對(duì) Container 中 HTML5 的測(cè)試软驰,基本和傳統(tǒng)的網(wǎng)頁測(cè)試沒什么區(qū)別锭亏,所以原本基于 GUI 的測(cè)試思想和方法都能繼續(xù)適用慧瘤。
移動(dòng)應(yīng)用專項(xiàng)測(cè)試的思路和方法
第一碑隆,交叉事件測(cè)試
也叫中斷測(cè)試,是指App執(zhí)行過程中,有其他事件或者應(yīng)用中斷當(dāng)前應(yīng)用執(zhí)行的測(cè)試永部。
此類測(cè)試目前基本是采用手工測(cè)試苔埋,并且在真機(jī)上進(jìn)行组橄,不會(huì)采用模擬器玉工。
交叉事件測(cè)試遵班,需要覆蓋的場景主要包括:
- 多個(gè) App 同時(shí)在后臺(tái)運(yùn)行腹暖,并交替切換至前臺(tái)是否影響正常功能微服;
要求相同系統(tǒng)資源的多個(gè) App 前后臺(tái)交替切換是否影響正常功能以蕴,比如兩個(gè) App 都需要播放音樂,那么兩者在交替切換的過程中宝与,播放音樂功能是否正常; - App 運(yùn)行時(shí)接聽電話诽里;
- App 運(yùn)行時(shí)接收信息;
- App 運(yùn)行時(shí)提示系統(tǒng)升級(jí)墓懂;
- App 運(yùn)行時(shí)發(fā)生系統(tǒng)鬧鐘事件捕仔;
- App 運(yùn)行時(shí)進(jìn)入低電量模式闸天;
- App 運(yùn)行時(shí)第三方安全軟件彈出告警;
- App 運(yùn)行時(shí)發(fā)生網(wǎng)絡(luò)切換笼吟,比如,由 Wifi 切換到移動(dòng) 4G 網(wǎng)絡(luò),或者從 4G 網(wǎng)絡(luò)切換到 3G 網(wǎng)絡(luò)等锄禽;
- …
第二,兼容性測(cè)試
常見的 App 兼容性測(cè)試往往需要覆蓋以下的測(cè)試場景:
- 不同操作系統(tǒng)的兼容性宵晚,包括主流的 Andoird 和 iOS 版本;
- 主流的設(shè)備分辨率下的兼容性;
- 主流移動(dòng)終端機(jī)型的兼容性耕陷;
- 同一操作系統(tǒng)中饺蔑,不同語言設(shè)置時(shí)的兼容性孔祸;
- 不同網(wǎng)絡(luò)連接下的兼容性拂蝎,比如 Wifi、GPRS、EDGE馆里、CDMA200 等;
- 在單一設(shè)備上,與主流熱門 App 的兼容性,比如微信、抖音编振、淘寶等;
- …
**兼容性測(cè)試,通常都需要在各種真機(jī)上執(zhí)行相同或者類似的測(cè)試用例累贤,所以往往采用自動(dòng)化測(cè)試的手段示损。 **同時(shí)烛谊,由于需要覆蓋大量的真實(shí)設(shè)備,除了大公司會(huì)基于 Appium + Selenium Grid + OpenSTF 去搭建自己的移動(dòng)設(shè)備私有云平臺(tái)外丹禀,其他公司一般都會(huì)使用第三方的移動(dòng)設(shè)備云測(cè)平臺(tái)完成兼容性測(cè)試状勤。
第三方的移動(dòng)設(shè)備云測(cè)平臺(tái),國外最知名的是 SauceLab双泪,國內(nèi)主流的是 Testin持搜。
第三,流量測(cè)試
流量測(cè)試焙矛,通常包含以下幾個(gè)方面的內(nèi)容:
App 執(zhí)行業(yè)務(wù)操作引起的流量葫盼;
App 在后臺(tái)運(yùn)行時(shí)的消耗流量;
App 安裝完成后首次啟動(dòng)耗費(fèi)的流量村斟;
App 安裝包本身的大衅兜肌;
App 內(nèi)購買或者升級(jí)需要的流量蟆盹。
流量測(cè)試孩灯,往往借助于 Android 和 iOS 自帶的工具進(jìn)行流量統(tǒng)計(jì),也可以利用 tcpdump逾滥、Wireshark 和 Fiddler 等網(wǎng)絡(luò)分析工具峰档。
Android:/proc/net/dev目錄下存儲(chǔ)網(wǎng)絡(luò)流量信息;ADB工具獲取實(shí)時(shí)流量信息寨昙;輕量級(jí)性能監(jiān)控小工具Emmagee
iOS:Xcode自帶的Network Activity
但是讥巡,流量測(cè)試的最終目的,并不是得到 App 的流量數(shù)據(jù)舔哪,而是要想辦法減少 App 產(chǎn)生的流量欢顷。雖然,減少 App 消耗的流量不是測(cè)試工程師的工作尸红,但了解一些常用的方法吱涉,也將有助于你的測(cè)試日常工作:啟用數(shù)據(jù)壓縮刹泄,尤其是圖片外里;
使用優(yōu)化的數(shù)據(jù)格式怎爵,比如同樣信息量的 JSON 文件就要比 XML 文件小盅蝗;
遇到既需要加密又需要壓縮的場景鳖链,一定是先壓縮再加密;
減少單次 GUI 操作觸發(fā)的后臺(tái)調(diào)用數(shù)量墩莫;
每次回傳數(shù)據(jù)盡可能只包括必要的數(shù)據(jù)芙委;
啟用客戶端的緩存機(jī)制;
…
第四狂秦,耗電量測(cè)試
耗電量測(cè)試通常從三個(gè)方面來考量:
- App 運(yùn)行但沒有執(zhí)行業(yè)務(wù)操作時(shí)的耗電量灌侣;
- App 運(yùn)行且密集執(zhí)行業(yè)務(wù)操作時(shí)的耗電量;
- App 后臺(tái)運(yùn)行的耗電量裂问。
耗電量檢測(cè)既有基于硬件的方法侧啼,也有基于軟件的方法。
關(guān)于軟件的方法堪簿,Android 和 iOS 都有各自自己的方法:
Android 通過 adb 命令“adb shell dumpsys battery”來獲取應(yīng)用的耗電量信息痊乾;
iOS 通過 Apple 的官方工具 Sysdiagnose 來收集耗電量信息,然后椭更,可以進(jìn)一步通過 Instrument 工具鏈中的 Energy Diagnostics 進(jìn)行耗電量分析哪审。
第五,弱網(wǎng)絡(luò)測(cè)試
移動(dòng)應(yīng)用的測(cè)試需要保證在復(fù)雜網(wǎng)絡(luò)環(huán)境下的質(zhì)量虑瀑。具體的做法就是:在測(cè)試階段湿滓,模擬這些網(wǎng)絡(luò)環(huán)境,在 App 發(fā)布前盡可能多地發(fā)現(xiàn)并修復(fù)問題舌狗。
在這里叽奥,作者推薦一款非常棒的開源移動(dòng)網(wǎng)絡(luò)測(cè)試工具:Facebook 的 Augmented Traffic Control(ATC)。
具體可以參考官方網(wǎng)站把夸。
第六而线,邊界測(cè)試
邊界測(cè)試是指,移動(dòng) App 在一些臨界狀態(tài)下的行為功能的驗(yàn)證測(cè)試恋日,基本思路是需要找出各種潛在的臨界場景膀篮,并對(duì)每一類臨界場景做驗(yàn)證和測(cè)試。 主要的場景有:
- 系統(tǒng)內(nèi)存占用大于 90% 的場景岂膳;
- 系統(tǒng)存儲(chǔ)占用大于 95% 的場景誓竿;
- 飛行模式來回切換的場景;
- App 不具有某些系統(tǒng)訪問權(quán)限的場景谈截,比如 App 由于隱私設(shè)置不能訪問相冊(cè)或者通訊錄等筷屡;
- 長時(shí)間使用 App涧偷,系統(tǒng)資源是否有異常,比如內(nèi)存泄漏毙死、過多的鏈接數(shù)等燎潮;
- 出現(xiàn) ANR 的場景;
- 操作系統(tǒng)時(shí)間早于或者晚于標(biāo)準(zhǔn)時(shí)間的場景扼倘;
- 時(shí)區(qū)切換的場景确封;
- …
總結(jié)
- 移動(dòng)應(yīng)用根據(jù)技術(shù)架構(gòu)不同,分為三大類再菊。所用的測(cè)試方法本質(zhì)上都屬于GUI測(cè)試的范疇爪喘。
- 從業(yè)務(wù)角度來看,移動(dòng)端的測(cè)試用例設(shè)計(jì)和傳統(tǒng)PC端的GUI自動(dòng)化測(cè)試策略相似纠拔,只是測(cè)試框架不同秉剑。
- 各種專項(xiàng)測(cè)試是移動(dòng)應(yīng)用的測(cè)試重點(diǎn),有別于傳統(tǒng)GUI測(cè)試稠诲。包括:交叉事件測(cè)試侦鹏、兼容性測(cè)試、流量測(cè)試吕粹、耗電量測(cè)試种柑、弱網(wǎng)絡(luò)測(cè)試和邊界測(cè)試。
【心得】
關(guān)于專項(xiàng)測(cè)試的總結(jié)很棒匹耕,尤其是作者列出的場景聚请,可以根據(jù)自己所測(cè)產(chǎn)品的具體情況,參考之后整理成一份針對(duì)自己所負(fù)責(zé)產(chǎn)品的專項(xiàng)測(cè)試點(diǎn)稳其,并據(jù)此編寫測(cè)試用例驶赏。