Android手機(jī)應(yīng)用測試的優(yōu)秀QA方法和工具
譯文???
【51CTO.com快譯】移動測試往往是指對于運(yùn)行在智能手機(jī)、平板電腦、以及其他移動設(shè)備上的移動應(yīng)用程序,進(jìn)行功能性、性能上、安全性、以及可用性等方面的檢測過程。通過手動或自動化的測試方式,我們可以確保移動應(yīng)用程序,既滿足業(yè)務(wù)的需求,又能達(dá)到最終用戶的期望。
通常,我們在手機(jī)上使用的移動應(yīng)用程序有如下三種類型:
- 為特定平臺設(shè)計(jì)的原生應(yīng)用程序。它們往往配有相應(yīng)的語言和SDK,而且是通過相應(yīng)的應(yīng)用商店被安裝的。
- 由服務(wù)器端技術(shù)開發(fā)的、可以通過移動瀏覽器訪問的移動Web應(yīng)用。各種響應(yīng)式網(wǎng)站和漸進(jìn)式網(wǎng)絡(luò)應(yīng)用,都屬于此類移動應(yīng)用。
- 混合應(yīng)用雖然可以在移動設(shè)備上運(yùn)行,并通過應(yīng)用商店來安裝,但是它們是用Web技術(shù)開發(fā)的。與移動Web應(yīng)用相比,這些應(yīng)用可以使用到移動設(shè)備的內(nèi)置功能和操作系統(tǒng)的各項(xiàng)服務(wù)。
在本文中,我們將專注于討論如何測試各種原生的Android移動應(yīng)用。
測試Android移動應(yīng)用的要點(diǎn)
我們在日常開展針對Android手機(jī)應(yīng)用的測試時(shí),應(yīng)當(dāng)注意如下幾個(gè)方面:
應(yīng)用程序安裝和卸載
為了提高并促進(jìn)用戶體驗(yàn),請確保他們可以輕松地且正確地安裝或卸載移動應(yīng)用。同時(shí),在處理應(yīng)用的更新方面,您也應(yīng)當(dāng)十分謹(jǐn)慎。顯然,靜默的Android應(yīng)用更新方式,會讓用戶因?yàn)闊o法控制自己設(shè)備上的內(nèi)存空間,而拉低整體使用體驗(yàn)。因此,我們需要檢查用戶是否能夠在應(yīng)用有待更新時(shí),及時(shí)收到相應(yīng)的觸發(fā)通知。
在互聯(lián)網(wǎng)連接不穩(wěn)定時(shí)的應(yīng)用行為
互聯(lián)網(wǎng)連接并不總是穩(wěn)定流暢的,那么Android應(yīng)用需要避免在手機(jī)出現(xiàn)斷網(wǎng)時(shí),發(fā)生意外關(guān)閉甚至崩潰的情況。為此,測試團(tuán)隊(duì)?wèi)?yīng)該檢查應(yīng)用程序是如何處置間歇性連接、移動網(wǎng)絡(luò)切換(例如從Wi-Fi到4G)、以及完全中斷等場景。在這些情況中,手動測試往往更加合適,畢竟這樣能夠更好地模擬出各種生活中的真實(shí)使用場景。
電池消耗和設(shè)備性能
如您所知,即使用戶嘗試去手動關(guān)閉,大多數(shù)移動應(yīng)用仍然會在Android的后臺運(yùn)行。如果這種消耗設(shè)備電池的方式持續(xù)下去,那么在某種程度上會縮短用戶的使用周期。同時(shí),設(shè)備的性能也會隨著在后臺運(yùn)行應(yīng)用程序的增多而下降。對此,QA團(tuán)隊(duì)的目標(biāo)應(yīng)當(dāng)是確保當(dāng)應(yīng)用程序沒有被持續(xù)使用時(shí),不再消耗設(shè)備的電池。因此,他們需要仔細(xì)檢查目標(biāo)應(yīng)用是否會在后臺接收和發(fā)送各種數(shù)據(jù)。
安全性問題
雖然Android團(tuán)隊(duì)持續(xù)提高著安全標(biāo)準(zhǔn),但是Android的開放性一直是安全漏洞重大的根源之一。與iOS相比,Android的發(fā)布政策要寬松許多,幾乎每個(gè)人都可以在Google Play應(yīng)用商店中發(fā)布自己的應(yīng)用。因此,一旦用戶安裝了那些可能存在漏洞和易受攻擊的應(yīng)用程序,就可能會將病毒傳播到該設(shè)備上的其他應(yīng)用中。顯然,這對于那些包含著敏感數(shù)據(jù)的應(yīng)用而言,絕對是一種災(zāi)難。那么,為了盡可能地消除所有風(fēng)險(xiǎn)并保障安全態(tài)勢,經(jīng)驗(yàn)豐富的QA工程師會在執(zhí)行功能與性能測試的同時(shí),開展全面的安全性測試。
Android移動應(yīng)用的自動化與手動測試
隨著??自動化測試??日益受到關(guān)注,業(yè)界對于是否將自動化測試引入Android應(yīng)用測試,眾說紛紜。我的個(gè)人經(jīng)驗(yàn)是:對于那些小而簡單的Android移動應(yīng)用而言,實(shí)施自動化測試的意義并不大。不過,如果碰到交付期限緊迫、市場用戶群定位廣泛、設(shè)備品類覆蓋范圍大等情況的話,您最好采用自動化測試的方式。
此外,對于性能測試而言,自動化測試要在效率上勝過手動測試。畢竟,它可以讓QA團(tuán)隊(duì)通過更快、更高效的測試過程,來節(jié)省大量寶貴的時(shí)間、精力和資金。當(dāng)然,性能測試與回歸測試也應(yīng)該通過選用目前市場上可用的自動化測試解決方案來實(shí)現(xiàn)。在該領(lǐng)域,適合Android應(yīng)用自動化測試的工具包括:Appium、Android Studio、Selendroid、Espresso和Roboelectric等。
一般而言,自動化測試在整個(gè)測試過程中的最合適份額應(yīng)當(dāng)是70-80%。而對于某些特定的場景,手動測試仍是一種不可替代的方式。
Android移動應(yīng)用測試的不同階段
下面,我將向您介紹Android應(yīng)用測試的各個(gè)主要階段,以便您流暢地開展工作。
測試計(jì)劃
常言道,全面的??測試計(jì)劃??意味著成功了一半。可見,從一開始就定義并設(shè)計(jì)好移動應(yīng)用測試的策略是至關(guān)重要的。在此階段,QA團(tuán)隊(duì)需要明確測試的范圍、功能覆蓋率、設(shè)備覆蓋率、所需資源、以及預(yù)計(jì)截止日期等要素。并且在此基礎(chǔ)上,他們應(yīng)當(dāng)決定是否實(shí)施測試自動化,以及自動化的具體測試場景。
測試環(huán)境的設(shè)置
該階段應(yīng)準(zhǔn)備好所有必需的測試設(shè)備。例如:是否需要使用模擬器、仿真器、云端設(shè)備、以及真實(shí)的移動設(shè)備。
測試用例/腳本編寫
QA專家需要在決定測試哪些應(yīng)用功能的基礎(chǔ)上,開始設(shè)計(jì)與編寫測試用例。從廣義上講,測試用例是一些基本的步驟列表,旨在檢查應(yīng)用程序在特定的情況下,是否可以按照預(yù)期運(yùn)行或完成預(yù)定的任務(wù)。如果團(tuán)隊(duì)已經(jīng)決定了使用自動化測試,去覆蓋某些測試場景,那么就可以選用和定制由自動化工具提供的測試腳本。
測試執(zhí)行和缺陷報(bào)告
通常,QA專家應(yīng)從功能性測試開始,以確保Android應(yīng)用的所有核心功能可以順暢地運(yùn)行。他們可以從手動嘗試開始,如果被測應(yīng)用(application under test,AUT)足夠穩(wěn)定的話,則可以轉(zhuǎn)為自動化測試。
為了評估用戶的體驗(yàn),并了解被測的Android應(yīng)用是否直觀、易用、且沒有UI上的缺陷,QA專家應(yīng)繼續(xù)開展UI測試和可用性測試。
接著,QA專家必須執(zhí)行兼容性測試,以檢查應(yīng)用程序是否在所有可能被安裝的設(shè)備型號上,都能正常運(yùn)行。此類測試的必要性在于,可以極大地確保用戶在各種可能用到的移動設(shè)備上,都能夠得到滿意的使用感受。
在完成了功能性測試后,QA專家就需要開展性能測試了。此類測試包括:容量測試、壓力測試、穩(wěn)定性測試、負(fù)載測試、峰值測試等。通常,性能測試會檢查與估計(jì)內(nèi)、外部流量與負(fù)載對于應(yīng)用所產(chǎn)生的影響。由于只能在特殊工具的幫助下,才能模擬出所需的負(fù)載水平,因此性能測試在絕大程度上是需要依賴自動化的。
為了確保應(yīng)用程序的安全性能夠符合相應(yīng)的標(biāo)準(zhǔn),以及滿足相關(guān)的合規(guī),QA專家還需要開展安全性測試和一致性測試。當(dāng)然,他們也可以按需進(jìn)行安裝測試、更新測試、中斷測試、恢復(fù)測試、設(shè)備資源測試、以及網(wǎng)絡(luò)配置測試等專業(yè)化的領(lǐng)域。
最后,QA專家可以按需與真實(shí)用戶開展Beta/驗(yàn)收測試,以確保最終用戶能夠很好地接受AUT,并且能夠在應(yīng)用程序發(fā)布之前,根據(jù)實(shí)際情況酌情予以調(diào)整。
報(bào)告
最后一個(gè)階段便是得出結(jié)論并提交報(bào)告。QA專家通過分析檢測到的、有待修復(fù)的錯誤,識別出那些最易受攻擊和產(chǎn)生錯誤的應(yīng)用模塊,并以綜合性結(jié)果報(bào)告的形式,給出該Android應(yīng)用是否適合發(fā)布的判斷。
Android應(yīng)用的常用測試工具
在了解了有關(guān)Android應(yīng)用測試的整體過程后,我們最后來看看有哪些工具可以幫助QA團(tuán)隊(duì)有效地開展不同類型的自動化測試。下面便是我為您總結(jié)的一張常用工具列表:
- MonkeyRunner--https://developer.android.com/studio/test/monkeyrunner
- Appium--https://appium.io/
- Selendroid--http://selendroid.io/
- Espresso--https://developer.android.com/training/testing/espresso
- Robotium--https://github.com/RobotiumTech/robotium
- BrowserStack--https://www.browserstack.com/
- Ranorex--https://www.ranorex.com/
- UI Automator--https://developer.android.com/training/testing/ui-automator
- OWASP Zed Attack Proxy--https://owasp.org/www-project-zap/
小結(jié)
任何應(yīng)用程序的成功不僅取決于它能夠提供的功能集,更在于它可以交付的服務(wù)質(zhì)量。因此,Android應(yīng)用也不例外。這里所說的質(zhì)量涵蓋了:應(yīng)用性能、穩(wěn)定性、安全性、便利性、用戶友好程度等多方面。
對此,經(jīng)驗(yàn)豐富的QA專家會根據(jù)實(shí)際情況,進(jìn)行各種不同的測試,以徹底檢查并提高Android應(yīng)用的軟件質(zhì)量和用戶的滿意度。雖然這需要耗費(fèi)他們更多的時(shí)間和精力,去進(jìn)行私人定制,但是對于Android移動應(yīng)用的上新、以及高投資回報(bào)率的保障而言,是絕對值得的。
譯者介紹
陳 峻 (Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項(xiàng)目實(shí)施經(jīng)驗(yàn),善于對內(nèi)外部資源與風(fēng)險(xiǎn)實(shí)施管控,專注傳播網(wǎng)絡(luò)與信息安全知識與經(jīng)驗(yàn);持續(xù)以博文、專題和譯文等形式,分享前沿技術(shù)與新知;經(jīng)常以線上、線下等方式,開展信息安全類培訓(xùn)與授課。
原文標(biāo)題:Testing Android Mobile Apps: Best QA Approaches and Tools,作者:Oleh Sadykow
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】