文章內(nèi)容來源于《軟件測(cè)試52講》
移動(dòng)端應(yīng)用可以細(xì)分為三大類:Web App、Native App 和 Hybrid App
一厌漂、Web App(移動(dòng)端的 Web 瀏覽器)
也就是用H5開發(fā)的app斟珊,依附的操作系統(tǒng)是iOS和Android
Web App 采用的技術(shù)主要是,傳統(tǒng)的 HTML雏节、JavaScript高职、CSS 等 Web 技術(shù)棧怔锌,當(dāng)然現(xiàn)在 HTML5 也得到了廣泛的應(yīng)用变过。另外媚狰,Web App 所訪問的頁面內(nèi)容都是放在服務(wù)器端的阔拳,本質(zhì)上就是 Web 網(wǎng)頁,所以天生就是跨平臺(tái)的辨宠。
其本質(zhì)就是 Web 瀏覽器的測(cè)試货裹,所有 GUI 自動(dòng)化測(cè)試的方法和技術(shù)弧圆,比如數(shù)據(jù)驅(qū)動(dòng)、頁面對(duì)象模型霹期、業(yè)務(wù)流程封裝等拯田,都適用于 Web App 的測(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吞鸭。
其中,自適應(yīng)網(wǎng)頁設(shè)計(jì)(Responsive Web Design)是指遮咖,同一個(gè)網(wǎng)頁能夠自動(dòng)識(shí)別屏幕分辨率造虏、并做出相應(yīng)調(diào)整的網(wǎng)頁設(shè)計(jì)技術(shù)。
比如陶珠,下圖所示的例子就是同一個(gè)網(wǎng)頁在不同分辨率下的不同展示效果揍诽。
二暑脆、Native App (移動(dòng)端的原生應(yīng)用)
對(duì)于 Android 是 apk,對(duì)于 iOS 就是 ipa。
Native App 是一種基于手機(jī)操作系統(tǒng)(iOS 和 Android)根资,并使用原生程序編寫運(yùn)行的第三方應(yīng)用程序同窘。
Native App 的開發(fā),Android 使用的語言通常是 Java裤纹,iOS 使用的語言是 Objective-C鹰椒。
通常來說呕童,Native App 可以提供比較好的用戶體驗(yàn)以及性能夺饲,而且可以方便地操作手機(jī)本地資源。
對(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ì)中。
三沸呐、Hybrid App
俗稱:混血應(yīng)用崭添,介于 Web App 和 Native App 兩者之間的一種 App 形式叛氨。
Hybrid App 利用了 Web App 和 Native App 的優(yōu)點(diǎn)寞埠,通過一個(gè)原生實(shí)現(xiàn)的 Native Container 展示 HTML5 的頁面。更通俗的講法可以歸結(jié)為蓝角,在原生移動(dòng)應(yīng)用中嵌入了 Webview饭冬,然后通過該 Webview 來訪問網(wǎng)頁昌抠。
Hybrid App 具有維護(hù)更新簡單,用戶體驗(yàn)優(yōu)異以及較好的跨平臺(tái)特性麦乞,是目前主流的移動(dòng)應(yīng)用開發(fā)模式姐直。
對(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ù)適用松邪。
唯一需要注意的是哨查,Native Container 和 Webview 分別屬于兩個(gè)不同的上下文(Context)
1寒亥、Native Container 默認(rèn)的 Context 為“NATIVE APP"
2、Webview 默認(rèn)的 Context 為“WEBVIEW_+ 被測(cè)進(jìn)程名稱”挟纱。
所以,當(dāng)需要操作 Webview 中的網(wǎng)頁元素時(shí)檀轨,需要先切換到 Webview 的 Context 下
四参萄、移動(dòng)應(yīng)用專項(xiàng)測(cè)試的思路和方法
對(duì)于移動(dòng)應(yīng)用,順利完成全部業(yè)務(wù)功能測(cè)試往往是不夠的校赤。
如果關(guān)注點(diǎn)只是業(yè)務(wù)功能測(cè)試马篮,那么怜奖,當(dāng)移動(dòng)應(yīng)用被大量用戶安裝和使用時(shí)歪玲,就會(huì)暴露出很多之前完全沒有預(yù)料到的問題掷匠。比如:
1讹语、流量使用過多
2幅狮、耗電量過大
3崇摄、在某些設(shè)備終端上出現(xiàn)崩潰或者閃退的現(xiàn)象
4、多個(gè)移動(dòng)應(yīng)用相互切換后鸠儿,行為異常
5厕氨、在某些設(shè)備終端上無法順利安裝或卸載
6命斧、弱網(wǎng)絡(luò)環(huán)境下,無法正常使用
7贤徒、Android 環(huán)境下接奈,經(jīng)常出現(xiàn) ANR(Application Not Responding)
8通孽、......等等
4.1 交叉事件測(cè)試
交叉事件測(cè)試也叫中斷測(cè)試背苦,是指 App 執(zhí)行過程中,有其他事件或者應(yīng)用中斷當(dāng)前應(yīng)用執(zhí)行的測(cè)試秕噪。
比如巢价,App 在前臺(tái)運(yùn)行過程中,突然有電話打進(jìn)來城菊,或者收到短信凌唬,再或者是系統(tǒng)鬧鐘等情況漏麦。所以撕贞,在 App 測(cè)試時(shí),就需要把這些常見的中斷情況考慮在內(nèi)秧均,并進(jìn)行相關(guān)的測(cè)試目胡。
注:此類測(cè)試目前基本還都是采用手工測(cè)試的方式链快,并且都是在真機(jī)上進(jìn)行域蜗,不會(huì)使用模擬器。
1炉峰、采用手工測(cè)試的原因是,此類測(cè)試往往場景多半夷,而且很多事件很難通過自動(dòng)化的方式來模擬迅细,比如呼入電話茵典、接收短信等,這些因素都會(huì)造成自動(dòng)化測(cè)試的成本過高彩倚,得不償失帆离,所以工程實(shí)踐中哥谷,交叉事件測(cè)試往往全是基于手工的測(cè)試。
2猜扮、之所以采用真機(jī)破镰,是因?yàn)楹芏鄦栴}只會(huì)在真機(jī)上才能重現(xiàn)压储,采用模擬器測(cè)試沒有意義集惋。
需要覆蓋的場景主要包括:
1、多個(gè) App 同時(shí)在后臺(tái)運(yùn)行喉祭,并交替切換至前臺(tái)是否影響正常功能
2泛烙、要求相同系統(tǒng)資源的多個(gè) App 前后臺(tái)交替切換是否影響正常功能
比如兩個(gè) App 都需要播放音樂蔽氨,那么兩者在交替切換的過程中帆疟,播放音樂功能是否正常
3踪宠、App 運(yùn)行時(shí)接聽電話
4、App 運(yùn)行時(shí)接收信息
5绍妨、App 運(yùn)行時(shí)提示系統(tǒng)升級(jí)
6润脸、App 運(yùn)行時(shí)發(fā)生系統(tǒng)鬧鐘事件
7、App 運(yùn)行時(shí)進(jìn)入低電量模式
8他去、App 運(yùn)行時(shí)第三方安全軟件彈出告警
9津函、App 運(yùn)行時(shí)發(fā)生網(wǎng)絡(luò)切換
比如,由 Wifi 切換到移動(dòng) 4G 網(wǎng)絡(luò)孤页,或者從 4G 網(wǎng)絡(luò)切換到 3G 網(wǎng)絡(luò)等尔苦;
10、......還有很多
這些需要覆蓋的場景行施,也是我們今后測(cè)試的測(cè)試用例集允坚,每一場景都是一個(gè)測(cè)試用例的集合蛾号。
交叉事件測(cè)試稠项,不管是移動(dòng)端還是 PC 端,都是非常關(guān)鍵的鲜结,畢竟用戶環(huán)境是千奇百怪的展运,而且并不是所有用戶都是按設(shè)計(jì)好的流程去操作,這個(gè)地方很考驗(yàn)測(cè)試人員的從用戶角度考慮問題的思想精刷。
4.2 兼容性測(cè)試
確保 App 在各種終端設(shè)備棠众、各種操作系統(tǒng)版本胆数、各種屏幕分辨率王带、各種網(wǎng)絡(luò)環(huán)境下享言,功能的正確性。
常見的往往需要覆蓋以下的測(cè)試場景:
1纫事、不同操作系統(tǒng)的兼容性勘畔,包括主流的 Andoird 和 iOS 版本
2、主流的設(shè)備分辨率下的兼容性
3丽惶、主流移動(dòng)終端機(jī)型的兼容性
4炫七、同一操作系統(tǒng)中,不同語言設(shè)置時(shí)的兼容性
5钾唬、不同網(wǎng)絡(luò)連接下的兼容性万哪,比如 Wifi、GPRS知纷、EDGE壤圃、CDMA200 等
6陵霉、在單一設(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è)試。
4.3 流量測(cè)試
由于 App 經(jīng)常需要在移動(dòng)互聯(lián)網(wǎng)環(huán)境下運(yùn)行辐啄,而移動(dòng)互聯(lián)網(wǎng)通常按照實(shí)際使用流量計(jì)費(fèi)采章,所以如果你的 App 耗費(fèi)的流量過多,那么一定不會(huì)很受歡迎壶辜。
通常需要覆蓋以下幾個(gè)方面的內(nèi)容:
1悯舟、App 執(zhí)行業(yè)務(wù)操作引起的流量
2、App 在后臺(tái)運(yùn)行時(shí)的消耗流量
3砸民、App 安裝完成后首次啟動(dòng)耗費(fèi)的流量
4抵怎、App 安裝包本身的大小
5、App 內(nèi)購買或者升級(jí)需要的流量
流量測(cè)試岭参,往往借助于 Android 和 iOS 自帶的工具進(jìn)行流量統(tǒng)計(jì)反惕,也可以利用 tcpdump、Wireshark 和 Fiddler 等網(wǎng)絡(luò)分析工具演侯。
Android 系統(tǒng):網(wǎng)絡(luò)流量信息通常存儲(chǔ)在 /proc/net/dev 目錄下承璃,也可以直接利用 ADB 工具獲取實(shí)時(shí)的流量信息。另外蚌本,推薦一款 Android 的輕量級(jí)性能監(jiān)控小工具 Emmagee盔粹,類似于 Windows 系統(tǒng)性能監(jiān)視器,能夠?qū)崟r(shí)顯示 App 運(yùn)行過程中 CPU程癌、內(nèi)存和流量等信息舷嗡。
iOS 系統(tǒng):可以使用 Xcode 自帶的性能分析工具集中的 Network Activity,分析具體的流量使用情況嵌莉。
但是进萄,流量測(cè)試的最終目的,并不是得到 App 的流量數(shù)據(jù)锐峭,而是要想辦法減少 App 產(chǎn)生的流量中鼠。雖然,減少 App 消耗的流量不是測(cè)試工程師的工作沿癞,但了解一些常用的方法援雇,也將有助于你的測(cè)試日常工作:
1、啟用數(shù)據(jù)壓縮椎扬,尤其是圖片
2惫搏、使用優(yōu)化的數(shù)據(jù)格式具温,比如同樣信息量的 JSON 文件就要比 XML 文件小
3、遇到既需要加密又需要壓縮的場景筐赔,一定是先壓縮再加密
4铣猩、減少單次 GUI 操作觸發(fā)的后臺(tái)調(diào)用數(shù)量
5、每次回傳數(shù)據(jù)盡可能只包括必要的數(shù)據(jù)
6茴丰、啟用客戶端的緩存機(jī)制
7达皿、......
4.4 耗電量測(cè)試
在目前的生態(tài)環(huán)境下,能提供類似服務(wù)或者功能的 App 往往有很多贿肩,如果在功能類似的情況下鳞绕,你的 App 特別耗電、讓設(shè)備發(fā)熱比較嚴(yán)重尸曼,那么你的用戶一定會(huì)卸載你的 App 而改用其他 App们何。
最典型的就是地圖等導(dǎo)航類的應(yīng)用,對(duì)耗電量特別敏感控轿。
通常從三個(gè)方面來考量:
1冤竹、App 運(yùn)行但沒有執(zhí)行業(yè)務(wù)操作時(shí)的耗電量
2、App 運(yùn)行且密集執(zhí)行業(yè)務(wù)操作時(shí)的耗電量
3茬射、App 后臺(tái)運(yùn)行的耗電量
耗電量檢測(cè)既有基于硬件的方法鹦蠕,也有基于軟件的方法。
Android 和 iOS 都有各自自己的方法:
- Android 通過 adb 命令“adb shell dumpsys battery”來獲取應(yīng)用的耗電量信息在抛;
- iOS 通過 Apple 的官方工具 Sysdiagnose 來收集耗電量信息钟病,然后,可以進(jìn)一步通過 Instrument 工具鏈中的 Energy Diagnostics 進(jìn)行耗電量分析刚梭。
推薦:Google推出的history batterian工具很好分析耗電情況
4.5 弱網(wǎng)測(cè)試
與傳統(tǒng)桌面應(yīng)用不同肠阱,移動(dòng)應(yīng)用的網(wǎng)絡(luò)環(huán)境比較多樣,而且經(jīng)常出現(xiàn)需要在不同網(wǎng)絡(luò)之間切換的場景朴读,即使是在同一網(wǎng)絡(luò)環(huán)境下屹徘,也會(huì)出現(xiàn)網(wǎng)絡(luò)連接狀態(tài)時(shí)好時(shí)壞的情況,比如時(shí)高時(shí)低的延遲衅金、經(jīng)常丟包噪伊、頻繁斷線,在乘坐地鐵氮唯、穿越隧道鉴吹,和地下車庫的場景下經(jīng)常會(huì)發(fā)生。
移動(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)肆糕。
ATC 最好用的地方在于般堆,能夠在移動(dòng)終端設(shè)備上通過 Web 界面隨時(shí)切換不同的網(wǎng)絡(luò)環(huán)境在孝,同時(shí)多個(gè)移動(dòng)終端設(shè)備可以連接到同一個(gè) Wifi诚啃,各自模擬不同的網(wǎng)絡(luò)環(huán)境,相互之間不會(huì)有任何影響私沮。也就是說始赎,只要搭建一套 ATC 就能滿足你所有的網(wǎng)絡(luò)模擬需求。
4.6 邊界測(cè)試
邊界測(cè)試是指仔燕,移動(dòng) App 在一些臨界狀態(tài)下的行為功能的驗(yàn)證測(cè)試造垛,基本思路是需要找出各種潛在的臨界場景,并對(duì)每一類臨界場景做驗(yàn)證和測(cè)試晰搀。
主要的場景有:
1五辽、系統(tǒng)內(nèi)存占用大于 90% 的場景
2、系統(tǒng)存儲(chǔ)占用大于 95% 的場景
3外恕、飛行模式來回切換的場景
4杆逗、App 不具有某些系統(tǒng)訪問權(quán)限的場景,比如 App 由于隱私設(shè)置不能訪問相冊(cè)或者通訊錄等
5鳞疲、長時(shí)間使用 App罪郊,系統(tǒng)資源是否有異常,比如內(nèi)存泄漏尚洽、過多的鏈接數(shù)等
6悔橄、出現(xiàn) ANR 的場景
7、操作系統(tǒng)時(shí)間早于或者晚于標(biāo)準(zhǔn)時(shí)間的場景
8腺毫、時(shí)區(qū)切換的場景
總結(jié)
從業(yè)務(wù)功能測(cè)試的角度看癣疟,移動(dòng)應(yīng)用的測(cè)試用例設(shè)計(jì)和傳統(tǒng) PC 端的 GUI 自動(dòng)化測(cè)試策略比較類似,只是測(cè)試框架不同潮酒,數(shù)據(jù)驅(qū)動(dòng)争舞、頁面對(duì)象模型和業(yè)務(wù)流程封裝依舊適用;
各種專項(xiàng)測(cè)試是移動(dòng)應(yīng)用的測(cè)試重點(diǎn)澈灼,也有別于傳統(tǒng) GUI 測(cè)試竞川。專項(xiàng)測(cè)試包括:交叉事件測(cè)試、兼容性測(cè)試叁熔、流量測(cè)試委乌、耗電量測(cè)試、弱網(wǎng)絡(luò)測(cè)試和邊界測(cè)試荣回。
延伸:
問:耗電量測(cè)試遭贸,流量測(cè)試,以及app性能測(cè)試心软,怎么界定數(shù)據(jù)是否正常呢壕吹,比如說流量消耗是到哪個(gè)值覺得有優(yōu)化空間著蛙,內(nèi)存CPU到哪個(gè)值不正常需要優(yōu)化
答:其實(shí)并沒有明確的標(biāo)準(zhǔn),主要基于一些歷史統(tǒng)計(jì)數(shù)據(jù)耳贬,我們主要的做法是和現(xiàn)有版本踏堡,以及同類app做比較。