2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

不要让开发人员兼职测试的角色

  • 2019-10-18
  • 本文字数:2363 字

    阅读完需:约 8 分钟

不要让开发人员兼职测试的角色


如今在持续集成/持续部署(CI/CD)中,软件测试开发工程师(software development engineer in test,SDET)越来越被认为是一个非常关键的角色。然而,也有一些人认为,由于系统不同组件之间的差异,SDET 这个角色可能并不一定适合每一种场景。


在微软首先创立了 SDET 这个概念之后,随着敏捷开发的普遍推行,又进一步模糊了测试人员和开发人员过去角色之间的差异,这固然是一件好事。因为当一切顺利的时候,开发人员就会执行更多的测试,并对产品质量承担起更多的责任。而测试人员在每个 sprint 前期就开始测试,而且由于有了共享办公空间和每日站会,在 sprint 循环里测试工作会一直保持运行。如果一切顺利的话,代码库中引入的缺陷会更少,测试人员的角色也会从对开发人员的错误单纯地吹毛求疵提升到主动拥护更好的用户体验。


然而,关于应该将多少测试责任分担给开发人员,以及对于测试人员来说了解编程有多重要,一直都存在着激烈的争论。并且,我个人认为,两种“合并”的提议,即开发人员成为测试人员,或者测试人员成为开发人员,都有可能会破坏敏捷的目标。所以,在这篇文章中,我讨论了为什么合并开发和测试角色并不可取,并描述了如何为开发人员和测试人员二者之间获取最佳的工作关系。

除了 GAFA 四家公司之外,让开发人员做测试人员会影响创新速度。

谷歌、苹果、Facebook 和亚马逊并称为”GAFA“,因为这四家公司总是能源源不断地招揽到顶尖人才,所以他们永远时刻准备着以闪电般的速度让各种创新迅速进入市场。如果你是 GAFA 公司里 DevOps 团队的一员,当需要让现有的项目提速或者是启动全新的项目的时候,就可以从世界顶级的开发人员中任意挑选团队成员。你甚至可以奢侈地将顶级开发人员放到 SDET 角色上。在这些公司中,许多满怀激情的开发人员能勉为其难地接受 SDET 这个并不太理想的职位,但内心还是渴望有一天自己能成为这家理想雇主公司中的一名成熟的开发人员。


然而,在许多大型企业中,你通常没有那么多顶级开发人员来主动敲公司的门。而在这些公司里,通常需要上下持续不断的努力才能吸引和留住有价值的开发人员。因此,为了满足企业对软件永不知足的需求,得让所有能干活的开发人员都专注于开发任务,这件事情本身已经够困难了。这种情况下,如果还让一些开发人员去承担高级测试任务,付出的代价通常是公司承担不起的,而在这些测试任务上,就算不比开发人员做得更好,专业的测试人员也绝对是足以胜任的,。

最精益的自动化测试方法不需要编程技能。

现在的开发方法已经变得更加精益、更加轻量级,能辅助团队更快地生产出更多软件,满足业务目标。同样地,测试技术也有了长足进步,可以采用轻量级的无脚本方法,这样的测试架构也更适应敏捷特有的快速变化。然而,许多团队仍然固步自封地抱有陈旧想法,还认为测试自动化和几十年引入时一样,需要付出较高的维护成本,且测试主要基于脚本方法,但是交付的结果仍然差强人意(一般最多只有 20%的自动化率)。现在几乎在所有的行业中,人们都已经开始使用通过对复杂程度的抽象来实现高级自动化的软件。因此,软件测试行业现在也是时候做出改变了。


我们在 Tricentis 咨询公司中对不同行业的企业环境的研究中,发现无脚本方法比脚本方法产生的可持续性自动化程度要高得多。此外,这些无脚本方法还移除了困扰敏捷团队最多的测试常见瓶颈,因为:(1)这些方法让人人都可以参与测试,这就扩大了可支持测试工作的团队成员范围;(2)由于这些方法有较高的可重用性和模块化,能更加容易地与快速演进的应用程序保持同步;(3)这些方法让人们解放出来,不用去维护一个仅仅为了测试生产代码而设计的测试代码库。

开发人员和测试人员都做测试工作,能更快找到缺陷。

我保证,如果你同时让开发人员和专业的测试人员进行测试,你将更快地让那些关键问题暴露出来。我们都熟悉缺陷曲线,它显示了解决缺陷的时间、成本和工作量是如何随着时间推移呈指数级增长的。所以在可能的情况下,应该尽快挖掘出每个缺陷,这对单个 sprint 内的生产速率有很大的影响,并且可以避免之后部署现场报告的缺陷对未来的 sprint 产生影响。


“开发测试”是暴露编程错误的理想方法。针对为实现用户故事而编写的代码,这种测试会深入检查代码的功能和稳定性。这点是至关重要的。如果代码库里有一些低级错误,例如举一个简单的例子,一个乘数的小数点错了一位,直接使用开发人员的单元测试去查找和诊断这类问题,绝对比从用户角度用端到端的测试去检查功能要有效得多。


但是,如果你的测试主要是由开发工程师设计的自底向上的白盒测试构成的,那么这样又可能会忽略一些站在用户角度多半会遇到的关键问题。


新功能能否在更广泛的端到端的事务中做到无缝工作?如果用户以开发人员没有预料到的方式去运行应用程序,该应用程序能以合理的方式做出响应吗?在多重依赖项同时出现的情况下,你的功能是否能正确地执行所有的行为交互?由于专业测试人员会在实际的业务事务环境中严格地对各种核心功能进行测试,即自顶向下地以用户的角度来审查产品,这样将不可避免地发现许多问题,而这些问题通常在正式投入生产之前是不会被开发人员所注意到的。


因此,当开发人员与专业测试人员一起进行测试时,你将更清楚全面地了解与产品发布相关的业务风险。同时,在用户遇到高风险问题之前,你将有机会去解决掉这些麻烦。这也正是测试的最终目标——它需要多个角色之间更多的协作,而不是针对开发人员/测试人员谁该承担测试任务争论不休。


欢迎在线观看我们关于“辩论:SDET vs 测试人员”的网络研讨会。


作者介绍:


Wolfgang Platz,Tricentis 公司的创始人兼首席产品官,该公司于 2007 年成立,是一家测试咨询公司。他大力推动了软件测试方面的创新,例如基于模型的测试自动化,以及线性扩展的测试设计方法。


英文原文:


Why Merging Testing and Developer Roles Is a Bad Idea


2019-10-18 17:203325

评论

发布
暂无评论
发现更多内容

DM 分库分表 DDL “悲观协调” 模式介绍丨TiDB 工具分享

PingCAP

(转)前端开发之MySQL分区表中的性能BUG

@零度

MySQL 前端

云图说|初识数据库和应用迁移UGO

华为云开发者联盟

数据库 华为云 UGO 异构迁移

一个简单的单体服务流量标记demo

zuozewei

Java 性能测试 全链路压测 12月日更

又拿奖了!腾讯云原生数据库TDSQL-C斩获2021PostgreSQL中国最佳数据库产品奖

腾讯云数据库

tdsql 国产数据库

前沿干货!深度揭秘TDSQL新敏态引擎Online DDL技术原理

腾讯云数据库

tdsql 国产数据库

轻松驾驭EB级千万QPS集群,TDSQL新敏态引擎元数据管控与集群调度的演进之路

腾讯云数据库

tdsql 国产数据库

发布你的开源软件到 Ubuntu PPA

hedzr

#Ubuntu Debian packaging ppa

重装上阵——Graviton2提升Aurora性价比

亚马逊云科技 (Amazon Web Services)

Data

JDK ThreadPoolExecutor核心原理与实践

vivo互联网技术

jdk ThreadPoolExecutor Java 开发

webpack打包过程如何调试?

汪子熙

前端 前端开发 webpack 28天写作 12月日更

一文带你梳理Clang编译步骤及命令

华为云开发者联盟

编译 LLVM Clang编译 Clang 编译命令

「山东城商行联盟」数据库准实时数据采集系统上线,DataPipeline助力城市商业银行加快数字化转型

DataPipeline数见科技

数据库 中间件 数据同步 数据融合 数据管理

如何将Amazon RDS与Amazon Aurora数据库迁移至Graviton2?

亚马逊云科技 (Amazon Web Services)

Data

XEngine:深度学习模型推理优化

华为云开发者联盟

深度学习 模型推理 显存优化 计算优化 XEngine

喜提双奖 | 旺链科技彰显综合硬实力!

旺链科技

区块链 产业区块链 供应链

孩子,你为什么要上学?

Tiger

28天写作

蓝格赛(中国)用TDengine落地聚合查询场景,效果如何?

TDengine

数据库 tdengine 后端

一文详解TDSQL PG版Oracle兼容性实践

腾讯云数据库

tdsql 国产数据库

利用极狐GitLab DevSecOps 功能检测 log4j 的多种方式

极狐GitLab

java开发之SSM开发框架

@零度

Java ssm

元宇宙地产:品牌和投资者的大好机会?

devpoint

以太坊 NFT 元宇宙 12月日更

Go编译原理系列2(词法分析&语法分析基础)

书旅

Go 后端 编译原理

​使用 Amazon Neptune 通过数据仓库构建知识图谱,借此补充商务智能体系

亚马逊云科技 (Amazon Web Services)

Data

内核干货不容错过,龙蜥内核的Load Averages剖析直播回顾上线了

OpenAnolis小助手

Linux Kenel 内核 龙蜥社区

解析Redis操作五大数据类型常用命令

华为云开发者联盟

数据库 redis string 数据类型 getset

盘点 2021|不忘初心,扬风起航

小鲍侃java

盘点2021

跟着动画学Go数据结构之堆排序

宇宙之一粟

golang 数据结构 排序算法 Go 语言 12月日更

鲲鹏HCIA认证之初识鲲鹏

桥哥技术之路

鲲鹏

盘点2021 | 技术十年-记录十年技术经历

高性能架构探索

技术人 工作经历 经历分享 盘点2021

MySQL 中 blob 和 text 数据类型详解

Simon

MySQL

不要让开发人员兼职测试的角色_文化 & 方法_Wolfgang Platz_InfoQ精选文章