標籤:退出 介面 extend ext soft date 面向介面 自動化 get
一、封裝方法1、編程如何越來越快: 首先,需要經驗豐富,知識面廣。 其次,每一個熟練編程的人員,都會有自己的一個庫,解決各種問題、各種通用的方法函數。 同理,自動化指令碼也是編程,測試案例則為需求,UI自動化編寫雖然容易,但是介面變化快、維護龐大。所以封裝通用方法,是最快最容易的途徑。2、哪些方法需要封裝: 公用的操作方法 經常使用的步驟:超過兩次以上 經常使用的組件:輸入框、文字框、列表 經常操作的布局:多個組件組成通用的布局 經常操作的頁面:ui頁面由一個一個單獨Activity組成,就可以將Activity封裝成單獨的類 通用的工具函數:檔案操作、時間操作之類3、初級封裝: 通用方法庫:將通用的方法封裝在一個java檔案中,比如登陸、檔案操作、時間操作 專用方法庫:比如登陸專用的方法:qq登陸、微博登陸等 用例集:通過調用方法庫中的方法實現用例,這樣看起來簡潔清晰。4、設計一個用例的過程: 先編輯好用例執行步驟、順序 然後設計好對應的方法名 然後建立一個class將這些寫入,要將編輯好的用例步驟、方法名等作為注釋,這樣更清晰 比如設計簡單用例如下: Cer_MTBF_01:連絡人的添加和刪除 預置條件:1、在新增連絡人...之前通訊錄內無任何連絡人
| 執行步驟 |
對應方法 |
| 開啟通訊錄 |
openContent |
| 清空連絡人 |
clearContent |
| 建立連絡人 |
newContent |
| 確認連絡人建立成功 |
confirmContents |
| 刪除連絡人 |
deleteContens |
| 確認連絡人刪除成功 |
confirmDelContents |
| 退出通訊錄 |
exitContent |
二、介面化1、面向介面的變成也可以引入自動化用例編寫中。可以用到設計核心用例,基本核心用例20-30條,核心功能基本不會變,但是UI變化比較大,這樣我們沒必要把用例重新寫一遍,只要把方法重新實現一下。 設計用例與實現用例分離 正常化用例 多態-應用的多版本
三、組件化與布局化1、對常用的組件單獨編寫組件常用方法。我們最終擷取的每個對象都為某一個類型的組件 例如:對EditView設計通用的方法,首先想想你是如何測試編輯框的,將這些方法全寫在抽象的 EditView類中 擷取EditView對象 輸入文本 清除資料 判斷編輯框類型 判斷編輯框 各種異常與特殊方法預置、
四、介面化1、介面化知識應用由不同的Activity組成,那我們可以將每一個介面封裝成一個類,操作、方法、變數,也就是屬性和方法再單獨封裝。這樣只要哪個介面有變化,再修改對應的Activity就可以了。 執行個體: 撥號盤頁面 屬性: 常用的固定號碼,如:10086,10010,10000 常用的暗碼:*#06#、*#*#4636#*#* 組件ID:頁面各個組件ID按功能命名 頁面對象:頁面各個UI對象 方法: 輸入號碼 清除號碼、刪除號碼 撥號 其他設定(新增連絡人...、暫停、等待、傳送簡訊) 選擇號碼2、Activity查詢方法 方法1:有源碼,從Manifest檔案中擷取 方法2:使用命令查詢應用的全部Activity adb shell dumpsys package<包名> 方法3:查詢當前Activity棧定的Activity adb shell dumpsys activity 方法4:找到焦點Activity adb shell dumpsys activity | find "mFocusedActivity" 簡化搜尋字元 adb shell dumpsys activity | find "mF"
五、邏輯與資料分離1、實際用例編寫過程中有很多資料非固定的而是可變的如: 帳號資訊:郵箱帳號、無線登陸帳號、即時通訊軟體 邏輯控制:log輸出、代碼分枝切換 電話號碼 。。。。。對於可變的資料,我們應該剝離出來,使用一個資料類來進行控制和擷取 思路:我們單獨設計一個class,功能就是,從某個地方讀取變數,再賦值給我們設計好的變數。 2、資料擷取方式 1)從命令傳入參數:-e 索引值對 2)從檔案傳入參數:寫一個設定檔,檔案裡包含組態變數的資訊,放到手機目錄下,然後檔案讀取,賦值給我們的變數。 3)從雲端傳入參數:需要有一個雲端服務測試系統,用例通過POST請求,請求伺服器,伺服器上設定好資訊,伺服器再把資訊返回給用例,用例再把資訊賦值給對應的變數,然後其他用例再從資料類中讀取。 簡單一實例: 建一個管理資料的package 建一個資料類 設定變數 在寫一些擷取變數值的方法
public class Date extends UiautomatorBase{ public static String wlan=""; public static String QQ=""; public static String phone=""; } public void getConfig(){ wlan=""; QQ=""; phone=""; } }
Android UI自動化用例設計技巧