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