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