在我之前的一篇文章中,我们讨论了SDET(软件开发工程师在测试中的角色)对我来说意味着什么(以及这个缩写到底是什么意思),并且如何在加入开发团队时取得成功。从那以后,我有了一些时间来反思,我认为在这个角色中,能够脱颖而出的关键因素,并将这些因素整理成了一个点击诱饵的清单文章!你绝对不敢相信第4条!
如果你现在正在阅读这篇文章,那就太晚了,不如继续看下去吧。
那么,废话不多说,以下是我认为高效SDET的五大习惯,顺序没有特别之分:
1. 知道如何平衡自动化的推行
我注意到,当有人刚开始接触自动化时,他们通常会自动化所有的内容。以前需要手动测试的每一条路径,都突然变成了一个自动化测试,替代了人工测试。理论上来说,这是没问题的,但自动化测试带来了一些显而易见和隐藏的成本。尤其是测试金字塔顶部的自动化测试(稍后会提到),它们需要消耗时间和计算资源。显然,每个项目都是不同的,但对于自动化浏览器测试,你通常可以通过少量精心设计的测试来覆盖重要的核心路径,而不是为每个可能的场景编写几十个测试,最终也能获得相同的测试信心。高效的SDET的真正技巧在于,能够平衡适当数量的测试,这样当你的管道通过时,你就能知道用户是否能够完成他们需要做的一切,并且知道这些测试的执行时间和尝试次数。
遗憾的是,永远没有一个“一刀切”的方法适用于每个你参与的项目,但提前完善你的测试策略,并与团队共同决定哪些测试需要自动化,哪些不需要,能够大大减少项目生命周期后期的麻烦。
2. 正确使用整个测试金字塔
另一个新手SDET和刚接触自动化的人容易陷入的陷阱,是将所有自动化测试都写在“端到端”层次,而不是利用整个测试金字塔。端到端测试在应用程序中运行真实集成测试,既耗费成本又容易出现不稳定。这类测试应该保留给核心路径,并且要尽量精简。由于单元测试通常是由编写实现的开发人员编写的,因此它们通常是存在的;而金字塔“中间”部分的测试往往得不到足够的关注。一个优秀的SDET应该使用模拟数据,并借助库将这些模拟数据注入到“集成测试”中,这样测试运行时就不依赖外部服务。这不仅减少了外部因素导致的失败概率,还能让测试更加精简,因为你不必做长时间的准备工作来将数据整理成需要的格式,再编写断言。当你在不同的测试层次中编写测试时,还要注意不要重复测试那些在低层级已测试过的内容。就像在第1点中提到的,没有必要重复自动化相同的测试,比如写一个端到端的测试,显式覆盖了在集成层次上已覆盖的路径,或者写一个集成测试来测试已经通过单元测试验证过的逻辑。理想情况下,随着你向上走测试金字塔,测试的数量应该逐渐减少。
3. 能够解决问题并知道在哪里寻找问题
虽然你不一定需要在成为SDET之前成为一名专业开发人员,但如果你对一个应用程序如何工作有一个良好的理解,这将大大有助于你在测试过程中发现并修复bug或问题。在做一些开发的工作时,不管是通过配对编程,还是挑选开发任务,或者在空闲时间做一些小项目,都能帮助你积累技术经验,这些经验可以应用到你的测试策略和自动化的方案中。随着你积累经验,你会开始理解项目中常见的痛点,并能在团队规划阶段就提前发现问题,从而避免它们演变成实际问题。有了这些经验,你也会对如何以及应该自动化哪些测试有更清晰的认识。
通过自己构建项目,你还会获得解决问题的外围技能。当你编写自动化代码时,你肯定会遇到障碍并卡住,这几乎是不可避免的!具备不断尝试解决问题的韧性,并知道如何找到信息来解决问题,是推动你的职业生涯向前发展的关键能力。这不仅仅是进入这个角色的先决条件,而是拥有持续学习的心态,并且在不舒服的状态中也能保持舒适。
4. 主动与各级人员和多种形式的合作
尽管质量是整个开发团队的责任,作为SDET,你是质量的领导者和主要倡导者。随着有效团队将质量控制向“左”和“右”两端延伸(“左”指在任务书写之前就考虑质量, “右”指进行探索性测试),作为SDET,成为一个良好的沟通者,优先参与整个软件开发生命周期的各个阶段,变得尤为重要。一个高效的SDET不会仅仅对测试做出反应,而是会通过提前与团队成员沟通,主动先行。例如,可以提前与业务分析师(BA)讨论如何在任务中编写潜在的测试场景,或与开发人员讨论架构决策可能如何影响你的测试编写。确保自己参与这些对话对于项目质量的成功至关重要。
为项目提前写好策略,并在任何代码编写之前让团队支持你的方案也非常重要。通过积极参与各个层级和各个方面的开发过程,你能够使质量成为一个基础性元素,而不是事后的附加。这样的做法将使得软件更可靠、可维护并且质量更高。
5. 愿意成为导师,并且不怕承认自己不知道一切
关于做导师,有太多值得提到的地方了。你不仅可以教别人,还能够巩固自己对某个主题的理解。它帮助你建立专业关系,并让你接触到新的思维方式。每个技术角色都有很多动态部分——你在时间中积累了很多知识和经验,自己都没有意识到它们有多少。当你为某个经验较少的人或拥有不同经验的人提供帮助时,你们可以互相学习,这会让你意识到你自己知识的盲区。没有什么比做导师更让人谦逊的了,它真的会让你意识到自己的知识漏洞,因为你会非常谨慎地避免教给别人错误的东西!你还会因此帮助你的学员避免自己曾经遇到的麻烦和困境。如果有机会做导师,我强烈推荐。
总之,这些可能只是我反思后认为在SDET角色中成长过程中重要的一些点。或许还有更多,但5个就已经是一个很好的数字了。也许某一天,我会写第二部分!