LINE 開發社群計畫: 20190903 Test Corner @LINE

大家好,我是 LINE Taiwan Technical Writer – Claire Wang。LINE 致力於舉辦對內的技術交流、教育訓練,以及對外的社群聚會、校園演講、開發者徵才日與開發者大會等各式各樣的活動。我們希望創造更多技術分享與跨國交流的機會,同時持續招募優秀人才加入 LINE 台灣開發工程團隊! 

今晚我參加了充滿創新精神的 Test Corner meetup,和與會者一起探索測試的奧義,本次聚會的各種巧思令人耳目一新,充滿社群活力的氛圍更讓我跟著熱血起來,一起來感受本次聚會的魅力吧!

KKTIX 活動網頁: 活動網址

今晚的 Test Corner meetup 特別由高挑美麗的主持人 – Weiting 幽默開場,介紹本次聚會採用雙軌並行的創新模式,讓與會者可以自由選擇參加 tech sharing 講座或 workshop,按照個人需求更有效率地學習:講座的部分由 LINE Taiwan QA lead – Marc Lihan 以 LINE MUSIC 為例,說明 LINE 全新服務的開發流程,並由 LINE Taiwan QA engineer – Miki Liao 分享 LINE TRAVEL 自動化測試採用的框架與機制。Workshop 的部分,則由 QA engineer – Bryan Liu 帶領與會者以 Hands-on 的方式,實地操作 Cypress。接著 LINE Taiwan Technical Evangelist – Evan Lin 也登台介紹 LINE Engineering Blog、career、LINE developer OA 等 QR code,幫助與會者更快找到 LINE 開發相關資源及職缺訊息。

How LINE Runs a Product with LINE MUSIC as Example / Marc Lihan

投影片

講座第一部分,由 LINE Taiwan QA lead – Marc 分享 LINE 開發服務的流程,並以 LINE MUSIC 為例,具體說明全新服務成形的過程。Marc 於開場時先說明 LINE 軟體開發的 task force 與每個角色的職責:在 business 面向,會交由 operations、marketing、strategy 等團隊導入市場。而在產品面向,有 planner、developer、QA 等角色進行規劃、開發、測試等,讓產品趨於完美。以 LINE MUSIC 為例,在 pre-production 階段,開發團隊會先鎖定目標族群,進行服務開發時便可根據潛在使用者的屬性、偏好、習慣等進行設計。在 post-production 階段,則以編輯精選、潮流主題、合作夥伴等方式讓音樂曝光。而 Marketing 的部分透過多種 online promotion 管道與 newsletter、演唱會等線下管道,並 monitor 各種成效指標,達到宣傳服務的目標。在 business strategy 層面,則是利用 SMART (Specific / Measurable / Achievable / Relevant / Time-framed) 原則設定目標及衡量成效,藉由各種 review 幫助產品進化,以貼近瞬息萬變的市場需求。Monitor 功能成效的部分,藉由 rating、分析問題等方式動態修正服務,確保服務的品質。

進行開發時,必須先以多項 theme scoring 評估各種功能的重要性,確保最重要的核心功能都被納入服務。之後便進入 user research 的階段,透過分析 real user 的屬性,以及對於服務功能的反應了解 pain point 作為修正的依據,讓服務更能滿足用戶的期待。在服務成形後,透過技術文件幫助用戶了解服務的特性與使用方式,這個階段是由 designer 利用不同的工具精準定義 spec.。

Marc 也不藏私分享 LINE MUSIC development modules,說明包括音樂的來源、前端的呈現、與 server 的連接、整合會員付費與 LINE login 的機制、用以開發的 LINE MUSIC 的 framework 與工具,以及進一步利用 MUSIC 進行客製化的設定手機鈴聲、背景音樂等,讓 LINE MUSIC 發展為完整的服務。在 server-side deployment 以 microservices 的概念串接不同類型的 server ; 相對的,在 client-side deployment 是透過 Jenkins 自動化將最新版服務提供給用戶。

API 管理的部分由 server developer 及 Taiwan developer 跨國合作,持續更新 API 技術文件,也運用 Postman 進行基本的試用與測試,找出 API 的瓶頸並加以解決,以確保功能與穩定度。Marc 也強調幾個小技巧,包含壓力測試、與開發者密切合作等,接下來,便是藉由 App daily build、automated test、deploy 等步驟,針對 ANDROID 與 iOS 進行 mobile automation。

Marc 相信透過與 business team 密切合作,以及對每個角色職責的信任與尊重,全新服務的開發將更加成功! 另外,也提醒與會者在開發服務時應善用各種工具,以提高部門間協作的機會。最後,千萬不要忘記下載並訂閱 LINE MUSIC! Marc 今晚的分享吸引與會者踴躍發問,讓今晚的分享充滿互動與交流的火花,以下節錄 2 題精彩問答,希望能為更多讀者帶來幫助:

Q1: Beta 與 RC (staging) 環境都適用於 QA,請問你如何決定在什麼環境中測試哪個 case 呢? 

A1: 在開發人員完成 code review 後,merge code 將會觸發自動部署至 Beta 環境,QA 便可開始測試新功能 ; QA 會在 Beta 環境中執行所有新功能的 test case。而在 RC 環境中,我們會為所有 (包括舊的及新的) 功能執行簡單的 regression test case,以確保新功能上線後不會造成任何 side effect。

Q2: 請問 LINE MUSIC 的 AI 推薦功能是如何進行測試?

A2: 由於一開始不清楚推薦功能模組的正確結果應如何定義,因此無法直接進行測試,在 pre-production 階段,此功能為用戶推薦了許多老歌,於是我們花了數週的時間進行內部用戶測試,以提高推薦功能的精準度。我現在就很喜歡 LINE MUSIC 的音樂精選推薦,並相信隨著用戶數量增加,推薦功能的表現也會越來越好。

How We Test in LINE TRAVEL That You’ll Love in the Future / Miki Liao

投影片

第二部分的講座,由 LINE Taiwan QA engineer – Miki Liao 透過「旅行的意義」介紹 LINE Taiwan QA 團隊採用哪些框架與作法進行 LINE TRAVEL 的測試。LINE TRAVEL 利用 Cypress 框架將搜尋、訂房等功能自動化,之所以選擇 Cypress,是因為它的執行速度快,且 log 紀錄非常清楚。透過自動化測試,LINE TRAVEL 得以實現訂房、優惠券等相關功能測試,例如驗證優惠券期限、商業邏輯是否正確,以及流程是否流暢,並藉由 automation demo,具體點出 LINE TRAVEL 數項功能的測試重點。講者接著提出 agile testing lifecycle 說明完整的 LINE TRAVEL 測試流程包含哪些元素。而其中持續整合與持續部署又是如何被落實呢? 答案是經由 unit test、analysis 與 integration test,在 code review 後整合至 Nucleo 持續進行 deployment。

另外,講者也談到數種自動化測試實務中常出現的問題,特別提醒當 test 出現紅燈時,不應一味重複跑同樣的測試、期待正確的結果最終會出現,反而應該重新思考如何調整測試以增加說服力,測試次數也應根據不同的測試進行調整。如果無法從 log 中找出某些 test failure 的原因,則可播放 archive video 以抓出原因,就不用花費大量時間解 flaky test。而針對重試機制 (retry),講師說明有時 server 或測試環境不穩定,會導致 flaky test 的產生,這時重試機制便可派上用場,讓時好時壞的測試狀況獲得解決。

最後也分享了 monitoring 的重要性:LINE TRAVEL 高度依賴第三方服務,因此第三方系統的穩定度至關重要,一旦收到問題通知,就會立刻聯繫工程師加以解決。講師進一步透過有獎徵答,創造和與會者互動的機會,有效地幫助與會者了解 LINE TRAVEL 的特點,以及避免測試失敗的小技巧。以下節錄 2 題精彩問答,希望能為更多讀者帶來幫助:

Q1: 如何自動化測試多國語言?

A1: 目前 LINE TRAVEL 以台灣地區為主,無多國語言的狀況。但未來若推廣到其他國家,也不會特別針對多國語言做自動化的測試,原因是考量到維護成本,且自動化測試主要是確認主要功能正常,多國語言有問題應為翻譯問題。團隊若認為還是需要加入自動化測試,可以內部討論後再決定。

Q2: 第三方 API 如何在不同環境測試?

A2: LINE TRAVEL 對合作夥伴的 API 對接皆為 Real 環境。目前的自動化主要確認能夠連結到對方網址做導購,另外搭配上 Health Check 確認合作夥伴伺服器 Alive。雙重搭配即可確認 LINE TRAVEL 的搜尋功能是正常即可,並不需要特別針對合作夥伴的網頁進行測試。

Workshop: Cypress.io Hands-on 與 Test Isolation / Bryan Liu

Test Corner 首度嘗試結合 workshop,由 LINE Taiwan QA engineer – Bryan Liu 帶領與會者透過實際的開發過程,體驗如何透過 Cypress 完成快速且可靠的測試程式。Cypress 是個開源端到端的自動化測試工具,同時也是 LINE Taiwan 工程團隊所採用的技術與工具,今晚講師透過 workshop 的形式,帶領與會者 hands-on 體驗常用的功能。

在 LINE TRAVEL 的應用案例中,可以看到一個穩定、有效率的工具對於確保產品質量有很大的幫助,LINE Taiwan 許多行動端網頁的應用服務,也都已經採用 Cypress 作為自動化整合交付中的一個重要環節,希望透過本次 workshop,幫助與會者快速了解這項工具。要在短短兩小時內介紹 Cyperss 所有功能其實是不可能的,還好 Cypress 官方有非常詳盡的文檔及實例,因此本次 workshop 就著重在基本功能上手,以及完成幾個端到端案例,涵蓋的主題包含:

  • Cypress test runner and shoppingCart application introduction
  • Selector playground: practice with web forms
  • API request: login with RESTful API
  • Custom command: create login and checkout custom commands

另外,測試隔離 (Test isolation) 也是減少 flaky test 並讓測試容易被併行執行的好幫手,會中講者也說明如何使用 Cypress fixture, stubbing 及 test context 概念,實作不同層次的測試隔離,包括 Isolating test cases from themselves、Isolating test cases from each other、Isolating the System under test 等,有興趣的讀者也可依照 Git Repo 的 README 動手試試:https://github.com/linetwqa/testCorner-Cypress

活動小結

「創新」與 「活力」是今晚活動的關鍵詞,首次嘗試 tech sharing 講座和 workshop 雙軌併行的模式,內容多元且精實.而社群朋友、主持人、工作人員所展現的活力,更讓整場活動洋溢著正向積極的氣息.透過 LINE MUSIC、LINE TRAVEL 了解新產品開發流程與自動化測試,讓相關概念變得具體,而實際操作 Cypress,則幫助與會者快速建立可靠的測試程式。很開心能參加這場別出心裁的盛會,在各種巧思中探索程式之美!

立即加入「LINE 開發者官方社群」官方帳號,就能收到第一手 Meetup 活動,或與開發者計畫有關的最新消息的推播通知。▼

「LINE 開發者官方社群」官方帳號ID:@line_tw_dev

關於「LINE 開發社群計畫」

LINE 今年年初在台灣啟動「LINE 開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,預計全年將舉辦 30 場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看 2019 年 LINE 開發社群計畫活動時程表 (持續更新) https://engineering.linecorp.com/zh-hant/blog/line-taiwan-developer-relations-2019-plan/)

徵才訊息

《LINE 強力徵才中!》與我們一起 Close the Distance 串聯智慧新世界! 歡迎查看相關職缺,並投遞您的履歷 >> QA EngineerQA Automation EngineerService QA Engineer