Databend 如何利用 GPT-4 进行质量保证

news2025/1/24 14:06:37

背景

在数据库行业,质量是核心要素。

Databend 的应用场景广泛,特别是在金融相关领域,其查询结果的准确性对用户至关重要。因此,在快速迭代的过程中,如何确保产品质量,成为我们面临的重大挑战。

随着 Databend 开源社区的快速发展,新功能的持续增加和现有功能的优化提出了新的测试挑战。我们致力于在每次代码更新中实施严格的测试,确保稳定性并防止任何潜在问题。

Databend  的测试方法

为了确保软件的稳定性和可靠性,Databend 的测试方法覆盖从代码级到系统级的各个方面。

Unit Tests

单元测试作为测试的基石,着重验证代码的基本功能和逻辑。我们在每次代码提交前自动运行单元测试,确保及时捕捉任何潜在问题。

SQL Logic Tests

Databend 引入了大量的 DuckDB、CockroachDB 和 PostgreSQL 的 SQL 逻辑测试(感谢他们)。这些测试覆盖了广泛的 SQL 场景,帮助我们发现并修复潜在问题,保障 SQL 查询的精确性。

Compatible Tests

兼容性测试确保新版本与旧版本的向后兼容,帮助用户平稳过渡到 Databend 的更新版本,保障业务的连续性和稳定性。

Perf Tests

Databend 使用 ClickBench hits 数据集和 TPCH-SF100 作为性能指标,通过这些测试来确保每个版本的性能都符合预期。

Longrun Tests

Longrun 测试专注于数据写入、更新和合并等操作的长期效果,通过监测 CPU 和内存的稳定性,确保 Databend 的长期运行稳定性和可靠性。

除 Longrun Tests 外,这些测试在每个 GitHub Pull Request 提交时都会执行,以保证任何更改都符合我们的质量标准。

借助 GPT-4 生成测试模型

尽管已经采用了多种测试方法,Databend 团队始终在寻求创新。近期,我们引入了 GPT-4 来进一步提升测试流程。

双缝探测模型

针对涉及核心路径的修改,我们采用双缝探测模型进行验证。这种方法通过比较当前 PR 版本与主分支(main)版本的结果集来进行验证。如果两者结果一致,则可视为无大碍。但这些验证的 SQL 语句的质量至关重要,这正是我们利用 GPT-4 生成的部分。首先,我们指导 GPT-4 根据需求推理出随机数据生成方式,如 setup.sql 所示。然后,基于这些数据,GPT-4 进一步生成用于校验的 SQL 语句,例如 check.sql。这些验证 SQL 语句可以根据不同场景进行调整。接下来,我们在这两个版本的 Databend 上运行这些 SQL 语句,以验证结果集的一致性。

结果集正确性模型

为了确保 Databend 的结果集的正确性,我们选择了 Snowflake 作为参考。这一方法包括三个步骤:

  • setup.sql: 在 Databend 和 Snowflake 上分别构建表并导入随机数据集。
  • action.sql:在 Databend 和 Snowflake 上分别执行数据变更操作,如 Replace/Merge 等。
  • check.sql: 在 Databend 和 Snowflake 上分别执行并验证结果。

这些 SQL 语句都是由 GPT-4 根据 setup.sql 的数据模式生成的,更加复杂和随机,以便更有效地探测潜在的问题。

总结

Databend 团队通过引入 GPT-4,为测试流程带来了显著的进步。我们已在 Databend Wizard 项目中发布了更多测试集:

GitHub - datafuselabs/wizard: A GPT4 powered tool for detecting bugs in Databend

借助这些 GPT-4 生成的测试模型,Databend 的质量和稳定性又前进了一大步,科技是第一生产力。 

References

[1] datafuselabs/wizard
[2] Databend
[3] Snowflake

关于 Databend

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

👨‍💻‍ Databend Cloud:https://databend.cn

📖 Databend 文档:Databend - The Future of Cloud Data Analytics. | Databend

💻 Wechat:Databend

✨ GitHub:GitHub - datafuselabs/databend: Modern alternative to Snowflake. Cost-effective and simple for massive-scale analytics. Cloud: https://databend.com

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

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

相关文章

微信小程序基础bug

1.苹果11手机小程序请求数据不显示 设置-》隐私-》分析与改进-》开启 ”与开发者共享“ 2.<navigator>组件回退delta不成功 tabBar 页面是不能实现后退的效果的. 因为, 当我们跳转到 tabBar 页面&#xff0c;会关闭其他所有非tabBar 页面,所以当处于 tabBar 页面时, 无…

Spring Cache【娓娓道来】

目录​​​​​​​ 1.自我介好&#x1f633;&#x1f633;&#x1f633; 2.常用注解 &#x1f495;&#x1f495;&#x1f495; 3.EnableCaching&#x1f926;‍♂️&#x1f926;‍♂️&#x1f926;‍♂️ 4.CachePut&#x1f937;‍♀️&#x1f937;‍♀️&#x1f93…

7.上传project到服务器及拉取服务器project到本地、更新代码冲突解决

1.上传project到SVN服务器 1.在eclipse中&#xff0c;从show view里调出SVN资源库视图 2.在SVN资源库窗口的空白位置右键选择新建资源库位置 3.填好服务器的地址 4.资源库导入成功,SVN资源库视图下出现导入的资源库 5.新建project 6.写好project的初始版本 7.右键project --&…

C++基础 -46- 类的静态函数成员

类的静态函数成员可以不创建类直接访问 #include "iostream"using namespace std;class base {public:static void show(){cout << "hello world" << endl;} };int main() {base::show(); }类的静态函数成员不能访问非静态成员 class base…

GPT实现开放式世界游戏实践【生化危机】

最近开始研究如何基于GPT构建一个游戏引擎&#xff0c;于是先从简单的文字游戏开始探索。 从最简单的选择机制、故事机制&#xff0c;完善成一个包括天气、事件、技能、属性、伙伴、建造系统的-生化危机版文字游戏-。 我唯一的体验是&#xff1a;AI游戏&#xff0c;大有可为! …

【LVS实战】04 LVS+Keepalived实现负载均衡高可用

一、介绍 Keepalived 是一个用于 Linux 平台的高可用性软件。它实现了虚拟路由器冗余协议 (VRRP) 和健康检查功能&#xff0c;可以用于确保在多台服务器之间提供服务的高可用性。Keepalived 可以检测服务器的故障&#xff0c;并在主服务器宕机时&#xff0c;自动将备份服务器提…

音视频之旅 - 基础知识

图像基础知识 像素 像素是图像的基本单元&#xff0c;一个个像素就组成了图像。你可以认为像素就是图像中的一个点。在下面这张图中&#xff0c;你可以看到一个个方块&#xff0c;这些方块就是像素 分辨率 图像&#xff08;或视频&#xff09;的分辨率是指图像的大小或尺寸。…

Python读写txt文件数据

&#x1f388; 博主&#xff1a;一只程序猿子 &#x1f388; 博客主页&#xff1a;一只程序猿子 博客主页 &#x1f388; 个人介绍&#xff1a;爱好(bushi)编程&#xff01; &#x1f388; 创作不易&#xff1a;如喜欢麻烦您点个&#x1f44d;或者点个⭐&#xff01; &#x1f…

OkGo导入失败解决办法

jcenter()maven { url "https://jitpack.io" }再同步就可以了

【3DsMax】制作简单的骨骼动画

效果 步骤 首先准备4个板子模型展开放置好 添加一个4段的骨骼 选中其中的一块板子添加蒙皮命令 在蒙皮的参数面板中&#xff0c;设置每块板子对应哪块骨骼 设置好后你可以发现此时就已经可以通过骨骼来控制模型了 接下来就可以制作动画 点击左下角“时间配置”按钮 设置一下动…

二叉树OJ题之三

哈喽伙伴们&#xff0c;有一段时间没更新博客了&#xff0c;主要是这段时间要准备学校的期末考试&#xff0c;所以没有把部分时间分给博客&#xff0c;今天我们一起去接着看二叉树递归有关的OJ题&#xff0c;今天我们要学习的是 判断相同的树&#xff0c;力扣题目--100 &…

案例052:用于日语词汇学习的微信小程序

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

inBuilder低代码平台新特性推荐-第十四期

各位CSDN的友友们&#xff0c;大家好~ 今天来给大家介绍一下inBuilder低代码平台社区版中特性推荐系列第十四期——导入校验构件 关键特性 导入支持全流程扩展&#xff1a;当基本导入难以满足需求时&#xff0c;可通过自定义扩展构件在导入全流程中进行扩展实现绿色为可扩展的…

生成对抗网络——研讨会

时隔一年&#xff0c;再跟着李沐大师学习了GAN之后&#xff0c;仍旧没能在离散优化中实现通用的应用&#xff0c;实在惭愧&#xff0c;借着组内研讨会的机会&#xff0c;再队GAN的前世今生做一个简单的综述。 GAN产生的背景 目前与GAN相关的应用 去reddit社区的机器学习板块…

会议邀请 | 思腾合力邀您共赴2023“机器人+”智能制造先进成果展

为进一步提升制造业活力&#xff0c;推动机器人技术研发和场景开发不断向下游应用空间拓展延伸&#xff0c;2023机器人与智能制造强国论坛及系列主题活动将于12月7日至9日在山东省济宁市举办。思腾合力作为行业领先的人工智能基础架构解决方案商&#xff0c;受邀参加本次盛会的…

软件测试项目实战

目录 一、引言 二、测试任务 三、测试进度 四、测试资源 五、测试策略 六、测试完成标准 七、风险和约束 八、问题严重程度描述和响应时间规范 九、测试的主要角色和职责 ​有需要实战项目的评论区留言吧&#xff01; 软件测试是使用人工或者自动的手段来运行或者测定…

consistency model

Consistency is All You Need - wrong.wang什么都不用做生成却快了十倍其实也并非完全不可能https://wrong.wang/blog/20231111-consistency-is-all-you-need/[学科基础] 从布朗运动到扩散模型采样算法 - 知乎引言 扩散模型是近年来新出现的一种生成模型&#xff0c;很多工作将…

python爬虫-某公开数据网站实例小记

注意&#xff01;&#xff01;&#xff01;&#xff01;某XX网站逆向实例仅作为学习案例&#xff0c;禁止其他个人以及团体做谋利用途&#xff01;&#xff01;&#xff01; 第一步&#xff1a;分析页面和请求方式 此网站没有技巧的加密&#xff0c;仅是需要携带cookie和请求…

外包干了2个多月,技术明显有退步了。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年国庆&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

查看端口占用并杀死进程

1.安装查看工具 sudo yum install net-tools 2.查看占用情况 netstat -tunlp | grep 8089 3.杀死进程 kill -9 227