譯者前言:大概是2008年年底的時候,我和一位幾乎在Sun工作了一輩子的工程師有過交流(那時候Sun即將被收購,他很低落),他詳細(xì)的講解了Sun的內(nèi)部測試架構(gòu),其中提到了Sun在幾十年中自主研發(fā)了大量自動化測試工具,所以我產(chǎn)生了一個疑問:自動化測試不是近幾年興起的概念嗎?自動化測試的地位和作用是什么?自動化測試能否解決測試面臨的問題?這幾年我對測試的理解又提升了,正好又看到James Bach的文章《What is Test Automation?》,我與他觀點近似,翻譯出來給大家看看,歡迎討論。

  測試自動化是任何利用工具來輔助的測試,幾乎在計算機工業(yè)產(chǎn)生的第,這種測試出現(xiàn)了。而且歷史上從來沒有出現(xiàn)過“測試自動化取代測試工程師工作”這種事情發(fā)生,除非你完全忽略測試人員們的真正工作。

  基于同樣的原因,自動空間探測器從來都不是用來“取代太空科學(xué)家的工作”,他們只是拓展了科學(xué)家的探索范圍。自動化測試也是意味著拓展了測試者的探索范圍。

  測試自動化根本不是新生事物(轉(zhuǎn)著圈兒的同意??譯者Orz),獨立測試工程師的理念都要比它新。在很久以前,大約在上世紀(jì)40年代末期,獨立測試工程師根本沒有出現(xiàn)。開發(fā)人員自己測試程序。到了六十年代,關(guān)于測試的論文(比如IFIPS會議中的那些)都是在論述開發(fā)人員如何測試他們自己的程序。測試(test)和調(diào)試(debug)這兩個概念也沒有被區(qū)分開。隨著軟件系統(tǒng)的規(guī)模越來越大,獨立測試的理念還是變得時髦起來。在1972年的Chapel Hill,關(guān)于軟件測試的第一次會議召開,這次會議推動了軟件測試開始作為獨立于開發(fā)的技術(shù)被討論。

  不過在這個會議上,我想他們把一件事情搞錯了。是他們對測試自動化寄予了很多期望和熱情。這種期望后沒有成功實現(xiàn),不過不是因為缺少實踐,而是缺乏足夠好的理解。

  他們沒有理解的,同時也是許多同時代程序員(我覺得到很多程序員也沒有理解??譯者)沒有理解的是:好的軟件測試,天然的,必然的是一種人類活動,必然的,而不是偶然的。測試是一種社會活動,一種心理活動。軟件越復(fù)雜,人在使用和識別軟件問題上的作用越大。但是Chapel Hill會議被那些受訓(xùn)練為程序員和電子工程師的人占據(jù)了,這個會上缺乏那些懂得如何去思考的人。

  (誰是這種會思考的人? Jerry Weinberg. 他的論文1965 Ph.D. thesis on problem solving簡直太棒了。他在1970年寫了計算機編程心理學(xué),包含了一系列關(guān)于60年代的軟件測試的論文。在他1961年的書,軟件開發(fā)基礎(chǔ)中,他專門用一章討論軟件測試。很遺憾Jerry沒有參加Chapel Hill會議,但是他參加了在多倫多的CAST會議)

  受訓(xùn)的獨立測試人員的理念要比自動化測試的理念還要新,但是和測試自動化比起來,這個理念的接受程度還不夠,因為對測試人員的培訓(xùn)實在是太糟糕了!(我們國內(nèi)又何嘗不是??譯者)

  所以有人理解測試是一種簡單的技術(shù),測試是保證對API的調(diào)用不會讓程序像個不受控的野獸一樣滾到不知哪里去。這種理念還在那,我是說微軟。我老婆到現(xiàn)在還得讓我來幫她做微軟Office軟件的問題定位。我被告知,Microsoft Office,一個仍然在膨脹中的軟件,是由那些沒有系統(tǒng)學(xué)習(xí)過軟件測試的開發(fā)人員,在那些“自動化測試工具”的支持下寫出來的。(好在我的同事,Michael Bolton??這哥們是不是唱歌也不錯?譯者Orz??近在微軟開了一堂測試課,所以,也許,還有希望)

  測試自動化無法再現(xiàn)測試工程師構(gòu)想測試、控制測試、修改測試、觀察和評估產(chǎn)品時的那些創(chuàng)造性思維。測試自動化不能完成那些高質(zhì)量的測試。所以,測試自動化從來不意味著:把那些測試工程師提供的服務(wù)自動化。

  總之一句話,測試自動化意味著使用測試工具。測試自動化是個古老的理念,獨立測試工程師的理念比這個要新。業(yè)界現(xiàn)在還沒有嘗試過(除了在很小的內(nèi)部范圍)系統(tǒng)的培訓(xùn)測試人員,他們僅僅把職位命名為“測試工程師”或者“開發(fā)測試工程師”,然后把一些他們都不熟悉的測試工具丟給他們,然后一廂情愿的希望他們可以努力!Fighting!

  (另外,我也是程序員。我用我的Apple II電腦敲程序,這比我聽說assemblers這個東東還要早。在上世紀(jì)90年代早期,我在Borland C++項目帶領(lǐng)Borland Turbo Debugger測試組??Debugger是給開發(fā)人員使用的調(diào)試工具,說明James對開發(fā)人員的工作很了解。譯者??在這之前,我在蘋果公司帶領(lǐng)測試工具開發(fā)組。開人人員測試,基于GUI的自動化測試,不基于GUI的自動化測試,這些東西我都做過。

  我的這些經(jīng)歷甚至給我?guī)砹艘恍┬聠栴},當(dāng)我面對新一代測試人員??指受訓(xùn)獨立測試人員,譯者注??和那些沒用過所謂的自動化測試工具的開發(fā)人員時,我顯得有點缺乏耐心)

  譯者:James Bach的意思是,應(yīng)該是獨立測試工程師革自動化測試的命,而不是反過來。50年前自動化測試沒有解決的問題,可以解決了嗎?歡迎討論。