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 成为更加有用的开发工具,同时降低风险并提高生产力。