現代軟體開發人員和我們的前輩沒什麼相似之處。我們已經抛棄他們的夾克和領帶,而是選擇衛衣和t恤。我們已經放棄他們的辦公室和隔間,而是選擇黑客宿舍和咖啡館。他們使用軟碟和步行進行檔案交換。而我們用github。他們列印和存儲,而我們分享和釋出。他們曾為有分銷管道的大企業工作。這個世界就是我們的分銷管道。在這裡,所有的這些變化,我們的軟體測試在哪裡呢?
讓我們來看看,90年代曾是軟體測試的黃金時代。作為一個行業,我們曾努力地想把一切都弄明白。全局或局部的資料?檔案和變量命名約定。時間限制與記憶體使用率。類庫,過程或内嵌代碼?用或重用?以及他們所有的鼻祖:我們如何修複在現場出現的缺陷,當時報告缺陷的唯一途徑是通過電話或電子郵件,并且更新軟體的唯一途徑是郵寄了一套新的軟碟?我們曾處于一旦編寫了不當的代碼,在傳遞之後,花費很大代價來修複其缺陷,是非常,非常痛苦的。
我們投入這麼多時間和精力測試就不足為奇。我們别無選擇,隻能仔細檢查開發人員的工作,并盡量保證遺漏盡可能少的缺陷到釋出的産品中。就像我說的,這是軟體測試人員的一個黃金時代。做對的幾率很小,昂貴返工的幾率很大。測試人員曾是一道保險,沒有一家公司能承擔得起衰退。
但随後世界已悄然發生變化。首先是網站,軟體更新變得微不足道,重新整理一下網頁而已。所有的那些軟碟都已被遺忘。然後是移動應用,它們可以收集自己的使用者資料,建立自己的故障報告,并提示使用者在必要時更新它們。與此同時,産品中缺陷的風險被大大降低。所謂的瀑布式軟體開發模型,被創造更好開箱即用代碼的靈活方法而取代。圍繞如何編寫代碼和編寫代碼實踐知識的群體智慧日趨成熟。編碼的藝術已漸行漸遠。
品質還是同樣重要,當然,但獲得品質則需要一個不同于過去的關注點。招聘一堆測試人員将確定你需要那些測試人員。測試人員隻是精神上的寄托。一個自我實作的預言。你招聘得越多,你将需要更多。測試現在不再是實際的角色,因為它是已融入到開發人員的每日活動中。你可以繼續采用90年代時所采用的測試方式,但為什麼你要繼續呢?
品質源于代碼而非測試。
在生命周期的末端,現在最終使用者可以在一定程度上參與測試,這在過去是不能發生的。畢竟,誰才能更好地判斷缺陷:是老老實實試圖使用該軟體來完成工作(或更愉快工作)的最終使用者?還是擁有先入為主(不可避免的偏見)的假定該軟體能完成工作的測試人員?當最終使用者是如此靠近時,為什麼一定要讓測試人員作為開發人員和最終使用者之間的中介?當開發人員和最終使用者之間沒有中介時,你能想象這對品質的影響嗎?
品質,因而測試不是獨立于軟體開發過程之外,除非你的軟體是準備進入核電廠、醫療裝置或航空等領域,(目前來說)在這些領域産品部署上線後的召回是非常困難的。對于這個星球上的絕大多數的應用程式開發,軟體測試是在開發進行中的一項活動 ,并在軟體釋出後持續發生的活動。現代測試是一項活動,并不需要一個單獨的角色來執行。現在是時候把品質進到21世紀,測試就是軟體開發過程的一個組成部分,你會常常忘記你正在做些什麼,因為它已經變得無比熟悉和自然。嘿,這不是很棒?......完成測試不再大費周章?
這已不再是你父親的應用程式開發過程,而是你的呐。挑戰吧。
-----
如有任何翻譯不當或者疏漏,敬請指出。
原文作者:james whittaker
原文連結: