兼容性測試主要是指測試 Android 應用的功能, 在市面上全部的Android設備上可否正常運行。你們都知道,如今市面上的Android設備已經有幾千款,碎片化很是嚴重。特別在中國地區,各大手機廠商對手機系統的深度訂製,以及硬件的不一樣,特性代碼中操做機器的硬件部分,因爲機器的多樣性,差別性,一旦代碼對某類接口有所遺漏或者使用不當,就會出現各類異常。因此安卓應用上線前都會作兼容性測試。node
兼容性測試主要有手動測試、 自動化測試和雲平臺測試三種方式:react
咱們最經常使用的手工測試流程就是經過在Android設備上安裝被測應用-->啓動被測應用-->卸載被測應用,來檢驗以下兩個方面。 1.安裝包的安裝兼容性 2.穩定性android
最經常使用的方式是經過adb 命令啓動進行安裝和卸載。例如安裝包爲test.apk 包名爲com.sample.app,啓動Activity爲MainActivity。git
#安裝
adb install test.apk
#啓動
adb shell am start -n com.sample.app/.MainActivity
#卸載
adb uninstall com.sample.app
#覆蓋安裝
adb install -r test.apk
複製代碼
經過上述命令能夠進行app的安裝,啓動,卸載。可是這樣的話每次只能安裝一臺機器,當在多臺機器上運行進行此操做就會很麻煩,最好的方式就是用腳本管理起來。github
根據上面思想,藉助CukeTest工具(http://cuketest.com)進行腳本開發。shell
打開CukeTest,文件新建-新建項目;項目類型選擇基本項目,填寫項目信息,完成建立便可。 npm
在項目的根目錄下執行 npm install adbkit --save
完成abdkit 庫的安裝。bash
更改默認feature文件 填寫以下內容到 features/feature1.feature服務器
# language: zh-CN
功能: 客戶端兼容性測試
Android手機客戶端不一樣設備安裝卸載
場景: 獲取設備信息
假如獲取可用設備信息
同時安裝apk應用
而且啓動mainactivity
那麼啓動完成後卸載應用
複製代碼
設置默認超時時間 features/support/env.jsapp
const { setDefaultTimeout } = require('cucumber')
// 設置默認超時時間爲60秒
setDefaultTimeout(60 * 1000);
複製代碼
編輯腳本內容 features/step_definitions/defination1.js
const { Given, When, Then } = require('cucumber');
const path = require('path');
var adb = require('adbkit');
var client = adb.createClient();
var devices = [];
Given(/^獲取可用設備信息$/, async function () {
devices = await client.listDevices();
console.log("devices:", devices)
});
When(/^安裝apk應用$/, async function () {
let apkpath = path.join(__dirname, '../../apks/app-release.apk');
for (let device of devices) {
try {
await client.install(device.id, apkpath)
console.log("install ", apkpath, "to device", device.id);
} catch (e) {
console.log(device.id, "cant install the apk;")
}
}
});
Given(/^啓動mainactivity$/, async function () {
options = {
wait: true,
component: "com.reactapp/.MainActivity"
}
for (let device of devices) {
try {
//啓動activity
await client.startActivity(device.id, options)
} catch (e) {
console.log(device.id, "cant start the activity")
}
}
});
When(/^啓動完成後卸載應用$/, async function () {
let pk = 'com.reactapp'
for (let device of devices) {
await client.uninstall(device.id, pk)
}
});
複製代碼
整個目錄結構
點擊運行,便可自動進行安裝包兼容測試。
歡迎一塊兒交流學習。