与我一起工作的初级自动化开发人员,他有大约两年的QA面试经验。他被要求为白板练习编写一些基本程序,例如检查数字是否为质数,确定字符串是否为回文等。这是第一次技术面试,因此令他感到惊讶的是,他被询问的技术问题似乎更多尽管申请成为测试人员,但仍与应用程序开发相关。他们是两个不同的角色。我的问题是,以相同的方式进行开发人员和自动化测试人员面试是否被视为一种好习惯?如果没有,那么应该如何采访自动化测试人员?

评论

自动化测试人员是开发人员。他们开发了可以测试另一个软件的软件。

尽管我们的主题是不了解面试过程,但我无法理解有人认为编写一个函数来确定单词是回文还是数字是质数的能力可以很好地衡量某人的能力解决实际问题并编写可理解和可维护的高质量代码。这就像向建筑师展示一块砖,并要求他告诉您其中所含二氧化硅的百分比。

@EdmundReed我相信这样做的目的是排除无法编写代码的候选人,而不是寻找优秀的编码员。这就像向建筑师展示砖头,并要求他们告诉您它是什么。如果他们不说“这是一块砖头”,那么您就知道他们在撒谎成为一名建筑师。您会惊讶于有很多人说他们是程序员,却无法编写简单的函数。幸运的是,如今,“ dot com”炒作早已不复存在,但现在还不存在。因此需要愚蠢的编程面试问题:-)

@AaronF以我的方式来看,就像试图雇用一名作家/内容设计师,并通过让他们编写包含最高级案例的回文集来测试其写作能力。这并不是衡量他们是否会擅长于您最终要付给他们的钱的好方法。

@ESR-一个人可以问编程问题,但也必须问其他类型的问题。请他们为他们的编程问题编写测试。也许用TDD开发代码。然后,询问他们有关设计软件的信息。如果他们甚至不能进行简单的编程,即使有足够的时间和亲切的面试,那么他们又如何在工作中进行更复杂的编程?海事组织,这应该是一种有益的方法。

#1 楼

我已经完成了大约4个QA自动化工作,大约10次面试,并且在面试表的另一侧大约有10次。

QA Automation涉及编写自动化测试项目。这些软件项目可能非常复杂,通常需要:


管理应用程序的部署
启动和停止应用程序服务器
设置测试数据并清除目录和文件后
为各种操作系统进行分类
收集,格式化和显示结果
以各种通常很复杂的方式与应用交互
请求,响应,硒,页面对象用例,故事/功能文件
遵循最佳实践,有效使用设计模式的合理结构
项目应易于遵循,可维护,灵活

,如果有人正在申请质量检查自动化角色,那么他们需要软件技能。如果他们打算广泛地使用该框架,或者要创建一个新的框架,那么他们应该具有非常好的编程技能,了解构建工具,软件体系结构,设计模式以及如何很好地使用该语言的功能。 br />
我经常看到编码技能不足的人被录用。结果,自动化项目的质量遭受很大损失,变得片状且难以维护,并失去了价值。申请人确实具有必要的编码技能。此外,还应该有质量检查特定的问题,例如:


解释不同的测试类型并提供他们在每种测试中的经验
他们在与不受欢迎的开发人员进行交流时有问题,以及如何处理该问题
他们将如何测试某个应用程序(以确保它们是有条理且透彻的)
等...


评论


我经常看到那些编码技能不足的人被录用。结果,自动化项目的质量遭受很大损失,变得片状且难以维护,从而失去了价值。我希望我可以将这个答案提高一千倍。我刚刚开始一项新工作,这是他们自动化框架的当前状态。开发人员试图接管并修复它,但由于它太复杂而放弃了。

–tehbeardedone
18年5月23日在16:00

尽管大多数答案是完全正确的,但根据某人在没有外部帮助的情况下可以完成一些任务的能力来判断某人,这是对技巧的可怕考验。如果无法访问适当的文档,我将永远无法识别素数,但让我决定如何进行自动化测试,您将获得一个逻辑易懂的框架,该框架应尽可能容易维护...如果您问我,这个概念也适用于全职开发人员。

– Cronax
18年5月24日在14:10

@Cronax-然后选择更好的问题。请他们为该问题编写测试。

– MasterJoe
20年5月4日,3:29

对此答案+1。我们必须处理树状结构的JSON。通常,我们想要的数据在树的第三层。很少是4级或5级。我看到了具有3、4和5级嵌套循环的自动化程序来处理此问题。如果在3级找不到,请尝试4级,依此类推。所有这些额外的,令人困惑的代码都可以用递归代码代替,该递归代码无论位于哪个级别都可以找到所需的数据。这样的错误编码器实际上确实存在,并且您会在知名公司中找到它们。简历欺诈和不良的面试过程通常是负责任的。

– MasterJoe
20-5-4在3:32



#2 楼

这里发生的是该公司已决定应用程序工程师和自动化工程师都是程序员,因此这两个角色都需要了解编程原理。

请注意,例如您列出的任务,例如Palindrome,Prime数字等也是被雇用的开发人员在潜在工作中实际上也不会做的编程任务,但是测试旨在查看他们如何处理常见问题(通常是简单问题)。他们先写代码吗?先进行测试?是否使用red-green-refactor等?

这就是公司这样做的原因...
关于是否一个好主意,方法等:

我认为这种方法有一些价值,但是我认为这是有用的信息,但我不喜欢将这些测试用作简单选通,通过/测试失败。我更喜欢将这些信息添加到面对面/视频采访中,这是我最了解一个人以及他们是否适合我的组织的地方。我发现很多人可以根据需要学习特定的技术要求,因此我试图了解他们的软技能以及他们如何学习,而不是仅仅了解他们现在拥有的具体技术技能。

评论


+1表示“我不喜欢将这些测试用作简单的选通,通过/失败测试的基础。聪明的人可以根据需要学习这些东西。”

– Nitin Rastogi
18年5月23日在13:26



@NitinRastogi-不幸的是,事实并非如此:有很多聪明的人无法根据需要学习这些东西(即编码)。作为简单的证明,请访问cseducators.stackexchange.com,那里有很多专业的计算机科学教育家,他们很难教聪明的人如何进行环聊,并互相帮助设法解决问题。

– davidbak
18年5月23日在20:13



您可以在相同的前提下选择开发人员:从大街上走走,将他或她与高级开发人员配对,并花一些时间学习开发。可能需要一些时间。但是,当新来者是错误并从这些错误中吸取教训,而他的导师却在教他而不是干他的工作时,谁会为此付出代价呢?

– dzieciou
18年5月24日在9:05



@davidbak和dzieciou-好点。我更新了答案以更好地解释

–迈克尔·杜兰特(Michael Durrant)
18年5月24日在10:37

@MichaelDurrant-当您只有HackerRank,Coderpad.io而不是像Intellij IDEA这样的现代IDE时,就无法进行tdd,重构等操作。当您有1个小时的时间和面试焦虑时,就更难了。焦虑主要是受访者的问题,但这是一个障碍。

– MasterJoe
20年5月4日,3:39

#3 楼

我曾经写过一篇博客文章,内容涉及为何很难找到可以编程的技术测试人员,以及为什么候选人无法通过此类技术面试。我们需要具有开发人员技能的测试人员,其原因有两个:


编写可维护的测试和测试工具需要工程技能。我采访了声称可以进行编程的测试人员,因为他们编写了Selenium脚本,但是当他们承担编写简单循环和if / then子句的任务时,他们失败了。代码的重复。[…]我们已经多次审查了使用大杂烩库构建的测试套件。结果从来都不是很好。
在敏捷团队中,测试人员和开发人员的职责经常重叠,并且测试人员和开发人员都可以执行相同的任务。隔离错误的根本原因是这些任务之一,在这里,由测试人员了解系统架构可能很有用。在采访中,我问许多测试人员是否知道他们以前的系统如何工作,其体系结构是什么,等等。许多人说这是没有必要的:理解这一点是开发人员的责任。他们从未与开发人员结对故障排除错误。测试通常是一项协作任务,每个部分都可以发挥自己的技能,但是双方都需要了解另一部分所做工作的一些细节。这很有帮助。

在我观察到的大多数组织中,我相信测试人员应该进行更多的错误隔离,尤其是对于严重的错误。



所有引文来自“软件测试中的经验教训:一种上下文驱动的方法”和“如何使您的Bug孤独:错误隔离的技巧”

#4 楼

您所谓的“自动化测试人员”和“开发人员”都是开发人员。这两个类都应该了解它们将要使用的语言的基本概念(通常称为核心),都应该认为算法有效,并且都应该了解大多数流行的架构模式。

“自动化测试人员”与“开发人员”之间的区别在于,开发人员通常在更复杂的系统上工作,从而引入更复杂的问题,因此“开发人员”应更深入地参与算法问题(您提到的回文等任务,

由于“开发人员”通常参与更复杂的系统开发,因此他们必须了解更多(近几十个)框架和库,而“自动化测试人员”则必须知道(通常受Selenium,Cucumber和一些用于进行REST调用的库的限制)。

因此,向应聘者提出一些基本的算法问题和应该在自动化中使用的语言的核心概念没有什么特别的。

#5 楼

除此之外,趋势是将测试向左移动,这意味着测试人员/测试涉及较早的开发速度。由于该测试人员特别需要自动化测试人员具备编程知识。

评论


很好,因为较低级别的测试更具技术性。

– dzieciou
18年5月26日在8:53

#6 楼

希望与软件开发直接相关的每个人都具备基本的逻辑理解,因此有必要将这些问题作为对Dev,QA和管理人员的初步过滤。不一定意味着某人必须每天进行编码,但要确保一个人符合最低要求并且可以逻辑思考并与团队一起解决(或至少理解)技术/领域问题。 >
我经常接受这些采访,并在不强调具体代码的情况下经常问这些问题,但要了解他们的方法,他们如何理解并尝试以逻辑方式解决问题。

我认为任何合理如果面试官在逻辑上是正确的,没有任何实际的代码,即使只使用候选人提供的伪代码或高级算法(用简单的英语)也可以。

评论


Scrum主管,手动QA,项目经理,甚至软件开发公司的首席执行官与软件开发紧密相关,但是通常不需要他们了解基本编程。他们需要了解更高级别的抽象。另外,您也不会在原始帖子中回答任何一个问题。

– DtotheK
18年5月24日在10:39