问答 测试学习的语言与开发一致的必要性?

Ikaros灬 · 2018年04月23日 · 最后由 心向东 回复于 2018年06月22日 · 1581 次阅读

现在很多测试都已经会使用一门语言来进行自动化,python 啊 java 啊。
由于精力有限大部分人只能选择一门语言,所以在选择上引发了一个问题。
继而又引出一个问题:测试有必要和开发使用同一种语言么?
以下是我的思考欢迎讨论。
观点 1:人生苦短,我用 python。
这种基本上都是用 python 来实现 UI 自动化(或者其他脚本之类的),接口自动化等等一类型,主要目的是自动化,由于 python“短小精悍易上手” 的特点,所以很多人喜欢。
这种类型的大部分情况下可能都和开发使用语言不同,不过主要目的可以很好的实现,就是自动化起来提高效率。

观点 2:和开发保持一致
有这种观点是因为,不仅仅可以实现自动化,还可以发现开发人员所写代码中的问题,可以进行 code review,如果你对开发人员所使用的代码很熟悉甚至超过了一部分开发的话,可能会出现这种情况:“哎?XXX,你这个地方写的可能会有问题,这样写会导致 xxxxxxxxxxx。” “XXX,你这边可以换 XXX 这个方式实现, 内存消耗会更少一点/效率会更高”

我个人倾向是观点 2,主要是觉得,如果想成为一个专家的话,精通开发的语言可以找出更深层次的问题,比如有些编码问题引起的偶现问题,甚至在开发离职更换的时候,测试可以告诉新来的开发这里是怎么实现的,以及当初设计的初衷,更有利于提升测试核心竞争力,这样在开发面前更有话语权(可以装 B)。

大家的看法是什么呢?可以在评论里讨论一下。

共收到 13 条回复 时间 点赞
14楼 已删除

人生苦短 远离 python

首先要澄清一点,python 不是脚本语言!是一种解释型语言,并且支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。
我观点是不必拘泥于用什么语言,拿自己最熟练的言语来实现自动化测试,以达到最优"效率"。
如果想"指导"开发 (装 B),不如转行去做开发吧。有句俗话:You can you up,no can no BB.

闲着的时候看一开发的语言,不谈会使用,至少明白用这个可以干嘛

1.找到自己适合的,自己感兴趣的方向,2.另外结合实际工作需要;尽可能的和公司保持一致,这样利于沟通;开展;

上手容易使用简单,我觉得挺好的。实用就好。

分场景而论
<1>如果是要跟进开发代码的白盒测试和 CR,那需要能看懂开发代码,甚至能写单测,但是并没有要求达到熟悉或者精通的程度;
<2>如果是黑盒,那需要了解一些框架如 Spring、Koa、Django 的特性,并不需要对语言熟悉;
<3>开发测试框架,一般脚本语言开发比较快;
<4>开发测试平台,如果对并发、性能或场景没有特殊要求,不需要进行语言限制。

总结:了解开发使用的编程语言是基础要求,能熟悉或精通当然更好。没有特定使用需求的话,可以自由选择语言。

我们公司做游戏的,用的是 C++,所以开发主推用 lua 来写脚本,不管是游戏里面的功能脚本,还是我们自己的测试脚本,都是拿 lua 写的,这样我们测试游戏里面的功能,有的时候也可以直接检查脚本逻辑来发现很多 BUG,但是你要说能和开发一起讨论代码。。。那得学习 C++ 才行,真精通 C++,估计也不想待在测试上面了。。

我站队观点 2

py 不是万能的,会让你倾向于幸福地永远停留在耍 api 的层面;
导致融不进 rd 的圈子. 另外真的太鼓吹 py 了,简直受不了

看情况 如果是一个自动化测试工程师 可以选择易于大家学习的语言 毕竟跟所测产品的开发语言没什么相关性 尤其对与 Web 应用来说更是 如果是个 CS 的架构 则要考虑开发语言 因为很多时候 指望自动化工具或者框架搞不定很多事情 需要针对测试产品做一些扩展开发 如果是中间件、公共框架或者白盒测试人员 肯定要与开发一致

后台、前端、Android 、ios 等不同端的开发人员,都是专业的开发语言使用者。 作为一个测试人员,个人觉得是没必要,也不太可能把这些语言全部学会学精(达到能在专业开发人员面前装逼的程度)。
从工具使用上来说, python 也好,java 也好,能用好,提升测试质量,就应该加分。

个人赞同观点 2,需要深入了解业务,除了业务文档就是自己看代码了,特别是对应一些项目文档不是很全开发换了一波。最重要一点,后台测试很多没有 UI,但是可以通过日志和异常信息追溯源码那块有问题,并精准反馈,再深入一点也可以自己修改代码,不是涉及逻辑相关,达到测试目的,也可以基于项目代码开发一些测试接口等。目前我招人只会 Python 不会 java 不要的(个人观点,谢谢大神)

站在测试角度我觉得选自己最能上手的语言完成就好,就拿我之前公司产品来说底层是 C,C++ ,应用层是 C# 来开发的。我不能能花大量时间把 C++,C# 语言学习精通(而且光 C++ 这门语言门槛就不低了)。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册