有時(shí)候給客戶介紹QA或者質(zhì)量保證,一些客戶會(huì)詢問(wèn):QA就是指測(cè)試吧?我一般都會(huì)頓一下,然后肯定地說(shuō):是的,主要就是指測(cè)試。這樣的回答,既沒(méi)有駁了客戶的面子,把討論點(diǎn)聚焦在測(cè)試服務(wù)這個(gè)范疇,同時(shí)用“主要”這個(gè)詞也維護(hù)了我們的專業(yè)嚴(yán)謹(jǐn)性。當(dāng)然,也有碰上懂行的,他們會(huì)這樣提問(wèn):你們的SQA和測(cè)試是分開(kāi)的還是合在一起的?于是,我們知道彼此差不多在同一個(gè)頻道了,比較有逼格的說(shuō)法就是“on the same page”。
關(guān)于軟件質(zhì)量保證和軟件測(cè)試,應(yīng)該是這個(gè)行業(yè)最經(jīng)典的一對(duì)概念了,至少也是最經(jīng)典之一。只是,能夠真正講明白兩者區(qū)別的人可能并不多。至少我自己對(duì)于兩者的理解也是在逐步加深,甚至現(xiàn)在都沒(méi)有特別去強(qiáng)調(diào)和區(qū)分了。
比較經(jīng)典的解釋,往往會(huì)引入工廠生產(chǎn)中質(zhì)量控制(QC)的概念:
QC:檢測(cè)產(chǎn)品的質(zhì)量,保證其符合客戶的需求或者需求規(guī)格,即我們通常的測(cè)試,工作對(duì)象側(cè)重于軟件產(chǎn)品;
SQA:審計(jì)產(chǎn)品生產(chǎn)過(guò)程,確保每個(gè)軟件生命周期中的規(guī)定動(dòng)作都被嚴(yán)格地執(zhí)行了,即過(guò)程的審計(jì)者。其側(cè)重點(diǎn)是項(xiàng)目的執(zhí)行。
【注:文章后續(xù)章節(jié),為避免歧義,我們用SQA表示過(guò)程審計(jì)、QA代表廣義的軟件質(zhì)量保證活動(dòng)】
兩者的意義在于測(cè)試是用來(lái)驗(yàn)證我們的產(chǎn)出是否符合產(chǎn)品的標(biāo)準(zhǔn),同時(shí)尋找存在的缺陷;而SQA則是保證整個(gè)生產(chǎn)的過(guò)程符合既定的規(guī)則,從而可以保證生產(chǎn)工藝能夠維持在一定的水準(zhǔn)之上,以預(yù)防缺陷。
從這個(gè)角度看,各類測(cè)試(功能測(cè)試、性能測(cè)試等等)無(wú)疑是屬于QC,那么代碼評(píng)審、需求評(píng)審等動(dòng)作本身則也應(yīng)該屬于QC,畢竟他們都是對(duì)于產(chǎn)出物的檢測(cè)。而有沒(méi)有做代碼評(píng)審、有沒(méi)有做測(cè)試,則屬于SQA的范疇了。
另外,提交前做QA Sign-Off屬于QC還是SQA呢?看似是一個(gè)流程性質(zhì)的東西,但是卻不是簡(jiǎn)簡(jiǎn)單單歸為SQA的;應(yīng)該是這么理解:有做QA Sign-Off應(yīng)該是SQA,而做QA Sign-Off的時(shí)候需要判斷提交物的質(zhì)量是否達(dá)標(biāo),那么就必須引入QC了。
在早年做項(xiàng)目的時(shí)候,我們部門(mén)建立了一個(gè)基于提交物的記分卡模型,我和幾位QA經(jīng)理一起參與了模型的構(gòu)建和實(shí)施。大致原理是通過(guò)定義每個(gè)流程環(huán)節(jié)的提交物作為項(xiàng)目監(jiān)控的基準(zhǔn),有提交物就表明該項(xiàng)活動(dòng)舉行了(記1分),而提交物的好壞則表明該活動(dòng)做得是否到位(到位的再加1分);當(dāng)把眾多活動(dòng)的記分統(tǒng)計(jì)匯總,就可以獲知某個(gè)項(xiàng)目運(yùn)行的健康狀況了?!坝小边€是“沒(méi)有”是非常容易判斷的,而提交物的質(zhì)量評(píng)價(jià)往往只能交由每個(gè)團(tuán)隊(duì)自己的QA來(lái)判斷了。
在經(jīng)典的理論體系和不少大公司的實(shí)際執(zhí)行中,SQA經(jīng)常作為獨(dú)立的崗位存在,這個(gè)在以前一直是作為是否專業(yè)的標(biāo)志之一;不過(guò)最近幾年倒是比較少聽(tīng)說(shuō)了。也許是因?yàn)槊艚菽J降耐菩?、團(tuán)隊(duì)自我管理機(jī)制的強(qiáng)化,讓流程執(zhí)行可以多維度地被監(jiān)督,而不用特定的第三方來(lái)監(jiān)控,整個(gè)敏捷團(tuán)隊(duì)每個(gè)人都可以是SQA角色;也許是因?yàn)镈evOps的深入,軟件開(kāi)發(fā)的流程已經(jīng)自動(dòng)嵌入到了開(kāi)發(fā)和運(yùn)維的每個(gè)環(huán)節(jié),不符合流程的情況幾乎無(wú)法流入到下一環(huán),即系統(tǒng)自帶SQA。
如果我們回到質(zhì)量保證(QA)這個(gè)事情本身,其內(nèi)涵和外延則會(huì)遠(yuǎn)遠(yuǎn)超過(guò)我們理解的測(cè)試和過(guò)程審計(jì)的范疇。在軟件行業(yè)有個(gè)說(shuō)法:軟件開(kāi)發(fā)中的所有問(wèn)題都可以歸結(jié)為質(zhì)量問(wèn)題。那么,從這個(gè)說(shuō)法說(shuō)開(kāi)去,QA要做的事情則會(huì)貫穿于所有軟件開(kāi)發(fā)和運(yùn)維生命周期中,那么去區(qū)分QC或者SQA則顯得意義不大了。
大概在八、九年前,我有給每個(gè)入職的技術(shù)人員講一門(mén)叫“質(zhì)量意識(shí)”的課。其中,有一個(gè)環(huán)節(jié)是讓大家啟發(fā)式討論,影響軟件的主要因素有哪些?在兩年多的課程中,一批又一批的工程師給出的答案其實(shí)非常集中,差不多有預(yù)算/成本、時(shí)間和人力資源、需求變更以及技術(shù)難度等外在客觀因素以及意識(shí)薄弱、需求和目標(biāo)的誤解、業(yè)務(wù)知識(shí)不足、技能不到位等技術(shù)人員自身因素??雌饋?lái),所有的工程師都是明白人。但是頗具諷刺意味的是,每當(dāng)提到質(zhì)量保證和改進(jìn)質(zhì)量的時(shí)候,絕大部分人第一個(gè)冒出來(lái)的想法幾乎都是要加強(qiáng)測(cè)試,而不是去消除某個(gè)影響軟件質(zhì)量的因素。
回到QA的本質(zhì)話題,QA就應(yīng)該去做任何有助于保證和提升項(xiàng)目/軟件質(zhì)量的事情。所以,除了測(cè)試和過(guò)程審計(jì)外,上述的每個(gè)因素都應(yīng)該是在其工作范圍中。那是否又意味著QA變成了項(xiàng)目中的萬(wàn)能者,連項(xiàng)目經(jīng)理的活都應(yīng)該做掉呢?也對(duì)、也不對(duì),質(zhì)量從來(lái)都不是單一群體的責(zé)任,而是所有人的事情。QA未必需要也不應(yīng)該親力親為做每件事,但是應(yīng)該去關(guān)注、關(guān)心和推動(dòng)每一件涉及到質(zhì)量的事情。
理解到了這一層,是不是對(duì)QA這個(gè)稱呼有更強(qiáng)烈的使命感?從另一個(gè)角度看,對(duì)于有想法而且愿意折騰的人而言,QA的職業(yè)廣度和提升空間會(huì)因此迅速打開(kāi)。以我為例,作為公司整體QA的負(fù)責(zé)人,會(huì)被老板以這個(gè)理由加入到各種跨部門(mén)項(xiàng)目統(tǒng)籌和監(jiān)管、公司管理系統(tǒng)的運(yùn)維,甚至是這些體系支持的日常行政和業(yè)務(wù)運(yùn)營(yíng)事務(wù)中;借此,可以很輕易地切入到自己所感興趣的領(lǐng)域中。而小到某個(gè)項(xiàng)目范疇也是如此,身邊不少Q(mào)A很容易轉(zhuǎn)入到Scrum Master的崗位,也正是因?yàn)槠湓瓉?lái)的工作已經(jīng)深入到了項(xiàng)目的各個(gè)環(huán)節(jié)了。
最后,奉上當(dāng)時(shí)質(zhì)量意識(shí)課程中關(guān)于質(zhì)量改進(jìn)的最后一頁(yè),希望可以給讀者們一些啟發(fā)。