解决程序员单元测试效率问题,AI是助力神器

news/2024/7/5 6:33:36

我们说了很久的AI智能,那到底作为一种智能化的工具能给我们带来什么样的帮助呢?

今天我就从一名程序员的角度来分析一下,实际上AI到底能解决我们什么问题?

首先介绍一下单测,单侧的全称叫做单元测试。就是我们在写完代码以后,给我们的最小的模块或者函数来写测试用例。

测试用例,主要是用来测试某个模块或者函数是不是符合预期的。比如一个计算函数,当参数固定的情况下,它的数值也是固定的,那么我就可以写一个单元测试函数来测试这个函数是不是符合预期。

单元测试主要是保证接口函数或者模块的功能是符合预期的。这个复合预期不仅是能够保证在第一次写代码上线的时候符合预期,更重要的是在随后的其他同学对这个模块进行修改的时候也能符合预期。

所以相对正规一点的公司都会有单元测试的要求。以我们公司为例,单元测试的覆盖率要求是在80%以上,并且要求单元测试的通过率是百分之百的。

很多写过单测的同学知道,写单元测试往往不像想象中那么简单。很多时候我们单元测试的代码量甚至比代码本身的数量还要多。另外就是很消耗时间,我们可能写代码需要一周,写单元测试可能就需要三四天。

所以在我们刚刚引入单元测试的时候,我们花了非常多的精力来写单元测试。

代写单元测试的技术含量并没有想象中的那么高,并且很多都是模板化的编写方式,主要就是一种体力劳动。那设想一下,这种情况,如果用AI来写单元测试,则效率会高了很多。

通过AI来写单测用例,一般只要把整个函数代码贴到相关的工具里面,那么它就可以自动的给我们的单元代码写出单元测试用例。

这个能在效率上至少提升2/3。我自己的测试,原来可能需要三天来写单元测试,在AI的帮助下用一天应该就差不多了。

不仅用我们传统的AI工具,甚至很多ide也集成了单元测试的一些插件,用起来会更加的方便。比如ide idea就集成AI的单元测试工具,可以非常方便的针对代码自动的生成单元测试用例。

我们阿里巴巴公司也出款了一款AI代码的插件。不仅能够写单元测试,还能够自动的写代码,自动的结合上下文产生出代码。

当然现在我们所说的这些工具还不是特别完善,特别是跟上下文的结合能力非常的弱。这种生成出来的单侧可能还需要再进一步再改动改动。相信过不了多久,AI应该就能够自动灵活的识别是我们的上下文帮我们生成写出即可运行的单测。

如果到了这个地步,那这个程序员的生产力提升就够恐怖了,可能写代码花一星期生成全部的用例只需要1分钟。

所以AI人工智能这一块的确在我们的生产环境里面有了解决问题的场景。而且随着AI大模型的学习能力的进阶,喂养更多的上下文数据,AI的能力会越来越强大。

不管未来怎么变化,善用AI工具的人一定是在这个世界上能够分到一块蛋糕的人。

 更多原创内容关注公众号:ali老蒋,或点击加我好友深度沟通:ali老蒋 - java开发者


http://lihuaxi.xjx100.cn/news/1892427.html

相关文章

数据结构(超详细讲解!!)第二十七节 查找

1.查找的基本概念 1、查找表——由同一类型的数据元素(或记录)构成的集合称为查找表。 2、对查找表进行的操作: 查找某个特定的数据元素是否存在; 检索某个特定数据元素的属性; 在查找表中插入一个数据元素&#x…

Visual Studio开发环境的搭建

1.引言 Visual Studio是微软公司开发的一款强大的集成开发环境(IDE),它可以帮助开发人员进行各种编程任务,包括设计、开发、测试、调试和部署应用程序。典型功能包括: 代码编辑器。提供高效、智能的代码编辑器&#x…

BMW 2015-2020 Odometer Correction Made Easy with Odometer Correction Tool

In the world of automotive industry, BMW has always been synonymous with luxury, performance, and cutting-edge technology. As a proud BMW owner, you may have come across the term “odometer correction” while researching ways to maintain the accuracy of yo…

在系统中查找重复文件

说在前面 🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。 一、题目描述 给你一个目录信息列表 paths ,包括目录路径,以及该目录中的所有…

深入理解强化学习——马尔可夫决策过程:价值迭代-[确认性价值迭代]

分类目录:《深入理解强化学习》总目录 如果我们知道子问题 V ∗ ( s ′ ) V^*(s) V∗(s′)的最优解,就可以通过价值迭代来得到最优的 V ∗ ( s ) V^*(s) V∗(s)的解。价值迭代就是把贝尔曼最优方程当成一个更新规则来进行,即: V …

C++ 把引用作为参数

我们已经讨论了如何使用指针来实现引用调用函数。下面的实例使用了引用来实现引用调用函数。 #include <iostream> using namespace std;// 函数声明 void swap(int& x, int& y);int main () {// 局部变量声明int a 100;int b 200;cout << "交换前…

卧槽!jmeter 竟然这么牛逼,压测爽歪歪~

# Http请求模拟 1、新建线程组 操作&#xff1a;鼠标右键测试计划 -> 添加 -> Threads(Users) -> 线程组 -> 修改测试计划名称 新建线程组 2、添加取样器HTTP请求 操作&#xff1a;鼠标右键线程组 -> 添加 -> Sampler -> HTTP请求 -> 填写请求参数 添…

Kafka事务是怎么实现的?Kafka事务消息原理详解(文末送书)

目录 一、Kafka事务性消息1.1 介绍Kafka事务性消息1.2 事务性消息的应用场景1.3 Kafka事务性消息的优势 二、Kafka事务性消息的使用2.1 配置Kafka以支持事务性消息生产者配置消费者配置 2.2 生产者&#xff1a;发送事务性消息创建Kafka生产者开始事务发送消息提交或中止事务 2.…