在我們開(kāi)始嘗試為大家描述軟件測(cè)試工作的多種可能性之前,先來(lái)看看在現(xiàn)在所知最近代的開(kāi)發(fā)模式中,測(cè)試人員還會(huì)繼續(xù)存在嗎?因?yàn)槿绻B測(cè)試工作本身都不存在了,我們也沒(méi)必要進(jìn)行后續(xù)的討論了。
很多做測(cè)試的朋友問(wèn)過(guò)這樣一個(gè)問(wèn)題:“現(xiàn)在敏捷開(kāi)發(fā)模式中,自動(dòng)化測(cè)試那么流行,而且連開(kāi)發(fā)人員都開(kāi)始做測(cè)試了,是不是以后就沒(méi)有測(cè)試人員了?”
其實(shí)我在這里可以肯定的告訴大家現(xiàn)實(shí)并不是這樣的。
首先我們需要討論的是分工的問(wèn)題。人類的工業(yè)化生產(chǎn)最初也是不分工的,但隨著生產(chǎn)技術(shù)的復(fù)雜度提升,以及對(duì)于生產(chǎn)效率的更高要求,產(chǎn)生了分工;同樣對(duì)于軟件開(kāi)發(fā)來(lái)說(shuō)也是一樣,最開(kāi)始并沒(méi)有測(cè)試人員和需求分析人員,而都是開(kāi)發(fā)人員。也是隨著軟件項(xiàng)目的復(fù)雜度以及要求的提高,慢慢產(chǎn)生了工作種類的區(qū)別,由此產(chǎn)生了專門做測(cè)試的人員,也就是測(cè)試人員。由此看來(lái),并不是有了測(cè)試人員這樣一個(gè)職位,才誕生了相應(yīng)的工作和職責(zé),而恰恰相反;那如果想取消這個(gè)職位,但是相應(yīng)的工作和職責(zé)并沒(méi)有消除,在我看來(lái)無(wú)非就是把這個(gè)職位換一個(gè)名稱,或者是和別的職位的工作與職責(zé)重新排列組合而已。
其次我們需要明確什么是測(cè)試的核心,是自動(dòng)化測(cè)試,還是測(cè)試報(bào)告,亦或是探索性測(cè)試呢?其實(shí)都不準(zhǔn)確,我認(rèn)為測(cè)試用例設(shè)計(jì)才是軟件測(cè)試的靈魂。沒(méi)有恰如其分的測(cè)試用例設(shè)計(jì),軟件測(cè)試很容易誤入歧途:導(dǎo)致沒(méi)有目標(biāo)的盲目測(cè)試,不考慮投入產(chǎn)出比的自動(dòng)化測(cè)試,不從全局優(yōu)化的、割裂的單元測(cè)試、集成測(cè)試和系統(tǒng)測(cè)試等。測(cè)試用例設(shè)計(jì)也是需要熟練運(yùn)用測(cè)試用例設(shè)計(jì)方法,并且結(jié)合測(cè)試人員的經(jīng)驗(yàn)和智慧才能設(shè)計(jì)出來(lái)的,這同樣是測(cè)試人員不同于軟件開(kāi)發(fā)團(tuán)隊(duì)中其他角色,需要不斷積累的關(guān)鍵一點(diǎn)。如果說(shuō)在敏捷開(kāi)發(fā)模式中,開(kāi)發(fā)人員可以完成單元測(cè)試和自動(dòng)化測(cè)試,業(yè)務(wù)分析人員也可以進(jìn)行探索性測(cè)試的話,測(cè)試人員唯一不能被取代的就是測(cè)試用例的設(shè)計(jì)。如果說(shuō)描述得更全面一些,即使要讓別的角色替代測(cè)試人員,至少他們也需要具備測(cè)試用例設(shè)計(jì)的能力,而這種能力需要長(zhǎng)時(shí)間的鍛煉和運(yùn)用才能具備。
最后,雖然測(cè)試工作并不會(huì)消失,但是測(cè)試人員也需要進(jìn)化,需要跟隨新的軟件開(kāi)發(fā)模式,不斷學(xué)習(xí),不斷進(jìn)步,保持自己的必要性和特殊性。舉例來(lái)說(shuō),在敏捷開(kāi)發(fā)模式中,測(cè)試人員不僅僅是根據(jù)需求編寫測(cè)試計(jì)劃和用例,并且手動(dòng)執(zhí)行,給出測(cè)試報(bào)告就好了。而是需要測(cè)試前移,在需求分析階段盡可能地發(fā)現(xiàn)和預(yù)防問(wèn)題,在開(kāi)發(fā)過(guò)程中避免問(wèn)題的產(chǎn)生,并且通過(guò)問(wèn)題分析指導(dǎo)開(kāi)發(fā)方向和改進(jìn)措施;同時(shí)需要測(cè)試范圍擴(kuò)大,不僅需要覆蓋軟件開(kāi)發(fā)階段,還需要覆蓋產(chǎn)品上線部署以及運(yùn)維的相關(guān)活動(dòng),甚至是通過(guò)分析用戶反饋來(lái)提高產(chǎn)品質(zhì)量。可以看出敏捷中測(cè)試人員的任務(wù)和職責(zé)更多了,這就需要我們更加發(fā)揮自己的聰明才智,更高效地分析和解決問(wèn)題,更快速地學(xué)習(xí)各項(xiàng)技能,同時(shí)注重各項(xiàng)實(shí)踐的運(yùn)用。
既然測(cè)試工作并不會(huì)消失,而且敏捷開(kāi)發(fā)模式帶給我們新的機(jī)遇和挑戰(zhàn),那對(duì)于測(cè)試人員來(lái)說(shuō),職業(yè)發(fā)展的方向又有哪些呢?
首先我們需要明確想通過(guò)測(cè)試作為跳板,去做開(kāi)發(fā)類和管理類等工作不在我們的探討范圍內(nèi)。很多測(cè)試人員其實(shí)在選擇軟件測(cè)試作為職業(yè)的時(shí)候,其實(shí)更優(yōu)先選擇的是軟件開(kāi)發(fā)的職位,只是可能由于種種原因而與開(kāi)發(fā)職位失之交臂,只好選擇了軟件測(cè)試作為自己的職業(yè)。一旦有了合適的機(jī)會(huì),他們會(huì)選擇成為開(kāi)發(fā)人員,這樣的職業(yè)發(fā)展不在我們的討論之列。另一類測(cè)試人員對(duì)于軟件測(cè)試其實(shí)沒(méi)有熱情,有且僅僅把軟件測(cè)試作為養(yǎng)家糊口的工作,希望通過(guò)工作年限的增長(zhǎng)增加自己的薪水,更多希望工作時(shí)間短,不用加班,這樣可以保證更好的家庭生活。選擇這種工作和生活方式是個(gè)人自由,但是也不是我們想進(jìn)行討論的。還有一類測(cè)試人員,希望通過(guò)短期的軟件測(cè)試工作中突出表現(xiàn),得到管理者的賞識(shí),從而進(jìn)入管理層,這樣的職業(yè)發(fā)展也不是我們討論的。
其次我們現(xiàn)在所知道的最近代也是最流行,甚至可以說(shuō)最先進(jìn)的軟件開(kāi)發(fā)模式是敏捷開(kāi)發(fā)模式,所以我們對(duì)于測(cè)試人員的職業(yè)技能發(fā)展也是基于敏捷開(kāi)發(fā)模式來(lái)分析的,如果有更新的開(kāi)發(fā)模式出現(xiàn),這些分析和定義也許會(huì)失效。
在知悉這兩點(diǎn)之后,那我們認(rèn)為對(duì)于測(cè)試人員來(lái)說(shuō),在保證測(cè)試人員的獨(dú)特性,也就是做好測(cè)試用例設(shè)計(jì)的基礎(chǔ)上,職業(yè)發(fā)展大致可以分為以下幾類方向(如下圖):

測(cè)試人員職業(yè)發(fā)展方向
1)偏向于需求方面的測(cè)試人員。我們說(shuō)過(guò)在敏捷開(kāi)發(fā)模式中,測(cè)試前移,測(cè)試人員會(huì)更多地接觸需求分析,從需求分析階段盡可能地發(fā)現(xiàn)和預(yù)防問(wèn)題。在這一方面現(xiàn)在已經(jīng)有行為驅(qū)動(dòng)開(kāi)發(fā)和實(shí)例化需求等方法協(xié)助測(cè)試人員深入需求分析階段并擴(kuò)大自己的影響力,與此同時(shí)測(cè)試人員也需要更深入了解產(chǎn)品所在的行業(yè)以及業(yè)務(wù)知識(shí),成為業(yè)務(wù)專家,才能使得測(cè)試分析更有洞見(jiàn)。
2)偏向于開(kāi)發(fā)輔助的測(cè)試人員。在敏捷開(kāi)發(fā)模式中,開(kāi)發(fā)人員不僅需要編寫單元測(cè)試的代碼,有可能還需要編寫自動(dòng)化測(cè)試代碼,所以為開(kāi)發(fā)人員提供好的工具,使他們能更快速、更準(zhǔn)確、更全面地添加和執(zhí)行測(cè)試也是測(cè)試人員可以發(fā)展的方向之一。
3)偏向于自動(dòng)化測(cè)試的測(cè)試人員。正如上一條所說(shuō),開(kāi)發(fā)人員有可能編寫自動(dòng)化測(cè)試,同時(shí)測(cè)試人員也是可以自己進(jìn)行編寫的。而且對(duì)于自動(dòng)化測(cè)試,測(cè)試人員不僅需要分析項(xiàng)目的架構(gòu)和技術(shù)棧,選擇最適合項(xiàng)目的自動(dòng)化測(cè)試框架和編程語(yǔ)言,還需要從頭開(kāi)始搭建自動(dòng)化測(cè)試框架,并完善相關(guān)的自動(dòng)化測(cè)試配套內(nèi)容,諸如測(cè)試數(shù)據(jù)管理、測(cè)試并發(fā)執(zhí)行、測(cè)試方法封裝、測(cè)試腳本的設(shè)計(jì)等內(nèi)容。
4)偏向于運(yùn)維的測(cè)試人員。測(cè)試不僅需要前移到需求分析階段,還需要覆蓋產(chǎn)品交付和線上監(jiān)控及分析,以便快速發(fā)現(xiàn)問(wèn)題和指導(dǎo)下一階段的開(kāi)發(fā)。這就需要我們要了解更多和環(huán)境以及監(jiān)控相關(guān)的技術(shù)以及工具,例如亞馬遜AWS,New Relic,Splunk和PagerDuty等。我們不僅需要熟練使用這些技術(shù)和工具,更重要的是分析從這些技術(shù)和工具得到的數(shù)據(jù),形成有意義和目的的協(xié)助開(kāi)發(fā)團(tuán)隊(duì)提高的行動(dòng)計(jì)劃。
5)偏向于專項(xiàng)測(cè)試能力的測(cè)試人員。測(cè)試人員不僅需要在知識(shí)的廣度得到發(fā)展,還需要深入特定的技術(shù),稱為某項(xiàng)技術(shù)的測(cè)試專家,例如前端測(cè)試、數(shù)據(jù)庫(kù)測(cè)試、性能測(cè)試、安全性測(cè)試和可用性測(cè)試等等。這樣測(cè)試人員就不局限于某個(gè)特定的項(xiàng)目,而是變成了可以跨越項(xiàng)目的具備特定測(cè)試技術(shù)的技術(shù)專家。
6)偏向于測(cè)試咨詢的測(cè)試人員。測(cè)試人員通過(guò)在敏捷開(kāi)發(fā)模式中測(cè)試深入開(kāi)發(fā)的整個(gè)流程和細(xì)節(jié),在具備了豐富的項(xiàng)目經(jīng)驗(yàn)和技術(shù)能力后,可以輸出對(duì)于軟件測(cè)試甚至整個(gè)開(kāi)發(fā)過(guò)程的總結(jié)及認(rèn)識(shí),幫助更多的團(tuán)隊(duì)解決當(dāng)前的問(wèn)題,提高團(tuán)隊(duì)測(cè)試技術(shù)能力和意識(shí),進(jìn)一步優(yōu)化產(chǎn)品的質(zhì)量。這也是測(cè)試人員實(shí)現(xiàn)更大的自我價(jià)值的一種途徑。
7)偏向于測(cè)試能力建設(shè)的測(cè)試人員。在上一條發(fā)展路徑的基礎(chǔ)上,測(cè)試人員還可以進(jìn)一步升華成為使開(kāi)發(fā)團(tuán)隊(duì)具備或者提高測(cè)試能力,進(jìn)行測(cè)試轉(zhuǎn)型,甚至團(tuán)隊(duì)轉(zhuǎn)型的關(guān)鍵性指導(dǎo)人物。而且通常這種測(cè)試人員會(huì)同時(shí)負(fù)責(zé)多個(gè)團(tuán)隊(duì),而且人數(shù)一般很少。
也許你認(rèn)為前幾種測(cè)試人員相對(duì)來(lái)說(shuō)更偏向于技術(shù),容易在團(tuán)隊(duì)內(nèi)實(shí)現(xiàn),而后幾種更像是給廣大的測(cè)試人員畫餅,并不一定能實(shí)現(xiàn),只是描述一個(gè)可能性而已。其實(shí)這幾種測(cè)試人員的發(fā)展之路是根據(jù)我們實(shí)踐的測(cè)試人員的規(guī)劃得出的,也就是說(shuō)我們是有真實(shí)的人物發(fā)展作為依據(jù)的。所以當(dāng)大家被自己工作中的現(xiàn)實(shí)所打擊到的時(shí)候,不要?jiǎng)訐u我們可以做更好更強(qiáng)大的測(cè)試人員的決心和目標(biāo),而是更努力的向那個(gè)方向努力。
最后,我們想告訴大家:產(chǎn)品質(zhì)量并不只是軟件測(cè)試人員的責(zé)任,而是需要整個(gè)團(tuán)隊(duì)都關(guān)注的內(nèi)容。只有給予軟件測(cè)試人員足夠的關(guān)注和重視,我們才能充分發(fā)揮每個(gè)人的特點(diǎn),合力推動(dòng)產(chǎn)品質(zhì)量的進(jìn)一步提高。從另一方面,軟件測(cè)試人員也需要意識(shí)到自身技能的缺失,強(qiáng)化技能水平,成為團(tuán)隊(duì)可以依賴和值得信賴的一員。