譯者前言:大概是2008年年底的時候,我和一位幾乎在Sun工作了一輩子的工程師有過交流(那時候Sun即將被收購,他很低落),他詳細的講解了Sun的內部測試架構,其中提到了Sun在幾十年中自主研發了大量自動化測試工具,所以我產生了一個疑問:自動化測試不是最近幾年興起的概念嗎?自動化測試的地位和作用是什麼?自動化測試能否解決測試面臨的問題?這幾年我對測試的理解又提升了,正好又看到James Bach的文章《What is Test Automation?》,我與他觀點近似,翻譯出來給大家看看,歡迎討論。
測試自動化就是任何利用工具來輔助的測試,幾乎在計算機工業產生的第一天,這種測試就出現了。而且歷史上從來沒有出現過“測試自動化取代測試工程師工作”這種事情發生,除非你完全忽略測試人員們的真正工作。
基於同樣的原因,自動空間探測器從來都不是用來“取代太空科學家的工作”,他們只是拓展了科學家的探索范圍。自動化測試也是意味著拓展了測試者的探索范圍。
測試自動化根本就不是新生事物(轉著圈兒的同意——譯者Orz),獨立測試工程師的理念都要比它新。在很久以前,大約在上世紀40年代末期,獨立測試工程師根本沒有出現。開發人員自己測試程序。到了六十年代,關於測試的論文(比如IFIPS會議中的那些)都是在論述開發人員如何測試他們自己的程序。測試(test)和調試(debug)這兩個概念也沒有被區分開。隨著軟件系統的規模越來越大,獨立測試的理念還是變得時髦起來。在1972年的Chapel Hill,關於軟件測試的第一次會議召開,這次會議推動了軟件測試開始作為獨立於開發的技術被討論。
不過在這個會議上,我想他們把一件事情搞錯了。就是他們對測試自動化寄予了很多期望和熱情。這種期望最後沒有成功實現,不過不是因為缺少實踐,而是缺乏足夠好的理解。
他們沒有理解的,同時也是許多同時代程序員(我覺得到今天很多程序員也沒有理解——譯者)沒有理解的是:好的軟件測試,天然的,必然的是一種人類活動,必然的,而不是偶然的。測試是一種社會活動,一種心理活動。軟件越復雜,人在使用和識別軟件問題上的作用就越大。但是Chapel Hill會議被那些受訓練為程序員和電子工程師的人占據了,這個會上缺乏那些懂得如何去思考的人。
(誰是這種會思考的人? Jerry Weinberg. 他的論文1965 Ph.D. thesis on problem solving簡直太棒了。他在1970年寫了計算機編程心理學,包含了一系列關於60年代的軟件測試的論文。在他1961年的書,軟件開發基礎中,他專門用一章討論軟件測試。很遺憾Jerry沒有參加Chapel Hill會議,但是他參加了在多倫多的CAST會議)
受訓的獨立測試人員的理念要比自動化測試的理念還要新,但是和測試自動化比起來,這個理念的接受程度還不夠,因為對測試人員的培訓實在是太糟糕了!(我們國內又何嘗不是——譯者)
所以有人理解測試是一種簡單的技術,測試就是保證對API的調用不會讓程序像個不受控的野獸一樣滾到不知哪裡去。這種理念還在那,我是說微軟。我老婆到現在還得讓我來幫她做微軟Office軟件的問題定位。我被告知,Microsoft Office,一個仍然在膨脹中的軟件,是由那些沒有系統學習過軟件測試的開發人員,在那些“自動化測試工具”的支持下寫出來的。(好在我的同事,Michael Bolton——這哥們是不是唱歌也不錯?譯者Orz——最近在微軟開了一堂測試課,所以,也許,還有希望)
測試自動化無法再現測試工程師構想測試、控制測試、修改測試、觀察和評估產品時的那些創造性思維。測試自動化不能完成那些高質量的測試。所以,測試自動化從來就不意味著:把那些測試工程師提供的服務自動化。
總之一句話,測試自動化意味著使用測試工具。測試自動化是個古老的理念,獨立測試工程師的理念比這個要新。業界現在還沒有嘗試過(除了在很小的內部范圍)系統的培訓測試人員,他們僅僅把職位命名為“測試工程師”或者“開發測試工程師”,然後把一些他們都不熟悉的測試工具丟給他們,然後一廂情願的希望他們可以努力!Fighting!
(另外,我也是程序員。我用我的Apple II電腦敲程序,這比我聽說assemblers這個東東還要早。在上世紀90年代早期,我在Borland C++項目帶領Borland Turbo Debugger測試組——Debugger是給開發人員使用的調試工具,說明James對開發人員的工作很了解。譯者——在這之前,我在蘋果公司帶領測試工具開發組。開人人員測試,基於GUI的自動化測試,不基於GUI的自動化測試,這些東西我都做過。
我的這些經歷甚至給我帶來了一些新問題,當我面對新一代測試人員——指受訓獨立測試人員,譯者注——和那些沒用過所謂的自動化測試工具的開發人員時,我顯得有點缺乏耐心)
譯者:James Bach的意思是,應該是獨立測試工程師革自動化測試的命,而不是反過來。50年前自動化測試沒有解決的問題,今天就可以解決了嗎?歡迎討論。