LY Corporation Tech Blog

支持 LY Corporation 和 LY Corporation Group (LINE Plus, LINE Taiwan and LINE Vietnam) 服務,宣傳技術和開發文化。

QA Engineer Life @ LINE

前言

Hi,我是LINE TW的 QA -- Zona,很高興能在 LINE Taiwan 與陽明交通大學的大家見面。

今天就透過文章和大家分享當天的內容,帶大家認識LINE SHOPPING、Scrum運作、QA的實際工作內容以及我在LINE的一些生活碎片。


專案介紹-LINE SHOPPING


不知道各位有沒有聽過或使用過LINE SHOPPING(LINE 購物)呢? 不論有沒有接觸過,當你在Google 搜尋「LINE購物」時,或是你可能曾經有在廣告看過,肯定都會出現的一句話就是:先LINE購物,再購物

簡單來說,LINE購物就是一個導購及回饋點數的行動電商聯盟平台,總共彙集了超過 600 家商店,超過 2700 萬件商品,活躍消費者已達 370 萬人。我們不只是讓使用者可以搜尋、比價、賺點數,還能主動推薦各種優惠。

當你想購買一支手機,直接使用搜尋並進到該網站購買,與先進到LINE購物後再由LINE購物導出,進而進行導購,多一個小舉動可能將能使你獲得更多回饋。

LINE購物還有一個特別的功能是“點數紅包”,除了基本的點數回饋外,可以讓你獲得更多點數回饋。舉例來說,當你透過LINE購物進到APPLE官方網站,完成一筆訂單後,你可以獲得5%的回饋,此時剛好有一個可使用的100點點數紅包,那你總共可以獲得 訂單金額5%+100點的點數回饋。而LINE POINTS一點即等於一元,可以用在購買任何東西上,也相當於現金回饋了。


帶各位初步認識scrum是如何運作的

一般常聽到的開發流程有兩種,scrum和waterfall, 而所謂Scrum, 指的就是敏捷式開發。他們之間的差異在於:
Scrum: Scrum採用一種迭代和增量的開發方法。開發工作被分解成短暫的時間段,稱為Sprint,每個Sprint通常持續2到4周。在每個Sprint期間,團隊會集中精力完成一個可工作的產品增量。
Waterfall: Waterfall是一種線性的開發方法。它將軟件開發過程劃分為連續的階段,如需求定義、設計、實施、測試和維護。每個階段按照順序進行,下一個階段依賴於前一個階段的完成。


在LINE SHOPPING團隊中,使用的就是scrum, 而我們Scrum team的成員組成主要有以下:Project lead/ Planner/ Developer/ QA/ Designer
每種角色的職責分別是-

Project Lead(專案主管):

  • 協調團隊工作,確保成員理解任務和目標。
  • 監督項目進度,解決問題並調整計劃。
  • 確保團隊有足夠資源完成工作,並識別和管理風險。
  • 確保產品質量,並與利益相關者溝通項目進展。
  • 支援團隊發展,提供指導和培訓。

Planner(產品經理,也稱PO/PM):

  • 管理產品待劃清單(Product Backlog),確保其內容清晰、優先順序明確。
  • 與利益相關者溝通,理解他們的需求和期望。
  • 在每個Sprint期間確定要完成的工作,並優先安排待辦事項。
  • 在Sprint Review中向利益相關者展示已完成的工作,並接受反饋。

Development Team(開發團隊):

  • 負責開發和交付可工作的產品增量。
  • 在每個Sprint Planning會議上,估算和承諾要在Sprint期間完成的工作。
  • 在每天的Daily Standup會議上分享進度、問題和需求。
  • 積極參與Sprint Review和Sprint Retrospective,提供反饋和改進建議。

Quality Assurance(QA,品質保證):

  • 負責確保產品的質量,通過測試和驗證來檢查產品符合的功能需求。
  • 與開發團隊合作,確保測試覆蓋率足夠,並盡早發現和修復缺陷。
  • 創建和維護測試計劃、測試用例和測試報告。
  • 在每個Sprint期間參與測試活動,並在Sprint Review時提供有關品質狀況的反饋。

Designer(設計師):

  • 負責產品的視覺設計和用戶體驗設計。
  • 與產品負責人合作,理解用戶需求,並將其轉化為設計方案。
  • 創建產品原型和設計文檔,並與開發團隊協作以實現設計目標。
  • 在Sprint Review中展示設計成果,並根據反饋進行調整和改進。
  • 這些角色共同合作,確保Scrum團隊高效地交付具有價值的產品增量。每個角色都有其特定的職責,但在團隊內部密切合作以實現共同的目標。

了解了Scrum Team的組成後,接下來將介紹在跑scrum時每個sprint一定會做的事情們

在我待的團隊裡,是2周為一個sprint, 每個sprint會做的事情有以下

  • Daily
  • Refinement
  • Planning
  • Retrospective
  • Regression
  • ET (Exploratory Testing)
  • Release

以下將一一介紹每個項目內容,稍後也會分享在實際運作上流程是怎麼走的

Daily:

  • 在每日站立會議中,團隊成員會聚集在一起,分享他們的進度、遇到的問題以及今天的計劃。
  • 每個團隊成員都應該說明他們完成的工作、將要完成的工作以及遇到的任何阻礙。
  • 目的是保持團隊對項目的進度和目標的共識,並確保障礙能夠及時得到解決。

Refinement:

  • Resinement是指Product Backlog中的待劃項目進行討論、澄清和詳細化的過程。
  • 團隊與Planner共同參與,討論待劃項目的細節,確定項目的優先順序並添加必要的細節和說明。
  • 這有助於確保Product Backlog中的每個項目都清晰、具體且可行。

Planning:

  • Sprint規劃會議是每個Sprint開始前舉行的會議,用於確定該Sprint要完成的工作和目標。
  • 團隊通過與Planner合作,從Product Backlog中選擇要在Sprint期間完成的工作,並將它們分解成可實現的任務。
  • 在會議結束時,團隊將確定一個可實現的Sprint goal和一個Sprint plan。

Retrospective:

  • Retrospective是每個Sprint結束後舉行的會議,用於檢討Sprint期間的工作流程和成果。
  • 團隊回顧過去Sprint的工作,討論哪些事情做得好、哪些事情可以改進,並提出針對性的改進措施。
  • 目的是持續改進團隊的工作流程,提高生產力和質量。

Regression:

  • 回歸測試是在對軟體進行修改後執行的測試,以確保修改不會對現有功能產生負面影響。
  • 團隊通過自動化或手動測試來驗證修改後的版本是否仍然符合預期的行為。
  • 目的是防止新的修改導致現有功能的破壞,確保產品的穩定性和可靠性。

Exploratory Test (探索性測試):

  • 探索性測試是一種測試方法,通常由測試人員通過實際使用來探索和發現潛在的問題和缺陷。
  • 測試人員根據他們的經驗和直覺進行測試,並盡量模擬真實使用情境。
  • 這種測試方法有助於發現傳統測試方法可能忽略的問題,並提高品質和用戶滿意度。

Release :

  • release是將軟體新版本部署到正式環境並提供給用戶使用。
  • 在Scrum中,release通常在每個Sprint結束時進行。
  • release後團隊可能會收集用戶反饋並進行後續的修復或改進工作。

這些Scrum項目涉及團隊在不同階段進行的關鍵活動,以確保項目的順利進行和產品的高質量交付,通常缺一不可,但每個不同團隊的運作方式不一定會與以上相同。

清楚以上每個項目後,可以對照上圖,了解一個sprint裡是如何跑整個流程的

Scrum運作流程包括以下步驟:

  • 在sprint的一開始,會進行planning,確定Sprint目標和工作項目。
  • 開始進行開發,專注完成Sprint目標,在開發的過程中QA也會不斷和dev及planner們來回溝通討論問題並進行修正。
  • 在sprint的尾聲,會進行retrospective回顧會議,以檢討並改進工作流程。
  • 而在過程中,每天也都會進行daily, 分享進度和解決問題。

接下來,將直接公開分享團隊內的sprint時程表,幫助可以更理解每一件事情是在什麼時間點發生

(黑字是屬於當前sprint的事,藍字是下一sprint的,灰字則是上一sprint)

可以看到表格中一sprint是兩週,每週release一次,一個sprint開始的第一天是週三。
所以在第一個週三時,先進行了planning, 因為weekly release的關係,週五時會有第一次的demo, 驗收dev們的開發成果。
到了第二個週三時,會進行refinement討論下sprint待做的事情,並進行第一次的release。
第二個週五會進行第二次的demo以及retrospective, 檢討這sprint發生的事情及討論問題。
再到下一個週二,也就是sprint最後一天。這天會進行第二次的refinement接續討論下一次要做的內容,也會進行regression或ET測試,確保上線前新舊功能都萬無一失。
週三時,此sprint進行的所有內容就會release到線上。同時,新的sprint也開始了,繼續一樣的循環。

那一個Scrum中,勢必也需要一個人來主持大局,而那個人就是Scrum master。
在我們團隊中,scrum master是每sprint由大家輪流擔任,而scrum master的職責主要有:

  • 保團隊理解和遵守Scrum框架和相關流程。
  • 移除障礙,幫助團隊解決問題,促進高效率的工作流程。
  • 確保Scrum事件(例如Sprint Planning、Daily Standup、Sprint Retrospective)有效地進行。
  • 協助團隊改進,持續優化開發流程。

Scrum Master的主要目標是確保Scrum團隊能夠高效地工作,並在持續改進的基礎上達成項目目標。


介紹QA在做什麼?什麼是QA?

Quality Assurance(品質保證)是一種過程,主要是通過預防措施,防止產品製造過程中出現錯誤和缺陷,從而確保產品的品質符合預期標準。QA Engineer 的角色就是確保產品的品質,確認產品符合需求,對產品進行測試並找出問題,並透過各種方法減少問題的發生,從而確保產品的品質,減少產品瑕疵率,提高客戶滿意度,並降低生產成本。

Quality Assurance (QA) 和 Quality Control (QC) 的差異


Quality Assurance (QA) 和 Quality Control (QC) 都是產品品質管理的重要概念,但它們的重點和目的有所不同。

Quality Assurance 主要強調預防,著重於確保整個產品開發過程中的品質管理,以及在產品交付前的檢查。QA 包括建立標準和程序,以及審查和評估產品開發過程中的相關文件、測試計畫和測試報告等,以確保產品的品質符合預期標準。QA 的目的是降低產品開發過程中出現缺陷的風險,從而提高整個產品的品質和效率。

Quality Control 則著重於檢查和測試,以確定產品是否符合標準。QC 包括對產品進行檢查、測試和評估,並對缺陷進行分類和修復。QC 的目的是在產品交付前,對產品進行最終的檢查和確認,以確保產品的品質符合標準,並滿足客戶的需求。

總體來說,QA 和 QC 都是維護產品品質的重要手段,但它們的重點不同。QA 主要強調品質管理的全過程,從而預防產品出現缺陷,而 QC 則主要著眼於最終產品的檢查和確認,以確保產品的品質符合標準。


而在LINE的QA日常工作中,會做的事情有以下:

  • Test case management - 透過測試案例管理系統,可以有效地組織和管理大量的測試用例,並追蹤測試的執行和結果。這有助於提高測試效率、減少重複工作,並確保測試的全面性和一致性。
  • Test plan/ Test spec create- 當有較大型且複雜的需求時,會撰寫一份較完整的測試計畫。主要內容包括:
  1. 目標和範圍
  2. 測試策略和方法
  3. 測試環境需求
  4. 測試任務和排程
  5. 資源需求
  6. 風險評估和應對策略
  7. 測試報告和評估方案
  • Functional/ API Testing- 會有FE/BE/後台的測試,確保軟體功能按照需求規格正常運作的測試方法。主要檢驗軟體的功能性,確保每個功能都符合預期並能正確運行。
  • Load Test/ Performance Test- 評估系統在預期負載下的性能表現。模擬實際使用情況下的負載,例如多個同時訪問的用戶或高流量量,以確保系統能夠正常運行並在負載下維持良好的性能。
  • Regression Testing- 確保新的軟體更改或更新不會導致現有功能出現問題或失效。包括重新運行先前通過的測試案例,以確保軟體的功能和性能仍然符合預期。

結語

總結來看,軟體品質的保障不僅僅是QA工程師或測試團隊的責任,而是整個團隊的共同責任。除了測試之外,流程的優化對於軟體品質的影響更為重要,因此需要全體團隊一起努力改進。在開發過程中,選擇合適的方法和工具是至關重要的,但最終目標是提供穩定、高品質的產品給使用者。

加入LINE之後,每天在工作中即使會遇到不同挑戰,但同時也有許多難得的機會。例如我們可以參加各種內外部公開活動、培訓、線上課程,等等。此外,我們也會有每季一次的team building,這些活動不僅增進了團隊間的情感,還加強了我們的團隊凝聚力。在這裡,我們強調工作與生活的平衡,讓員工能夠在工作中獲得滿足感的同時,也能夠充分享受生活。

最後,感謝陽明交大同學的參訪,希望他們對於軟體品質有了更深入的了解。