小程序自動化
2023-02-20?
圍觀熱度 1168?小程序/H5/公眾號
傳統(tǒng)的 Web 應用程序擁有 Selenium 這樣的測試工具,而小程序由于獨特的雙線程設計和原生組件渲染,開發(fā)者無法脫離開發(fā)者工具,像 Web 一樣寫自動化測試。即使用某個框架兼容 Web 和小程序,然后通過 Web 測試來覆蓋小程序的代碼場景,依然會存在很多與真實運行環(huán)境脫離的問題。
例如,京東、拼多多、微保等較大型的小程序頁面多達上百個,如果每次變動都無法覆蓋完整甚至是主流程的測試,就要消耗大量的人工資源來確保項目的正常運行?,F(xiàn)在,開發(fā)者工具為小程序提供了對應的方法來實現(xiàn)測試的自動化。雖然開發(fā)者目前只能通過寫腳本的方式來進行自動化測試,但是相信在不久的將來,官方會給開發(fā)者提供更加便利的功能。
1 小程序自動化
SDK小程序自動化 SDK 為用戶提供了一套通過外部腳本操控小程序運行時的方法,從而達到小程序自動化測試的目的。
簡單來說,它是一個可以讓你控制小程序運行的工具,目前 SDK 主要包括以下 4個部分。
(1)Automator:該模塊提供了啟動及連接開發(fā)者工具的方法。
(2) MiniProgram:該模塊提供了控制小程序的方法。
(3) Page:該模塊提供了控制小程序頁面的方法。
(4) Element:該模塊提供了控制小程序頁面元素的方法。
擁有了這個 SDK,我們就仿佛擁有了超能力,可以控制小程序跳轉(zhuǎn)到指定頁面,獲取小程序頁面數(shù)據(jù),獲取小程序頁面元素狀態(tài),觸發(fā)小程序元素綁定事件,調(diào)用wx 對象上的任意接口,甚至可以往 AppService 注入代碼片段。此時此刻,你是不是跟我想的一樣:我們通過這個 SDK,能做到的事情難道只有自動化測試這一件嗎?發(fā)揮你的想象力吧!
2 測試框架結(jié)合
如果你之前使用過 Selenium WebDriver 或者 Puppeteer,就會知道 SDK 的工作原理是類似的。因為小程序的運行環(huán)境與瀏覽器有很多不一樣的地方,所以我們可以使用小程序自動化 SDK 來控制小程序。SDK 本身不提供測試框架,可以結(jié)合其他的 Node.js 測試框架使用。
3 真機自動化
這套自動化 SDK 支持在開發(fā)者工具中運行,除了能夠控制開發(fā)者工具中的小程序模擬器,還支持遠程調(diào)試控制真機(目標機器上的基礎庫版本需要為 2.7.3 及以上),從而達到在真機上進行自動化測試的目的。
啟動真機調(diào)試可以通過 SDK(在測試腳本開頭使用 miniProgram.remote 接口)啟動,也可以手動啟動開發(fā)者工具的真機調(diào)試,然后再運行測試腳本來實現(xiàn)真機上的測試。
或許以后會出現(xiàn)這樣的產(chǎn)業(yè):提供各式各樣的云真機平臺,來進行小程序兼容性的自動化測試。
4 小程序自動化框架 Minium
基于小程序自動化 SDK,2019 年 8 月官方推出了小程序自動化框架 Minium 的公測。Minium 是小程序/小游戲自動化測試框架 MiniTest 的一部分,支持 IDE、iOS、Android 三端運行,旨在幫助開發(fā)人員和測試人員解決小程序的自動化測試難題。
官方文檔中對 Minium 進行了詳細介紹。Minium 提供了 Python 和 JavaScript 版本。使用 Minium 可以進行小程序 UI 自動化測試,但是 Minium 的功能不止是 UI 自動化,還可以用來進行函數(shù)的 mock,可以直接跳轉(zhuǎn)到小程序某個頁面并設置頁面數(shù)據(jù),做針對性的全面測試。這些都得益于我們開放了部分小程序 API 的能力。
Minium 主要是供測試人員使用的框架,它的便利性體現(xiàn)在以下 3 個方面。
1.抹除了平臺差異,支持一套腳本,iOS、Android、模擬器三端運行;
2.同時支持測試 UI 和 API,可以結(jié)合 UI 和頁面數(shù)據(jù)檢查來驗證結(jié)果;
3.打包測試框架,除了 SDK 之外,還集成了執(zhí)行測試用例的命令行工具、豐富的測試配置以及一份包含截圖、錯誤堆棧、腳本 log 和小程序 log 的簡潔的測試報告。
而對于開發(fā)人員來說,更好的選擇是使用自動化測試 SDK,自行用 JavaScript 或TypeScript 語言來編寫