【问题标题】:What interview questions should a developer ask a tester?开发人员应该问测试人员哪些面试问题?
【发布时间】:2009-08-27 02:41:08
【问题描述】:

我们即将进行一些面试,我们正在招聘质量保证职位。开发人员参与的目的是了解此人是否会与开发团队合作良好。

开发人员应该问 QA 人员最重要的问题是什么?我在寻找实际问题而不是蓬松的开放性问题,你的想法?

【问题讨论】:

  • 没错,我们都提到了面试测试人员,但这个问题问的是“你如何找到优秀的测试人员?”,我问的是具体的开发人员/测试人员交互面试问题......
  • @Jon:抱歉,我看不出有什么显着差异。我看不出衡量测试人员能力的“好”问题会如何根据提问的人而改变。
  • 这个问题有根本的不同。另一个询问一般性问题,我询问实际问题...可能涉及典型的开发人员/质量保证方案...
  • 上述问题(作为将其标记为欺骗的原因)已被删除。

标签: software-quality


【解决方案1】:

不幸的是,有时,蓬松的开放式问题可以让你对一个人有最好的看法。

无论您提出什么技术问题(这些在很大程度上取决于您的开发方法,因此我无法真正帮助您,它们应该量身定制),您应该始终确定潜在候选人将如何在团队环境中工作。

您需要确定:

  • 此人将在团队中很好地工作。
  • 此人将负责与开发人员一起修复错误,而不仅仅是“这是一个错误,去修复它,然后再回复我”。
  • 此人的自负不会妨碍团队的工作(例如为 bug 的分类或严重性而争吵)。我发现这通常是开发人员对“他们的”代码进行防御的问题。

我发现面试中最好的方法是展示场景并询问候选人他们的想法,例如:

  • 现在是星期五下午 4 点,开发人员 Bob 已同意回去修复一个高严重性错误。我们需要一名测试人员来验证修复,您是唯一可用的人,但您已经安排了晚餐。你有什么建议?

仅根据该问题的答案,您就可以评估候选人是否:

  • 没用(“抱歉,我不能错过晚餐”)。
  • 考虑外部约束(“真的没有其他可用的测试人员吗?”、“我可以在星期六早上验证它吗?”、“Bob 可以在周末的其他时间工作吗?”)。
  • 适应性强(“我可以推迟一次晚餐”)。

等等。

我也无法强调沟通技巧对开发人员/测试人员关系的重要性。让测试人员生成一份粗略的错误报告(他们想要的任何错误)并讨论其充分性(确切步骤、预期行为、实际行为……)。

【讨论】:

  • 很好的答案,我认为情景问题是个好主意,并要求他们完成它们......
  • 所以如果候选人不愿意牺牲自己的个人时间来做潜在的无薪加班,那他就没有用了?
  • 不,如果候选人甚至不尝试找出解决方案,他们就毫无用处。比笼统的陈述“对不起,我不能错过晚餐”更好的是“对不起,我不能错过晚餐。这是我的周年纪念日,但我愿意......”。
  • 当您达到一定水平时,无偿加班是现实。如果我不得不让某人离开,我会首先考虑 9 到 5 人,因为其他人已经证明了他们对公司的价值。
  • 等一下。你的意思是开发中有带薪加班? :P
【解决方案2】:

除了这个帖子中更深层次的答案外,还有一个简单的问题经常被忽视:

你能像普通用户或没有经验的用户一样行事吗?

现在,这似乎很愚蠢,但它提供了非常好的洞察力。如果候选人说是,坦率地说,他们不是他们看起来的样子。在信息技术领域从事开发(特别是)、分析或测试角色的任何人都不能这样做;仅仅是因为我们已经超越了没有经验的用户的水平。您应该寻找的答案是:

不,但是我可以创建可以准确映射到“所谓的”正常用户行为的测试用例。

或者它的派生词。这显示了一些重要信息。

  1. 他们很现实
  2. 他们可以跳出框框思考
  3. 他们愿意执行 QA 中设置的正确方法

这是我至少找到的。

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    我的建议是考虑这样一些开放式的问题:

    如果我走到你面前说:“我能 你测试我做的这个新东西?”什么 你的前几个问题是什么?

    以下是我提出的一些想法:

    1. 是否提及规格或要求?如果没有,这对测试有何影响?
    2. 他们是否希望我与他们配对,以便他们知道我做了什么?
    3. 他们想知道我做了什么吗?
    4. 他们是否有时间这样做并询问我认为这可能需要多长时间?
    5. 您期待什么样的测试:综合、冒烟测试、走廊可用性?
    6. 将使用哪些类型的工具来执行此操作?

    在记录错误时,什么是 你相信的最少信息 开发人员在修复之前应该有 是吗?

    这类问题取决于他们的背景,可能会成为他们回答的一个因素,因为需要注意以下几点:

    • 重现性 - 你能以一种可预测的方式得到这个吗?
    • 重现性步骤
    • 这是代码、数据、网络还是其他类型的错误?
    • 该错误在某种程度上有多严重?
    • 环境 - 我需要什么才能让这种情况再次发生?是否有特定的浏览器、操作系统或其他我应该拥有的东西?
    • 说明这是一个错误的预期结果和实际结果是什么?
    • 软件版本 - 这是在什么版本的系统上找到的?

    我之所以提到其中的大部分,是因为当我提出一个应该有更多细节但哪些细节很重要的模糊问题或请求时,我会问他们最初有哪些参数。我还要注意在给出答案时暂停了多长时间,我会说 15-30 秒是可以的,任何更少,我认为这是一个预期的问题,如果需要更多,那么应该请花几分钟时间考虑一下,因为重点是当这种情况出现时,双方的期望是什么?

    另一个想法是提及您使用的软件开发方法,然后询问使用这种方法与 QA 相关的挑战是什么?例如,如果开发人员使用 TDD,这对 QA 有何影响?如果它是一种更像瀑布的方法怎么办?你想在这里看到的是他们的思考能力如何,以及如果我说我们使用 Scrum,他们会问什么样的后续问题,如果我说我们使用 Scrum,那么定义通用的实现有多好Scrum 的概念,真的。

    【讨论】:

      【解决方案4】:

      开发人员可以通过给他一个应该检查以下内容的场景来检查

      态度

      测试人员是否具有探索的态度?给他一个场景,看看他/她问了多少有效的问题?

      技能

      在您从事的每个项目中都需要一些与测试相关的技能。它包括需求研究、测试设计、测试执行等。检查测试人员对需求的理解程度。

      知识

      在您要招募测试人员的领域检查测试人员的广度和深度。即使测试人员不在当前领域工作,也要检查测试人员对该领域的了解程度。

      可接近性

      给测试人员一个场景,比如有一个客户问题,开发人员整整一周都在休假。问题需要紧急升级,作为测试人员,您需要找到问题的根本原因。在这种情况下你会如何处理

      【讨论】:

        【解决方案5】:

        我们在软件质量人员中寻找的一些关键项目:

        • 沟通 - 候选人能否以简洁明了的方式撰写/发送电子邮件/讲话,以便团队的其他成员能够了解他们发现的缺陷
        • 问题解决 - 这就是那些面试难题可以派上用场的地方。对于这些类型的问题,更重要的是了解候选人将如何解决问题,而不是他们在多大程度上确定“美国有多少蓝色汽车”。
        • 责任 - 了解候选人是否会坚持到底很重要。这个问题很难找到真正的答案,因为人们在面试时很热情,可能会同意很多,但不是真的。候选人过去关于他们如何处理问题或问题的故事可能会有所帮助。如果问题对候选人来说变得更糟并且他们一直在解决问题,则可以加分。
        • 技术专业知识 - 此项目所需的级别会因测试人员而异:他们会编写自动化测试吗?手动测试?自动化测试至少需要一定程度的技术专业知识,而手动测试则需要的更少。无论哪种方式,在解决问题时,让至少熟悉应用程序技术方面的测试人员都非常有用。

        【讨论】:

          【解决方案6】:

          我认为这实际上取决于您要寻找的测试人员类型。您是在寻找有人按下按钮并告诉您它看起来不正确,还是您在寻找能够理解技术甚至代码并找到更深层次错误的人?作为面试循环的开发人员,我想也有传统的 QA 类型可用。如果是这样,他们会问典型的测试问题。您需要了解它们的技术性以及它们将如何交互。考虑到这一点,请尝试以下一些问题:

          1. 编程问题。看简历。他们知道 C# 吗? Javascript?请他们为您编写代码。他们知道的越多,他们能够提交的错误就越多。
          2. 流程问题。他们了解源代码控制吗?他们用过吗?他们了解构建的概念吗?他们是否熟悉单元测试?
          3. 软件开发问题。 他们了解什么是 dll/程序集/jar 吗?他们知道记忆是如何工作的吗?他们是否了解用户模式和内核模式(或适合您的域的任何模式)之间的区别?
          4. 技术问题。他们对您的领域的了解程度如何?他们了解小部件行业的动力吗?他们知道客户正在寻找什么小部件吗?他们用过小部件吗?
          5. 他们是否深入了解自己的错误?询问他们最喜欢的错误。他们能告诉你多少细节是哪里出了问题?
          6. 他们能抵挡得住你吗? 当开发者逼迫他们时,他们会退缩还是会打架?向他们询问他们尝试完成某事并遇到反对的时间。他们的反应如何?

          【讨论】: