# 關於我從拍片仔轉職 QA 的那件事 ## 前言 大家好,我是 Lawrence Tsai,現為 LINE Travel 的 QA 工程師。很榮幸有機會與 GDSC 的各位分享在 LINE 的工作與生活經驗。 究竟大學主修傳播的我是如何來到 LINE 實習?QA 的工作有哪些?我又是如何準備面試的?就讓我們一起看下去... ## 介紹 ### LINE Travel 在開始前,我想先跟大家介紹一下 LINE Travel 服務,LINE Travel 是一個綜合性的旅遊服務平台,提供旅遊相關資訊和訂票服務,用戶可以利用 LINE 官方帳號或是網頁平台進入 LINE Travel。 以下是 LINE Travel 提供的一些主要功能: 1. 旅遊資訊:LINE Travel 提供豐富的旅遊資訊,包括熱門旅遊景點、旅遊行程、當地美食、交通資訊、天氣預報等,幫助使用者計畫旅遊行程。 2. 機票:使用者可以透過 LINE Travel 訂購機票,包括國內航班和國際航班。使用者可以比較不同航空公司的價格和航班時刻表,並進行訂購和付款。 3. 住宿:LINE Travel 提供訂房服務,使用者可以預訂國內和國際的飯店、民宿、度假村等,並比較不同住宿選項的價格和評價,進行訂房和付款。 4. 體驗:使用者可以在 LINE Travel 上找到各式體驗行程。 5. 跟團:LINE Travel 亦提供世界各地的跟團旅遊服務。 6. 旅遊相簿:使用者可以在 LINE Travel 上創建自己的旅遊相簿,上傳旅遊照片和分享旅遊心得,並與朋友和親人互動和分享旅遊體驗。 ### Travel SCRUM Team ![image](https://hackmd.io/_uploads/rJVTco3Sa.png) 在介紹完 LINE Travel 服務後,接下來便是介紹我們的開發團隊。Travel team 中共有下列角色: - Product Owner - 產品負責人,是商業端的人但是負責跟工程團隊溝通。 - 將 marketing language 轉換為 product language 的角色,負責產品的 spec。 - Techinal Project Manager - 技術上的 project manager。 - Designer - 負責產品 UI/UX 的設計。 - Front End - 前端工程師。 - 會在網頁中許多元素加入如 testid 的標籤,方便 QA 做 E2E testing。 - Back End - 後端工程師。 - LINE Travel 的服務有很多跟第三方廠商、內部系統的介接,這部分都需要後端工程師的協助。 - QA - 很多的 api 意味著需要進行很多測試。 - 每天要測試能不能從合作廠商那邊拿到資料、網站運行是否正常等。 ![image](https://hackmd.io/_uploads/H1ECqj3ra.png) 與許多軟體開發團隊相同,Travel team 也使用 SCRUM 作為敏捷開發框架。 很多人聽到「敏捷開發」第一個反應都是「快」,這個理解是錯誤的。事實上,如果今天需求變動不大的話,傳統的 waterfall 開發模式遠比 agile 快不少,因為省去了許多的管理及溝通成本。然而,LINE 作為一款 2C 產品,客戶的需求變動是極快的,因此需要一個「敏捷」的開發框架,我們在每次開發 sprint 完成後都會根據需求來調整任務的優先順序,或是增加新的任務,讓產品隨時都能夠符合用戶的需求。 Travel 的 Sprint 週期為兩個星期,期間我們會經過以下流程: - Scrum Daily - 每日的站立會議,團隊成員會簡述前一天做了什麼、今天要做什麼、有沒有什麼需要跟團隊成員討論的事項。 - Sprint Planning - Sprint 開始前的會議,討論此次的 Sprint 要完成哪些目標。 - 目標的優先順序由 PO 決定。 - Refinement - 針對 Product Backlog 的會議,PO 與團隊討論最近需要開發的項目並檢視。 - 會依據需要開發項目的難度進行「估點」,如此一來在 sprint planning 的時候就可估算出每個人在 sprint 中的工作量是否合理。 - Sprint Review - 團隊成員會將此次開發的成果 demo 給 biz 端的人看。 - Retrospective - Sprint 的回顧,看看有沒有碰到問題,是否能夠改善。 - Travel 會使用「Mad Sad Glad」表來幫助 retro 進行。 - 討論出的改善事項也會決定負責人,並押上日期以利後續追蹤。 ### QA Roles ![image](https://hackmd.io/_uploads/S1DJio2S6.png) 那 QA 在 Travel 團隊扮演的角色是什麼呢? 在 Planner 開好 spec 之後,Service QA(QA 對其他 team 的 contact window,如 planner、法務等等)以及 Test Engineer 便會開始撰寫 test case 並進行測試,若有 bug 則會開票給 developer 並追蹤修復情況。Automation Engineer 則會著重在撰寫自動化測試、CI/CD、 網站運行狀況監控等部分。待 sprint 接近尾聲,開發及測試皆完成後,亦需要 service QA 準備 sign-off document 才能將產品最終發佈。 因此,一名 QA 的職責通常會是 test case preparation、test automation、manual testing、CI/CD、monitoring 五項。 ### TECH FRESH Job Responsibility ![image](https://hackmd.io/_uploads/rJsljs3Sp.png) 那 TECH FRESH QA 的工作會是什麼呢?一般 TECH FRESH 會充當團隊 Automation Engineer 的角色,因此工作中比較會接觸到的就是 test automation、CI/CD、monitoring。 1. Test automation:這是工作中最主要的部分,涵蓋模擬使用者使用路徑的 E2E testing、測試 response schema 和 status 的 api testing、測試極端情況下程式運作能力的壓力測試等等。在 LINE Travel 團隊中,自動化測試主要用兩大框架,分別是 Cypress 和 Playwright。 2. CI/CD:通過將產品的構建、測試及部署自動化,軟體開發流程可以大大加速,code 有問題時也能即時發現並修復。因此撰寫 CI/CD pipeline、了解相關工具也是 automation engineer 的職責之一,LINE Travel 團隊主要使用 Jenkins、Drone、GitHub Actions、ArgoCD 等工具。 3. Monitoring:在產品發佈之後,後續的監控亦是十分重要,對 dashboard 數據的觀察以及 alert 的處理也是平常工作的項目。 ### How did I prepare interview? ![image](https://hackmd.io/_uploads/BykmijhSa.png) 聊了這麼多,那究竟要如何成為 LINE 的 QA 工程師,我又為了面試做了哪些準備呢? 我認為可以從三個面向著手: 1. Testing QA 最重要的工作仍然是測試,因此了解測試流程與種類、如何撰寫 test case、各式測試及監控工具等等知識是必要的。面試時很有可能就會給你一個情境,然後詢問你要如何針對某個 function 或功能撰寫 test case、要考慮什麼極端情況、如何做壓力測試等等問題。 2. Coding 除了測試相關能力外,要撰寫自動化測試,coding 的能力亦是是必不可少的,因此面試時也會有很大機率碰到 coding test。在我看來,coding test 除了考察面試者的程式能力之外,更是在考察面試者能否將自己的邏輯清楚的講述,展現自己思考的脈絡,這一點是在未來職場與其他工程師合作不可缺少的能力。除此之外,身為一名 QA 工程師,你更是要在解題的同時思考要如何將 code 優化、如何針對你寫的 code 撰寫測試等問題。 3. Project Side Project 也是我認為面試者可以積極準備的一個方向,軟體工程的世界是非常實作導向的,side project 除了是提升個人開發經驗的極佳方法外,也能夠向面試官展現自己的技術及能力。然而雖然大家都知道 side project 很重要、要做 side project,那到底要怎麼開始呢? 相信我,如果你真的對開發有著無限的熱忱,那你就不會問出這個問題,而是早已經開發出一些小工具、撰寫技術文章、或是在網上找到各種 open source 的東西開始玩了。可惜,你不是這種人,我也不是 XD,上班上課已經夠累了,空閒時間我只想要好好放鬆,那要怎麼辦呢? 我認為可以從選課以及社團兩方面下手,例如盡量找一些學期末必需要實作出專案的課程及社團,畢竟如果自己沒有辦法監督自己的話,那就靠別人吧! ### Life as a LINER ![截圖 2023-12-05 下午9.53.45](https://hackmd.io/_uploads/Bkcsis3rT.png) 說了這麼多,那究竟為何我會選擇加入 LINE 呢? 除了活潑友善的公司氛圍、一群年齡相仿的 TECH FRESH 同事、超棒的 Team Building 活動之外。LINE 身為一間跨國企業,其組織規模龐大且制度完善,這點也反應在工程團隊上。很多軟體公司只是單純將 QA 當作「測試工程師」,主要的工作只是簡單的開 test case、執行手動測試、碰到 bug 時開單給工程師而已,但在 LINE,你能完整接觸到 scrum、CI/CD、monitoring、api 串接等各方面的知識,而這些對 QA 的未來職涯發展是十分有用的,也是我最終選擇加入 LINE 的原因。 ## 結語 以上即是我個人的一些心得總結,希望能夠幫助到所有對 QA 有興趣的同學,期待之後能夠與各位在 LINE 相見,謝謝。