工具背景
對于測試人員來說,從用戶角度進行測試無疑具有重要的意義。對手機行業來說,如何模擬真實的用戶場景是擺在手機測試人員的一個難題。
眾所周知,我們研究問題的時候,常常會從時間和空間兩個角度去衡量和分析?;氐绞謾C的使用場景來看,使用了一段時間的手機,通常會具有以下兩個特征:
1) 應用數據多
2) 應用使用時間長
應用數據多是指手機里面的應用在經過用戶長時間使用后,會產生很多的應用數據,比如通信錄里面有上百條聯系人,通話記錄中有百十條記錄,短信中有若干短信,圖庫中有若干圖片等。應用使用時間長是指手機用戶對一些關鍵的應用會持續使用,比如電話、短信、聯系人。一般這些應用從拿到手機后,基本就不會被替換不會被卸載。當然少數酷愛刷機的用戶除外。
對于手機測試人員來說,刷機正是我們每天測試的第一件事。而“不巧”的是,從用戶的角度來看,使用時間越長,產生使用數據越多的手機,出現問題的情況也越普遍,出現的問題也越難復現,而同時出現的問題也越會讓用戶感覺不可理解和接受,因此如何快速構造用戶場景,如何最大限度的模擬用戶的使用場景,對手機測試人員來說至關重要。
工具簡介
從上文分析中我們看到,構造手機的用戶場景,無非就是從空間(應用數據)和時間(應用使用時間)兩個維度去努力:
圖1 手機用戶場景
就一般情況而言,在正常的用戶使用場景下,應用數據和應用使用時間是直接相關的,即應用使用時間越長,應用的使用數據越多。但對于手機測試人員來說,在快速迭代的開發和測試模式驅動下,我們不可能有也不必要用很長的時間去準備使用數據,那么如何去模擬構造用戶場景下的數據呢?
再來看上面這兩個維度,對于使用時間,我們可以讓自動化腳本定向循環去執行,或者用Monkey Script不定向循環去操作手機,但這兩種執行方式產生的數據都不符合用戶場景下的應用數據預期。故而對于應用使用數據,開發相應的初始化工具就顯得很有必要。
一鍵初始化測試環境工具就是基于這樣的考慮而開發,該工具從用戶的角度出發,可以一鍵構造/清除真實用戶場景,減少測試人員的測試環境準備時間,從而最大限度模擬用戶角度對產品進行功能測試和壓力測試。該工具可以
ü 一鍵初始化測試環境。支持包括核心app在內的多種應用的一鍵測試初始化:聯系人、短信、彩信、文件、文件夾、圖片、視頻、音樂、小說、電話、記事本、日歷。
ü 一鍵清除測試環境。對應初始化測試環境功能,提供一鍵清除功能。
ü 從數據維度對手機進行壓力和性能測試。支持百萬數量級應用數據快速填充,為對手機進行壓力和性能測試準備環境。
ü 提供命令行方式運行支持。全面支持命令行方式運行,從而方便自動化測試、壓力測試和Monkey測試。
ü 提供工具實現層jar包,以便進行二次開發和集成開發。封裝工具實現層,以供測試人員根據實際需要進行二次開發和集成開發。
工具整體架構
工具是經典的兩層架構,如下圖,實現層是負責各類應用具體數據初始化實現的,包含聯系人的創建,短信/彩信的初始化等等,表現層是在實現層jar包(InitData類)的基礎上,實現的和用戶進行交互的界面。實現層與表現層的分離為后續實現層的復用提供了條件。
圖2 初始化工具整體框架
具體到實現層來說,考慮到不同的應用數據結構不同、存儲方式不同、數據的差異化等需求,數據的初始化可以分為以下兩類:
1) 利用Provider插入的數據。工具中這類應用主要包含聯系人、短信、彩信、電話、記事本、日歷。
2) 利用文件流方式生成的數據。工具中這類應用主要是SD卡中的應用數據,包含文件、文件夾、圖片、視頻、音樂、小說。
下面會分別對這兩種插入方式做詳細實現方式的介紹。
工具具體實現
初始化數據的第一步當然是準備數據源,然后跟進先前制定的數據生成規則,在一定的系統環境因素約束下,生成一系列個性化的初始化數據,最后利用系統Provider或文件流交互的方式把生成的數據放到應用中,下圖給出工具實現的邏輯示意圖:
圖3 初始化數據流程
本節將在上一小節整體實現框架的基礎上,具體分析下實現層兩種數據初始化方式的實現細節。
一、利用Provider方式的數據初始化
Android系統架構為了使一些重要的公用數據能夠方便地在各個應用之間進行交互,提供了Content Provider來封裝數據訪問和存儲的具體實現。利用Content Provider進行數據初始化的方式可分為以下四個步驟:
1) 獲取要初始化應用資源唯一標識符。
圖4 資源唯一標識符
初始化數據的第一步當然是找到被初始化的應用標識符,android系統中的每一個Content Provider都有一個唯一的名字,它是其它應用和該Provider交互的一種便捷途徑。上圖是一個Provider的通用表達,其中A表示標準前綴,B表示URI,C是具體路徑,D是URI中的某個數據ID(如果存在的話)。
2) 準備數據源,并制定數據生成規則。
圖5 準備初始化數據和制定數據生成規則
在獲取到被初始化應用的資源標識符后,根據應用數據結構的表間依賴和表內字段準備一定格式和數量的源數據,然后結合應用本身的表現制定數據的生成規則。
原文轉自:http://qa.baidu.com/blog/?p=709