Return to site

「自動化測試」菜鳥實習生 從做中學

· 團隊雜感

在8個月前,我開始了我的實習生活

我主要是負責撰寫及維護 MobileWeb、APP 的 自動化 End to End (E2E) test

E2E test 是什麼?

E2E test就是以使用者的角度出發,對真實系統(網頁、APP )進行測試

會從開啟瀏覽器開始,一步步的操作與輸入,讓瀏覽器與後端 API 進行互動

然後透過最終的顯示狀態來診斷其結果是否符合預期。

MobileWeb 的 E2E Test - Testcafe

我最開始接觸的 test framework 是 Testcafe

我覺得Testcafe 對初學者來說算是蠻容易學的工具

因為他可以使用錄製的方式,來將對網頁的操作轉換成程式碼(如圖一)

就能很簡單的製作出一個自動化測試腳本

不過相對於自己撰寫程式碼來說錄製會遇到更多的限制

(圖一)只要對左邊的網頁操作,右邊就會列出動作

像是之前我們有遇到幾個問題

第一個問題是只用錄製的話是無法處理 Native Dialogs,test case 會直接fail

解決方法就是在會遇到 Native Dialogs 的 case 都加上”setNativeDialogHandler(() => true)”

第二個問題是 Testcafe 執行速度太快,只要遇到瀏覽器回應速度較慢時,就很容易造成 case fail

這狀況又很常發生重要流程上(例如:加商品進購物車時)

所以我們後來的解決辦法是用 hooks 先確定 api 已經有回應了再繼續執行下去

(圖二) hooks 的寫法

(圖三) MobileWeb 模擬使用者登入並加商品進購物車

APP 的 E2E Test - Detox

最近 APP 雙平台正式上線,我也開始寫 APP 的 E2E test

想當初選 app 的 test framework 也是一波三折

原本是想使用Android Studio 的 Espresso Test Recorder

但後來發現它不太適合寫React Native 架構的 E2E test,所以最後我們是選擇 Detox

剛開始接觸 Detox,真的是滿滿挫折

像是一開始要建立環境,我原本覺得有官方的文件應該不難

但事情不是憨人所想的這麼簡單,背後還是有些他沒列,但我必須安裝的套件(例如:CocoaPods)

我們在設 testID 時就有踩到一個坑,當item頁推疊時,因為它們的testID都是一樣的

所以 Detox 就無法執行,我們的解決辦法是再加上父層的 testID (變化如圖四)

(圖四)寫法從第一行改為第二行

(圖五) 模擬使用者逛APP

E2E的維護

到目前為止,我們所寫的 test case 已經累積到137個,其中包含了登入、加商品進購物車、結帳等等重要流程

固定每天晚上會在 bitbucket pipelines 上跑一次 E2E test

當有發現 fail 時,就要快速的將它修好,讓 E2E 能維持在 All pass

當 test case fail 時,首先要先試試看能不能重現出來,基本上能重現出來的都好解決

因為能比較容易得找到問題點,通常都會是因為 UI 的變動所造成的,最怕的就是無法重現

就像前陣子在 bitbucket pipelines 上跑 E2E test 特別不穩定,幾乎都會出現 fail,但又重現不出來,這種狀況就很難處理

所以我通常都是會先把它記錄起來,然後再從截圖畫面及錯誤訊息看看有沒有辦法推測出 fail 原因

(圖六) 讓人心累的 Fail

(圖七) Test case Fail 的截圖畫面

(圖八) 令人感動的一週 All pass

來 Verybuy 的感想

我覺得我很幸運,能到 VeryBuy 來實習,學習到很多,也接觸到很多在學校不會接觸到的

工作環境很舒適,中午吃飽飯後還可以去拉花,喝個拿鐵放鬆一下

最重要的是大家人都很好很可愛,不管我問什麼問題,大家都會很樂意的回答我幫助我

真的非常感謝 VeryBuy 的各位

未來也請大家多多指教了!

by 芳

All Posts
×

Almost done…

We just sent you an email. Please click the link in the email to confirm your subscription!

OKSubscriptions powered by Strikingly