测试低下论或现代测试行业所遇到的问题
前几天看到一篇 blog 讨论现代测试行业中存在的一些问题,我愿称之为测试行业的劝学篇。有些观点还是非常中肯的,翻译了一下,希望对大家有所帮助,下面是正文。
在这篇博文中,我想强调我在测试行业看到的问题,以及我们都可以如何解决它。(你可能有不同的经历–所以让我们在评论中分享吧!)。这是我在 2022 年初在阿布扎比 MoT 会议上发表的演讲的文字版。
10 年来行业发生了什么变化
在过去的十年里,我们见证了技术的大幅提升–无人驾驶汽车、人工智能、AR / VR、区块链、无人机和机器人。许多测试和测试自动化从桌面转移到网络和移动设备上。
从瀑布模型,许多企业走向了敏捷和 Scrum。
从编写自动化测试的大型和昂贵的工具,我们已经转移到小型,灵活,最重要的是 - 免费的库和工具。现在我们有智能报告系统和 Docker 容器中的测试。现在在云端并行运行成千上万的测试用例并其实不那么昂贵。
但与此同时,许多事情和声明仍然没有改变。
以下是一些在测试人员中不断肆虐的无尽话题
“手工测试已死!” “让我们把一切都自动化吧! 通过 UI–这才是最好的!”*。 “SDET 是测试工程师进化的高峰! 我想成为像谷歌一样的人!” “我在开发领域找不到工作,所以我将做一年左右的测试,然后再尝试转行。” “测试人员的工资都在底部!” “测试工程是一份低技能专业人士的工作!”
但为什么行业中会出现这样的情况?问题会不会是别的原因呢?我看到了哪些问题?
现代测试的问题
我将把问题分为两个大组。
对技术的追求
- **寻找银弹。**一些工程师为一个项目(和一个背景)创建了一个成功的框架,然后开始把它拉到所有其他的项目中作为一个 “完美的解决方案”。这不是可重用性,它只是将一把锤子怼所有的钉子和螺栓。
- **面向框架的自动化。**在一些项目中,工程师们急于编写完美的框架,而忘记了测试本身。结果是,我们有 3-6 个月的开发时间没有测试!。但是对于客户来说,没有测试是自动化应用不充分的的直接指标。
- **专注于流水线通过的崇拜者。**在这种情况下,已经成功地将测试纳入 CICD 管道的测试工程师开始迷恋于使测试一直保持绿色。这种痴迷往往导致忽略甚至删除不稳定的测试(这导致忽略了被忽略的测试背后的问题)。
- **简历驱动的开发。**许多测试人员只考虑工作和项目,作为在简历中获得一个花哨的新行的方式。没有任何关于深化技能和用测试和自动化解决业务问题的内容。
- **只专注于短期目标。**许多工程师只喜欢快速的解决方案。这种对自动化测试的态度是很普遍的。工程师们很快就写出了 “东西”,而没有考虑到可维护性,就跑去做新项目了。
技能和知识水平不足
知识的缺乏可以有多种形式。
技术知识
在面试中,资深候选人往往能迅速回答任何关于测试的问题。他们可以为你画一个 “测试金字塔或任何你想要的数字”,告诉你世界上所有的测试设计技术,并写出完美的测试报告。但是,当你问及基本技术方面的问题(如 HTTP 或网络如何工作),候选人很快就会失去信心。
你可以告诉我,不是每个项目都需要特定的知识。这倒是真的。但测试工程师应该知道(或至少知道)基本的技术知识。理想情况下,比谷歌搜索中的第一个链接更深入一点。
90%的现代系统以这种或那种方式与网络一起工作,发送消息或请求,并使用数据库或分布式存储。多层的抽象可以覆盖它–但总的来说–它的工作原理都是类似的。
编程和架构
一些测试工程师仍然认为,学习编程是复杂和不必要的。让程序员来写代码吧!
另一部分是那些已经学会了一点代码,但只集中精力于 UI 测试的人。这些测试之外的世界似乎并不存在。
在测试工程师中,关于系统结构和它们如何工作的知识是一种稀缺的技能。所有这些都被认为是有经验的 “大胡子 “架构师的工作,或者只有有十几年经验的高级开发人员才能做。
但是,如果不知道系统的内部和相互之间是如何工作的,就很容易错过很多关键的错误。另一方面,缺乏技术知识将使我们很难在测试报告中描述这些问题。
我并不是说,如果不了解系统的组成部分,就不可能指出系统糟糕的不可测试性。结果是,我们继续编写脆弱的 XPath 定位器,因为没有人给元素添加 ID。