0 经验,我是如何做大数据测试开发的?
![0经验,我是如何做大数据测试开发的?](https://static001.geekbang.org/infoq/76/7676e6841e910c87a3dc24ca843a2bb3.jpeg)
前言
22 年校招入职京东后,我一直在数据中台测试部从事测试开发的工作。毕业后,写的最多的文档是测试计划和测试报告,鲜有机会就自己的成长码字进行回顾和总结。这篇文章是在工作之余回头望,对自己这近两年时光进行一个小总结。
1. 初入职场:站在迷茫的十字路口
我在本科和硕士阶段的专业都是计算机科学与技术,研究生时期的研究方向是网络嵌入,虽有过短暂的实习经历,但也是偏向业务测试,可以说对大数据是知之甚少。leader 只对我说:“刚开始不会很正常,在学校大概率接触不到这些,都是一点一点入门的,没关系,慢慢来。”
刚开始接触工作,只能说是一个“看不懂”
大数据领域有很多的专有名词和英文缩写,“集群”、“队列”、“RSS”、“NN”、“DN”、“NS”等等,面对这些陌生的概念,我实在有点慌,于是我选择了最“学生”的办法——看书。不可否认看书是有用的,但是效率太低了,而且在实际工作中,大数据存算引擎的改造很多是自研而且具有一定实际背景的,依靠专业书并不能切实地帮助我们开展测试工作。
比起专业书,团队文档和大胆提问才是我们初入职场的最佳方式
团队文档不仅记录了历史的需求测试记录,帮助我们了解产品背景,而且通过善用搜索功能,我们也能很快地理解陌生的名词和概念,提高沟通效率。其中,产研测团队有一些自命名的微服务和小工具,若不是通过团队搜索,或直接询问,我们可能需要花费大量不必要的精力去了解。所以一定要主动些,多问多沟通,才能更快的融入团体开展工作。现在回头看,还是很想念“新人期”的。每天你不找 mentor,mentor 也会找你问问“今天有啥问题吗”,再简单的问题也会耐心地为你解答。此外,新人月报、部门 1v1 沟通都是很好的机会,借着“初生牛犊”的身份,有任何疑惑和建议都可以直接和 leader 沟通。虽然那段时光有困难有挑战,但正是因为那段时间的点滴积累让我逐步走上大数据测试领域的职业道路。
2. 进阶之路:打怪升级要一步步来
【2.1 第一步:提交大数据计算任务】
相较于传统软件测试,大数据测试的核心在于验证数据分析处理的准确性和可靠性,确保大数据系统能够高效、稳定地处理海量数据。大数据测试存在一定的门槛,要求我们不仅要具备基本的软件测试技能,还需熟悉大数据平台的使用。所以,迈出的第一步不妨是在大数据平台上提交一个计算任务。说来简单,其实准备工作有很多:1. 通过大数据平台考试:考试提供了一定的培训课程能够作为平台入门指引,能够很好地帮助我们对大数据平台有一个整体的初步认识 2. 申请权限:包括数据权限,以及对数据进行操作的账号权限 3. 新建一个大数据任务:权限申请通过后,可使用账号进行读数据的操作,这就是一个简单的大数据任务至此,从用户视角已成功提交了一个任务,而对于大数据平台和作为测试人员对你来说要做的工作还有许多。
【2.2 第二步:点亮大数据产品地图】
从提交一个大数据任务的过程中不难看出,大数据平台提供的服务众多,不仅包括直接面向用户的数据权限管理、账号管理、流程中心等,还有任务提交后任务计算有关的计算引擎、调度引擎、存储等。前期跟进需求时,总是会有层出不穷的问题。
“任务找不到计算环境?”
“读表怎么没权限?”
“表的元数据在哪里看?”
......
测试主体服务只有一个,但涉及到的相关服务有许多,需要了解的背景知识最初可能都不知道去哪里查、怎么查。大数据存算引擎的需求来源往往是研发,类型往往是技术改造,虽然改造的仅是数据处理长链路中的某一环节,但测试场景的梳理离不开对全链路的熟悉。 若连大数据平台的基础服务及其功能特性都不清楚的话,是无法完成质量保障工作的。除了日常需求中的积累,我们也需主动去探索大数据平台。作为一名大数据测试开发工程师,探索和点亮自己的大数据产品地图是我们的必修课。大数据平台的产品离不开数据和对数据处理的任务,不如从这两点出发思考这个问题。
![](https://static001.geekbang.org/infoq/a6/a6595ecadcca5aa677add9179c16ac0d.png)
熟悉大数据平台的各服务是作为大数据测试的基本要求,借此我们能够更好地帮助产研团队进行风险评估。此外,大数据平台本身面向用户提供一系列的数据管理工具也能成为我们工作的助力。例如元数据查询,比之自己写脚本去看表的相关信息,直接在平台上就能便捷查询到表的结构、访问、存储等详细信息。
【2.3 第三步:走进大促备战工作】
大促活动通常会引发流量的显著增长和数据处理需求的激增。为保障大促活动期间服务的稳定运行,大数据平台会有一些关键的备战措施,例如压测、应急演练、应急预案等。我刚入职第一次经历 11.11 大促备战,当时主负责的是一个新的大数据服务,所以其大促备战方案许多是从零开始的挑战。由于缺乏经验,我也体验了第一次在京东的跨夜备战。
•核心时段不能压
现有的压力测试工具虽然能够支持接口级别的压力测试,但如何安排压测时间、确定压测时长和流量大小、以及压测数据的来源等问题仍然存在。由于缺乏经验前期准备时间较长,最终一直到封板日当天才开始实操。且准备开始操作的我并不知道核心时段的问题,还是经研发同学提醒当前时段有风险才及时停止了动作。压测环境通常无法完全独立于线上环境,更何况我们是一次操作新服务的压测,因此必须避免在核心时段进行压测。
•读接口也会产生脏数据
在梳理压测接口时,我们区分读接口和写接口的目的是为了更好地理解和控制压测过程中可能产生的数据一致性问题。但这也会对我们产生一定的误导:由于压测接口被标识为读接口,且压测数据是独立构造的,我们没有考虑到该接口可能包含审计相关的写操作。直到压测快接近结束时,我们接到下游服务的告警电话,通知我们的压测对他们的服务产生了影响,这才意识到该读接口也会产生脏数据。
•应急预案不能只有预案没有动作
应急预案是对线上问题的一种应急手段,其操作存在一定的风险。我记得在预案评审阶段,由于涉及高危操作,我们原本打算在预发环境中申请资源进行演练操作。然而,leader 提出了一个关键的问题:如果在备战期间都不进行实际操作,大促期间真遇到问题了怎么办?他强调,只有尽早发现并解决问题,才能确保线上服务的稳定。至今,我已经参与了三次大促的备战工作,明显感受到了大促备战方案和执行流程的日益成熟。即便在这样的背景下,我们仍然需要严格遵循备战方案,确保关键操作步骤与产品研发团队协调一致,并且提前公告相关信息,以保证上下游服务和平台用户能够预判风险。此外,基于公司现有的平台,大促备战正逐步转变为常态化工作,备战任务已经逐渐机制化和自动化,形成了可靠的解决方案。这一系列的线上服务保障措施,不仅能够为大促提供坚实的支持,还能够对每次服务上线进行风险评估,确保问题能够被及时发现并更早解决。
3. 能力回顾:给新手的几点建议
对大数据测试有兴趣的同学,以下四点是值得关注的准备方向:
1. 掌握大数据基础:
熟悉如 Hadoop、Spark 等大数据处理框架的核心概念及其在实际场景中的应用
2. 编程与脚本技能:
精通至少一种编程语言(例如 Java 或 Python),并熟练运用基本的 Shell 命令
3. 测试专业能力:
具备扎实的软件测试基础知识,了解基本的质量保障手段
4. 学习与解决问题的能力:
拥有快速学习新技术的能力,并能以问题解决为导向,高效分析并简化复杂问题 ps. 这几点非常像招聘要求,所以大家也可以多多关注有兴趣的岗位的招聘信息,从岗位需求出发培养自己的专业能力。
4. 未来在握:风起云涌的技术浪潮
在不断涌现的各种新兴应用中,应用层的测试工具和质量保障方法正在经历一个成熟和进步的过程。随着众多应用的实践检验,一个新 APP 和 Web 应用在上市前所需的基准测试,以及上线、监控和应急自愈等手段已经变得日益标准化和系统化。然而,与应用层的测试相比,大数据相关产品的测试则更加依赖于个人的专业能力,并且通常需要更高的专业门槛。因此,大数据测试的覆盖率往往低于应用层的测试。这就为我们提供了许多潜在的探索机会。
1. 功能测试→质量保障:
测试工作已逐渐从功能测试向质量保障的方向转变。这要求测试工作不仅要关注产品本身,还要涵盖全平台的质量和稳定性。没有接触这份工作之前,我们可能会用“点点点”来描述测试的工作内容,但在质量保障的大环境下,测试工作还包括效能工具建设、安全合规保障、流程规范制定等多个维度。
2. 技术效能:
测试开发工程师的主要职责之一是维护和完善效能工具。对于大数据平台来说,虽然自动化测试工具至关重要,但数据生成、全程监控等环节目前也仍主要依赖人工操作。如何将这些环节自动化,是我们面临的一项挑战。每年都有像我一样的 JD star 加入京东,也许你能比我多些大数据相关的知识储备,也许你也像我一样从零开始,但我相信这里不会让你失望。不管是遇到难关,还是想要大展拳脚,都有团队站在你的身边为你助力,都有前辈们高瞻远瞩地为你指路。我们在京东等你。
作者:集团数据 吴琪
来源:京东零售技术 转载请注明来源
版权声明: 本文为 InfoQ 作者【京东零售技术】的原创文章。
原文链接:【http://xie.infoq.cn/article/2289a803cb9f26826e4212e15】。文章转载请联系作者。
评论