我目前正在担任自动化测试员。通常,我在SilkTest中进行GUI测试,我喜欢并认为我相当擅长。最近,我已经为我们的应用程序的API分配了一个COM测试项目。这涉及到用C ++编写的代码,这些代码比我以前在这个角色中所做的还要低一些(例如指针,手动内存管理,复杂的数据类型等)。现在,我过去已经做过一些C / C ++编程,并且正在完成该项目,但这确实使我感到怀疑,因为我仍在犯一些基本错误,因此我对编码器的性能有多好。这可以接受吗?使用Silk或Perl等高级语言和工具,这是否以任何方式剥夺了我的技能?

评论

我对此问题的热情鼓励和专业回应感到惊讶。也许我对自己有点太强硬了,但是我也认为这是一个有趣的问题。这里的SQA社区+10!

#1 楼

我认为您在这里卖空了-您已经说过,您所熟悉的语言和技能组目前很不错,但是您正在为过去使用的语言和技能组而苦苦挣扎但是您变得非常生锈。

这很正常。说真的自动化和编程是互补的技能,但它们也受领域限制。如果您不在某个特定领域中进行练习(例如使用C ++与COM对象进行接口连接),则会失去对许多基础知识的即时了解,因此需要参考或帮助以将其恢复。您也会变慢。

如果您不掌握Silk和Perl的技能,那么当您回到他们的手中时,他们会发现他们不如开始这个项目时那么流利。同样,这是正常现象。

不要陷入这样的陷阱:因为您擅长某个特定领域并且了解原理,这意味着您会自动在其他特定领域擅长。对于测试原理和自动化(和编码)原理的任何特定应用,总会有一条学习曲线。

现在,我使用TestComplete和DelphiScript进行大部分自动化编码。我曾经使用过C系列,Java,VB和所有这些的脚本版本,但是我期望不会马上使用它们并对其进行编码,因为我已经有好几年没有使用它们了。我希望能更好地与他们合作,但不是立即或什至(必要)迅速,这取决于我所处的环境以及其他对我的时间和精力提出的要求。

简而言之,您的技能似乎不仅仅是可以接受的,而且您正在产生成果这一事实表明您正在学习足够的知识以保持事物的发展。

很高兴您能越来越快地改进自己,但是不要忘记您和这里的其他人一样人性化(我认为。据我所知,这里没有任何机器人贡献者...对不起。奇怪的幽默感。

评论


+1保持技能,我无法跟踪过去能够完成的编码量,这在我不再使用的语言上已经消失了。

– MichaelF
2011年7月18日在19:47

#2 楼

“优秀的自动化测试员”和“糟糕的程序员”是在多种情况下做出的判断,例如受试者的先前经验,手头的任务,同时进行的后台工作,公司环境,团队动态和工具。

在一个环境中,一个人可能是一个好的自动化测试人员,而在另一个环境中,它可能是一个糟糕的自动化测试人员。同样,一个人在一个环境中可能是一个糟糕的程序员,而在另一个环境中可能是一个杰出的程序员。

没有错误就无法学习。我建议您扔掉那些自欺欺人的标签,让自己经历学习过程。我们每个人都以不同的步调和方式学习。注意您的工作,对错误诚实,并给自己时间。

#3 楼

基本错误?你对自己太苛刻了。我为您扩展自己的技能而鼓掌。不要放弃。

评论


+1 C ++并不是一种优美的语言。它声称了无数程序员的理智。我什至看到专家在博客上发布C / C ++代码时会犯错误。 。 。

– surfasb
2011年7月18日在20:10

#4 楼

您听起来像是自动化测试人员的异常出色的程序员,这无疑是为什么您如此艰巨的测试任务值得您信赖的原因。大多数使用高级语言的敬业程序员,一开始甚至突然不得不使用非托管代码,即使他们曾经在某个时候使用非托管代码,也一开始会感到很头疼。

如果您正在学习这些新技能,则可以采取步骤来控制自动化质量,以便日后维护更加容易。我建议您找到一个愿意指导您并提供代码审查的开发人员。如果这本身很难解决,那么您可能需要请经理帮助您找到可以对您的工作进行频繁代码审查的人员(并且可能需要管理人员的影响才能说服开发人员这是他们时间的一种好方法,具体取决于您的时间)。团队动态)。让经理知道您已经主要使用高级语言开发了自动化程序,并且希望您的COM API测试代码具有同等质量,这是非常合理的,即使您使用C / C ++的技能很生锈。您还可以指出拥有专门的代码审阅者将如何帮助您更快地重新学习这些底层语言技能。

如果某人在工作中暗示您的错误意味着您无能,则需要推销并推销您在工作中学习的意愿,并扩展自己的技能。保持自信的笑容,感谢他们分享他们的疑虑,并帮助您的管理层记住他们为什么选择您来执行此任务。具体来说,您被要求这样做是有原因的。

#5 楼

要回答该主题中提出的问题:是的。我这样说是因为我直接知道这是相反的:我是一个非常优秀的程序员,根本无法对以有效方式编写的任何内容进行(自动或其他方式)测试。

正文中的问题与标题中的问题实际上并不相同。 C ++不是那里最简单的语言,COM也不是它的交互方式。程序员如果有一段时间不做,或者从未做过,无论他们多么优秀,都会把它搞砸。如果指针和手动内存管理很容易,那么使用它们就不会有太多常见错误,也不会有试图接管这些东西的托管语言。就像其他任何事情一样,通过实践它会变得更加容易。

关于它会影响您对高级语言的使用...并非如此。它当然不会造成伤害,但是使用Perl不需要深入的C ++知识。

#6 楼

好的,所以您正在使用一些低级的C / C ++概念,是的,它们很棘手,您必须精读书籍并学习理解的方法。

关于复杂的数据结构;如果它们是您工作所在的问题领域所专有的,那么掌握这些知识的最快方法就是与同事配对。

在进行测试的同时进行小型单元测试,并同时进行测试学习你的手艺。自动运行这些测试。

最后,要保持信念并坚持下去,你的自我怀疑点可以表明你的尽责程度,这无疑是你的雇主所重视的;伪代码

while (!(succeed=try()));


(从出售T恤和高科技玩具的网站借来的伪代码,以反省怪胎的群众)

#7 楼

C和C ++很难。许多几年未写任何C或C ++代码的软件工程师会犯一些基本的错误,因此不要太在意自己。甚至您在Stack Exchange上问这些问题的事实也意味着一些。

#8 楼

我认为,在判断某人是优秀的程序员还是优秀的自动化测试人员时,重要的是解决新问题的过程有多成熟。一般的程序员将对特定领域有扎实的理解,可以说在几个项目中要用冬眠在Java中持久化对象之后。

但是我不认为有很多人在职业生涯中只做一件特定的事情。这是学习快速学习新事物的方式(安全地=不会导致生产错误)。此外,对问题域中包含的概念进行了广泛的概述。

我已经在Java中编程了一段时间了,这并不意味着我可以编写从未抛出NullPointerException的代码,我只是学会了为此编写测试。

#9 楼

当您注意到基本错误时,犯基本错误总是可以接受的。 Silk(4Test)和Perl(我也有这个技能!)是更高级的语言。这种语言比C ++容易得多。当您在Silk代码中犯错时-它不是那么重要,您始终可以对其进行修复,因为它不是生产代码。在Perl中进行编程时-您无需考虑其他一些数组边界检查或异常处理等操作。

但是,即使在Perl中进行编程时,也必须在Perl中进行思考。遵循特定语言的最佳做法。
C ++也有同样的想法。使用C ++进行编程时,您不应该使用Perl进行思考,而应学习如何使用C ++进行思考。
如果此操作失败,则无法在C ++中打开文件并死亡。并且您不应该在所有地方使用哈希,因为您必须使用C ++中的类。
使用C ++进行思考需要更多时间。这种情况对于COM来说很复杂,但也不是那么容易。

在我过去的项目中,新开发人员必须用C ++和COM为我们的应用程序API编写测试大约一年。而且只有大约一年的测试时间,高级开发人员才允许他们编写一些小的生产代码。