《三十六計(jì)》是根據(jù)我國(guó)古代卓越的軍事思想和豐富的斗爭(zhēng)經(jīng)驗(yàn)總結(jié)而成的兵書(shū),古人用兵最講究謀略,在中國(guó)古代戰(zhàn)爭(zhēng)史上,精彩的謀略計(jì)策層出不窮,令人眼花繚亂,但萬(wàn)變不離其宗,大抵都逃不過(guò)這三十六計(jì)的范圍。時(shí)至今日,“三十六計(jì)”在我們?nèi)粘5墓ぷ骱蜕钪校瑯涌梢杂泻軓V泛的應(yīng)用。我是一名軟件測(cè)試工程師,并熱愛(ài)軟件測(cè)試這一職業(yè),目前從事測(cè)試已有一段時(shí)間,我很愿意將自已在從事軟件測(cè)試工作中積累的一些經(jīng)驗(yàn),以及一些心得體會(huì),借助三十六計(jì)中的若干計(jì)謀加以說(shuō)明,與諸位同行分享。
總說(shuō)
?? 【原文】
六六三十六,數(shù)中有術(shù),術(shù)中有數(shù)。陰陽(yáng)燮理,機(jī)在其中。機(jī)不可設(shè),設(shè)則不中。
?? 【解析】
“兵以詐立”,多謀者勝。用兵要講究謀略,“運(yùn)籌帷幄,決勝千里之外”。同樣的道理,無(wú)論從事什么樣的工作,都需要講究方式、方法。有了正確的方式方法,或者適時(shí)的運(yùn)用一些小技巧,往往可以收到事半功倍的奇效。
第一計(jì) 瞞天過(guò)海
【原文】
??? 備周則意怠;常見(jiàn)則不疑。陰在陽(yáng)之內(nèi),不在陽(yáng)之對(duì)。太陽(yáng),太陰。
?? 【譯文】
??? 防備周全時(shí),更容易麻痹大意;習(xí)以為常的事,也常會(huì)失去警戒。秘密潛藏在公開(kāi)的事物里,并非存在于公開(kāi)暴露的事物之外。公開(kāi)暴露的事物發(fā)展到極端,就形成了最隱秘的潛藏狀態(tài)。
【解析】
long,long ago,there is a 很厲害的程序員,名叫關(guān)羽,他是計(jì)算機(jī)專業(yè)科班出身,又擁有二十幾年的編程開(kāi)發(fā)經(jīng)驗(yàn),是當(dāng)之無(wú)愧的資深軟件工程師。雖然關(guān)羽的專業(yè)水平無(wú)庸置疑,但是他有一個(gè)缺點(diǎn),就是自視過(guò)高,驕傲不可一世,他常常認(rèn)為自己寫(xiě)的代碼十分完美,幾乎已經(jīng)到了自戀的程度。他看不起測(cè)試人員,對(duì)他們提出的程序錯(cuò)誤不僅不屑修改,甚至于不肯承認(rèn),并經(jīng)常與測(cè)試人員起爭(zhēng)執(zhí)。有一年他在湖北荊州負(fù)責(zé)一個(gè)十分重要的大型系統(tǒng)的開(kāi)發(fā),而負(fù)責(zé)這個(gè)系統(tǒng)測(cè)試工作的正是關(guān)羽向來(lái)都瞧不起的呂蒙。這個(gè)呂蒙原本學(xué)歷不高,只有中專文化程度,并且還不大注重學(xué)習(xí),提高自己的能力。直到有一次被他的上司孫權(quán)教育了一頓,從此發(fā)奮圖強(qiáng),進(jìn)步神速,技術(shù)能力迅速提高,早已不是當(dāng)日的吳下阿蒙。起先呂蒙將發(fā)現(xiàn)的錯(cuò)誤上報(bào)給關(guān)羽,關(guān)羽并不理會(huì),還是如同以往一樣,找出許多理由來(lái)搪塞,一會(huì)兒說(shuō)這是個(gè)技術(shù)難點(diǎn),無(wú)法修改,一會(huì)兒又說(shuō)這是當(dāng)初的需求沒(méi)有寫(xiě)清楚。這呂蒙早就清楚關(guān)羽的為人,從此也不與關(guān)羽多加爭(zhēng)辯,只是兢兢業(yè)業(yè)的做著自己的工作,將自己在測(cè)試過(guò)程中發(fā)現(xiàn)的所有小錯(cuò)誤一一如實(shí)記錄了下來(lái)。等到測(cè)試報(bào)告出來(lái)的時(shí)候,關(guān)羽傻了眼。由于他一時(shí)疏忽而犯下的一個(gè)小錯(cuò)誤,并且錯(cuò)誤擴(kuò)散到整個(gè)系統(tǒng)的每個(gè)角落,已經(jīng)無(wú)法修改。客戶大為不滿,項(xiàng)目終于失敗!而老板一氣之下也把關(guān)羽炒了魷魚(yú)。關(guān)羽的一世英名就這樣毀在自己的大意上面。這就是在IT業(yè)界流傳很廣,十分有名的“關(guān)羽大意失荊州”的故事。
從這個(gè)故事中我們可以得到以下幾個(gè)教訓(xùn):
1、越是厲害的人物,越容易陰溝里翻船,水平很高的程序員,也很容易因?yàn)椴蛔⒁饧?xì)節(jié)而犯下一些低級(jí)的錯(cuò)誤。所以身為一名測(cè)試者,不能迷信權(quán)威或?qū)<遥瑢?duì)就是對(duì),錯(cuò)就是錯(cuò),要勇于懷疑一切。時(shí)刻牢記我們代表的是最終用戶,并建立這樣一個(gè)觀點(diǎn):即使一個(gè)錯(cuò)誤不是程序本身的原因,而是因?yàn)椴僮鞑槐愣褂脩粼斐桑瑖?yán)格說(shuō)來(lái),那仍然是一個(gè)錯(cuò)誤。
2、測(cè)試者與開(kāi)發(fā)者的地位是相對(duì)獨(dú)立,但絕不是勢(shì)同水火,雙方彼此同樣是項(xiàng)目組的成員,在保證軟件產(chǎn)品質(zhì)量這個(gè)大方向上是一致的,彼此都應(yīng)該互相尊重對(duì)方的勞動(dòng)成果,虛心對(duì)待。關(guān)羽的直接領(lǐng)導(dǎo)諸葛亮早就告誡過(guò)他這一點(diǎn),讓他一定要尊重測(cè)試組的勞動(dòng)成果,不要雙方鬧翻。可關(guān)羽硬是不聽(tīng),于是造成項(xiàng)目失敗。
3、在測(cè)試工作中,測(cè)試者與程序員的溝通是十分重要的。在雙方互相尊重的基礎(chǔ)上,彼此都要本著對(duì)事不對(duì)人的原則,保持嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度,共同完成軟件的開(kāi)發(fā)。上面的故事中,呂蒙的做法其實(shí)也不是十分的正確,不僅遭到了大量關(guān)羽的fans的指責(zé),而且長(zhǎng)久背負(fù)著做人不厚道的罵名,這些倒不重要,更為重要的是,最終整個(gè)系統(tǒng)、整個(gè)開(kāi)發(fā)團(tuán)隊(duì)失敗了,他同樣是個(gè)失敗者。更好的做法是在測(cè)試的工作中,就要注重溝通問(wèn)題,當(dāng)一個(gè)錯(cuò)誤一直不被修改的時(shí)候,與開(kāi)發(fā)人員溝通失敗后,應(yīng)該及時(shí)上報(bào)給項(xiàng)目的管理者,盡早尋求解決的方法,而不是將錯(cuò)誤一直留到測(cè)試結(jié)束后才暴露出來(lái),此時(shí)的錯(cuò)誤可能已經(jīng)造成十分嚴(yán)重的后果,測(cè)試報(bào)告寫(xiě)得再漂亮也已經(jīng)沒(méi)有多大的意義。基于以上陳詞,本庭宣判:本案關(guān)羽負(fù)主要責(zé)任,呂蒙負(fù)次要責(zé)任。關(guān)羽斬首,呂蒙打五十大板!^_^
??? 4、想要做好測(cè)試工作,學(xué)歷和技術(shù)并不是最重要的,重要的是要有責(zé)任心和細(xì)心,中專畢業(yè)證書(shū)是中專學(xué)校發(fā)的,大學(xué)畢業(yè)證書(shū)是大學(xué)發(fā)的,而有了責(zé)任心和細(xì)心的測(cè)試員,就不再是普通的測(cè)試工程師,而是優(yōu)秀的測(cè)試工程師了。
在開(kāi)發(fā)一個(gè)軟件產(chǎn)品的過(guò)程中,每一個(gè)程序員都需要跟成千上萬(wàn)行的代碼打交道,他們自己寫(xiě)的代碼就像大寶SOD蜜一樣的天天見(jiàn),看多了難免叫人頭昏眼花胸悶心煩……再加上每天都看見(jiàn)的東西,很容易就會(huì)產(chǎn)生思維定式。一個(gè)人偶爾犯錯(cuò)并不可怕,可怕的是他對(duì)錯(cuò)誤熟視無(wú)睹,錯(cuò)啊錯(cuò)啊的就習(xí)慣了,于是很自然的把錯(cuò)的當(dāng)成對(duì)的。俗話說(shuō)“老虎也有打盹的時(shí)候”,水平再高的程序員也會(huì)有犯錯(cuò)誤的時(shí)候,因此必然會(huì)有一些錯(cuò)誤和缺陷是很難被自身發(fā)現(xiàn)的,其原因可能是他在閱讀需求規(guī)格的時(shí)候惦記著那天和女朋友吵架的事情開(kāi)了小差,從而沒(méi)有好好地理解需求;也可能是他那天正好失戀心情不好而犯迷糊,更可氣的是他居然說(shuō)女朋友都跟別人跑了我的程序?qū)懙媚敲春糜惺裁从茫移@么寫(xiě)……所以說(shuō)沒(méi)有BUG的軟件是不存在的(否則廣大和我一樣的軟件測(cè)試工作者靠什么混飯吃?^_^)。
“陰在陽(yáng)之內(nèi),不在陽(yáng)之對(duì)”,我們那些無(wú)比智慧而英明的祖先在這里清楚的告訴我們,一個(gè)軟件產(chǎn)品中最大、最致命的BUG,往往不是如你想象的那么隱蔽、那么難找,而經(jīng)常是潛伏在你最沒(méi)有防備、以為最不可能出錯(cuò)的那些地方。這便再一次的證明了這樣一個(gè)道理:在軟件的世界里,不是缺少BUG,而是缺少發(fā)現(xiàn)BUG的眼睛!