- e2e 測(cè)試的作用?
- 提高信心
- 只測(cè)試happy path, 快速反饋業(yè)務(wù)流是否正確的
什么是detox?
一個(gè)在mobile app 上的端到端的自動(dòng)化測(cè)試框架安裝和在CI 上部署
官方文檔寫的很詳細(xì),一步步跟著走,順順利利的。。。好處:
- 灰盒測(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í)行的)。
- 過程中踩到的坑:
- 版本問題: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)不吝賜教,謝謝!