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