文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

“我认识的大多数开发者实际上都是相当糟糕的测试者。”

这是在最近的一个简短调查中一个测试者的反馈。 调查还证实,据报道在37%的组织里越来越多的开发人员正在参与测试任务。

该调查的对象包括来自全球各地组织的测试人员, 并且关注他们在自己组织里的测试工作。由于敏捷方法日益流行,这也就不足为奇了。

在许多情况下,测试人员往往对开发人员的测试结果不满意。关于为什么开发人员没有擅长测试的“本能”,有各种各样的原因。

第 1 段(可获 1.28 积分)

(译者:这段貌似是广告)如果你确实拥有能力,但是你在职业生涯中就是无法看到应该得到的成功,那就请来看看我们的《简单的程序员》课程 “作为一个软件开发人员如何推销自己”

原因1:对自己的代码拥有父母般的感情

丑孩子测验:当你站在一个挤满了人的房间里,你走上前问:“谁有个难看的孩子?”

百分之九十九的情况下,没有人会举手。

然后继续问, ”谁的朋友有难看的孩子?”

我可以向你保证,数字要高得多。

当询问开发人员关于他们自己编写的代码时,会发生类似的 “盲点”现象。我们往往会忽视我们自己创建的物品或事物中存在的缺点,而且没法看到特征不够明显的场景,然而当这件事发生在其他人的工作或孩子身上时,我们却能够正确的识别到。

第 2 段(可获 1.96 积分)

原因2:开发者简化复杂的问题

开发人员集中处理复杂的问题,就像用户的故事和要求,然后把这些问题分解成小的、可执行的任务,然后这些任务将被一行行简单的代码来实现。就拿这个例子来说明试验:一个允许用户注册的按钮的创建,可以通过几行代码来允许按钮成为可点击的。

而测试是完全相反的。一个测试人员的任务是处理简单的特性,考虑那些可以产生问题的复杂场景,这些问题会把需求的功能完全破坏。

第 3 段(可获 1.19 积分)

原因3:专注于“积极的场景”

开发人员总是在思考如何让事情发生,如何用他们编写的代码去实现他们想要的结果。这个过程包含了获取一个抽象的概念,然后编写代码将把它转化为一个可以执行所需操作的可编译的程序。而当测试的时候时,我们需要明确如何将事情分解,并试图找到那些不会像计划那样顺利的地方。

测试人员工作的一个很重要的部分就是要发现系统的弱点以及那些容易出问题的地方,以便于它们可以被及时修复掉。大多数开发人员关心的是解决问题,而不是制造问题,这反过来就使得他们很难理解测试人员为什么会有摧毁而非构建的心态。

第 4 段(可获 1.69 积分)

原因4:忽略细节、小问题点

mistake1

mistake2

这些小测试要求参与者发现隐藏的问题。

让我们快速浏览你的脸书的推送,你或许见到过同样的或者类似的小测试。这些都是些所谓的智力或天才级别预测试验。

当然,这些仅仅是相关的模式和条件。

测试人员本能倾向于找出打破这种模式的东西,而程序员则本能倾向于找出或创造这种模式。

原因5:缺少端对端知识和真实用户视角

第 5 段(可获 1.3 积分)

大多数组织都不会花费时间和精力去让开发人员了解其产品的用户。公司花费高价雇佣开发人员,是要他们去做他们被要求做的事情,也就是编写代码和开发新产品,而理解客户需求的任务是要留给产品经理去做的。

这也难怪为什么很多时候开发人员总是想不明白他们的用户是怎么以各种方式使用系统的。因此,他们也不会花时间去预测用户在使用其系统或产品时会遇到的所有可能出现的问题。

第 6 段(可获 1.24 积分)

猜猜在墙上一直写的东西…

如何能够擅长测试呢?

已经很清楚了,开发人员在默认情况下都不是“出色的测试者”,那么在将系统发布到生产环境之前要想增加我们发现bugs的机会,我们可以做些什么呢?你可能会感到很惊讶,但是确实有很多可以做的。

不要把测试当作惩戒

一个好的敏捷团队会要求开发人员和测试人员共同参与测试。有了这一想法之后,迈向擅长测试的第一步就是要停止对你正在测试的事实有所怨恨。测试并不是一个苦差事,而且从前面陈述的几点看来,它也绝对不是简单的工作。

第 7 段(可获 1.6 积分)

如果你想擅长测试,那么从开始认真对待这份工作开始吧,就跟你的其他日常工作一样,并且要确保为测试保留足够的时间。

要了解你自己作为一个开发人员的局限性和弱点

能够认识到自己的“盲点”是改善的先决条件。知道你的优势和劣势会帮助你将工作做得更好。如果有什么东西需要学习,那就去学习它吧。如果你需要询问别人某件事该怎么做,那就去问吧。不要耻于向他人咨询问题或请求他们的帮助。

第 8 段(可获 1.35 积分)

根据约束来制定你的测试计划

测试需要制定计划,才能确保你的工作是正确的,并且你的产品也朝着正确的方向发展。这里有一些例子你可以参考下,可以使得你的测试计划能够做得更好:

  • 不要测试你自己的代码:参考我之前提到的丑孩子测验,尽量去测试其他程序员开发的功能,而让其他人测试你写的东西。
  • 在你开始测试之前, 仔细考虑一下!要同时考虑正面和负面的场景,考虑下你的用户会怎么使用系统(以及他们会怎样滥用它!),分析你要测试的产品,并寻找其弱点。
  • 使用检查列表和启发式思维进行工作。在你开始测试之前确保把你想要测试的东西记录下来,这样可以确保你正式测试的时候不会错过任何重要的事情。
第 9 段(可获 1.94 积分)

Software Testing

如果是你的代码你就需要注意了

即使测试的任务并没有被你列为梦想编程工作中的一部分,但现实是它们是存在的

不管你是想要过度保护你的代码,还是缺乏用户知识,或者其他什么原因,我希望你已经领悟到了那些会导致你阻碍成功执行测试任务的原因。

继续前进吧,你先可以提高你的测试能力,而且因此能够创造出更好的经过完全测试的产品,它们在发布后对我们所有人来说都有益处。

*测试的答案:
你能找到错误之处吗?里面用到了两次‘the’这个单词。
将11乘以12的结果应该是132,而不是出现的123。

第 10 段(可获 1.56 积分)

文章评论

深圳访客
要是开发担当起测试的角色,那还要测试干嘛?那公司是不是要给多点offer。
访客
哈哈,有道理!
访客
能不能把文章给我们公司普及下?各司其职很重要。