将Parasoft和ChatGPT相结合会如何?

news2024/11/24 20:09:58

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 解决方案当前提供的深度软件测试自动化功能相结合,可以使客户受益。该研究主要集中在两个领域:

  1. 如何在自动化软件测试平台中利用 ChatGPT

  2. 如何使用该平台验证 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 成为更加有用的开发工具,同时降低风险并提高生产力。

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/786421.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全高级课笔记1

HTML字符编码/HTML实体编码 html实体编码 unicode urlcode 在字符的十六进制前加百分号(%),用于浏览器的网址输入框 utf-8 字符数字表示法 HTML允许使用Nuicode码点表示字符,浏览器会自动将码点转成对应的字符。 字符的码点表…

vtk能否被OpenGL和DirectX取代?

VTK(Visualization Toolkit)是一个强大的开源可视化库,用于处理和呈现各种科学数据。它建立在OpenGL和DirectX等底层图形库之上,提供了高级的可视化功能和算法。虽然OpenGL和DirectX可以用于图形渲染和实时图形处理,但…

数据结构--线性表2-1

目录 一、线性结构的定义 二、线性表的表示 三、顺序表的实现(或操作) 1、修改: 2、插入: 四、顺序表的运算效率分析:时间效率分析: 一、线性结构的定义 若结构时非空有限集,则有且仅有一个…

python爬虫基础入门——利用requests和BeautifulSoup

(本文是自己学习爬虫的一点笔记和感悟) 经过python的初步学习,对字符串、列表、字典、元祖、条件语句、循环语句……等概念应该已经有了整体印象,终于可以着手做一些小练习来巩固知识点,写爬虫练习再适合不过。 1. 网页基础 爬虫的本质就是从网页中获取所需的信息,对网…

优化帮助与支持中心,提升客户满意度

在竞争激烈的商业环境中,提供良好的客户体验和有效的支持服务是企业获得成功的关键因素之一。优化帮助与支持中心的设计和运营对于提升客户满意度至关重要。本文将探讨如何通过优化帮助与支持中心来提升客户满意度,并为企业带来更多的商业机会。 提供多…

2023年深圳杯数学建模 A题 影响城市居民身体健康的因素分析

以心脑血管疾病、糖尿病、恶性肿瘤以及慢性阻塞性肺病为代表的慢性非传染性疾病(以下简称慢性病)已经成为影响我国居民身体健康的重要问题。随着人们生活方式的改变,慢性病的患病率持续攀升。众所周知,健康状况与年龄、饮食习惯、…

【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(7 月 25 日论文合集)

文章目录 一、分割|语义相关(17篇)1.1 Semi-Supervised Medical Image Segmentation with Co-Distribution Alignment1.2 CTVIS: Consistent Training for Online Video Instance Segmentation1.3 SL: Stable Learning in Source-Free Domain Adaption for Medical Image Segme…

16_LinuxLCD驱动

目录 Framebuffer设备 LCD驱动简析 LCD驱动程序编写 LCD屏幕参数节点信息修改 LCD 屏幕背光节点信息 使能Linux logo显示 设置LCD作为终端控制台 Framebuffer设备 先来回顾一下裸机的时候LCD驱动是怎么编写的,裸机LCD驱动编写流程如下: 1.初始化I.MX6U的eLCDIF控制器,…

【代码随想录day19】找树左下角的值

题目 思路 这题最直观的方法就是用层序遍历,记录一下每一层的左边第一个节点,这样整个层序遍历一遍就能找到最后一行最左边的节点。这里要注意最左边的节点不一定是父节点的左子节点!!!如果最后一行没有左子节点&…

M5ATOMS3基础01按键

initinputoutput Linux环境Arduino IDE中配置ATOM S3 示例 官方示例代码: /* ******************************************************************************* * Copyright (c) 2022 by M5Stack * Equipped with M5AtomS3 sample source c…

Redis过期策略和内存淘汰策略

过期策略 过期策略是指Redis设置过期时间且key已经到达过期时间时删除该key,一般有定期删除和惰性删除; 定期删除是指每隔固定时间扫描key,对已经过期的key做清除操作; 定期删除时并不会实际对key做全量扫描,而是随机…

数字时代下CIO们如何做到业务增长和安全“双手抓”

7月22日,由福建信息主管(CIO)网主办的品牌企业业务增长与CIO进化之道暨福建CIO网20周年(厦门)产业数字化供需见面会在厦门顺利举办。 作为国内云原生安全领导厂商,安全狗也收到邀请出席此次活动。 厦门服云信息科技有限公司&…

Python实战案例:轻松采集微博评论,揭示网络舆论热点!

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 开发环境: python 3.8: 解释器 pycharm: 代码编辑器 模块使用: requests: 发送请求 parsel: 解析数据 jieba pandas stylecloud 第三方模块安装: win R 输入cmd 输入安装命令 pip install 模块名 (如果你…

Android平台如何实现第三方模块编码后(H.264/H.265/AAC/PCMA/PCMU)数据实时预览播放

技术诉求 我们在做GB28181设备对接模块和RTMP直播推送模块的时候,遇到这样的技术需求,设备(如执法记录仪)侧除了采集传统的摄像头外,还需要对接比如大疆等第三方数据源,确保按照GB28181规范和RTMP协议规范…

使用百度地图SDK计算距离

说明:通过百度地图提供的SDK,可以计算出两个地点之间的距离,另外还有行驶路线等等。本文介绍如果使用百度地图SDK,并用java代码实现。 申请 首先需要登录百度地图的官网,申请开发者认证,个人认证一般都很…

装饰模式-扩展系统功能

买了新车后,不少人会对车进行装饰,比如给车贴膜,喷上骚粉的漆等。某天,小李和小张都买了辆车,小李想给车贴膜,小张想给车先喷漆然后再贴膜。现在中的做法是,把车开到改装店,如果要喷…

统一观测丨使用 Prometheus 监控 Cassandra 数据库最佳实践

作者:元格 本篇内容主要包括四部分:Cassandra 概览介绍、常见关键指标解读、常见告警规则解读、如何通过 Prometheus 建立相应监控体系。 Cassandra 简介 Cassandra 是什么? Apache Cassandra 是一个开源、分布式、去中心化、弹性可伸缩、…

day44-Spring_AOP

0目录 1.2.3 1.Spring_AOP 实体类: Mapper接口: Service和实现类: 测试1: 运行后: 测试2:无此型号时 测试3:库存不足时 解决方案1:事务声明管理器 测试&#xff1a…

【从零开始学习JAVA | 第三十篇】方法引用

前言: 方法引用作为一个重要的知识点,虽然他使用起来很复杂,而且会降低代码的可读性,但是如果用好了方法引用,我们也会获得不错的效率,因此我们在今天将为大家讲解什么是方法引用。 方法引用:…

J-Flash合并多个bin文件

文章目录 1. 前言2. 下载 J-Flash 工具3. 合并3个bin文件3.1 Booloader.bin3.2 APP1.bin3.3 APP2.bin3.4 保存 → 导出合并bin文件3.5 未用到的区域会被填充为 FF 4. 欢迎纠正~ 1. 前言 下面介绍用J-Flash工具合并多个bin文件的方法 2. 下载 J-Flash 工具 在下载Jink驱动的…