天天看點

《Android 應用測試指南》——第1章,第1.5節Android測試架構

本節書摘來自異步社群《android 應用測試指南》一書中的第1章,第1.5節android測試架構,作者 【阿根廷】diego torres milano(疊戈 d.),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

1.5 android測試架構

android提供了一個進階的測試架構,這個架構是junit的一個擴充,在标準junit的基礎上插入了友善執行上述測試的插件。有的情況下,我們需要再裝一些工具,而且內建這些工具大多情況下都很簡單和直接。

android測試環境的關鍵特性包括以下這些:

android在junit架構基礎上擴充了通路系統對象的方法;

通過模拟器架構可以測試應用和控制器;

提供了常用的、不同版本的系統對象的模拟器;

提供了執行單個用例、用例集的工具,無須模拟器;

提供測試用例、工程的管理工具,在adt的eclipse插件中,用指令行來控制。

1.5.1 模拟器

模拟器架構是測試架構的基礎。模拟器控制被測的應用,并且允許插入樁來模拟應用的某些部件的執行。比如,你可以在應用啟動之前建立模拟的context,應用程式将會用模拟的context來執行。

所有的應用程式跟周邊環境的互動都可以通過上述方式來控制。你可以将應用程式封閉到一個十分嚴謹單一的條件下來得到預期的結果,強行設定某些方法的輸出或者模拟contentprovider中的常量、資料庫、甚至檔案系統的内容。

一個标準的android工程都會有相應的測試工程,這個測試通常以test開頭。在test工程中,andriodmanifest.xml中定義了使用的機器。

舉個例子描述,假設你的工程配置檔案如框1.5所示。

框1.5 主工程的andriodmanifest.xml配置檔案

在這個項目裡,相關的測試工程配置檔案andriodmanifest.xml如框1.6所示。

框1.6 測試工程的andriodmanifest.xml配置檔案

這裡的模拟器包作為主項目包,帶着.test字尾。

定義模拟器的時候,會指定目标包和測試執行器,在這個情況下,預設的用戶端執行器是android.test.instrumentationtestrunner。

另外,被測應用和測試工程一樣,都是apk安裝的android程式。它們都在同一個程序中,是以,能通路相同的功能特性。

1.5.2 測試對象

在項目開發過程中,你的測試用例必須在不同的裝置上執行。從操作簡單、友善,到響應速度等方面考慮,都要求最後必須在具體裝置上測試,并且是在所有類型的裝置上測試。

當然,有的測試用例會在本地jvm虛拟機上執行,有的用例在開發機上執行,有的在dalvik或者活動虛拟機上執行,具體情況取決于測試用例的特點。

上述執行用例的方式都有各自的優缺點,幸運的是,你可以自由決定如何來執行你的用例。

仿真器是一個非常棒的執行平台,可能是最強大的,因為它可以讓你修改測試過程中所有的參數、配置以及各種執行環境。測試最根本的目的是讓你的程式能夠正确處理所有場景,是以,最好在程式釋出之前發現所有的問題。

性能測試需要使用真機,因為模拟仿真裝置多少跟真機會有不同的地方。隻有用真機才能體會到使用者的真實感受。渲染、滾屏、投擲以及其他場景都需要釋出之前用真機測試一次。