1. 單元測試
單元測試是單一實(shí)體(類或者方法)的功能性測試藤滥,檢查程序是否按照預(yù)期結(jié)果正常運(yùn)行,及時(shí)發(fā)現(xiàn)代碼中的邏輯錯誤,以保證應(yīng)用系統(tǒng)在迭代開發(fā)中的正確性莲镣。
1.1 JUnit
JUnit
是xUnit
測試框架下Java語言的單元測試框架。同時(shí)JUnit
是很常用的白盒測試的一種涎拉。
- 優(yōu)點(diǎn)
- 白盒測試瑞侮,測試人員可以根據(jù)源代碼,編寫項(xiàng)目所有的接口或者方法的單元測試用例鼓拧;
- 自動化測試半火,并判斷輸出執(zhí)行結(jié)果,不需要人為的干預(yù)季俩;
- 容易集成在構(gòu)建過程中钮糖,及時(shí)發(fā)現(xiàn)問題
- 速度快,支持測試覆蓋率等代碼質(zhì)量檢測工具
- 缺點(diǎn)
- 只支持純Java代碼酌住,測試對象中不能包含Android Framework相關(guān)代碼
1.2 Espresso
Espresso
是Google正對Android UI提供一種單元測試方法店归,屬于白盒測試,需要開發(fā)人員或者熟悉項(xiàng)目源代碼的測試人員編寫單元測試用例酪我。它的特點(diǎn)是規(guī)模更小消痛、更簡潔,API更加精確都哭,編寫測試代碼簡單秩伞,容易快速上手。
Espresso
測試對象是Activity
,所以其測試用例步驟主要如下:
- 查找元素:找到UI上測試的元素位置欺矫,比如找到一個按鈕
- 執(zhí)行操作:給某個元素執(zhí)行一個動作纱新,比如觸發(fā)按鈕的點(diǎn)擊事件
- 檢查結(jié)果:判斷做出的動作是否符合期望,比如按鈕點(diǎn)擊后汇陆,是否符合我的期望
2. 自動化測試(功能測試)
2.1 Instrumentation
早期Google提供的Android自動化測試工具類怒炸。通過Instrumentation你可以模擬按鍵按下、抬起毡代、屏幕點(diǎn)擊阅羹、滾動等事件勺疼。不能跨多個App。
2.2 UiAutomator
UiAutomator
谷歌在Android4.3推出的UI自動化測試框架捏鱼,可以模擬人對手機(jī)的操作执庐,比如各種點(diǎn)擊、長按导梆、滑動轨淌、按鍵等操作動作】茨幔可以對整個系統(tǒng)做UI自動化測試递鹉,不局限于APP。
2.3 Robotium
Robotium
是非常著名的Android自動化測試框架藏斩,支持native和hybrid兩種應(yīng)用模式躏结,可以非常簡單方便的執(zhí)行Android UI黑盒測試。
主要特點(diǎn):
- 支持
Native
和Hybrid
應(yīng)用狰域; - 不僅對單
Activity
編寫測試媳拴,還可以自動處理多Activity
的應(yīng)用測試; - 編寫測試用例比較簡單兆览,相對于
Instrumentation
來說屈溉,測試代碼可讀性比較好; - 測試用例執(zhí)行速度比較快抬探,可以與Maven子巾、Gradle以及Ant更好的結(jié)合,可以支持持續(xù)集成的測試驶睦;
- 提供
Robotium Recorder
(收費(fèi))測試用例的腳本錄制砰左,可以方便快速地編寫測試用例; -
Robotium
主要缺點(diǎn)不能跨App场航。
2.4 Appium
Appium封裝了標(biāo)準(zhǔn)Selenium客戶端類庫缠导,不但支持IOS平臺和Android平臺的navtive應(yīng)用、web應(yīng)用和混合應(yīng)用溉痢,還支持Window,Mac平臺僻造。
主要特點(diǎn):
- 支持Android、iOS孩饼、Firefox OS:IOS部分是封裝了UIAutomation髓削;Android 4.3以上是用UiAutomator,Android 2.3 ~ 4.2用的是Instrumentation;
- 跨App镀娶,支持
Native App
立膛、Hybird App
、Web App
; - Appium Server是使用Node.js開發(fā),通過NPM在
MacOS
宝泵、Windows
或者Linux
系統(tǒng)上安裝部署; - 支持很多語言來編寫測試腳本好啰,
Java
、Javascript
儿奶、PHP
框往、Python
、C#
闯捎、Ruby
等主流語言; - 擴(kuò)展了
WebDriver
,封裝Selenium
客戶端類庫椰弊,對具有Selenium
Web自動化測試經(jīng)驗(yàn)的人員來說,比較容易上手瓤鼻; - 提供
Appium Inspector
工具秉版,可以非常方便的查看App界面元素的元數(shù)據(jù)屬性信息,Mac版本支持測試用例錄制茬祷;
3. 壓力測試
3.1 Monkey
Monkey是Android SDK自帶的測試工具沐飘,在測試過程中會向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流,如按鍵輸入牲迫、觸摸屏輸入、手勢輸入等)借卧,實(shí)現(xiàn)對正在開發(fā)的應(yīng)用程序進(jìn)行壓力測試盹憎,也有日志輸出。
3.2 MonkeyRunner
MonkeyRunner是一Api工具包铐刘,比Monkey強(qiáng)大陪每,寫出一個Python程序去安裝一個Android應(yīng)用程序或測試包,運(yùn)行它镰吵,向它發(fā)送模擬擊鍵檩禾,截取它的用戶界面圖片,并將截圖存儲于工作站上疤祭。
4. 對比總結(jié)
在應(yīng)用開發(fā)中盼产,項(xiàng)目代碼組織架構(gòu)設(shè)計(jì)要合理,方便進(jìn)行單元測試勺馆。推薦使用JUnit
進(jìn)行非Android Framework的函數(shù)或類的單元測試戏售,借助jacoco
等插件統(tǒng)計(jì)分析代碼覆蓋率。
Espresso
測試框架可以進(jìn)行UI單元測試草穆,但是App的Activity往往會涉及Android其他模塊灌灾,例如Service,Broadcast,所以推薦使用Appium
等測試工具進(jìn)行App應(yīng)用的功能集成化自動測試悲柱。
Appium
具有UiAutomator
锋喜、Robotium
等測試工具所有的特性,不僅支持Hybird App
豌鸡、Web App
這類非原生應(yīng)用嘿般,而且還支持iOS等其他移動平臺段标;Appium
本身封裝拓展了Selenium
測試工具,所以等于掌握Appium
自動化測試工具博个,就可以編寫Android怀樟、iOS、Web等多端的應(yīng)用測試盆佣。
Monkey
是一隨機(jī)事件流測試工具往堡,推薦使用于應(yīng)用的穩(wěn)定性測試,可以及早的發(fā)現(xiàn)App的Crash
問題共耍。