2015年8月31日 星期一

Android 自動化壓測工具-Monkey Test (模擬器篇)

大家好久不見~ !!!

話說怎麼最近文章產量這麼少?
其實不然,實在是真的太忙了,之前才剛忙完兩大專案的壓力測試沒多久,緊接著又有其他專案,突然諮詢我們一些關於資訊安全的問題,像是弱點掃描、源碼檢測等等。

幾乎什麼疑難雜症都來尋求我們解答或諮詢,還好本部門各個都是硬底子的「真金」不怕火煉,雖然都快成為名符其實的 Q&A 部門。^^

不過話說回來,之前的一個專案客戶有用一個測 Android Client 的壓測工具「Monkey Test」,這是 Android 原生指令介面的壓測工具。

其實不是很推這一套壓測工具,不是因為要用指令麻煩。而是因為它的測試腳本,完全是隨機沒有固定腳本的亂按。不過這也是有好處的,說不一定在不規則的測試中,可以不經意的測出 Test Case 沒涵蓋到的錯誤。

接下來就言歸正傳,談談我們今天的主角 —Monkey Test,以下是我們這一節的圖解大綱:

Step 1: 下載
請到下列官網下載 Android SDK Tools 或下面的超連結直接下載
https://developer.android.com/sdk/index.html
installer_r24.3.4-windows.exe


接著請到以下連結下載 JDK 6 以上的版本


Step 2: 安裝
在安裝 Android SDK Tools 之前,請先下載和安裝 JDK 6 以上的版本

JDK 6 安裝步驟
點兩下 jdk-8u60-windows-x64.exe 或 jdk-8u60-windows-i586.exe 開始安裝
(請依目前使用作業系統版本,選擇安裝)








最後,按一下 Close 完成安裝。
可以開啟控制台底下的「程式和功能」確認有無安裝成功。

Android SDK Tools 安裝步驟
按兩下 installer_r24.3.4-windows.exe 開始安裝









按下Finish完成安裝,並第一次開啟 Android SDK Tools

Step 3: 環境設定
將 Tools 和 Android 6.0 ~ 4.0.3 版本都打勾安裝




開啟 Android SDK Tools 的 AVD Manager 來增加一台 Android 虛擬機


從 Device Definitions 選擇所要的 Device Template 之後按 Create AVD

選好 CPU 和 Skin 之後按 OK


選取 Device 之後按 Start

請直接按 Launch 開啟模擬器



第一次啟動模擬器

Step 4: 使用方法
開啟 Cmd 執行指令到 C:\Users\使用者帳號\AppData\Local\Android\android-sdk\platform-tools 路徑下

執行指令 adb devices 找到 Device 名稱是 emulator-5554

開始執行 Monkey Test 測試指令
adb -s emulator-5554 shell monkey -v 500

測試過程中,模擬器的畫面會跟著測試而改變

測試完成後 cmd 視窗如下

Step 5: 測試分析
所下的測試指令和參數分析如下:
adb —用程式 adb.exe 呼叫 Monkey Test 做測試
-s emulator-5554 —指定測試模擬器名稱
shell monkey —呼叫 Monkey Test 程式
-v 500 —指定測試 500 個活動

由上圖的測試結果,可以看到總共注入 500 個活動測試,測試時間是 20664 ms,測試結果是 // Monkey finished 完成的

Step 6: 補充說明
如果需要指定測試某個 Package,需加的參數如下:
-p Package Name —例如 -p com.android.browser

Package 列表的指令:adb shell pm list package -f

如果 Monkey Test 測試錯誤,測試報告結果會如下圖:

下一節我們再來介紹 Monkey Test 是如何透過真正的手機做測試的。這一節就先介紹到這裡,我們下次見 ~掰掰!

~ See you ~

參考出處:
http://developer.android.com/
http://www.oracle.com/technetwork/java/javase/downloads/index.html


2015年7月29日 星期三

WAPT Load Testing with JSON Format

好久不見了~ 大家都還好嗎?
最近真的忙到從「太陽哥」快變成「太陽餅」了!!! XD
因為最近公司的兩大事業群,都有跨足的專案,也剛好都有 Load Testing(負載測試)的需求。所以身為公司「殷殷美代子」的我,是時候該出動啦。
剛好可以利用這個機會將一些壓測心得,分享給大家。

廢話不多說,直接切入我們的正題「WAPT Load Testing with JSON Format」,不免俗地也是先來一張這節的圖解介紹:

這一節會用華文來解釋,因為有關 WAPT的華文相關文件真的有點少,所以在這節開始會適度的調整一下風格,盡量以華文來做說明。

Step 1: 下載官方測試版 JSON格式的模組。
直接下載:waptjsonmodule.exe

Step 2: 如果有開啟 WAPT Pro 3.5請先關掉,不然也會跳出視窗,要求先關掉主程式才能安裝的訊息。

Step 3: 在關掉主程式後,按兩下 JSON模組安裝程式後開始進行安裝。






Step 4: JSON模組安裝完成後,打開WAPT Pro 3.5主程式,到 Help> Modules Registration> All installed modules are registered 完成註冊。非註冊版可套用5為虛擬測試者或不超過20個腳本的測試者。(一個JSON模組要250鎂,大約是台幣7500塊左右)

Step 5: 在安裝完成 JSON模組後,會有2個內部設定用的新功能 JPath和 JSON Text 。

 Step 6: 打開之前錄製的腳本看 Response Body是用 Text格式,選擇 View as: Json就可以看得很清楚。


Step 7: 用 JPath的方法設定參數:
1. 在 Response processing按 Add

2. 在 Edit Variable的 Name設定變數名稱「result」(可參照 Response Body的 JSON格式來命名)
3. 在 Calculate the value of this parameter as the concatenation of the following functions: 按 Add

4. 在 Type: 選擇 JPath和 XPath: 輸入「/result」,在 Read JSON message from 選擇 "The server response to this request"(如果要選擇的資料來源是在之前所設定的變數,請選擇 Variable

5. 都做好設定後,可按一下 Test做擷取資料測試,檢查是否符合預期的 "值"

Step 8: 用 JPath的方法取得參數中的參數值:
1. 如果需要的值無法在一次參數中取得時,就會用此方法做二次取值法
2. 如同 Step 7的作法,在 Response processing按 Add

3. 在 Edit Variable的 Name設定變數名稱「ProjectID」(可參照 Response Body的 JSON格式來命名)
4. 在 Calculate the value of this parameter as the concatenation of the following functions: 按 Add

5. 在 Type: 選擇 Search parameter和 Index: 輸入「1」在 Left boundary輸入「ProjectID":」在 Right boundary輸入「,」在 Searches the選擇 Variable: 按 Select... 選擇之前所設定的變數「result」(左右兩邊的取值,可以參考之前「result」變數值做選擇「如下圖3」,也可以在取值後按 Test反覆測試直到取得所需的值)



6. 按 Test做取值測試,終於取得所要取代的變數值「ProjectID」(可以比較取得的值,是否跟 Response Body內的值相同)


Step 9: 套用變數的方法:
1. 選擇 Properties > POST Parameters 會看到改成變數的值 Name「projectId」和 Value「10209」按兩下

2. 檢查 Name:「projectID」在 Calculate the value of this parameter as the concatenation of the following functions:「10209」按兩下

3. 將 Text:「10209」改成變數值「$Var(ProjectID)」


4. 按一下 Test測試所擷取的值是否正確「10209」

Step 10: 設定變數值為「$Var(ProjectID)」的技巧:
1. 在 Properties按一下 Use Variable...選擇要取用的變數「ProjectID」

2. 會看到 URL Path: 多出的「$Var(ProjectID)」就是下面 Value設定要用到的變數值

Step 11: 結論:
取值設定變數的地方,多數都在「Response processing」>「Response Body」

帶入變數值的地方,多數都在「Properties」>「POST Parameters」

經過以上的說明,相信大家對於 WAPT的 JSON格式使用方式,應該有比較清楚的瞭解。
雖然沒有很完整的使用說明,不過應該足以應付基本應用上的需求。
以上都是在執行專案時會遇到的經驗談,如果各位真的有需要更詳細的說明,可以直接參考以下這個官網連結,也可以直接在此留言。
http://www.loadtestingtool.com/help/modules-json-jpath.shtml

這節的說明就先到這裡,我們下次見,掰掰!

~ See you ~

參考出處:
http://www.loadtestingtool.com/help/modules-json-jpath.shtml