第一次在某篇文章里看到“去QA化”這個概念,我當時也就是隨隨便便翻看了一下,并未多加關注。第二次是在QA社區群里看見更資深的同事在談論“去QA化”,當時我小小的腦袋里,單純覺得“去QA化”離我還是很有一些距離的。
萬萬沒想到!沒過多久,當我上到一個項目之后,TL跟我說,我們有些項目確實是沒有QA的,隔壁項目組有一個QA,但是在整個開發流程中也沒有專門的測試階段。聽完之后,我眼睛瞪得像銅鈴(夸張修辭):那誰來做測試策略呢?在什么階段測卡了?什么時候做探索式測試呢?TL顧及我作為QA的尊嚴,立馬跟我強調:“我覺得QA還是非常重要的,我是反對他們那樣做的!太危險啦!”。但是,她善良的勸慰并沒有撫平我的震驚,打消我的思考。這次我知道,“去QA化”可能真的來了。
那在“去QA化”的項目中,我能做什么來為團隊提供價值呢?我帶著這樣的思考來到了項目上,并得出了一些自己的思考。
測試策略
因地制宜地制定測試策略,這個是QA到了新項目必須要做的一個事情。在了解項目的上下文之后,我們需要及時去做這個事情,它的優先級是非常高的。測試策略是一個非常重要的指導,它涵蓋了功能,性能,Accessibility,兼容性,安全等方面都需要測什么,也明確了如何去測試的問題。在敏捷開發流程下,推薦大家可以參考“敏捷測試四象限”去思考設計自己的測試策略。
如果這個項目不是一個全新的項目,已經有了現成的測試策略,我們需要在加入項目時去理解現在的測試策略,并在后續對項目背景、技術架構、軟件功能有了更深入的了解之后,看是否需要去改進當前測試策略。每個項目的測試策略,其實都應該跟隨項目變化不斷演進。
質量內建
QA為什么要在項目上推進質量內建?首先,我們想想缺陷是被測試出來的嗎?不,它是在生產過程中產生的,所以我們需要在生產的過程中去提升產品的質量,減少缺陷。
在敏捷開發的流程中,我們有需求分析、架構設計、Kick off、Desk Check、In QA這一系列的環節,質量內建其實就是要求我們做好每個環節的質量保障,努力避免缺陷,盡早發現缺陷,而不是期望在測試環節發現所有缺陷,然后再修復。缺陷發現得越晚,修復得成本就越高。并且,缺陷發現越多,就越可能存在更多的缺陷。
我們在每一個階段都需要有質量保障策略,團隊的每個人都需要為質量負責。比如:
- 在需求分析階段,寫卡需要遵守INVEST原則,團隊需要對需求的理解達成一致;
- 在開發階段,可以通過Pair、TDD、QA和Dev pair寫單元測試、及時需求澄清等保障開發階段的質量;
- 在測試階段,可以通過充分的測試設計、探索性測試、更完善的自動化測試覆蓋等去及時發現缺陷。
除此以外,質量內建還包括其它的方面,需求管理,風險管理,提高團隊的質量意識等。
自動化測試
制定自動化測試策略,并跟團隊達成一致。搭建E2E和API自動化測試框架,編寫自動化測試代碼,并經常給項目小伙伴們科普洗腦(我不是,我沒有)自動化測試的重要性,逐步提高項目的自動化覆蓋。
除了UT、E2E、API這些自動化測試以外,其實任何經常重復執行的動作,都可以嘗試自動化,比如準備測試數據,重復填寫冗長的表單等工作。自動化測試可以減少人工重復點點點,解放QA的一部分勞動力,并且自動化測試的及時反饋,可以讓團隊和客戶對產品質量更有信心。
測試左移
需求分析是開發流程當中非常重要的一環(不局限于敏捷開發),QA應該更早地介入需求分析,更多去關注業務需求,以QA的獨特視角去分析需求的合理性,以及一些邊界場景。在需求分析階段,多與客戶進行溝通,理解客戶的真正訴求。跟BA一起pair完成寫卡,補充業務場景。并盡量在Kick off之前,確定好這張卡哪些testcase需要API自動化覆蓋,哪些需要在e2e自動化覆蓋,哪些是需要UT測試來覆蓋。
在故事卡進入開發階段前,通過當面溝通、ACs、testcases的各種方式(根據自己項目情況來),確定并澄清需求,達成一致理解。減少因為需求不合理,需求分析不充分,需求理解不一致導致的問題。
持續改進
在一個項目開始或比較混亂的時期,QA總是有很多重要的事情要去做,如前文提到的,制定測試策略、提高自動化覆蓋、提高team的質量意識等等工作。但是,當項目進入一個穩定期,團隊小伙伴們已經有較好的質量意識,測試覆蓋率也達到較高的標準,這個時候我們可以去做什么呢?
首先,我們知道質量內建是一個持續的長期的概念,讓大家適應了各個角色在各流程承擔的質量職責之后,QA需要保持觀察,對質量守護工作保持敏感性,持續推進質量內建;
另外在新版本發布后,通過User Testing,收集用戶反饋,或者分析終端用戶的行為,收集分析生產環境的數據,持續進行改進;
QA還需要收集線上問題、UAT問題,進行缺陷分析,并組織團隊一起共同制定質量改進方案。在項目的演進過程中,持續的思考是否需要改進我們的質量保障方案、測試策略。
質量內建以及高度的自動化測試,偶爾讓我們看起來不再需要QA,可是誰來做質量內建呢?誰來輸出質量保障方案呢?誰來寫自動化測試呢?誰來做持續改進呢?是QA,或者是戴上QA帽子的人。
總結下來,其實QA在項目上能做的東西有很多,包括但不限于:
- 制定測試策略,明確測試范圍、測試方法,這是團隊測試工作的重要指導;
- 質量內建,將質量內建到開發各階段,引領團隊成員一起關注并提升質量;
- 自動化測試,逐步構建各層級的自動化測試覆蓋,提高自動化測試有效性;
- 測試左移,將測試活動提前到需求分析階段,減少由于需求不合理引起的質量問題;
- 測試右移,關注生產環境質量,分析生產環境的數據、問題及反饋,由此去找到更多的質量改進方向;
- 持續改進,保持對質量的敏感性,持續觀察項目中可以改進的地方,持續推動質量內建工作;
除了以上幾個點,QA還可以多關注提升效能,面向客戶等方向。
我覺得,所謂“去QA化”只是在某些項目中去掉了單獨的一個QA角色,但是總有人會戴上QA的帽子,或者人人都戴上了QA的帽子,人人都擁有很高的質量意識,這其實是QA的理想國。