QA — Automation Engineer 日常都在做什麼?以 LINE SHOPPING 為例

 News from:  

因為實習而有機會接觸到QA工程,以新手的角度記錄有關QA工程的一切; 也希望讓大家多方面認識QA、了解QA、愛用QA。嗨,大家好,我是 LINE Taiwan Engineering 的伊涵。我在去年 7 月以 TECH FRESH 的身份加入 LINE Taiwan,目前作為一個 Automation Engineer,在 LINE 購物負責自動化測試方面的工作。

在這篇文章中,我將以實習生的角度,概念式地介紹 Automation Engineer 在 LINE 購物開發過程中,扮演什麼樣的角色。


前言

QA「只是」在測試嗎?試著想像一下,你下載了一個 App,然後發現持續卡頓、甚至有閃退的情形,或總是找不到想要的功能,這時候你會怎麼做呢?繼續把時間耗在這個 App 上嗎?還是…刪掉改載別的?又或是,上網搶票(或是搶疫苗),打開 URL 結果頁面一片空白、怎麼重整都是 404 Not Found,這時候肯定會有種「歐,這網頁有點難用欸,有沒有別的可以用呀」的感受?

為了避免上述的狀況發生,QA Engineer 們會進行各式各樣的測試,在軟體開發過程中層層把關、並在產品發佈後,持續扮演守護神的角色。

QA Automation 就等於 QA 的全部嗎?

在 LINE Taiwan,QA 團隊由三種角色組成:Service QAAutomation EngineerTest Engineer。下圖簡潔地呈現 QA 在開發團隊中扮演的角色、與彼此之間的關聯是什麼。


Service QA

這個角色負責統籌 QA 的工作如何進行、並且分配由誰負責;與 Dev 確認測試必須涵蓋的範圍、並藉以制定 Test Plan;同時也是對外的聯絡窗口,與 PM 釐清 Spec 與需求。作為 Release Manager,經常需要與大家溝通排時程,協調 Release 範圍,以幫助產品的上線更為順利。

Service QA 通常是對 QA 工作非常有領悟力與覺察力、甚至是有經驗的人,清楚了解整個專案的運作流程,並且能夠精準掌握行程與概況。

Automation Engineer

這個角色專注在協助測試更為有效率、並盡可能運用自動化方法,發現更多產品的潛在問題。經常需要開發測試工具以協助手動測試,以及利用 Performance Test 檢驗服務所能承載的流量數,幫助 Dev 與 PM 更了解現階段產品的能耐,以為未來制定更合適的開發計畫。Health Check 與 Monitor 機制亦是 QA Automation 工作的重要一環,這項機制能夠持續監測已上線服務的運行狀態,提前預警系統潛在的風險,以期讓使用者感受不到產品有問題,提升信任感。

Test Engineer

這個角色則專注於追蹤每個 Feature,進行 Issue Tracking。在每個新的 Feature 被開發完成時,會由相對應的 Test Engineer 進行 End-to-End Test,確保功能達到先前設定的通過標準,才會被允許部署到新版本的環境。當然,除了上述的 End-to-End Test之外,也會進行 API Test、Integration Test…等諸多不同類型的測試。

以下篇幅將針對 Automation Engineer 的工作,更深入介紹。

那 Automation 在做些什麼呢?


針對 LINE 購物 Automation 的工作範疇,可以大致上分為以下 5 點:

  • Test Automation
  • Performance Test
  • Health Check / Monitor
  • CI / CD(Jenkins / K8s)Process Improvement
  • Tools Generate

⚙️ Test Automation

LINE 購物開發團隊採用 Agile Development 中的 Scrum 開發框架。在每個 Sprint 週期中,每當有新版本部署完成,Test Automation 機制就會被觸發,針對所有功能進行 Smoke Test、Functional Test、Regression Test。

Smoke Test

情境較為簡易的測試,確保基礎功能一定沒有壞,且通常執行速度較快。例如:頁面上的元件必須正確顯示。

Functional Test

情境較為複雜的測試,確保,通常執行時間較長。例如:在已登入的狀況下,在LINE 購物搜尋欄輸入關鍵字,必須能成功領取點數紅包。

Regression Test

針對此次改動後,可能會受到影響、且之前已經 Release 過的功能,進行測試,已確保新功能加入後,不會導致舊功能產生回歸性錯誤。

而 Automation Engineer 的工作,正是建構並維護 Test Automation 腳本、與其運行環境,這項工作的主要目的在於盡可能減少手動測試時間。

⚙️ ️Performance Test

某些功能可能會牽涉到效能問題,例如 LINE 購物直播,必須確保同時間在線觀看直播的用戶都有良好的使用體驗,這時候就會運用 Performance Test 來衡量系統最高可承載的流量、何時以及在什麼方面會遇到效能瓶頸,也會觀察在運算資源吃緊的狀況下,系統是否還能正常運作,當然,從錯誤狀態回復的能力也是這個測試類型的重要議題之一。

Load Test

在配置的系統資源中,評估系統能承載的最大流量,同時需注意反應時間是否有在當初設定的標準值內,而這個標準通常是與 PM、Dev 討論後共同決定的。

Stress Test

在系統資源吃緊的狀況下,觀察系統是否仍能正常運作。可能的資源例如:CPU、Memory、Disk、Disk I/O、File I/O、Database Connection、Database Throughput…等。

Spike Test

當流量瞬間大量增加或減少時,觀測系統會如何反應。

Performance Test 的目的在於找出系統的流量極限與瓶頸點,幫助 Dev 了解現階段開發的狀況、並更有方向的修改程式碼,也因為有明確的評估數據,所以讓 PM 夠夠更清楚掌握服務目前的完成狀態。

身為一位 Automation Engineer,會需要許多相關的背景知識,來發掘正確的問題點、輔助 Performance Test 的執行,例如:系統出現效能瓶頸時,究竟是因為 Database 到達 Query 上限了?還是 Pod 資源不足以負荷當前的流量數?或是,如何利用自動化工具模擬使用流量、如何運用圖表更簡單好懂地呈現測試結果等等。

⚙️ Health Check / Monitor

為了確保服務有持續運轉,我們會實作一些驗證機制去確認服務的運行狀態。在例行的時間內,評估並檢測系統是否有持續按照標準執行。

例如:LINE 購物中,每天都有許多排程會被執行,且每筆排程的開始時間與長度皆有差異,而為了確認這些排程的行為是否有符合預期,我們建立了每天、每小時、每分自動觸發的 Health Check 與 Monitor 機制,當排程行為異常時,就會發送通知給相關的人員作即時處理。

關於這項機制的更多細節,歡迎報名參加今年五月的 Test Corner!屆時將更針對技術細節,介紹 Monitor 機制是如何完成、在實作過程中遇到的問題、以及當時的解決方式。

Health Check 與 Monitor 的重要性在於,持續監控上線中的服務,使問題發生的第一時間便能立即被處理,盡可能讓使用者感受到服務的流暢,並增加對服務的信任感。

⚙️ CI / CD – Delivery (Release) Process Improvement

我們會運用 CI/CD 工具,輔助上述提及的各類測試。

以 LINE 購物而言,有部分的 Monitor 被建置在 Jenkins 中,在每天固定時間自動觸發執行,並在完成時留下當次的結果紀錄;如果過程中有異常狀況發生,Jenkins 便會發送通知給相關人員,以利後續處理。

Automation Engineer 們還會做一些事幫助 Delivery Process 更順暢,包括:

  • 將 Release 的流程自動化
  • 建立通知發送的自動化系統,例如:提醒 Sprint 的時程、當週 Weekly Report 推播、提醒 Release 進程…等。

⚙️ Tools Generate

開發更便利的工具以協助測試、幫助 Dev 簡單快速了解服務狀態,亦是 Automation Engineer 的工作中不可或缺的一部分。那所謂的工具,指的是什麼呢?

舉個例子, LINE 購物由前端與後端複雜的機制構成,有時後端還沒開發完成、前端就已經完成了並準備進入測試階段,這時候我們就會使用 Mock Server 送出假資料,讓負責串接與測試的工程師不需要空等。

建立並維護易於使用的 Mock Server 便是屬於 Automation Engineer 的工作。當然還有更多其他的工具,例如:End-to-End Test 的線上 Dashboard、Performance Test 的測試結果圖表,主要目的都是讓相關人員更能掌握現行狀態、提升開發效率與測試準確率。

結語

根據以上介紹,我們可以總結出 3 點,Automation Engineer 的任務是:

  • 開發工具以協助手動測試、並幫助 Delivery(Release) Process更順暢
  • 利用 Performance Test 檢驗服務的承載能力
  • 建立並維護服務的 Health Check 與 Monitor 機制以確認服務的運行狀態
雖然並不是所有測試都能被自動化,但不可否認,自動化是測試工程中相當重要的一塊,它幫助我們省下寶貴的時間,將時間留給未知、而不是用來確認已知的正確



留言

熱門文章