傳統(tǒng)軟件開發(fā)過程中谒拴,存在測(cè)試工程師崗位。通常測(cè)試工程師的定義是:指理解產(chǎn)品的功能要求涉波,并對(duì)其進(jìn)行測(cè)試英上,檢查軟件有沒有缺陷,測(cè)試軟件是否具有穩(wěn)定性啤覆、安全性苍日、易操作性等性能,寫出相應(yīng)的測(cè)試規(guī)范和測(cè)試用例的專門工作人員窗声。測(cè)試工程師在工作中相恃,從事的是QC(Quality Control?)的工作。這樣經(jīng)常會(huì)出現(xiàn)開發(fā)工程師和測(cè)試工程師之間的矛盾笨觅,還引發(fā)了“啄木鳥”獎(jiǎng)之類的激化矛盾的產(chǎn)物拦耐,造成項(xiàng)目組內(nèi)耗耕腾,浪費(fèi)了人力物力以及時(shí)間。
在敏捷開發(fā)中提出了QA(Quality Assurance)的概念杀糯,主要職責(zé)是主導(dǎo)并促使跟質(zhì)量相關(guān)的活動(dòng)在團(tuán)隊(duì)內(nèi)發(fā)生扫俺,包括但不僅限于測(cè)試。
那么固翰,QC和QA有什么區(qū)別呢狼纬?
從上表可以看到倦挂,QA和QC的目的不同畸颅,QA是跟軟件開發(fā)站在一起的,為了提高軟件產(chǎn)品的質(zhì)量和開發(fā)效率服務(wù)的方援,而QC看起來站在軟件開發(fā)的對(duì)立面没炒,專門來為軟件產(chǎn)品挑刺的。做好QC工作很容易犯戏,安靜的給軟件產(chǎn)品找缺陷送火,每個(gè)階段做什么事情也有流程規(guī)范,照著做就行先匪≈治可是做好了QC工作,對(duì)軟件質(zhì)量提升的幫助是很小的呀非。我們都知道坚俗,質(zhì)量是設(shè)計(jì)出來的,不是測(cè)試出來的岸裙。經(jīng)過多輪回歸測(cè)試猖败,最后軟件產(chǎn)品的缺陷滿足了公司的缺陷率標(biāo)準(zhǔn)后,軟件產(chǎn)品的質(zhì)量有保障了嗎降允?沒有恩闻。如果需要經(jīng)過超過一輪回歸測(cè)試才能達(dá)到公司的缺陷率標(biāo)準(zhǔn),很明顯該產(chǎn)品的質(zhì)量保證體系是很薄弱的剧董,是不堪一擊的幢尚。達(dá)到了公司的缺陷率標(biāo)準(zhǔn),只不過因?yàn)檫€有缺陷沒有被發(fā)現(xiàn)而已翅楼。好的質(zhì)量保證體系尉剩,需要在一次回歸測(cè)試就能夠達(dá)到缺陷率標(biāo)準(zhǔn),每次回歸測(cè)試都在質(zhì)量標(biāo)準(zhǔn)內(nèi)毅臊。
所以理茎,做好QA工作很難。在敏捷開發(fā)中,通常團(tuán)隊(duì)中的每個(gè)人都要參與QA工作功蜓,而每個(gè)團(tuán)隊(duì)中,都有一個(gè)人主要負(fù)責(zé)QA工作宠蚂,這個(gè)人通常也被稱之為“QA”式撼。接下來聊一聊敏捷開發(fā)團(tuán)隊(duì)中的“QA”怎么去做好工作的。
“QA”需要有四個(gè)方面的特質(zhì):
1求厕、善于溝通且樂于溝通著隆。軟件開發(fā)活動(dòng)其實(shí)是一種社交活動(dòng),在社交過程中呀癣,知識(shí)進(jìn)行了轉(zhuǎn)移美浦,最后開發(fā)團(tuán)隊(duì)成員掌握了相關(guān)的知識(shí)并且生成了知識(shí)的產(chǎn)物--可工作的軟件。在敏捷開發(fā)中项栏,QA需要從需求階段就開始介入浦辨,在整個(gè)軟件開發(fā)生命周期中都需要參加。敏捷軟件開發(fā)強(qiáng)調(diào)質(zhì)量?jī)?nèi)建沼沈,在用戶故事的生命周期中流酬,作為質(zhì)量保障的主要負(fù)責(zé)人,QA需要在每個(gè)階段跟不同的角色反復(fù)確認(rèn)和驗(yàn)證列另,確保團(tuán)隊(duì)對(duì)需求理解一致芽腾,還要保證跟質(zhì)量相關(guān)的活動(dòng)發(fā)生,比如確保開發(fā)人員添加了相關(guān)的自動(dòng)化測(cè)試页衙,所以QA需要和團(tuán)隊(duì)的每一個(gè)成員以及客戶有非常多的交流摊滔,而最直接有效的方式就是面對(duì)面溝通。
2店乐、具備一定的業(yè)務(wù)和代碼能力艰躺。QA需要對(duì)整個(gè)系統(tǒng)以及業(yè)務(wù)足夠熟悉,這樣才能從QA的視角幫助業(yè)務(wù)分析師和團(tuán)隊(duì)發(fā)現(xiàn)業(yè)務(wù)不合理或者缺失的部分响巢。QA還需要有一定的代碼能力描滔,愿意聽開發(fā)人員講解他們的邏輯和實(shí)現(xiàn),并通過提問題了解他們的思路踪古,至少了解他們編寫的測(cè)試代碼含长。因?yàn)樵隍?yàn)收階段,QA會(huì)通過審查開發(fā)人員的自動(dòng)化測(cè)試是否合理和全面伏穆,來幫助團(tuán)隊(duì)建立對(duì)自動(dòng)化的信心拘泞。
3、管理工作的優(yōu)先級(jí)枕扫。敏捷開發(fā)中團(tuán)隊(duì)每個(gè)成員都會(huì)從事質(zhì)量保證的工作陪腌,也就是說質(zhì)量保證的工作會(huì)有很多,所以每個(gè)人都需要承擔(dān)。而團(tuán)隊(duì)中的QA角色需要確保所有的質(zhì)量保證工作都能夠有效執(zhí)行诗鸭。很多時(shí)候我們?cè)趺幢WC工作有效執(zhí)行呢染簇?一種有效的方法是自己做。如果這樣的話强岸,QA就會(huì)回到過去QC的工作方式锻弓,會(huì)死的很慘而且效果不好。怎么避免這種結(jié)局蝌箍?QA需要管理好工作的優(yōu)先級(jí)青灼,重要的事情先做,不重要的事情不要做妓盲。在這里有一點(diǎn)提醒大家杂拨,特別是新轉(zhuǎn)行做敏捷QA的同學(xué),在管理工作優(yōu)先級(jí)的時(shí)候悯衬,不要去考慮事情是否緊急弹沽,一定要去考慮事情是否重要。在敏捷開發(fā)團(tuán)隊(duì)中筋粗,QA只能做重要的事情贷币,不能做緊急的事情。緊急的事情誰(shuí)做亏狰?由團(tuán)隊(duì)其他人來做役纹。
4、抗壓能力暇唾。在敏捷開發(fā)過程中促脉,要求每個(gè)人都要參與質(zhì)量保證工作。但是實(shí)際上策州,并不是每個(gè)人都知道怎么去做好質(zhì)量保證工作的瘸味。這時(shí),因?yàn)閳F(tuán)隊(duì)中有一個(gè)專門的QA角色够挂,大家就會(huì)給這個(gè)角色過大的壓力旁仿。這個(gè)時(shí)候需要QA具備一定的抗壓能力,能夠頂住壓力孽糖,做好自己的工作枯冈,為團(tuán)隊(duì)服務(wù),團(tuán)結(jié)大家一起做好軟件產(chǎn)品的質(zhì)量保證工作办悟。
具備了這四個(gè)特質(zhì)尘奏,有助于在敏捷開發(fā)團(tuán)隊(duì)中擔(dān)任好QA角色。過去做QC工作時(shí)病蛉,我們知道在什么階段去做什么事情炫加,那么在做QA工作時(shí)瑰煎,每個(gè)階段需要做什么呢?我們結(jié)合Sprint來看一看俗孝。
在用戶故事分析時(shí)酒甸,QA需要參與到需求的分析工作,對(duì)用戶故事進(jìn)行審查赋铝,編寫用戶故事的驗(yàn)收用例烘挫。在迭代計(jì)劃會(huì)中,QA需要主導(dǎo)自動(dòng)化測(cè)試策略柬甥,確保自動(dòng)化測(cè)試工作被識(shí)別并排入迭代計(jì)劃。在Sprint開發(fā)過程中其垄,QA需要跟每個(gè)開發(fā)人員保持溝通苛蒲,確保測(cè)試工作有效執(zhí)行,并且參與到代碼評(píng)審過程中绿满,審查自動(dòng)化測(cè)試代碼臂外。在用戶故事開發(fā)完成后,QA需要立即參與到用戶故事的驗(yàn)收測(cè)試中喇颁,確認(rèn)用戶故事是否完成漏健,還可以做一些探索性測(cè)試,以探索一些需求分析和設(shè)計(jì)時(shí)未考慮到的地方橘霎。在迭代演示環(huán)節(jié)蔫浆,一般由QA來進(jìn)行講解和演示。在整個(gè)過程中姐叁,QA需要跟開發(fā)人員瓦盛、業(yè)務(wù)分析師、客戶進(jìn)行交流外潜,工作內(nèi)容會(huì)涉及到多個(gè)迭代原环。QA與他們進(jìn)行交流時(shí),通常采用結(jié)對(duì)工作的方式進(jìn)行:
QA 與業(yè)務(wù)分析人員結(jié)對(duì):通常在業(yè)務(wù)分析師分析用戶故事的時(shí)候处窥,QA 要與業(yè)務(wù)分析人員結(jié)對(duì)編寫驗(yàn)收用例嘱吗。通過與業(yè)務(wù)分析人員結(jié)對(duì),QA 能夠更好的理解領(lǐng)域知識(shí)滔驾,從而有利于定義合適的測(cè)試用例谒麦;QA 從測(cè)試角度添加的驗(yàn)收測(cè)試用例可以幫助整個(gè)團(tuán)隊(duì)對(duì)產(chǎn)品功能性有更好的理解。
QA 與開發(fā)人員結(jié)對(duì):QA 和開發(fā)人員分別能給團(tuán)隊(duì)帶來不同的技能集哆致,認(rèn)識(shí)到這一點(diǎn)很重要弄匕。作為一個(gè)團(tuán)隊(duì),最好通過平衡不同的技能集來獲得共同的目標(biāo)沽瞭。這對(duì)于傳統(tǒng)的瀑布式團(tuán)隊(duì)來說是一個(gè)很重要的心態(tài)改變迁匠。通常在實(shí)現(xiàn)測(cè)試自動(dòng)化的時(shí)候,QA 與開發(fā)人員結(jié)對(duì)是比較理想的方式。這樣結(jié)對(duì)實(shí)現(xiàn)的自動(dòng)化測(cè)試質(zhì)量相對(duì)較高城丧,有測(cè)試意識(shí)較強(qiáng)的 QA 參與能夠保證自動(dòng)化測(cè)試測(cè)得是真正需要測(cè)試的部分延曙,而開發(fā)人員的編碼能力有利于寫出簡(jiǎn)潔可維護(hù)的自動(dòng)化測(cè)試代碼。另一方面亡哄,QA 通過與開發(fā)人員結(jié)對(duì)枝缔,編碼能力也會(huì)相應(yīng)有所提高,而開發(fā)人員通過與 QA 結(jié)對(duì)蚊惯,測(cè)試意識(shí)也會(huì)增強(qiáng)愿卸,更有利于編寫質(zhì)量較高的產(chǎn)品代碼,更有利于形成全功能團(tuán)隊(duì)截型。
QA 與客戶結(jié)對(duì):客戶是業(yè)務(wù)領(lǐng)域?qū)<遗枯ㄟ^與客戶結(jié)對(duì),QA 能夠更好的從終端用戶的角度理解系統(tǒng)宦焦,從而定義或者增加更多的端到端的測(cè)試用例发钝;一旦 QA 理解了領(lǐng)域知識(shí)和終端用戶的觀點(diǎn),其業(yè)務(wù)價(jià)值分析能力會(huì)有所提高波闹,在團(tuán)隊(duì)需要的時(shí)候可以承擔(dān)業(yè)務(wù)分析角色酝豪;在用戶驗(yàn)收測(cè)試(UAT)階段,QA 通過與客戶結(jié)對(duì)精堕,幫助客戶熟悉使用系統(tǒng)孵淘,在必要時(shí)可以幫助客戶解決一些系統(tǒng)問題。
要做好敏捷開發(fā)工作歹篓,質(zhì)量管理方面需要從QC到QA進(jìn)行轉(zhuǎn)變夺英。在轉(zhuǎn)變過程中,測(cè)試工程師作為質(zhì)量工作中的重要角色滋捶,需要帶頭完成轉(zhuǎn)變痛悯,成為質(zhì)量管理的先行者和領(lǐng)導(dǎo)者。