翻譯|行業資訊|編輯:黃竹雯|2019-09-10 14:41:32.090|閱讀 646 次
概述:軟件開發行業最新的流行語之一是AI(人工智能)。但這究竟意味著什么?在軟件測試自動化環境中,AI如何與其更廣泛的定義不同?
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
當我們談論AI及其姐妹術語機器學習時,我們通常想表達什么呢?接下來我們將討論下我們如何使用AI和機器學習來推進軟件測試的最新技術。
人工智能是市場上最有重量感的流行語之一。“人工智能”會讓人想起像全能超級計算機這樣的東西,他們一心想要毀滅人類;以Alexa或Siri的方式提供語音控制協助;電腦棋對手;或自動駕駛汽車。
維基百科定義人工智能研究作為“ ...的研究‘智能代理’:即感知周圍環境,并采取最大限度地發揮其成功地實現其目標的幾率行為有關的任何設備。”但是在我看來,這有些抽象,我傾向于把AI作為該計算機程序或機器思考(自身的原因)和學習(以有益的方式收集數據和修改未來行為)的能力。在這個定義中,我們開始在AI對軟件意味著什么的背景下看到更有意義的東西開發工具和技術。
同樣重要的是要意識到“AI”的范圍會隨著時間而變化。例如,在某一時刻,光學字符識別(OCR)被認為是AI中最先進的技術。或者來自Siri和Alexa的問答回答,一度被認為是最先進的,但是現在卻基本上被認為是理所當然的存在,并不被認為是人工智能了。軟件測試工具也會發生同樣的事情 - 隨著新功能的發展,現在的自動化創新在未來將會成為現實。但就目前而言,讓我們來思考一下2018年的軟件測試自動化中的人工智能。
人工智能在軟件開發中的應用仍處于起步階段,自主程度遠低于自動駕駛系統或語音輔助控制等更為發展的領域,盡管它仍然朝著自主的方向前進測試。AI在軟件測試工具中的應用側重于使軟件開發生命周期更容易。通過應用推理,解決問題,以及在某些情況下,機器學習,AI可用于幫助自動化和減少開發和測試中的平凡和繁瑣任務的數量。
AI在軟件開發中的亮點在于應用它來消除這些限制,使軟件測試自動化工具能夠為開發人員和測試人員提供更多價值。AI的價值來自于減少開發人員或測試人員在最平凡的任務中的直接參與。(在應用業務邏輯等方面仍然非常需要人工智能)
例如,考慮大多數測試自動化工具為您運行測試并提供結果。大多數人不知道要運行哪些測試,因此他們運行所有測試或一些預定的設置。那么,如果啟用AI的機器人可以查看當前的測試狀態,最近的代碼更改,代碼覆蓋率和其他指標,決定運行哪些測試,然后運行它們呢?引入基于變化數據的決策是應用AI的一個例子(順便說一句,Parasoft做到了這一點)。該軟件有效地能夠在決策過程中取代開發人員/測試人員。將此應用于CI / CD管道的好處是顯而易見的。
那么,機器學習呢?機器學習可以通過應用算法來增強AI,這些算法允許工具通過收集測試產生的大量數據自動改進。
機器學習研究是整體AI研究的一個子集,側重于基于先前觀察到的數據的決策。這是人工智能整體的一個重要方面,因為智能需要在學習改進時修改決策。但是,在軟件測試工具中,并不總是需要機器學習 - 有時候最好使用工具手動微調人工智能工具以適應組織,然后每次都可以應用相同的邏輯和推理,無論如何結果。
在其他情況下,數據收集是決策過程的關鍵,機器學習可能非常有價值,最初需要一些數據,然后隨著收集更多數據而改進或適應。例如,隨著時間的推移,代碼覆蓋率,靜態分析結果,測試結果或其他軟件度量可以向AI通知軟件項目的狀態。
這是Parasoft研究和開發的一個重要領域。令人興奮的是,我們目前的產品只是一個開始,我們對AI和ML的持續研究繼續為將這些技術集成到我們的產品中帶來新的方法。以下是我們已經將它們引入的幾種實例。
第一個例子是Parasoft Jtest,我們的Java開發人員軟件測試解決方案,包括靜態分析,單元測試,覆蓋和可追溯性等。在這里應用AI,我們發布了自動測試用例生成,幫助開發人員填補空白從稀疏的JUnit線束開始。
Parasoft Jtest的IDE插件通過簡單的一鍵式操作為單元測試提供了有用的自動化,可用于創建,縮放和維護單元測試。通過使用支持AI的Jtest,用戶可以實現更高的代碼覆蓋率,同時減少構建全面且有意義的Junit測試用例套件所需的一半時間和精力。
這樣做的一種方法是更容易創建存根和模擬以隔離被測代碼。底層AI使Jtest能夠觀察被測單元以確定其對其他類的依賴性,并且當創建這些依賴項的實例時,它建議向用戶模擬它們以創建更多獨立的測試。自動創建必要的模擬和存根可以減少測試創建中最耗時的部分之一的工作量。
Parasoft Jtest還會自動檢測現有測試套件未涵蓋的代碼,并遍歷源代碼的控制路徑,以確定需要將哪些參數傳遞到測試方法中,以及如何初始化sub / mocks以達到那段代碼。通過啟用此AI,Jtest可以自動生成新的單元測試,應用修改的參數以增加整個項目的整體代碼覆蓋率。
將機器學習添加到組合中的另一個好例子是Parasoft SOAtest的Smart API Test Generator(智能API測試生成器),它超越了記錄和回放測試,利用AI和機器學習將手動UI測試轉換為完整的自動化API測試場景。
Smart API測試生成器使用推理來理解在執行UI時進行的不同API調用中的模式和關系。根據該分析,構造了一系列API調用,表示在UI流程中進行的底層接口調用。然后,它通過觀察不同API資源的內容并將其作為模板存儲在 專有數據結構中來應用機器學習。 通過檢查用戶庫中的其他測試用例來更新此內部結構,以便在執行API時學習不同類型的行為,例如,斷言或在正確的位置添加特定標頭。
這里AI的目標是創建更高級的測試(不僅僅是重復用戶正在做的事情,就像你進行簡單的記錄和回放測試一樣)。該工具可識別流量中的模式,創建觀察參數的綜合數據模型,生成自動API測試,并將學習模式應用于其他API測試以增強它們并幫助用戶創建更高級的自動化測試方案。由此產生的自動化API測試更加完整,可重復使用,可擴展且適應變化。
未來會發生什么呢?我們正在這個領域積極研發,繼續追求人工智能和機器學習的進一步應用,以增強我們的軟件測試工具套件。有許多研究途徑,但最終目標很明確:幫助團隊更有效地開發和測試他們的代碼,以便快速創建更高質量的軟件。
想要了解Parasoft、Parasoft SOAtest、Parasoft Jtest更多信息或資源的朋友,請
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: