为什么说让程序员自己做测试等于白测
“我认识的大多数开发者实际上都是不合格的测试者。”这是在最近的一个简短调查中一个测试者的反馈。 调查还证实,在37%的公司里越来越多的开发人员正在参与测试任务。该调查包括来自全球各地的测试人员。当然,这种工作方式已经很普遍了。在许多情况下, 测试人员往往对开发人员的测试结果不满意。关于为什么开发人员没有擅长测试的“本能”,有各种各样的原因。
原因1:对自己的代码拥有父母般的感情
丑 孩子测验:当你站在一个挤满了人的房间里,你走上前问:“谁有个难看的孩子?”百分之九十九的情况下,没有人会举手。然后继续问, ”谁的朋友有难看的孩子?”举手的人,会多很多。同理,当询问开发人员关于他们自己编写的代码时,会发生类似的 “盲点”现象。我们往往会忽视我们自己创建的物品或事物中存在的缺点,而且没法看到特征不够明显的场景,然而当这件事发生在其他人的工作或孩子身上时,我 们却能够正确的识别到。
原因2:开发人员将复杂的问题简单化
开发人员将注意力都集中在解决用户故事或者需求中的复杂问题,并且将它们转换为小而可操作的任务,从而翻译为简单的代码段。而测试则是完全相反的。测试人员的任务是针对简单的功能考虑各种复杂的场景来测试出bug来。
原因3:专注于“积极的场景”
开 发人员总是在思考如何让事情发生,如何用他们编写的代码去实现他们想要的结果。这个过程包含了获取一个抽象的概念,然后编写代码将把它转化为一个可以执行 所需操作的可编译的程序。而当测试的时候时,我们需要明确如何将事情分解,并试图找到那些不会像计划那样顺利的地方。测试人员工作很重要的部分就是要发现 系统的弱点以及那些容易出问题的地方,以便被及时修复掉。大多数开发人员关心的是解决问题,而不是制造问题,这就使得他们很难理解测试人员为什么会有摧毁 而非构建的心态。
原因4:忽略细节、小问题点
测试1:
测试2:
这些小测试要求参与者发现隐藏的问题。当然,这些仅仅是相关的模式和条件。测试人员本能倾向于找出打破这种模式的东西,而程序员则本能倾向于找出或创造这种模式。
原因5:缺少端对端知识和真实用户视角
大多数公司都不会花费时间和精力去让开发人员了解其产品的用户。公司花费高价雇佣开发人员,是要他们去做公司需要做的事情,也就是编写代码和开发新产品,而理解客户需求的任务是要留给产品经理去做的。
这也难怪为什么很多时候开发人员总是想不明白他们的用户是怎么以各种方式使用系统的。因此,他们也不会花时间去预测用户在使用其系统或产品时会遇到的所有可能出现的问题。如何能够擅长测试呢?已经很清楚了,开发人员在默认情况下都不是“出色的测试者”。
那么在将系统发布到生产环境之前要想增加我们发现bugs的机会,我们可以做些什么呢?
不要把测试当作惩戒
一个好的敏捷团队会要求开发人员和测试人员共同参与测试。有了这一想法之后,迈向擅长测试的第一步就是要停止对你正在测试的事实有所怨恨。测试并不是一个苦差事,而且从前面陈述的几点看来,它也绝对不是简单的工作。
如果你想擅长测试,那么从开始认真对待这份工作开始吧,就跟你的其他日常工作一样,并且要确保为测试保留足够的时间。
要了解你自己作为一个开发人员的局限性和弱点
能够认识到自己的“盲点”是改善的先决条件。知道你的优势和劣势会帮助你将工作做得更好。如果有什么东西需要学习,那就去学习它吧。如果你需要询问别人某件事该怎么做,那就去问吧。不要耻于向他人咨询问题或请求他们的帮助。
根据约束来制定你的测试计划
测试需要制定计划,才能确保你的工作是正确的,并且你的产品也朝着正确的方向发展。这里有一些例子你可以参考下,可以使得你的测试计划能够做得更好:
不要测试你自己的代码(毕竟亲妈都是护短的),尽量去测试其他程序员开发的功能,也让其他人测试你写的东西。
在你开始测试之前, 仔细考虑一下!要同时考虑正面和负面的场景,考虑下你的用户会怎么使用系统(以及他们会怎样滥用它!),分析你要测试的产品,并寻找其弱点。
使用检查列表和启发式思维进行工作。在你开始测试之前确保把你想要测试的东西记录下来,这样可以确保你正式测试的时候不会错过任何重要的事情。
文章测试图答案:
测试1:里面用到了两次‘the’这个单词。
测试2:将11乘以12的结果应该是132,而不是出现的123。
你也许感兴趣的:
- 【程序员搞笑图片】开发人员和测试人员
- 【外评】谷歌测试:复杂难读的布尔表达式
- 【程序员搞笑图片】设计的付出、开发的付出对比写单元测试和自动化测试脚本的付出
- 【外评】谷歌对测试的分类
- 【译文】谷歌测试技术:如何大规模代码删除
- 【译文】谷歌测试技术:多少测试才算足够?
- Sentry 的前端测试实践:从 Enzyme 迁移到 RTL
- 2021年10大流行软件测试工具
- 谈一谈程序员不愿意写测试的问题
- 程序员文史综合素质测试题,下跪吧
你对本文的反应是: