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