原文作者 | Nate Nead
責編 | 晉兆雨,編譯| 風車雲馬
機器學習(ML)和人工智慧(AI)經常被認爲是通向未來世界的大門,在這個世界裏機器人像人一樣互動,它們可以在各個方面都比人類聰明。如今,機器學習已經被應用在世界各地數以萬計的應用程式中,而且它以一種看不見的方式,開始重塑我們的生活和工作方式。儘管這些技術堪稱具有破壞性,被認爲是引起人類恐慌的罪魁禍首,但它們在人類社會的各個領域都發揮着巨大作用。
更吸引人的是機器學習在自動駕駛汽車等新興技術上的應用。多虧了ML,自動駕駛軟體不僅可以通過數百萬次的迭代進行自我改進,還可以在駕駛過程中面對新環境時快速自適應。不僅如此,ML在軟體測試等領域可能更爲重要,因爲無論什麼技術,幾乎都離不開軟體測試。
那麼,機器學習究竟是如何影響軟件開發和測試的呢?未來會是什麼樣子呢?
機器學習和人工智慧
首先,讓我們解釋一下ML和AI之間的區別,因爲這些技術是相關的,但經常相互混淆。機器學習指的是一種演算法系統,它被用來幫助計算機不斷地自我改進。換句話說,通過機器學習,可以將一個功能(比如面部識別、自動駕駛或語音轉換文字)測試和改進得越來越好;而對於外部觀察者來說,這個系統看起來像是在學習。
人工智慧被認爲是一種由機器展示的智慧,它通常以ML爲基礎。沒有演示AI的ML系統是可能的,但是沒有ML的AI是很難的。
軟體測試的重要性
現在,讓我們來看看軟體測試——軟件開發過程中的一個關鍵環節,也可以說是最重要的階段。軟體測試的目的是確保產品按照預期執行,在大多數情況下,在產品實際完成之前,會經歷反覆 反復迭代的過程。
通過軟體測試,您可以預先識別錯誤和其他缺陷,在變成真正的問題之前糾正它們。您還可以評估產品的品質,通過測試來評估其在各種不同情況下的速度和效能。最終實現更好、更可靠的產品——以及在產品的生命週期中更低的維護成本。
試圖在沒有完成測試的情況下交付軟體產品,類似於構建一個缺乏良好基礎的高樓大廈。據估計,如果沒有完全執行適當的測試,軟體交付後的成本可能是專案本身的總成本的4-5倍。當談到軟件開發時,測試失敗就是專案失敗。
機器學習是如何重塑軟體測試的
這裏,我們可以把兩者結合起來。機器學習如何使軟件開發和測試變得更好?
ML已經被軟體測試人員用於自動化和改進測試過程。它通常與敏捷方法結合使用,後者強調持續交付和增量迭代開發,而不是一次構建整個產品。作者認爲敏捷和scrum方法的未來會涉及大量的機器學習和人工智慧,這就是原因之一。
機器學習可以在很多方面改進軟體測試:
更快、更輕鬆的測試。老式的測試方法幾乎完全依賴於人工幹預和人工努力;軟體工程師和QA測試人員將手動執行軟體並檢查錯誤。如果使用ML技術,您可以自動化並更快地執行測試,不需要花費幾個小時的人工時間。
連續測試。此外,QA測試人員只在部分時間內介入,如果您在持續開發軟體,這是不可能的。基於ML的測試系統可以部署連續測試,不斷檢查產品在不同條件下的效能。
一致性測試。如果您需要對同一產品進行兩次測試,您是否有信心以完全相同的方式進行測試?很可能沒有——人類很難做到這一點。但ML演算法的建立和執行尤其擅長重複相同的過程,一遍又一遍、不耐煩地、可靠地——您永遠不必擔心測試指令碼的一致性問題。
更高的靈敏度。基於ML的現代驗證工具能夠識別人眼無法識別的UI差異。這個UI元素的顏色正確嗎?它在正確的位置嗎?視覺缺陷有時很明顯就容易被發現,但是基於ML的「眼睛」具有更高的靈敏度和準確性。
多層測試。ML測試還支援多層測試,而不需要用戶介面。ML軟體測試系統可以測試應用程式日誌,包括原始碼和軟體監控系統日誌。
雖然軟件開發和測試過程的自動化勢在必行,但困難依然重重。我們還遠沒有達到全面自動化所需的技術水平。即使是當今最先進的軟體測試環境,機器學習是幫助批次處理程式碼集,在不需要解耦的情況下測試和解決大數據問題。如果測試過程中出現錯誤,基於ML的多層結構化測試也會提醒相關使用者標記問題,並繼續完成自動測試過程。
基於ML的軟體測試不僅提高了一致性,減少了錯誤,同時也節省了時間,降低了成本。隨着ML技術的不斷進步,它將以全新的、更具創新性的方式重塑軟體測試領域。
雖然我們離這個目標還有一定的差距,但我們相信,ML技術必將助力軟件開發人員「創紀錄」地完成迭代過程。這將引發未來軟件開發和測試領域的一場變革。
原文鏈接:
https://readwrite.com/2020/07/06/machine-learning-software-testing/
本文爲 AI 科技大本營翻譯,轉載請註明出處授權
推薦閱讀