查看原文
其他

2021年,必须知道/采用的七大AI 软件开发/测试工具

Test Ninja 软件质量报道 2023-06-12


持续不断的创新浪潮来了又去,每年都有许多新的语言、创新的实践和很酷的工具问世,软件开发比其他任何行业更喜新厌旧、更具有创新性,许多团队和个人越来越意识到通过采用新的语言、新的技术和新的工具保持自己的领先地位。


在过去的几年里,一股新的创新浪潮正在逼近:那就是人工智能(AI)。今天,我们无论怎么形容AI的热度都不为过,现在每个人都可以清楚地看到AI是如何影响我们的生活和工作的,如刷脸认证身份、智能语音应答、机器人流程自动化等。但是,我们软件开发人员不能只是帮助其它行业应用AI技术,我们更应该使用AI技术帮助自身的工作——软件研发(含测试、交付)。


AI技术将把软件研发带到一个新的高度

新兴的AI技术可以更强大地帮助开发人员,因为与传统工具不同的是,它可以通过机器学习来适应从可能到不太可能的各种场景。机器学习受益于负边际成本,这使得输入数据变得非常重要。这些新兴人工智能技术的性能通过规模不断增大得到增强,会随着时间的推移而改进,应用得越多效果越好。


当我们谈论AI工具时,我们并不会盲目地乐观、也不是自动化一切,更不是希望通过AI工具取代开发人员——我们更乐意坚持 “以人为中心”,系统地使用AI助手来控制代码的可靠性,正像最近微软和OpenAI联合发布的GitHub Copilot,取名 “副驾驶”,开发人员还是 “主驾驶”工具还是助手,虽然AI工具可以逐步学习、采用开发人员的编码风格,AI工具也能够通过协调研发人员的工作来实现更多异步/同步的多站点协作,从而在新旧代码之间以及研发人员之间带来更大的保真度。


我们提倡以人为中心、AI驱动的自动化,让我们能够设计出可以落地、具有很高的使用价值的工具,也会避免目光短浅地专注于自动化带来的短暂收益。AI驱动的自动化最终意味着,虽然开发人员的创造性和设计思维工作仍由人类完成,但外围任务可以减轻开发人员的负担,并能更高效地处理。这样,除了给研发人员的支持和更大的创新空间之外,这种体贴的、以人为中心的自动化还可以减少研发人员的认知压力,进而降低研发人员的倦怠风险。


三年前,我介绍了9款AI测试工具,今天,我给大家介绍7款优秀的AI软件研发工具从代码编写、补全到代码评审、代码漏洞检查、测试,覆盖软件研发全生命周期,也相信你们采用了这些工具之后, 软件研发将变得更快、更强大,每一个研发人员将会体验到更高的生产力和更大的灵活性。


1. 使用GitHub Copilot 结对编程

自从GPT-3——OpenAI最强大的人工智能——发布以来,软件行业一直想知道微软将如何利用这项技术,用新工具推动软件工程领域的发展。

现在这个答案揭晓了——GitHub发布了一款独特的结对编程AI工具——GitHub Copilot来帮助开发人员。这个新工具最初以有限访问(LA)beta版本发布,支持Javascript、Typescript、Ruby、Python和Go。GPT-3使得上下文感知成为可能,GitHub Copilot能够从文档中创建函数(反过来检查Ponicode Dogstring),加速重复代码的生产或提出测试建议。

(https://copilot.github.com/)


2. 使用Codota 自动补全代码

当谈到AI如何帮助开发者更好地编写代码时,Codota算是首屈一指的工具,并创造了一个真正有助于编写代码的解决方案。

自动补全代码以前已经存在,但Codota 直接在IDE中实现代码自动补全。Codota提倡 “write less, code more (少即是多)”的理念。这四个字真的很好地体现了Codota的特点,这样解决了更快编码的需求,以及在编写代码时减少犯错的机会。在此基础上,Codota使用API数据库在我们需要灵感时,及时能展示相应的、良好的示例。

(https://www.codota.com/)

我们可以使用其免费试用版亲自尝试,但其企业版更强大的功能,可以带来真正情境化的体验,在这里AI可以(安全地)学习我们所在公司的编程模式,并相应地学习、提升工具自身的认知。

国内也有一款类似的工具,来自北京大学的 aiXCoder


3. 使用DeepCode进行代码审查

一旦代码被创建,我们就想看看代码是否有问题,这时你可能会害怕Deepcode技术! Deepcode团队创建了一个AI代码审查工具,它会让提醒我们:哪些地方可能危及代码,这些都是一些关键问题,但它也可以向我们提供代码质量改进的非关键信息。


(https://www.deepcode.ai/)


Deepcode希望提供支持AI的建议,超越目前可用的经典代码审查工具的功能。它不仅会让我们注意到会语法错误,而且能发现引起bug的其它问题,如文件损坏、API-契约违反或进程死锁问题。在安全方面,Deepcode还可以发现漏洞:硬编码的敏感数据、协议不安全或弱加密算法。

有了Deepcode,肯定会改善软件研发CI/CD发布流水线,通过友好的界面完成缺陷的修复和代码的移动。


4. 使用Sourcegraph进行代码搜索

越来越复杂的软件开发需要有高安全性和质量标准,而我们也没有足够的时间致力于这类工作,Sourcegraph试图帮我们解决这样普遍存在的问题。

Sourcegraph使用图形理论科学更好、更快地搜索代码。这在编程中也是非常重要的特性,因为在代码开发中,代码可能会从一个开发人员转交给另一个开发人员,往往需要快速地、轻松地研究代码、检索错误和debug。除此之外,Sourcegraph还提供了进行大规模代码更改的功能,通过强大的代码搜索能力能够让我们轻松地找到相应的代码并以快速地修复。

(https://about.sourcegraph.com/)


5. 使用GitGuardian进行安全漏洞检测

重要的事说三遍:安全、安全、安全,从来没有一个词对我们的世界如此重要——或者更应该说,对我们的数字世界如此重要。开发人员花费越来越多的时间来确保所写的代码满足日益复杂的安全标准,以交付更安全的软件。

感觉GitGuardian就像一个躲在黑暗中的超级英雄,随时准备将我们从代码中的关键安全漏洞中拯救出来。它会对内部私有数据和Github上的公开数据进行扫描,它会扫描Github公共代码库,并发现那些值得警告公司的问题。GitGuardian将扫描代码确保代码中没有留下连接字符串、证书、私钥或硬编码的登录信息,可以保护公司不受未经授权的访问,并立即发现被暴露的敏感信息。GitGuardian不仅可以指出错误,还可以帮助纠正错误,甚至可以无缝地集成到CI流水线上。

(https://www.gitguardian.com/)

6. Diffblue

Diffblue使用AI快速地自动为Java代码编写单元测试套件,否则手动编写需要数天或数周时间。

之前,我多次提过:软件测试是DevOps的头号瓶颈,它会导致研发倒退和开发人员生产力的损失,减缓开发速度和降低产品质量。Diffblue旨在通过自动化测试减少这个问题。免费的IntelliJ插件可帮助开发人员实时地进行交互式编写测试,并通过快速、批量地生成实际代码的单元回归测试,以支持测试驱动开发(TDD)——这样开发人员就可以有更多时间编写可测试的代码,以及覆盖复杂、关键的业务逻辑的单元测试。

(https://www.diffblue.com/)

7. 用Ponicode进行单元测试

单元测试可能执行得很糟糕,容易被人为操纵,甚至干脆跳过,因为它通常被认为是编码过程中工作量特别大的环节。Ponicode借助AI技术帮助开发人员并引导他们释放编码的全部潜力,帮助开发人员轻松地完成单元测试

除了一键创建单元测试以节省时间之外,Ponicode还使用AI创建智能输入建议,使开发人员永远不会错过一些边界的情况,并提高代码覆盖率,而不必忍受耗时和手动单元测试编写过程的痛苦。

(https://www.ponicode.com/)

有了AI开发和测试工具,软件研发的时间可以减少,逐渐摆脱迟缓的手工软件开发方式,转向工业化的、大规模的、高质量的软件开发,效能可以提高十倍或更高。同时,也无需担心AI工具会代替你,你可以专注于通过创新和更好的用户体验创造更大的业务价值

参考:

(精彩丰富的议题,不容错过)

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存