ChatGPT是2023年最熱門的話題之一,是OpenAI訓練的語言模型。它能夠理解和生成自然語言文本,并接受過大量數據的訓練,包括用各種編程語言編寫的許多開源項目的源代碼。
軟件開發人員可以利用大量的知識庫來協助他們的工作,因為它具有對源代碼的語義理解的能力。開發人員可以使用 ChatGPT 根據正確的提示生成有用的代碼。
編寫代碼是 ChatGPT 在軟件開發中的一種應用,當然它在很多其他領域有應用。本文的重點是 ChatGPT 生成用于專業軟件開發環境的代碼。
市面上已經有可用的編碼插件,例如 Github Copilot,它使用與 ChatGPT 相同的技術來幫助軟件開發人員。這些插件可以分析開發人員正在編寫的代碼并生成供考慮的建議。
通過訪問廣泛的代碼庫,ChatGPT 可以編寫準確的代碼并提供有用的代碼建議,從而使開發過程更快、更高效。
ChatGPT 和代碼生成
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 解決方案當前提供的深度軟件測試自動化功能相結合,可以使客戶受益。該研究主要集中在兩個領域:
如何在自動化軟件測試平臺中利用 ChatGPT
如何使用該平臺驗證 ChatGPT 生成的代碼
在 Parasoft 的自動化軟件測試平臺中利用 ChatGPT
ChatGPT 和 Parasoft 現有的軟件測試自動化功能之間存在巨大的協同潛力。我們可以利用對基于 GPT 的模型中包含的代碼的深入語義理解來增強 Parasoft 平臺中已包含的測試產品,包括測試生成、靜態分析和報告功能。具體來說,我們重點改進以下方面:
生成針對靜態分析違規的代碼修復。Parasoft 已經擁有大量有關編碼標準和靜態分析違規的信息。我們應該能夠使用該信息提示 ChatGPT 自動生成針對發現的代碼違規的修復程序。
生成智能的、語義感知的單元測試。 Parasoft 當前的單元測試生成功能經過優化,可覆蓋盡可能多的代碼路徑,而無需創建冗余測試。我們希望能夠將其與 ChatGPT 對代碼的語義理解相結合,生成具有更好名稱和一組輸入值的測試,從而實現良好的代碼覆蓋率并包括真實情況的邊界條件值。
生成正向、負向和安全 API 測試場景。 Parasoft SOAtest 中的API 測試生成器在根據記錄的流量創建功能 API 測試場景方面做得非常出色。但它的能力受到限制,只能針對其所看到的流量創建場景。通過利用 ChatGPT,我們希望生成 API 測試場景,以各種不同的方式(包括預期的和意外的)運行 OpenAPI 定義中包含的端點。
ChatGPT 和軟件測試自動化的優勢
驗證并確認生成的代碼。團隊必須使用軟件測試自動化工具通過靜態分析來分析ChatGPT生成的代碼,并使用測試工具進行測試。生成的代碼應該像任何其他開發的代碼一樣對待,甚至更仔細,以確保它滿足項目的質量和安全目標。
遵守編碼標準。Parasoft 靜態分析等解決方案可以確保 ChatGPT 生成的代碼符合編碼標準和最佳實踐。他們可以根據預定義的規則和指南檢查代碼并標記任何違規行為。
提高安全性。ChatGPT 生成的代碼的安全性未知,并且漏洞和相關的軟件缺陷可能隱藏在格式良好的輸出中。像對待第三方或開源代碼一樣對待所有生成的代碼。在集成到您的應用程序之前應該對其進行審查。
提高生產率。 人工智能代碼生成很可能成為一項重要的創新,有可能大幅提高生產力。例如,Parasoft 的單元測試生成技術具有高度可擴展性,可用于批量創建測試用例。此外,利用生成式人工智能的軟件測試工具功能的改進帶來了更多好處。這才是真正的雙贏。
總結
團隊可以通過使用由生成式人工智能技術增強的軟件測試自動化解決方案來提高測試質量,并最大限度地減少設計和運行測試所涉及的手動工作。在不久的將來,Parasoft 預計將發布其平臺的增強功能,使用 ChatGPT 來幫助用戶提高靜態分析、單元測試和 API 測試的精度和有效性,這最終將更好地驗證 ChatGPT 生成的和人工編寫的代碼。
為了最大化ChatGPT帶來的好處,驗證 ChatGPT 生成的代碼并將其視為新開發的代碼非常重要。Parasoft 等軟件測試自動化工具可以幫助 ChatGPT 成為更加有用的開發工具,同時降低風險并提高生產力。
審核編輯 黃宇
-
Parasoft
+關注
關注
0文章
5瀏覽量
5793 -
OpenAI
+關注
關注
9文章
1089瀏覽量
6514 -
ChatGPT
+關注
關注
29文章
1561瀏覽量
7671
發布評論請先 登錄
相關推薦
評論