天天看點

利用 Parasoft 的 ChatGPT,在軟體開發中最大化人工智能

作者:十點閱讀

ChatGPT是2023年最熱門的話題之一,是由OpenAI訓練的語言模型。它能夠了解和生成自然語言文本,并接受過大量資料的訓練,包括用各種程式設計語言編寫的許多開源項目的源代碼。

軟體開發人員可以利用大量的知識來協助他們的工作,因為它具有對源代碼的語義了解。開發人員可以使用 ChatGPT 根據正确的提示生成有用的代碼。

編寫代碼時 ChatGPT 在軟體開發中的一種應用,還有許多其他應用。這篇文章的重點是 ChatGPT 生成用于專業軟體開發環境的代碼。

已經有可用的編碼插件,例如Github Copilot,它使用于 ChatGPT 相同的技術來幫助軟體開發人員。這些插件可以分析開發人員正在編寫的代碼并生成供考慮的建議。

通過通路廣泛的代碼庫,ChatGPT 可以編寫準确的代碼并提供有用的代碼建議,進而使開發過程更快、更高效。

Parasoft—C/C++靜态測試自動化測試工具,建構高品質軟體的最佳解決方案-慧都網

ChatGPT 和代碼生成

ChatGPT 和人工智能代碼生成的未來是光明的,但也存在一些缺陷。讓我們來看看優點和缺點。

ChatGPT編寫代碼的優點

盡管它還處于早期采用階段,但專業程式員已經意識到利用 ChatGPT 的優勢。

  • 支援多種程式設計語言。盡管 ChatGPT 很難準确回答它接受了多少種語言的訓練,但當今使用的最流行的語言是其訓練集中最能代表的語言。
  • 通過生成代碼提高生産力,并提供更多功能,例如單元測試、自動化腳本、架構規劃和功能實作的建議。
  • 與傳統人工智能和機器學習 (ML) 工具相比,對源代碼有更深入的語義了解。ChatGPT 已經表明,通過正确的提示,它可以了解代碼的功能和行為。它的分析檢查代碼的邏輯并識别潛在的邊緣情況、邊界條件和在表面上可能不明顯的依賴關系。傳統的人工智能工具僅限于較小的訓練集和有限的輸出。
  • 幫助不熟悉語言或目标環境的開發人員。ChatGPT 可以幫助剛接觸項目的開發人員快速了解所使用的環境和語言。盡管存在一些警告,如下所述,但這是一個學習此代碼的好機會。

ChatGPT編寫代碼的缺點

使用 ChatGPT 編寫代碼有一些缺點,因為該技術是新技術,并且生成的代碼的來源尚不清楚。以下是在軟體開發中使用 ChatGPT 的一些缺點。

  • 使用專有代碼和提示資訊時發生 IP 洩露。用作 ChatGPT 提示的代碼将成為訓練集的一部分,并且可能可供其他使用者使用。三星員工最近在向 ChatGPT 洩露專有代碼時發現了這些風險。Copilot 等商業解決方案允許使用者關閉使用其專有代碼進行教育訓練的選項。
  • 生成代碼的出處。ChatGPT 的訓練資料是否包括專有代碼或未經許可的開源代碼?生成的代碼是否需要歸屬或許可?目前還不清楚 ChatGPT 生成的代碼來自哪裡,因為它是基于從網際網路上擷取的示例。盡管訓練資料主要是開源代碼,但仍然需要了解許可要求。
  • 對編碼提示的回答缺乏一緻性。根據設計,每次使用相同的提示時,每個答案都可能而且很可能會有所不同。
  • 品質和安全性令人擔憂,因為訓練中使用的開源資料中的錯誤和編寫不當的代碼可能會洩漏到 ChatGPT 的輸出中,或者生成式 AI 模型可能會犯錯誤。ChatGPT 不會審查其答案的安全性或性能,它生成的代碼甚至可能無法編譯。
  • 開發人員可以接受其中存在不明顯問題的代碼。由于代碼傳回時格式整齊并記錄在案,是以很容易認為這是理所當然的。對生成的代碼應用良好的代碼品質流程(例如代碼審查、靜态分析和單元測試)以確定其按預期工作比以往任何時候都更加重要。
  • ChatGPT 的好壞取決于它的訓練資料。當行業中的标準開發實踐發生變化(例如庫 API)時,某些 ChatGPT 響應可能會包含過時的資訊。

利用 Parasoft 的技術克服 ChatGPT 的代碼編寫限制

Parasoft 目前正在積極研究協同效應,通過将 ChatGPT 等生成式 AI 模型的先進功能與 Parasoft 解決方案目前提供的深度軟體測試自動化功能相結合,可以使客戶受益。該研究主要集中在兩個領域。

  1. 如何在自動化軟體測試平台中利用 ChatGPT。
  2. 如何使用該平台驗證 ChatGPT 生成的代碼。

在 Parasoft 的自動化軟體測試平台中利用 ChatGPT

ChatGPT 和 Parasoft 現有的軟體測試自動化功能之間具有巨大的協同潛力。我們可以利用對基于 GPT 的模型中包含的代碼的深入語義了解來增強 Parasoft 平台中已包含的測試産品,包括測試生成、靜态分析和報告功能。具體來說,我們重點改進以下方面。

  1. 生成針對靜态分析違規的代碼修複。Parasoft 已經擁有大量有關編碼标準和靜态分析違規的資訊。我們應該能夠使用該資訊提示 ChatGPT 自動生成針對發現的代碼違規的修複程式。
  2. 生成智能的、語義感覺的單元測試。Parasoft 目前的單元測試生成功能經過優化,可以覆寫盡可能多的代碼路徑,而無需建立備援測試。我們希望能夠将其與 ChatGPT 對代碼的語義了解相結合,生成具有更好名稱和一組輸入值的測試,進而實作良好的代碼覆寫率并包括真實世界的邊界條件值。
  3. 生成積極、消極和安全 API 測試場景。Parasoft SOAtest 中的 Parasoft 的 API 測試生成器在根據記錄的流量建立功能 API 測試場景方面做得非常出色。但它的能力受到限制,隻能為其所看到的流量建立場景。通過利用 ChatGPT,我們希望生成 API 測試場景,以各種不同的方式(包括預期的和意外的)運作 OpenAPI 定義中包含的端點。

使用 Parasoft 的平台驗證 ChatGPT 生成的代碼

Parasoft 可以通過克服生成代碼的品質、安全性和性能問題來提高基于 GPT 的新代碼生成的實用性。我們的平台在許多不同的應用領域進行了測試和驗證,包括安全關鍵軟體。我們已經使用人工智能和機器學習來協助靜态分析、測試生成和自我修複。

雖然 ChatGPT 代碼生成勢必會變得流行,但它建立的代碼接受漏洞掃描、品質評估和測試(例如 Parasoft 平台提供的測試)仍然至關重要。

ChatGPT 和軟體測試自動化的優勢

驗證并驗證生成的代碼。團隊必須使用軟體測試自動化工具通過靜态分析來分析ChatGPT生成的代碼,并使用測試工具進行測試。生成的代碼應該像任何其他開發的代碼一樣對待,甚至更仔細,以確定它滿足項目的品質和安全目标。

遵守編碼标準。Parasoft 靜态分析等解決方案可以確定 ChatGPT 生成的代碼符合編碼标準和最佳實踐。他們可以根據預定義的規則和指南檢查代碼并标記任何違規行為。

提高安全性。ChatGPT 生成的代碼的安全性未知,并且漏洞和相關的軟體缺陷可能隐藏在格式良好的輸出中。像對待第三方或開源代碼一樣對待所有生成的代碼。在內建到您的應用程式之前應該對其進行審查。

提高生産率。人工智能代碼生成很可能成為一項重要的創新,有可能大幅提高生産力。例如,Parasoft 的單元測試生成技術對于批量建立測試用例具有高度可擴充性。此外,利用生成式人工智能的軟體測試工具功能的改進帶來了更多好處。真正的雙赢。

概括

軟體組織可以通過使用由生成式人工智能技術增強的軟體測試自動化解決方案來提高測試品質,并最大限度地減少設計和運作測試所涉及的手動工作。在不久的将來,Parasoft 預計将釋出其平台的增強功能,使用 ChatGPT 來幫助提高靜态分析、單元測試和 API 測試的精度和有效性,這最終将更好地驗證 ChatGPT 生成的和人工測試的結果。編寫的代碼。

為了充分受益于這種新的人工智能技術,驗證 ChatGPT 生成的代碼并将其視為任何新開發的代碼非常重要。Parasoft 等軟體測試自動化工具可以幫助 ChatGPT 成為有用的開發工具,同時降低風險并提高生産力

繼續閱讀