测试工程师需要懂编程么?

来自于James McCaffrey的一篇博客Do Software Testers Need to Know how to Code? 这个问题一直都是我们做测试的同行所考虑的问题,我觉得这篇博客写的很好,转过来跟大家分享一下,顺便翻译一下,文章主要是意译,不是直译。水平有限,有错在所难免,请大家多多包涵。其实对于这个问题,我以前读过一个前辈说的话,意思大概是:会写代码的人并不代码他的水平比不会写代码的人要高,只是从纵向的比较来看,会写代码的自己一般来说是要比不会写代码在自己的水平要高。

原文(Original):

Every now and then I’ll hear people argue either that software testers absolutely must know how to code, or that software testers absolutely do not need to know how to code. I believe the true fact of the matter is that it totally depends upon the situation. At Microsoft for example, virtually all testers must have some knowledge of coding. Microsoft produces all kinds of software including complex systems software. Testers must know how to code so that can understand and effectively test the systems software they’re working on as well as understand, modify, and write test automation which is the only practical way to test certain aspects of some types of systems software. On the other extreme you have pure manual testers who are testing a relatively simple (compared to systems software that is) application program of some sort. Do these kind of testers need to know how to code? Well, it depends. However, I can state this with pretty much 100% confidence: the more any tester knows about coding, they better he’ll be able to do his job, and the more career opportunities he’ll have. But here’s an opinion I have that many of my colleagues (whose opinions I respect a lot) do not agree with. I believe that, in general, knowledge of specific programming languages is (in a way that I’ll explain in a moment) actually more important for software testers than it is for software developers. My logic is that it is critically important for software developers to understand algorithms and problem solving. Sure, the programming language used is extremely important so that any algorithm can be implemented accurately and efficiently, but the underlying algorithms are in most (but certainly not all) cases more important than the choice of programming language used. Software testing is primarily an analysis activity so in many (but not all) situations software testers need to be able to understand the algorithms used in the software system they’re testing, but not necessarily create very complex algorithms themselves. By sort of a weird default this means that knowledge of different programming language features is more important for testers, so that can quickly implement test automation (and test cases) that test the software system they’re working on as thoroughly as possible. Now I’m not saying that this algorithms vs. languages importance idea is a Boolean thing; I’m merely suggesting that all software testers can do their jobs better and expand their career opportunities by learning how to program better and by learning multiple programming languages.

翻译:

我和所有人一样,都曾经听过关于软件测试工程是否需要掌握编程技术的争论,一种说法是测试工程师必须要懂得编程,另一种说法却是相反。而我本人觉得这个问题的答案完全决定于当事人所处的环境。在微软,实际上所有的测试工程师都必须有编程的知识。微软生产多种类型的软件,其中包括一些较为复杂的软件,所以测试工程师必须知道如何编程,这样才能了解并且高效地进行测试;同时,对于系统软件的某些方面的测试只能通过编写自动化测试脚本来实现。现在再说一个极端的例子,如果组织里面全都是手工测试的工程师,他们对某种相对简单的应用程序进行测试,这样的测试工程师他们需要知道如何编程吗?答案是“it depends”。但是,我有100%信心指出,一个测试工程师对编程了解的更多,他们的工作会完成的更加出色,并且他们会有更好的职业发展机会。下面,我会陈述一个个人观点,这个观点不被太多的人所同意。我相信,一般而言,对于测试工程师,他们对特定编程语言的了解,甚至要多于开发工程师。我的逻辑是,对于开发工程师,他们最关心的是算法和解决问题的方法。当然啦,对于编程语言的驾驭也是非常重要的,如果不是就没法正确和高效地实现算法。但是,对于开发工程师来说,算法本身才是最重要的,而不是选择哪种语言去实现它。软件测试主要是一想分析的行为,所以在大多数情况下,测试工程师需要了解算法是如何实现的,但是他们的工作并不是创造一些复杂的算法,所以根据一个逻辑,这就意味着测试工程师对不同的编程语言的了解要比对算法的了解更加重要,只有具备这样的素质(对编程语言的了解),才能快速地实施自动化测试使得被测系统得到更加充分的测试。我并没有说要么算法重要,要么编程语言重要;我只不过建议所有的测试工程师都可以通过学习如何更好地编写程序和了解多种编程语言来更好地完成他们的本职工作以及更好地拓展他们的职业生涯。

Leave a Reply

Your email address will not be published. Required fields are marked *