TiDB 的“破坏之王”:PingCAP 测试团队 | PingCAP 招聘季

Easter79
• 阅读 808

数据库存储了公司的数据,是公司的最重要资产之一。正确性和稳定性是数据库最重要的特性。测试团队之于 TiDB 是一个“破坏之王”的角色,团队的使命是炼成更高、更快、更强的 “无敌风火轮” 技能。在这篇文章里,我们介绍 PingCAP 测试团队(QA Team)是怎么工作的。

我们在做什么?

我们测试团队是 TiDB 的“破坏者”,用各种手段尽早发现系统的 bug 是我们的工作。TiDB 有丰富的产品线,在这些产品线中,我们面对着不同的挑战。

首先,TiDB 内核稳定是整个系统稳定的基础和重中之重。TiDB 新版本的内核仍然处于高速发展的阶段。因此,测试要尽早发现新特性的正确性和稳定性问题,包括但不限于:

  • 对 TiFlash 列存引擎,测试要构造破坏一致性保证的情况;

  • 在 3.0 中,TiDB 增加了悲观事务,并支持了 RC 隔离级别。在 4.0 中,TiDB 支持了大事务,优化了 GC 的性能。这些特性的重要性不言而喻,必须进行严苛的、长时间的性能测试和稳定性测试;

  • 挑战不断优化的 SQL 优化器和执行引擎,确保功能增强后的系统正确性和性能。例如 Index Merge、SQL Hint 和 SQL Plan Management 等特性;

  • 验证调度稳定性的特性,例如 4.0 中的新热点调度器,构建不同的接近真实场景的负载,找出在这些负载下的系统不稳定的情况;

  • TiKV 的稳定性是内核稳定性的基础,在保证 Raft 层优化性能的前提下,尽早发现稳定性隐患是我们的职责。

其次,TiDB 还具备一个强大的生态工具系统。TiCDC、BRTiDB Binlog 等产品都需要为用户提供长时间稳定的服务,且不能影响线上业务。我们在测试时要想方设法用各种极限情况去“破坏”这些工具的服务质量,从而为产品研发提供改进和优化的方向。

此外,作为云原生的数据库, TiDB 在云环境的复杂性是开发团队和测试团队共同面临的挑战,测试需要不断模拟云环境常见的错误来发现 TiDB Operator 和 DBaas 的错误。

上述每一项任务拿出来都是巨大的挑战。为了应对这些挑战,我们需要尽可能的理解代码,真正的做到“既见森林,也见树木”,高效地发现问题。

除了深入钻研 TiDB 本身的代码,尽可能了解产品实现细节以提高测试质量,我们还在学习和研究不同的测试方法,为团队打造更多的武器。面对以下疑问,我们已经有了比较成熟的测试方案和工具,并在持续优化中:

  • SQL 语法空间无穷大,如何用模糊测试(Fuzz Test)遍历更多的测试空间?

  • Failover 是分布式系统最大特性,如何用混沌工程(Chaos Enginnering)攻击 TiDB Failover 的能力(我们已经开发并开源了 Chaos Mesh™)?

  • 如何用 FailPoint 高效模拟错误,提升事务等大量错误处理模块的测试效率?

  • 如何高效使用和扩展 Jepsen 等正确性验证工具?

  • 如何用 TLA+ 证明系统设计的正确性?

如果你这些问题的答案非常好奇,或者有自己独到的见解,欢迎加入我们一起折腾!

我们还在做什么?

除了测试产品特性,我们还在不断完善测试的基础设施,不断提升“攻击 TiDB”的效率。

我们正在完善一套快速进化的高度自动化测试生态。高度自动化意味着:

  • 自动执行数千万级的测试用例;

  • 自动报 bug,并保留环境;

  • 自动输出结果和质量报告。

**我们打造了一组添加测试用例非常简单、功能却非常强大的自动化测试框架,提升写测试用例的效率。**你甚至只需要写 SQL 就能自动生成测试用例。这个测试框架还提供了测试用例的编排能力,无论你是想要串行、并行、还是串并行,都可以满足你的需求。这提升了用例执行效率,简化了重复用例的管理成本。到这里就结束了么?不,并没有,随着产品的演化,这个框架也需要不断的进化。我们期待屏幕前的你带来更多的有趣的想法,并和我们一起将想法实现。

随着测试用例的爆炸式增长,我们需要更多的 TiDB 资源以并行的方式执行数千万级的测试用例。我们打造了一个「资源池服务」,可以从 K8s 集群中快速生成不同拓扑、不同配置的 TiDB 资源。在测试团队,你会了解到关于基础设施的许多细节,会面临大规模系统的管理挑战,各种复杂系统的痛点都需要你来解决。

我们也正在解决长稳测试、升级测试、长链路测试的自动化问题。随着这套基础设施的不断完善,测试团队可以节省大量人力,把更多的精力投入到研究新的测试方法和开发新的测试武器中去。

写在最后

我们测试团队(QA Team)是一个“小而精”的团队。如果你看到了这篇文章,又恰好具备以下特质:

  • 希望接受数据库测试的挑战;

  • 快速的学习能力;

  • 强大的动手能力,热爱开发工具提升工作效率;

  • 对混沌工程、模糊测试等领域有浓厚兴趣。

那么,欢迎上船,体验这「上可览全貌,下可享细节」的“破坏之王”的快乐吧。

加入我们吧!

我们认为优秀的工程师或多或少有以下共同特质:

· A Quick Learner
· A- n Earnest Curiosity
· Faith in Open Source
· Self-driven
· Get Things Done

如果你符合以上特质,欢迎进入招聘页面查看目前开放的工作机会。

简历投递通道:hire@pingcap.com

实习生:公司的各项福利和学习资源对实习生全面开放,更重要的是实习生还未毕业就有机会接触工业级项目,而且实习期间表现优异者将有机会获得校招绿色通道特权。针对实习时间并不充裕的小伙伴,你可以先通过 Talent Plan 丰富基础知识(https://university.pingcap.com/talent-plan/),也可以通过参与 TiDB 开源社区获得更多实践机会!

伯乐推荐:如果你身边有符合以上要求的小伙伴,也可以找我们聊一聊,推荐成功就有机会获得伯乐推荐奖励。伯乐推荐邮件格式:[伯乐推荐] 候选人姓名-职位名称-推荐人姓名-推荐人手机号。

延展阅读

是的,我们在招人!PingCAP 2020 招聘季正式开启

TiDB Architecture Team:挑战数据库的本质难题

揭秘 PingCAP 年轻前沿的团队:用户生态

TiDB SQL Infra Team:一起打造从计算层到存储层的完美桥梁

写给 TiDB 原厂 DBA 的一封信:连接技术和价值的“最后一米”

TiDB SQL Engine Team:纯手工打磨前沿的优化器和执行引擎

E.T. 团队:TiDB 开源生态宇宙构造者

我眼中的 PingCAP 工程师文化

程序媛眼中的 PingCAP:无法抗拒的五大吸引力

RA Team:让 TiDB 插上”实时分析”的翅膀

TiDB 的“破坏之王”:PingCAP 测试团队 | PingCAP 招聘季

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
TiDB:支持 MySQL 协议的分布式数据库解决方案
【编者按】TiDB是国内PingCAP团队开发的一个分布式SQL数据库。其灵感来自于Google的 F1,TiDB支持包括传统RDBMS和NoSQL的特性。在国内ITOM管理平台OneAPM(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.onea
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Easter79 Easter79
3年前
TiDB 的现在和未来
本文根据黄东旭在PingCAPD轮融资线上发布会的演讲实录进行整理。!(https://oscimg.oschina.net/oscnet/upceee1b1ad10e2bcde45dbe1cc00dc0688fc.png)TiDB的现在和未来大家好,我是黄东旭,是PingCAP的联合创始人和CTO
Easter79 Easter79
3年前
TiDB 部署及数据同步
简介TiDB是PingCAP公司受GoogleSpanner/F1论文启发而设计的开源分布式HTAP(HybridTransactionalandAnalyticalProcessing)数据库,结合了传统的RDBMS和NoSQL的最佳特性。TiDB兼容MySQL,支持无限的水平扩展,具备强一致性和高可用
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k