?移動應用穩定性測試
? 使用Monkey等工具進行移動應用穩定性測試是一種常見的自動化測試方法。Monkey工具可以自動生成各種隨機事件來模擬用戶操作,從而測試應用在不同情況下的表現。在執行monkey命令后,主要觀察以下的結果信息來評估移動應用的穩定性。
崩潰(Crashes):應用是否在測試過程中發生崩潰。崩潰通常會在logcat中顯示為“FATAL EXCEPTION”字樣。
異常(Exceptions):應用是否拋出未處理的異常。異常信息也可以在logcat中查看。
ANR(Application Not Responding):應用是否出現無響應的情況。ANR錯誤會在logcat中顯示為“ANR in your.package.name”。
UI行為:應用的UI是否能夠正常響應隨機事件,是否有任何UI元素未能正常顯示或更新。
性能指標:觀察應用的CPU、內存使用情況以及電池消耗等性能指標是否在合理范圍內。
穩定性測試常用工具
? 進行穩定性測試的工具很多,Android自帶的穩定性測試工具是monkey,運行monkey測試的命令非常簡單(adb shell monkey -p your.package.name -v 500)。其中,-v 是設置詳細模式,500是事件數量。除了monkey,下面還列舉了很多類似monkey的工具,有些同時支持IOS和Android,有些只支持Android,有些只支持IOS。其中,Fastbot是字節開源的一款同時支持IOS和Android的穩定性測試工具。如果應用需要同時支持IOS和Android,可以首選這款工具。
如何自動執行穩定性測試
? 在使用monkey一類工具進行測試時,需要跳轉到對應頁面,然后執行monkey命令。一個應用包含很多頁面,如果每個頁面都先手動跳轉到對應頁面,效率太低,如何自動進行穩定性測試呢?可以和自動化測試工具相結合。例如可以使用Appium連接到設備上,登陸應用,并跳轉到對應頁面后,在執行monkey命令,這樣就可以完全自動化的對整個應用執行穩定性測試。除了,測試的自動化執行,還需要監控的自動化,監控crash等的工具很多,大部分是商業的,也有少量開源工具。如果項目經費可以支持優先選擇商業工具。
總結而言,自動化執行穩定性測試的大致步驟如下所示:
? 除了通過工具進行crash的監控,還可以在腳本編寫過程中,通過監聽logcat日志信息進行結果收據收集。下面的代碼中,通過調用Appium連接到移動設備上,調用appium client完成登陸過程,然后關閉appium。接著,通過adb命令,開啟logcat。執行monkey命令,開始對目標頁面進行穩定性測試。測試完成后,對logcat結果進行分析,查找是否存在ANR,Crash,Exception等情況。
from appium import webdriver
import time
import os
import subprocess# 配置Appium
desired_caps = {'platformName': 'Android','deviceName': 'Android Emulator','appPackage': 'your.package.name','appActivity': '.YourLoginActivity', # 修改為應用的啟動Activity'noReset': True # 保持應用數據不重置
}# 啟動Appium會話
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)# 等待應用啟動
time.sleep(5)# 找到并輸入用戶名和密碼
username = driver.find_element_by_id('your.package.name:id/username')
password = driver.find_element_by_id('your.package.name:id/password')
login_button = driver.find_element_by_id('your.package.name:id/login')username.send_keys('your_username')
password.send_keys('your_password')
login_button.click()# 等待登錄完成
time.sleep(5)# 檢查是否成功登錄,可以通過檢查特定元素是否存在來確認
home_element = driver.find_element_by_id('your.package.name:id/home')
if home_element.is_displayed():print("Login successful")# 關閉Appium連接
driver.quit()# 啟動logcat日志記錄
logcat_process = subprocess.Popen("adb logcat -c && adb logcat > monkey_test_log.txt", shell=True)# 啟動Monkey測試
os.system("adb shell monkey -p your.package.name -v 500")# 停止logcat日志記錄
time.sleep(10) # 等待Monkey測試完成并確保所有日志被記錄
logcat_process.terminate()# 分析logcat日志
with open('monkey_test_log.txt', 'r') as log_file:logs = log_file.readlines()for line in logs:if "ANR" in line or "Crash" in line or "Exception" in line:print(line.strip())print("Monkey testing and logcat collection complete.")
? ?以上就是對移動應用穩定性測試總結。