探索軟件測(cè)試的核心價(jià)值
軟件測(cè)試作為一個(gè)工作有很多的價(jià)值,因?yàn)榇蠹业墓ぷ鲀?nèi)容都會(huì)包含很多東西,而且對(duì)產(chǎn)品和項(xiàng)目都是有價(jià)值,這里只說(shuō)說(shuō)和測(cè)試直接相關(guān)的所謂的核心的價(jià)值吧。我把它人為的分為了三個(gè)層次。
第一個(gè)層次:職位本身帶來(lái)的價(jià)值。
這個(gè)有點(diǎn)類(lèi)似于工廠里的QC, 需要有專(zhuān)人來(lái)做檢驗(yàn)的工作,這種價(jià)值和設(shè)立這個(gè)專(zhuān)門(mén)的職位有關(guān)。就像很多職業(yè)的分工,一旦設(shè)立了這個(gè)專(zhuān)門(mén)的職位,這個(gè)職位上的人就需要按照設(shè)定的要求去驅(qū)動(dòng)某些事情會(huì)被做到,對(duì)測(cè)試而言就是產(chǎn)品在出去之前會(huì)被檢驗(yàn)到,對(duì)項(xiàng)目經(jīng)理而言就是會(huì)按照計(jì)劃來(lái)驅(qū)動(dòng)項(xiàng)目往前走。絕對(duì)的來(lái)講是不需要通過(guò)這樣的職位設(shè)定來(lái)驅(qū)動(dòng)某些事情被落實(shí)的,因?yàn)殚_(kāi)發(fā)人員也可以自測(cè),產(chǎn)品集成好了之后也可以從用戶(hù)的角度來(lái)完整的測(cè)試,但是實(shí)際上如果沒(méi)有這樣的分工和專(zhuān)職的安排,很多事情不會(huì)真的被做。還是那上面提到的項(xiàng)目經(jīng)理來(lái)舉例,理論上產(chǎn)品的開(kāi)發(fā)者應(yīng)該也可以按照幾乎把事情做了,為什么要一個(gè)專(zhuān)職的人來(lái)把握項(xiàng)目的進(jìn)度了(當(dāng)然項(xiàng)目經(jīng)理還要做很多別的事情)。
從這個(gè)角度,這有點(diǎn)像是通過(guò)分工來(lái)確保落實(shí)。而且因?yàn)樵O(shè)立了這樣的專(zhuān)職的工作,那么自然就有job responsibility,需要對(duì)質(zhì)量負(fù)責(zé),而因?yàn)橛羞@樣的要求,測(cè)試人員會(huì)跳出來(lái)報(bào)出問(wèn)題,提出不同的意見(jiàn)。一個(gè)是制度上的安排,一個(gè)是心理上的。反過(guò)來(lái)可以設(shè)想一下,如果在一個(gè)正式的商業(yè)產(chǎn)品中,沒(méi)有測(cè)試人員或者類(lèi)似的工種,很多時(shí)候?qū)|(zhì)量的要求會(huì)流于形式,質(zhì)量很容易被進(jìn)度的壓力compromise掉,而且因?yàn)闇y(cè)得夠不夠本身就是個(gè)很模糊的概念,大家可能簡(jiǎn)單用一用覺(jué)得沒(méi)有問(wèn)題就出去了。
上面提到的其實(shí)是一個(gè)很基本的層次,有而且做了而已,至于做得怎么樣,那是另一回事。
第二個(gè)層次:做得更專(zhuān)業(yè),更好。
這里換一個(gè)例子,拿做飯為例,好的酒店里的廚師和那些只在家里做做飯的人區(qū)別是什么。當(dāng)然,這里說(shuō)的是通常的情況,個(gè)別另類(lèi)除外。如果按照上面的層次,兩者都能做出還可以的能吃的飯,可以達(dá)到這個(gè)工作的基本的要求。但是如果只停留在家庭主廚的要求,就不會(huì)有專(zhuān)業(yè)的廚師這個(gè)職業(yè),還有什么幾級(jí)認(rèn)證之類(lèi)的。那么專(zhuān)業(yè)的廚師的更進(jìn)一步的價(jià)值在哪里?我想簡(jiǎn)單來(lái)說(shuō)大概是做得更專(zhuān)業(yè),更好吧。
同樣,對(duì)于測(cè)試這個(gè)職業(yè),也是一樣,如果只是把功能都用到了,發(fā)現(xiàn)了bug,那和普通的用戶(hù)有什么區(qū)別呢?
那什么是更專(zhuān)業(yè),更好呢?我想用兩個(gè)詞來(lái)概括,效果和效率。
先說(shuō)效果,下面列了兩個(gè)方面:
a. 發(fā)現(xiàn)更多的bug,而且很多是簡(jiǎn)單用用無(wú)法發(fā)現(xiàn)的bug,甚至非常難以發(fā)現(xiàn)的bug。這也好比專(zhuān)業(yè)勘探和去山里玩的驢友,驢友可以發(fā)現(xiàn)奇怪有趣的露在外面的石頭,而專(zhuān)業(yè)的勘探人員能找出埋在地下的有價(jià)值的東西。
b. 有些測(cè)試需要專(zhuān)業(yè)的技能,比如性能測(cè)試,穩(wěn)定性測(cè)試,安全性測(cè)試等需要專(zhuān)業(yè)的技能和工具。
對(duì)于這類(lèi)測(cè)試,普通用戶(hù)是難以發(fā)現(xiàn)的,因?yàn)榈人麄儼l(fā)現(xiàn)那就不是找到bug,而是不幸遭遇到bug。這一部分是非常體現(xiàn)測(cè)試人員的技術(shù)和專(zhuān)業(yè)能力的地方,有很多地方值得深入的研究。
12再說(shuō)說(shuō)效率,這個(gè)放在后面并不表示沒(méi)有效果重要。很多時(shí)候我們的思考和努力都花在這上面,在現(xiàn)在這個(gè)對(duì)軟件和服務(wù)的推出速度要求越來(lái)越高的年代,效率有時(shí)候顯得更加重要。因?yàn)楦鶕?jù)二八原則,很多時(shí)候大家寧愿花20%的時(shí)間發(fā)現(xiàn)80%的bug,然后就以beta的名義把產(chǎn)品推出去,然后再來(lái)改進(jìn),因?yàn)楫吘勾蟛糠值能浖a(chǎn)品,特別是需要嚴(yán)格測(cè)試的產(chǎn)品都是有商業(yè)價(jià)值的,而time to market就是一個(gè)很重要的因素。
所以從這個(gè)角度來(lái)講,對(duì)一個(gè)專(zhuān)業(yè)的測(cè)試人員的要求還包括更快的發(fā)現(xiàn)問(wèn)題。這個(gè)可能是對(duì)工具和能力的要求,也有對(duì)測(cè)試方法和流程的要求,比如自動(dòng)化測(cè)試,敏捷測(cè)試等等。舉個(gè)例子來(lái)說(shuō),就好比大家可以在家里做手工,但是如果超市里賣(mài)的日常生活用品用這個(gè)效率做出來(lái)估計(jì)就沒(méi)有什么商業(yè)競(jìng)爭(zhēng)力,不是嗎?
說(shuō)了這么多,突然想到其實(shí)意思簡(jiǎn)單的就是,專(zhuān)業(yè)的就是要把事情做得又快又好。
如果能做到上面的兩個(gè)層次,基本上已經(jīng)是一個(gè)優(yōu)秀的測(cè)試人員了,但是如果只是有這些顯然不夠,總要有些別的追求嘛。
現(xiàn)在說(shuō)說(shuō)我理解的第三個(gè)層次,那就是:提高整體產(chǎn)品的quality。
為什么這么說(shuō)呢,因?yàn)榈膬蓪佣际窃谡襜ug,這樣有兩個(gè)問(wèn)題,一是事后才發(fā)現(xiàn),二是很多東西已經(jīng)晚了,甚至沒(méi)法修補(bǔ)。
發(fā)現(xiàn)bug是一個(gè)事后的過(guò)程,是在代碼已經(jīng)寫(xiě)好了之后去測(cè)試,發(fā)現(xiàn)了問(wèn)題需要修改原來(lái)的代碼,其實(shí)可以做得更好。
a. 將發(fā)現(xiàn)bug變得更早,在單元測(cè)試(有時(shí)是developer來(lái)做)的時(shí)候就發(fā)現(xiàn),或者產(chǎn)品的build一出來(lái)就發(fā)現(xiàn),比如和auto build系統(tǒng)集成的測(cè)試。
b. defect prevention
再往前走,在有缺陷的代碼被寫(xiě)出來(lái)之前就發(fā)現(xiàn)問(wèn)題。比如detail design,requirement specification, 甚至產(chǎn)品的spec制定的時(shí)候就發(fā)現(xiàn)問(wèn)題,這類(lèi)問(wèn)題有很多,比如很多場(chǎng)景可能沒(méi)有被考慮到,有些可能和原來(lái)的客戶(hù)或者產(chǎn)品的需求不一致,甚至有些地方不具有可測(cè)性。那么在這個(gè)時(shí)候,需要及時(shí)的討論和調(diào)整。因?yàn)檫@個(gè)時(shí)候的調(diào)整可能比產(chǎn)品出來(lái)之后發(fā)現(xiàn)幾個(gè)bug更有價(jià)值,因?yàn)樵缙诘腻e(cuò)誤可能到后面很難改,或者改的代價(jià)很大。
c. 協(xié)助建立質(zhì)量的文化。
之所以說(shuō)協(xié)助,是因?yàn)橛X(jué)得這個(gè)可能不只是靠測(cè)試人員就能做到,需要和開(kāi)發(fā)人員以及產(chǎn)品的管理人員等等一起來(lái)創(chuàng)建。
garbage in,garbage out。越來(lái)越覺(jué)得quality本身是寫(xiě)出來(lái)的,是設(shè)計(jì)出來(lái)的,是規(guī)劃出來(lái)的,而不是測(cè)出來(lái)的。產(chǎn)品的架構(gòu),設(shè)計(jì),使用的模塊,代碼的質(zhì)量都會(huì),甚至深遠(yuǎn)的影響到質(zhì)量,其實(shí)你會(huì)發(fā)現(xiàn)這個(gè)已經(jīng)超出了測(cè)試人員最基本的工作的要求,但是卻是能發(fā)揮更大價(jià)值的地方。
關(guān)于這方面怎么做,可能沒(méi)有前面的兩個(gè)層次那么清晰,但是是可以做的,比如a和b提到的,c的要求可能更高,需要更大的能力和影響力。
12