测试之道--阿里巴巴八年测试专家倾情奉献
摘要: 我從事測(cè)試工作將近八年了,從起初的不懂測(cè)試,懷疑測(cè)試,到相信測(cè)試,再到堅(jiān)定測(cè)試,其中經(jīng)歷的辛酸、煎熬無法言表。在從事測(cè)試工作的這八年里,有人質(zhì)疑,也有人追捧,唇槍舌劍,沒完沒了,貌似測(cè)試永遠(yuǎn)都是個(gè)站在輿論風(fēng)口浪尖的角色。
一、 前言
我從事測(cè)試工作將近八年了,從起初的不懂測(cè)試,懷疑測(cè)試,到相信測(cè)試,再到堅(jiān)定測(cè)試,其中經(jīng)歷的辛酸、煎熬無法言表。在從事測(cè)試工作的這八年里,有人質(zhì)疑,也有人追捧,唇槍舌劍,沒完沒了,貌似測(cè)試永遠(yuǎn)都是個(gè)站在輿論風(fēng)口浪尖的角色。本文乃在下之精血所作,是我對(duì)測(cè)試的高度概括,旨在幫助大家了解測(cè)試,新人可以更好地從事測(cè)試工作,老人可以進(jìn)行測(cè)試探討,交流思想。為了盡量讓更多的人理解測(cè)試,本文重在述道,少說測(cè)試之術(shù),相信看完之后,各位自有論斷,功過是非留于各位看官說。
二、 測(cè)試的萬能模型
為什么上來就談這個(gè)?測(cè)試的模型既是我對(duì)測(cè)試認(rèn)知的高度建模,也是幫助大家理解測(cè)試,理解我觀點(diǎn)的出發(fā)點(diǎn),正所謂“風(fēng),生于地,起于青萍之末”,任何事情都是有本因的,大道至簡(jiǎn),理解了核心思想再看觀點(diǎn),就有了論據(jù),這正如修煉武功,根基決定了以后武術(shù)達(dá)到的高度,否則就如“無本之木,無源之水”,雖然我言之鑿鑿,但大家卻都不知吾之所云。
佛家修煉有三個(gè)境界:看山是山,看水是水;看山不是山,看水不是水;看山還是山,看水還是水。從我對(duì)測(cè)試的經(jīng)歷和認(rèn)知來說非常吻合,起初開始做測(cè)試的時(shí)候感覺測(cè)試工作是無聊的,枯燥的,而且并沒有太大技術(shù)含量,以為這就是測(cè)試。但是隨著工作閱歷的增加,覺得測(cè)試越來越難,面對(duì)各種被測(cè)系統(tǒng),我真的無法用一種通用的方法,或者通用工具滿足所有的測(cè)試需求。于是開始拼命學(xué)習(xí)各種系統(tǒng)的實(shí)現(xiàn),嘗試去了解我的被測(cè)系統(tǒng)。我測(cè)試過的系統(tǒng)有java開發(fā)的,也有C++開發(fā)的,也有其它語言開發(fā)的,于是我對(duì)各種語言都有一定了了解,開始研究如何測(cè)試他們。隨著光陰流逝,對(duì)測(cè)試認(rèn)識(shí)的逐步加深,我發(fā)現(xiàn)所有的測(cè)試?yán)砟疃际窍嗤ǖ?#xff0c;漸漸的,我悟出了萬能的測(cè)試模型:y= f(x)。對(duì),你沒看錯(cuò),就是我們所學(xué)的函數(shù)表達(dá)式。
x是我們的輸入,y是f(x)的輸出,f(x)表示的是被測(cè)系統(tǒng)的功能。測(cè)試的思路就是:選擇適當(dāng)?shù)膞,代入f(x),得到y(tǒng),跟我的預(yù)期結(jié)果y’進(jìn)行對(duì)比,從而得出被測(cè)流程是pass還是fail。用圖表示:
對(duì)于測(cè)試人員來說SUT(System Under Test,被測(cè)系統(tǒng))是個(gè)黑盒,測(cè)試人員一般不太會(huì)關(guān)注f(x)的具體實(shí)現(xiàn)邏輯,只會(huì)關(guān)注f(x)的功能。比如,假設(shè)f(x)= 2^x,程序可以用“x個(gè)2相乘”實(shí)現(xiàn),也可以用“左移位”的方法實(shí)現(xiàn),作為測(cè)試人員關(guān)注點(diǎn)只在于“有沒有正確實(shí)現(xiàn)需求?”,“功能滿足后性能如何?有沒有安全問題?”,關(guān)注點(diǎn)不在“怎么實(shí)現(xiàn)”,而在“實(shí)現(xiàn)的怎么樣”上面(這也是測(cè)試思維跟開發(fā)思維的本質(zhì)區(qū)別)。是故,弄懂業(yè)務(wù),理解產(chǎn)品需求是測(cè)試的前提。
也許有人會(huì)問,沒那么簡(jiǎn)單吧,系統(tǒng)那么復(fù)雜,僅僅一個(gè)y= f(x),怎么能全部歸納?你這里只有一個(gè)請(qǐng)求,一個(gè)響應(yīng),系統(tǒng)那是多復(fù)雜啊,數(shù)據(jù)庫(kù),緩存,異步消息,日志等。這里得強(qiáng)調(diào)的是,x,y表示的絕不僅僅是request和response,而是廣義的輸入和輸出,什么區(qū)別?request和response只是輸入輸出的一種,對(duì)于SUT來說,只要是讀的數(shù)據(jù)都算輸入,比如:用戶登陸的功能,當(dāng)我填入一個(gè)用戶名進(jìn)行登錄時(shí),我的輸入除了在頁面上填入的“用戶名”和“密碼”,DB中也必須有這條用戶記錄(當(dāng)然用戶不存在也是一種測(cè)試場(chǎng)景),所以DB中的這條用戶記錄也算輸入,甚至如果登錄系統(tǒng)處理過程中去查詢安全系統(tǒng),安全系統(tǒng)返回的“用戶安全策略”也算輸入。所以,這里的輸入是廣義的輸入,包含了用戶頁面填入的“用戶名/密碼”,DB中的“用戶記錄”,安全返回的“用戶安全策略”等。同理,輸出也是廣義的,包括“DB的寫”,“對(duì)其它系統(tǒng)的請(qǐng)求”,“打印的日志”,“對(duì)緩存的put”,“發(fā)出的異步消息”等。于是我們的測(cè)試萬能公式可以進(jìn)化成下面的樣子:y1,y2,y3,…,yn= f(x1,x2,x3,…,xn)。我們測(cè)試工作其實(shí)就是確定每一個(gè)x的取值范圍,然后選用合適的x1到xn的組合數(shù)據(jù)(一組數(shù)據(jù)其實(shí)就是一個(gè)測(cè)試用例),代入f,然后將得到的y1…yn跟預(yù)期的y1’…yn’進(jìn)行比較,從而判斷被測(cè)場(chǎng)景的正確性。用圖表示:
所以,一個(gè)合格的測(cè)試,必須理清“SUT的功能”,“SUT的所有輸入”,“每一個(gè)輸入的取值范圍”,“SUT的所有輸出”,“根據(jù)功能推出每一個(gè)輸出的預(yù)期值”。
這里還要強(qiáng)調(diào)的一點(diǎn)是,這里的SUT是很有講究的,在我看來除了靜態(tài)走讀代碼的方式算是白盒測(cè)試外,其它的一切測(cè)試都算黑盒,只是這個(gè)“盒子”的大小不同而已。單元測(cè)試中“盒子”比較小,就是一個(gè)或者若干個(gè)方法;接口測(cè)試的“盒子”就會(huì)擴(kuò)大到應(yīng)用級(jí)別;集成測(cè)試的“盒子”就會(huì)擴(kuò)大到系統(tǒng)級(jí)別。
弄懂了測(cè)試的模型,就可以開始剖析測(cè)試各個(gè)的關(guān)鍵點(diǎn)。
三、 測(cè)試的目的
測(cè)試的目的就是規(guī)避Bug。為什么用“規(guī)避”而不是“找”?因?yàn)閷?duì)于所有的測(cè)試用例來說,并不是每一條都能測(cè)出Bug,對(duì)于沒能測(cè)出Bug的用例執(zhí)行,你能說測(cè)試工作沒有價(jià)值嗎?顯然不能,對(duì)于測(cè)試人員來說,在未執(zhí)行測(cè)試之前,假設(shè)的前提是所有的被測(cè)流程都處于未知狀態(tài),只有執(zhí)行完對(duì)應(yīng)的測(cè)試用例這個(gè)流程狀態(tài)才變得可知——pass或者fail,對(duì)于fail的測(cè)試用例我們是找到了Bug,而對(duì)于pass的測(cè)試用例我們沒有也不可能找到Bug,所以不管pass還是fail,測(cè)試執(zhí)行工作都是有價(jià)值的,這里只能用“規(guī)避Bug”來精確地闡述測(cè)試工作的目的。
四、 測(cè)試的步驟
再來看一下測(cè)試的模型圖:
如前面所述,測(cè)試工作其實(shí)就是確定每一個(gè)x的取值范圍,然后選用合適的x1到xn的組合數(shù)據(jù)(一組數(shù)據(jù)其實(shí)就是一個(gè)測(cè)試用例),代入f,然后將得到的y1…yn跟預(yù)期的y1’…yn’進(jìn)行比較,從而判斷被測(cè)場(chǎng)景的正確性。由此可以總結(jié)出,測(cè)試工作步驟就是:
“確定x1至xn的組合數(shù)據(jù)”
“將每組數(shù)據(jù)傳入SUT”
“根據(jù)需求確定每組輸入數(shù)據(jù)輸入后產(chǎn)生的預(yù)期輸出結(jié)果y1’至yn’”
“將預(yù)期結(jié)果和實(shí)際結(jié)果y1,y2,…,yn進(jìn)行比對(duì),從而得出結(jié)論”
五、 測(cè)試的難點(diǎn)
對(duì)于上面四步,第3點(diǎn)和第4點(diǎn)相對(duì)容易,測(cè)試的主要難點(diǎn)在于第1點(diǎn)和第2點(diǎn):
1. 如何找齊所有的x和y?
想要找齊所有的x和y,就必須要求你對(duì)系統(tǒng)非常熟悉,對(duì)流程非常熟悉。系統(tǒng)依賴如何?流程調(diào)用,系統(tǒng)如何處理、交互?產(chǎn)生哪些反應(yīng)?典型的輸入有:調(diào)用請(qǐng)求,讀DB數(shù)據(jù),讀緩存數(shù)據(jù),被依賴系統(tǒng)的返回?cái)?shù)據(jù),收到的異步消息等;典型的輸出有:寫DB,寫緩存,寫日志,調(diào)用依賴系統(tǒng)的請(qǐng)求,發(fā)出的異步消息等。所以這個(gè)需要你對(duì)你的被測(cè)系統(tǒng)和流程必須非常非常的熟悉。
2. 如何確定合適的x1至xn的組合?
首先,你要熟悉每個(gè)x的可能取值,除了正常值,還有異常值,這個(gè)對(duì)測(cè)試工程師的要求非常高。為了清楚所有x的可能取值:
不僅需要,你對(duì)業(yè)務(wù)、業(yè)務(wù)數(shù)據(jù)非常非常的熟悉。注意,這里我把“業(yè)務(wù)”和“業(yè)務(wù)數(shù)據(jù)”分開,指的是兩個(gè)不同的東西。“業(yè)務(wù)”指的是產(chǎn)品提供的功能,比如:登錄可以用賬密登錄,也可以用手機(jī)掃碼登錄。“業(yè)務(wù)數(shù)據(jù)”指的是產(chǎn)品在線上日以繼夜的運(yùn)行后產(chǎn)生的數(shù)據(jù),如,注冊(cè)功能,有通過淘寶注冊(cè)的淘寶用戶,也有通過支付寶注冊(cè)的支付寶用戶,甚至還有數(shù)據(jù)打通從其它地方同步過來的其它用戶數(shù)據(jù),你要對(duì)這些個(gè)業(yè)務(wù)數(shù)據(jù)非常熟悉。
還需要,你要對(duì)系統(tǒng)間依賴的接口非常熟悉。這個(gè)主要是為了弄清楚你的SUT對(duì)依賴系統(tǒng)的調(diào)用,哪些調(diào)用請(qǐng)求的傳參是合法的?哪些是不合法的?依賴方會(huì)傳回給你哪些可能的數(shù)據(jù)或者響應(yīng),最好有規(guī)范的接口文檔(可惜現(xiàn)在奇缺)。
還需要,你對(duì)其它的輸入方式的數(shù)據(jù)類型有比較深刻的認(rèn)識(shí)。針對(duì)我負(fù)責(zé)的系統(tǒng),主要是前面兩個(gè)方面,當(dāng)然根據(jù)不同的系統(tǒng)情況也有所不同,這個(gè)得具體問題具體分析。
其次,當(dāng)所有的x可能取值確定以后,這里就會(huì)利用專業(yè)的測(cè)試用例設(shè)計(jì)方法,對(duì)x1至xn的組合進(jìn)行設(shè)計(jì)。設(shè)計(jì)方法有:等價(jià)類,邊界值,因果圖,判定表,正交法等等,這些在很多的軟件測(cè)試書中都有詳細(xì)的介紹,在此不作細(xì)表,有興趣的可以自行查閱。
3. x1至xn如何傳入SUT?
這個(gè)用一個(gè)詞來精準(zhǔn)形容就是“驅(qū)動(dòng)”,如何驅(qū)動(dòng)你的測(cè)試流程?其實(shí)這個(gè)很體現(xiàn)測(cè)試工程師的水平。如果你用的是手工測(cè)試,那肯定得搭建測(cè)試環(huán)境,必須讓你的SUT運(yùn)行起來,然后預(yù)置各種數(shù)據(jù),調(diào)用你的流程。如果你是自動(dòng)化測(cè)試,這里其實(shí)是有兩種方式:
部署被測(cè)系統(tǒng),模擬客戶端發(fā)送請(qǐng)求驅(qū)動(dòng);
直接依賴被測(cè)系統(tǒng)代碼,用本地代碼調(diào)用的方式驅(qū)動(dòng)。
總體來說,“驅(qū)動(dòng)”的方式就是兩種,跟語言無關(guān),各種語言通用:
代碼驅(qū)動(dòng)。這個(gè)沒什么好說的,就是把你SUT的代碼直接依賴過來,通過代碼直接調(diào)用的方式進(jìn)行驅(qū)動(dòng)。
協(xié)議驅(qū)動(dòng)。這個(gè)也包含廣義上的一些RPC調(diào)用,主要有http,https,ftp,telnet,hsf,dubbo等。
六、 測(cè)試系統(tǒng)理念的提出
如前面所述,測(cè)試工作的步驟就是:
確定x1至xn的組合數(shù)據(jù)
將每組數(shù)據(jù)傳入SUT
根據(jù)需求確定每組輸入數(shù)據(jù)輸入后產(chǎn)生的預(yù)期輸出結(jié)果y1’至yn’
將預(yù)期結(jié)果和實(shí)際結(jié)果y1,y2,…,yn進(jìn)行比對(duì),從而得出結(jié)論
我們對(duì)上述步驟的產(chǎn)出進(jìn)行分析,1、3兩點(diǎn)產(chǎn)出的是“數(shù)據(jù)”,2、4兩點(diǎn)產(chǎn)出的是“邏輯”。第4點(diǎn)的邏輯非常固定,就是預(yù)期輸出結(jié)果和實(shí)際輸出結(jié)果的比對(duì)邏輯,而第2點(diǎn)的“驅(qū)動(dòng)”邏輯雖然有代碼驅(qū)動(dòng)和協(xié)議驅(qū)動(dòng),而且協(xié)議驅(qū)動(dòng)也有很多種,但是因?yàn)樯婕暗降氖墙涌诤蛥f(xié)議,相對(duì)還是比較固定的,不容易發(fā)生變化,非常適合將2、4做成應(yīng)用。我們想象一下,如果有一個(gè)測(cè)試系統(tǒng),能根據(jù)傳給它的數(shù)據(jù),完成對(duì)各種SUT的測(cè)試,那豈不是測(cè)試工程師只要產(chǎn)出數(shù)據(jù)(測(cè)試用例)就行了。思路完全可行,因?yàn)闇y(cè)試用例本質(zhì)上就是一個(gè)“描述,”一個(gè)“用什么樣的數(shù)據(jù),調(diào)用什么樣的流程,預(yù)期會(huì)產(chǎn)生什么樣的結(jié)果”的描述。這種描述可以是漢語,也可以是英文,也可以是xml格式,又或者是腳本,只要能描述清楚這種語義即可,只不過我們肯定需要對(duì)這種描述制定一些格式規(guī)范,保證測(cè)試系統(tǒng)能夠識(shí)別這種描述。這樣我們的測(cè)試系統(tǒng)就可以集用例管理、測(cè)試執(zhí)行、Bug提交、測(cè)試報(bào)告于一身,成為測(cè)試中臺(tái)(不知道這個(gè)用詞對(duì)不對(duì))的完美轉(zhuǎn)身。我大膽畫出這種測(cè)試系統(tǒng)的架構(gòu)示意圖:
目前我正在這個(gè)方面做一些研究,也有一些實(shí)質(zhì)性的產(chǎn)出(驅(qū)動(dòng)模塊和用例管理模塊),但還待琢磨完善,如果有人有興趣的也歡迎一起探討。
七、 測(cè)試人員的核心價(jià)值
常常被人問起,測(cè)試人員的核心價(jià)值是什么?跟PD、開發(fā)比區(qū)別是什么?如果沒有經(jīng)過上面的一系列分析,被人炸一問起還真不好回答。可是今天就不一樣了,今天我就談一下自己認(rèn)識(shí)的測(cè)試人員的核心價(jià)值。這些是每個(gè)測(cè)試Leader必須清楚的東西,否則你如何給你團(tuán)隊(duì)的成長(zhǎng)指明方向,為你的組員答疑解惑授業(yè)?
測(cè)試的核心價(jià)值就是:對(duì)于任何被測(cè)系統(tǒng),能夠全面、高效地規(guī)避Bug——發(fā)現(xiàn)、定位、解決。注意,這里有四個(gè)要素:任何被測(cè)系統(tǒng),全面,高效,Bug
1. 要素一:任何被測(cè)系統(tǒng)
系統(tǒng)的多樣性可能會(huì)迷惑你的雙眼,正如人往往容易在這花花世界中迷失一般,認(rèn)識(shí)不到什么才是真正值得追求的東西,什么才是真財(cái)富。有了上面的分析做鋪墊,這個(gè)就很簡(jiǎn)單了,其實(shí)就是解決“驅(qū)動(dòng)問題嘛”。總是有人對(duì)測(cè)試框架的搭建,測(cè)試環(huán)境的搭建產(chǎn)生畏懼,弄懂了這個(gè)原理,你就會(huì)變得一往無前,就兩種驅(qū)動(dòng)嘛,萬變不離其宗,只是根據(jù)不同的語言略有差異而已,但是我們都已經(jīng)看到明燈的方向了還會(huì)恐懼嗎?
2. 要素二:全面
這個(gè)其實(shí)就是測(cè)試用例的設(shè)計(jì)問題。這個(gè)上面已經(jīng)分析的很清楚了不在贅述,請(qǐng)參看上面x1,x2,…,xn組合數(shù)據(jù)的設(shè)定。
3. 要素三:高效
這個(gè)主要體現(xiàn)在三個(gè)方面:數(shù)據(jù)準(zhǔn)備服務(wù),自動(dòng)化測(cè)試,測(cè)試的維護(hù)和傳承。
目前做的最多的也是最成熟的就是數(shù)據(jù)準(zhǔn)備服務(wù),基本上每個(gè)產(chǎn)品線都有自己的數(shù)據(jù)準(zhǔn)備工具,如,數(shù)據(jù)工廠,TAP等。
自動(dòng)化測(cè)試也是提升測(cè)試效率的主要手段,但是手工測(cè)試是不可完全被取代的。自動(dòng)化測(cè)試有其適用場(chǎng)景:手工無法測(cè)試;功能穩(wěn)定不容易變動(dòng);頻繁回歸。即使不可全部自動(dòng)化,也要想辦法進(jìn)行半自動(dòng)化,半自動(dòng)不行就1/4自動(dòng)化。總之,條件允許我們要自動(dòng)化,條件不允許我們創(chuàng)造條件也要自動(dòng)化,將一切可以讓電腦干的事情堅(jiān)決不能讓人來干,所以,自動(dòng)化的程度也體現(xiàn)了一個(gè)測(cè)試工程師的能力水平。
測(cè)試的維護(hù)和傳承,這個(gè)是最容易造成勞動(dòng)力浪費(fèi)的地方。“寧可全部重寫也不愿改別人代碼”是工程師的通病,對(duì)于開發(fā)工程師來說這個(gè)問題還好一點(diǎn),畢竟你不能單獨(dú)開一個(gè)應(yīng)用,還得在原來的應(yīng)用中去改,但是對(duì)于測(cè)試工程師來說,這個(gè)問題暴露的尤為嚴(yán)重。測(cè)試腳本的獨(dú)立性決定了每個(gè)人寫出的自動(dòng)化腳本風(fēng)格都不一樣,一旦換人,后來的人是能自己寫的就堅(jiān)決不維護(hù)別人寫的腳本。對(duì)于自己寫的代碼還能做到一些復(fù)用和擴(kuò)展,但也很難讓別人來復(fù)用你的代碼,再換人了繼續(xù)惡性循環(huán)。究根結(jié)底,測(cè)試腳本沒有統(tǒng)一的規(guī)劃,不僅沒有統(tǒng)一風(fēng)格,也沒有統(tǒng)一架構(gòu),確實(shí)需要也很必要制定一些腳本編碼規(guī)范,規(guī)劃一下測(cè)試腳本的架構(gòu),讓測(cè)試腳本做到可維護(hù),可復(fù)用,可擴(kuò)展,并沉淀一些測(cè)試的服務(wù)供測(cè)試使用。另一方面,剛畢業(yè)的人在寫腳本,工作干了五六年的也在寫腳本,不信你去看,這兩者寫出來的腳本還是有很大差距的。剛寫腳本的人會(huì)把所有的邏輯放在一個(gè)testcase里,而一個(gè)老手就有了一定的架構(gòu)意識(shí),該抽象的抽象,該封裝的封裝。所以,對(duì)測(cè)試腳本的統(tǒng)一規(guī)劃,也為測(cè)試新人提供了成長(zhǎng)的方向,有利于測(cè)試新人的迅速成長(zhǎng)。另一個(gè)思路就是用上面說的“測(cè)試系統(tǒng)”來解決這個(gè)問題,大家只要按照固定的規(guī)范編寫用例,測(cè)試執(zhí)行的事情交給系統(tǒng)去做,這個(gè)應(yīng)該是最完美地解決傳承問題的解決方案,但前提是“測(cè)試系統(tǒng)”需要足夠的穩(wěn)定、強(qiáng)大。
4. 要素四:Bug
什么是Bug?只要不能滿足預(yù)期的東西都可以稱之為Bug。所以,Bug也是廣義的Bug,可以分為功能Bug,性能Bug,安全Bug,甚至流程Bug。對(duì)于一個(gè)Bug,優(yōu)秀的測(cè)試工程師要能夠定位Bug原因,并給出解決方案。
對(duì)于功能性Bug,沒什么好說的,測(cè)試工程師的大部分時(shí)間都花在了這里。Bug定位的方法,主要的手段就是看日志,Debug。
對(duì)于非功能性Bug,就有點(diǎn)復(fù)雜了,不能一概而論,但還是有方法的。如性能測(cè)試中,發(fā)現(xiàn)程序卡住了,你會(huì)猜測(cè)是否出現(xiàn)了線程死鎖,對(duì)于java應(yīng)用,你需要使用一些jvm工具去查看線程堆棧,根據(jù)線程狀態(tài)做出判斷。只要掌握了一些非功能性Bug的定位方法,定位起來也是有跡可循,最后做到游刃有余的。Bug的定位和解決考驗(yàn)的不僅是測(cè)試人員的技術(shù)深度,更是知識(shí)的廣度,所以這一點(diǎn)也是判斷一個(gè)測(cè)試工程師能力水平的重要方面。
另外,對(duì)于一些流程上面的問題,考驗(yàn)的又是測(cè)試工程師的溝通、協(xié)調(diào)能力。因?yàn)檎娴暮茈y,主導(dǎo)權(quán)在PD、開發(fā),作為最后一個(gè)環(huán)節(jié)的測(cè)試,有時(shí)候真的需要用一些溝通技巧,和修煉出的人格魅力去說服和推進(jìn)。
八、 測(cè)試崗位性質(zhì)
總結(jié)來說,測(cè)試屬于軟件質(zhì)量把控的最后一環(huán),測(cè)試的好壞直接決定了軟件質(zhì)量的好壞。歷史上面不乏因?yàn)闇y(cè)試不力而造成重大損失的案例:如,程序bug導(dǎo)致了天大的損失,要槍斃程序猿嗎?同時(shí),測(cè)試又是一個(gè)支撐型的崗位,雖然它不直接產(chǎn)出代碼,但對(duì)測(cè)試人員的要求不但不低,而且還非常之高,很多業(yè)界的測(cè)試大牛都是先成為開發(fā)大牛以后再轉(zhuǎn)成測(cè)試的,邏輯很簡(jiǎn)單,因?yàn)橐粋€(gè)人的能力達(dá)到很高的水平以后,如何把自己的能力復(fù)制給別人就成了一門學(xué)問,最簡(jiǎn)單直接的辦法是,去評(píng)估別人的代碼,指出別人代碼、架構(gòu)的問題。測(cè)試是一個(gè)入門簡(jiǎn)單,越做越難,甚至最后對(duì)人的要求高到極為苛刻的地步。測(cè)試的管理也是非常難做工作,現(xiàn)實(shí)中大家負(fù)責(zé)的都是不同的需求,你很難去評(píng)判兩個(gè)測(cè)試工程師之間的優(yōu)劣,因?yàn)闇y(cè)試的深度體現(xiàn)在思想上,也許你可以從測(cè)試用例上面去找到一點(diǎn)蛛絲馬跡,又或從溝通中去尋找,又或從發(fā)現(xiàn)的Bug上做參考,又或從線上產(chǎn)生的故障上面去找。
九、 說一說測(cè)試的現(xiàn)狀
測(cè)試是個(gè)很容易被人誤解的一份工作,測(cè)試工作本身的復(fù)雜性和綜合性,決定了測(cè)試人員的成長(zhǎng)不如單維度作戰(zhàn)的開發(fā)、PD快,以至于讓很多人對(duì)測(cè)試崗位產(chǎn)生誤解,也就不能責(zé)怪時(shí)不時(shí)興起的“我們需不需要專職QA”的口水戰(zhàn),以至于很多測(cè)試人自己都會(huì)開始懷疑。這是由于對(duì)測(cè)試本質(zhì)認(rèn)識(shí)不清造成的,測(cè)試有點(diǎn)像練內(nèi)家拳,很難修煉,甚至有人修煉三年都不得其門而入,這就不能責(zé)怪中途退場(chǎng)者甚眾,堅(jiān)定信念者寥寥。一句話來說,懂測(cè)試的人太少了。現(xiàn)在也有很多部門把測(cè)試人員強(qiáng)制轉(zhuǎn)成開發(fā)人員,試問真的行嗎?我從來不懷疑測(cè)試存在的價(jià)值,也堅(jiān)定地認(rèn)為測(cè)試不可能被砍掉。試問那些強(qiáng)制把測(cè)試轉(zhuǎn)成開發(fā)的,轉(zhuǎn)換后產(chǎn)品質(zhì)量如何?有多少是頂著開發(fā)title干著測(cè)試的活?當(dāng)然我沒有詳細(xì)調(diào)查過,知道的人可以說說。
測(cè)試工作的開展需要規(guī)范的合作流程,對(duì)于管理不嚴(yán)謹(jǐn)?shù)拈_發(fā)流程,測(cè)試工作的開展就顯得處處掣肘。阿里是個(gè)以結(jié)果為導(dǎo)向的公司,很多團(tuán)隊(duì)對(duì)過程都疏于管理:項(xiàng)目延期對(duì)績(jī)效無影響;只要線上不出大故障,即使小故障不斷對(duì)績(jī)效也無影響;發(fā)布出故障又怎么樣,大不了回滾嘛。在這樣的環(huán)境里,開發(fā)的質(zhì)量意識(shí)也達(dá)到了低谷,各種評(píng)審省掉,各種評(píng)審不叫測(cè)試,各種開發(fā)完了來找測(cè)試驗(yàn)證一下,各種壓縮測(cè)試時(shí)間,甚至我遇到過項(xiàng)目經(jīng)理的項(xiàng)目計(jì)劃中竟然沒有測(cè)試計(jì)劃,開發(fā)完成還死活不肯提測(cè)(因?yàn)檫^不了冒煙),再加上鼓吹開發(fā)自測(cè),開發(fā)完全可以繞過測(cè)試,自己隨便測(cè)測(cè),發(fā)布代碼上線,出現(xiàn)問題了,再來找測(cè)試回歸。通過歷史經(jīng)驗(yàn)來看,出現(xiàn)過幾次嚴(yán)重的大故障,大部分都是繞過測(cè)試,或者開發(fā)自測(cè)造成的。
十、 測(cè)試與生活
生活又何嘗不是如此,試想生活中我們對(duì)什么東西是了解的很透徹呢?很多事物對(duì)于我們來說都是個(gè)“黑盒”,你無法了解其中的緣由,但是你知道該怎么使用它。你清楚中醫(yī)的原理嗎?我們的老祖宗還不是用它治病治了數(shù)千年;人也是一個(gè)“黑盒”,你如何得知你身邊都是什么樣的人?還不是通過日常中很多事情來測(cè)試,了解他,讓你交到知心朋友,讓你能夠知人善用,帶好團(tuán)隊(duì);CEO選接班人,一定會(huì)讓候選人經(jīng)歷不同的部門,通過順境、逆境來多方面測(cè)試,考察其在不同的環(huán)境中的表現(xiàn),最后確定是否讓其上位;年終績(jī)效打好以后提交上去讓大老板審批,大老板如何審批?還不是通過設(shè)定的各個(gè)指標(biāo)的內(nèi)在關(guān)聯(lián),整體比例等維度來對(duì)這份績(jī)效考評(píng)表進(jìn)行測(cè)試的。這樣的例子舉不勝舉,生活處處皆測(cè)試,我們都是測(cè)試人。
點(diǎn)擊查看原文
總結(jié)
以上是生活随笔為你收集整理的测试之道--阿里巴巴八年测试专家倾情奉献的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人工智能让边缘计算更有价值!
- 下一篇: API信息全掌控,方便你的日志管理——阿