2012年11月4日 星期日

在Agile裡關於 SQA 這個角色


QA ? Tester ? 傻傻分不清


故事是這樣開始的,話說最近換了工作重新當起了新鮮人,但是對於新公司的職稱角色一直感到很疑惑,在公司裡面工程師通常被分為兩種角色RD和QA or SQA (Software Quality Assurance ),但是這幾天觀察下來發現QA的角色定位和在做的事跟我之前所認知與遇到的有很大的差異(就像我前公司的SA跟我原本認知的SA也不一樣~XD)。

跟其他待在公司比較久的朋友討論後,發現這邊的QA 工作內容是:
  • test tool development
  • test case design
  • code coverage examination
  • automation script/framework
  • prepare release package
  • 部分test execution
除了Test case design 和 test execution比較像是傳統我認知的QA工作外,其他比較像是 DevOps 的 Ops,又有點 Release engineer 的味道,這讓我對於這邊 QA 的工作內容更加好奇了(沒辦法以前呆小公司幾乎是全包,哪知道還有這麼多專業分工~:P )

上網查了一下,原來我我之前的認知算是狹隘的QA 也就是 - Tester (測試工程師),工作內容的確就是包含寫Test plan(測試計畫),Test case(測試案例),要會設計測試情境,系統測試,然後遇到bug就開Ticket, follow up 後續修改進度 (然後定死RD~XD)

但是廣義的QA 或是SQA 其實是所謂的品質保證工程師,需要從設計階段就要參與,從架構是否有問題,邏輯設計是否有錯誤,系統分析是否正確,是否有架設建構管理,版本控管,甚至要負責跟SA、RD、PM、Tester之間做溝通協調?看到這個描述感覺已經有點Architect 的fu 了?

我想描述最清楚的大概就是Tester vs. SQA - 3/5Tester vs. SQA - 4/5 關係與差異  這系列文章,裡面列出來SQA的工作內容與傳統Tester 的差異。這也難怪在國外通常是比較Senior 的 RD才會轉QA?

參考一下國外 SQA Architect 的職務內容應該可以更進一步了解吧~:P

Responsibilities:
  • Design and develop automation harnesses, testing extensions, and automation libraries
  • Review needs and specifications for scenarios requiring automation and tools to improve test coverage  (我也很好奇test tool 還有 test "test tool" 的 tool ..無窮迴圈XD)
  • Review current test plans, test cases, and test procedures and provide automation wherever possible
  • Maintain existing automation scripts and potentially rewrite the scripts using other automation tools
  • Design and develop new performance, load, data set, application and simulation tools
  • Design and develop interactive results analysis viewers
  • Track quality assurance metrics and provide code coverage analysis metrics
  • Define and enhance processes methodologies
  • Ensure established standards, processes and procedures are used consistently throughout the release life cycle
  • Write efficient, easy to follow documentation on all tools, scripts and processes
  • Maintain existing and new SQA environments and repositories
  • Understand and gather project requirements from the customer, both internal and external, creating and reviewing specification artifacts
  • Execute and report results of entire project
[Update]
後來很多朋友跟我解釋,SQA 和 QA 差一個字但是內容差很多,事完全不一樣的東西。

QA in Agile

回到Agile 這個問題就更有趣了,如果你問我Tester 要如何併入Agile 的 Sprint 運行,那我可能比較可以回答這個問題,通常有兩種模式:
  1. 在同一個Sprint 裡面就先與RD協調安排Testing 的時間和工作 (比較像Mini waterfall)
  2. 把Tester的 testing 放在下一個iteration,讓他們專心做測試,發現的bug依據priority 排入backlog看是要在下次或是其他時間解決
但是如果是廣義的SQA,那這個問題就有趣了,因為這個角色會貫穿整個軟體的開發流程,從初期的架構設計與需求分析就會加入,一直到Testing Automation、Deploy Automation、Release 都會參與。

所以一旦遇到有專職的QA team 或是 工作劃分非常精細的公司,在導入Agile可能就會遇到許多不一樣的問題,可以參考QA 團隊單獨執行 Scrum 的困難在Agile中如何進行測試的工作
等文章。

最後我自己的想法是,其實Agile重點就在於那個精神,然後必須根據不同的公司,不同的專案,甚至不同的分工方式做挑整,並沒有一體適用的方法,畢竟牽涉到人的事情總是複雜的(@@~)

張貼留言