翻譯|行業資訊|編輯:胡濤|2023-12-29 10:28:05.530|閱讀 74 次
概述:關于人工智能以及它如何改變我們做事的方式,人們已經說了很多。當談到軟件測試時,人工智能的地位是什么?這篇文章重點介紹了人工智能如何幫助實現強大的軟件測試。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
關于人工智能以及它如何改變我們做事的方式,人們已經說了很多。當談到軟件測試時,人工智能的地位是什么?這篇文章重點介紹了人工智能如何幫助實現強大的軟件測試。
人工智能 (AI) 的出現繼續改變著技術格局。它在軟件開發的多個方面的應用不斷增長。軟件測試是人工智能應用可以推進的軟件開發領域之一。
軟件測試對于確保發布的軟件產品既滿足合規標準又滿足用戶的質量要求至關重要。然而,由于人工智能的使用存在許多變化,我們將深入探討人工智能在軟件測試中的含義。
讓我們來看看吧。
人工智能是數字市場上最流行的流行語之一。“人工智能”讓人聯想到諸如全能超級計算機一心要毀滅人類、Alexa 或 Siri 等語音控制輔助、計算機國際象棋對手以及自動駕駛汽車等形象。
維基百科將人工智能研究定義為“ ……對“智能代理”的研究:任何能夠感知環境并采取行動以最大程度地成功實現其目標的機會的設備。” 但這有點太抽象了。
我喜歡將人工智能視為計算機程序或機器思考(自身推理)和學習(收集數據并以有益的方式修改未來行為)的能力。
正是在這個定義中,我們開始看到人工智能對軟件開發工具和技術意味著什么更有意義的東西。
更多的軟件版本意味著更多的軟件測試
隨著全球開發人員數量持續激增,預計會有更多軟件版本進入軟件市場。證實了這一預期,預測顯示全球開發者人數預計將從 2020 年的 2450 萬增加到 2024 年的 2870 萬。
這預示著我們將在未來幾年繼續看到更多軟件的發布。隨著軟件版本數量的預期增長,需要自動化軟件測試。
軟件測試是對軟件基礎設施進行一系列功能和非功能測試場景的過程。這是一個評估軟件的過程,以確保它能夠有效地完成其設計目的。當團隊測試軟件時,他們可以發現并解決運行時缺陷、可擴展性問題、安全漏洞等。
軟件測試過程通常很嚴格,因此需要自動化。然而,要使軟件自動化變得超級高效和無縫,就需要結合人工智能。
軟件測試自動化中的人工智能
人工智能在軟件開發中的應用仍在不斷發展,但與自動駕駛系統或語音輔助控制、機器翻譯和機器人等更先進的工作領域相比,目前人工智能在軟件自動化測試中的使用水平較低。
人工智能在軟件測試工具中的應用重點是使軟件開發生命周期(SDLC)變得更容易。通過推理、解決問題以及在某些情況下機器學習的應用,人工智能可以幫助自動化并減少開發和測試中平凡而乏味的任務量。
您可能想知道,“測試自動化工具不是已經做到了這一點嗎?” 當然,測試自動化工具已經具有人工智能功能,但它們也有局限性。
人工智能在軟件開發中的亮點在于它可以消除這些限制,使軟件測試自動化工具能夠為開發人員和測試人員提供更多價值。人工智能的價值來自于減少開發人員或測試人員直接參與最平凡的任務。我們在應用商業邏輯、戰略思維、創意等方面仍然非常需要人類智能。
例如,考慮到大多數(如果不是全部)測試自動化工具都會為您運行測試并交付結果。大多數人不知道要運行哪些測試,因此他們運行所有測試或某些預定的測試集。
如果支持 AI 的機器人可以查看測試狀態的當前狀態、最近的代碼更改、代碼覆蓋率和其他指標,然后決定運行哪些測試并為您運行它們,會怎么樣?
基于不斷變化的數據做出決策是應用人工智能的一個例子。好消息!Parasoft 處理此級別的自動化軟件測試。
那么,機器學習呢?
機器學習 (ML) 可以通過應用算法來增強人工智能,這些算法允許工具通過收集測試產生的大量數據來自動改進。
機器學習研究是整體人工智能研究的一個子集,重點是基于先前觀察到的數據的決策管理。這是人工智能整體的一個重要方面,因為隨著學習的進步,智能需要修改決策。然而,在軟件測試工具中,機器學習并不總是必要的。有時,最好手動微調支持人工智能的工具,以適應使用該工具的組織,然后每次都可以應用相同的邏輯和推理,無論結果如何。
在其他情況下,數據收集是決策過程的關鍵,而機器學習可能非常有價值,它最初需要一些數據,然后隨著收集到更多數據而進行改進或適應。例如,代碼覆蓋率、靜態分析結果、測試結果或其他軟件指標,隨著時間的推移,可以讓人工智能了解軟件項目的狀態。
人工智能和機器學習是 Parasoft 持續研發的重要領域。我們的研究結果不斷帶來令人興奮的新方法,將這些技術集成到我們的產品中。以下是我們利用它們的幾種方法。
使用軟件測試 AI 提高靜態分析的采用率
成功采用靜態分析工具的障礙之一是管理大量警告并處理結果中的誤報(不是真正錯誤的警告)。分析遺留或現有代碼庫的軟件團隊很難通過靜態分析獲得初步結果,并且會因這種經驗而放棄進一步的努力。不知所措的部分原因是現代靜態分析工具可能存在的標準、規則(檢查器)、建議和指標的數量。
軟件開發團隊有獨特的質量要求。對于檢查器或編碼標準,沒有一刀切的建議。每個團隊都有自己對誤報的定義,通常意味著“不在乎”而不是“這在技術上是不正確的”。Parasoft 的解決方案是應用人工智能和機器學習來優先考慮靜態分析報告的結果,以改善用戶體驗和此類工具的采用。
Parasoft 使用一種方法來快速將靜態分析工具輸出中的結果分類為團隊想要看到的內容或團隊想要抑制的內容,方法是審查少量結果并根據與相關的元數據構建分類器這些發現。
該分類器基于以前對靜態分析結果的分類結果,在歷史上抑制不相關的警告以及對有意義的結果進行優先優先級排序以在代碼庫內進行修復。
最終結果分為兩種:
通過引導開發人員注意最有可能應用于其項目的警告,極大地改善了用戶體驗。我們還實施了一個熱點檢測引擎以及一個基于人工智能的先進模型,用于將違規行為分配給符合其最佳技能和經驗的開發人員,并從他們過去修復的違規行為中學習。通過這些創新,組織可以立即減少采用和使用靜態分析的手動工作。
使用人工智能自動生成單元測試和參數化
第一個示例位于Parasoft Jtest中,這是我們為 Java 開發人員提供的軟件測試解決方案,包括靜態分析、單元測試、覆蓋率和可追溯性等。在這里應用人工智能,我們發布了自動測試用例生成,這可以幫助開發人員填補從稀疏的 JUnit 工具開始時的空白。
Parasoft Jtest 的 IDE 插件通過簡單的一鍵操作來創建、擴展和維護單元測試,為單元測試實踐添加了有用的自動化功能。通過使用支持 AI 的 Jtest,用戶可以實現更高的代碼覆蓋率,同時顯著減少構建全面且有意義的 Junit 測試用例套件所需的時間和精力。
實現此目的的一種方法是更輕松地創建存根和模擬以隔離測試中的代碼。底層 AI 使 Jtest 能夠觀察被測單元以確定其對其他類的依賴關系。當創建這些依賴項的實例時,它建議用戶模擬它們以創建更多隔離的測試。
自動創建必要的模擬和存根可以減少測試創建中最耗時的部分之一的工作量。
Parasoft Jtest 還會自動檢測現有測試套件未覆蓋的代碼,并遍歷源代碼的控制路徑,以找出哪些參數需要傳遞到被測方法中,以及需要如何初始化 subs/mocks 才能達到該代碼。通過啟用此 AI,Jtest 可以自動生成新的單元測試,應用修改后的參數來增加整個項目的整體代碼覆蓋率。
使用 AI 和 ML 自動化 API 測試生成和維護
另一個很好的例子是Parasoft SOAtest的智能 API 測試生成器,它添加了機器學習。它超越了記錄和回放測試,利用 AI 和機器學習將 UI 測試轉換為完整、自動化的 API 測試場景。
智能 API 測試生成器使用推理來理解在執行 UI 時進行的不同 API 調用中的模式和關系。根據該分析,構建了一系列 API 調用,表示 UI 流程期間進行的底層接口調用。
然后,它通過觀察不同 API 資源的情況并將其作為模板存儲在專有數據結構中來應用機器學習。通過檢查用戶庫中的其他測試用例來更新此內部結構,以了解練習 API 時的不同類型的行為,例如斷言或在正確的位置添加特定標頭。
人工智能的目標是創建更高級的測試,而不僅僅是重復用戶正在做的事情,就像簡單的記錄和回放測試一樣。智能 API 測試生成器的工作原理如下:
由此產生的自動化 API 測試更加完整、可重用、可擴展且能夠適應變化。
使用機器學習來自我修復 Selenium 測試的執行
自動驗證 UI 層是測試策略的另一個關鍵組成部分,以確保產品在投入生產之前得到充分驗證。Selenium 框架已廣泛用于 UI 測試,但用戶仍然面臨常見的 Selenium 測試可維護性和穩定性挑戰。這就是人工智能技術(尤其是機器學習)可以提供幫助的地方,它可以在運行時提供自我修復,以解決與 UI 測試執行相關的常見可維護性問題。
我們通過 Parasoft Selenic 提供此功能,它可以在定期執行 Selenium 測試期間“了解”您的內部數據結構。Selenic 引擎監視每次運行并捕獲有關被測應用程序的 Web UI 內容的詳細信息。它提取 DOM 元素、它們的屬性、定位器等,并將它們與 UI 驅動的測試執行的操作關聯起來。Selenic 采用 Parasoft 專有的數據建模方法,將該信息存儲在其人工智能引擎內。該模型不斷更新,分析所有測試的歷史執行情況,以繼續變得“更智能”。
當網頁的 UI 元素被顯著移動或修改而導致測試失敗時,這可以節省關鍵的時間。借助 Selenic,引擎使用的 AI 啟發式方法可以將這些已更改的元素與模型表示的歷史數據“匹配”,并自動生成可抵抗更改的“智能定位器”,以在運行時恢復 Selenium 測試的執行。有關這些變化的信息會通過模型自動傳播,并且未來一代的新定位器會根據這些變化進行調整。
除此之外,Selenic 還可以自我修復不同類型的“等待條件”,解決與被測系統性能特征相關的不穩定性問題。它還測量與在網頁上運行每個測試用例相關的時間,并將其與先前運行捕獲的歷史平均值進行比較。如果偏差超過特定閾值,則會在報告內標記警報,以通知用戶重大變化。
測試影響分析 (TIA) 評估對生產代碼所做的更改的影響。它有助于揭示受代碼更改影響的測試用例。TIA 的主要好處是,它無需在修改后對整個代碼庫運行測試。這可以節省時間和成本,同時保持您的開發流程高效運行。
您可以在執行手動測試期間受益于 TIA 技術,也可以利用基于 TIA 的工具與 CI/CD 管道的集成。這可以優化自動化測試的運行,并向開發人員提供有關更改對其項目質量的影響的更快反饋。根據產品的性質和要執行的測試類型,您可以利用 Parasoft 的 AI 增強技術來優化.NET 和 C# 靜態分析測試、Java 單元測試、Selenium Web UI 測試和API 測試的執行。
軟件市場的爆炸式增長表明,將繼續發布更多軟件來解決我們日常業務中的問題。然而,為了讓軟件高效運行并盡快進入市場,軟件測試需要自動化和人工智能。這就是 Parasoft 發揮作用的地方。
在 Parasoft,我們提供人工智能驅動、機器學習驅動的軟件測試解決方案,將質量集成到軟件開發過程中,以在 SDLC 的早期預防、檢測和修復缺陷。
了解更多有關Parasoft產品咨詢,歡迎咨詢
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn