react-native 的e2e測(cè)試——detox簡(jiǎn)介

  1. e2e 測(cè)試的作用?
  • 提高信心
  • 只測(cè)試happy path, 快速反饋業(yè)務(wù)流是否正確的
  1. 什么是detox?
    一個(gè)在mobile app 上的端到端的自動(dòng)化測(cè)試框架

  2. 安裝和在CI 上部署
    官方文檔寫的很詳細(xì),一步步跟著走,順順利利的。。。

  3. 好處:

  • 灰盒測(cè)試,可以通過 TestID,Text,label 等定位元素,代碼的侵入性比較小
  • 官方的文檔寫的很詳細(xì),容易上手
  • 測(cè)試用例很直觀
await element(by.id('ButtonA')).tap();  
await element(by.id('ButtonB')).tap();  

detox的每一個(gè)步測(cè)試方法都是 async 的, 當(dāng) ButtonA 被點(diǎn)擊之后,App 的各種線程, animation, 網(wǎng)絡(luò)請(qǐng)求, 異步方法等等統(tǒng)統(tǒng)運(yùn)行完畢,App 完全空閑的時(shí)候 tap 方法才會(huì)resolve。

因此當(dāng)測(cè)試運(yùn)行到第二步的時(shí)候, ButtonB一定是處于可點(diǎn)擊狀態(tài)的, 不需要再用sleep或者wait方法來保證ButtonB的狀態(tài)。 這就是所謂的自動(dòng)同步(Automatically synchronized)。(同步指測(cè)試腳本和 App 的執(zhí)行是按預(yù)期順序執(zhí)行的)。

  1. 過程中踩到的坑:
  • 版本問題:node >=8.3.0
  • testID 的問題:全局統(tǒng)一,及時(shí)在不同的頁面不能用同一個(gè)testID
  • 當(dāng)頁面太長(zhǎng)的時(shí)候,某些元素在頁面的沒有顯示出來,這時(shí)需要 用swipe 或者是scroll 來模擬一個(gè)向上拖動(dòng)頁面的過程,使被測(cè)試的元素顯示出來才能進(jìn)行測(cè)試
  • 有時(shí)候 模擬器上的鍵盤連接到Mac 的鍵盤,默認(rèn)隱藏 模擬器的鍵盤,需要手動(dòng)調(diào)出 模擬器的鍵盤,不然 測(cè)試中一些需要輸入文字的測(cè)試會(huì)掛。。。CI 上這個(gè)問題常見,一直想辦法通過程序代碼的方式使模擬器使用自己的鍵盤,但還未找到辦法。路過的大神,如果知道,請(qǐng)不吝賜教,謝謝!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容