Android:自動化兼容性測試

主要內容

  • 爲何要作android的兼容性測試
  • 兼容性測試方法
  • 自動化進行兼容性測試

爲何要作Android的兼容性測試

兼容性測試主要是指測試 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

環境搭建

  • 配置sdk (自行網上查閱資料本機安裝sdk)
  • 安裝node.js庫 adbkit (https://github.com/openstf/adbkit)

打開CukeTest,文件新建-新建項目;項目類型選擇基本項目,填寫項目信息,完成建立便可。 npm

image.png

在項目的根目錄下執行 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)
    }

});
複製代碼

整個目錄結構

image.png

點擊運行,便可自動進行安裝包兼容測試。

歡迎一塊兒交流學習。

qrcode_for_gh_5359115d566d_258.jpg
相關文章
相關標籤/搜索