51Testing软件测试论坛

标题: 论发展,程序设计-测试人员始终无法回避的问题 [打印本页]

作者: 蓝色    时间: 2008-8-3 17:45
标题: 论发展,程序设计-测试人员始终无法回避的问题
三年前,大学毕业,带着一本已经出版的计算机安全方面的书籍来到现在的公司,进入了非常陌生的测试部门。不低的薪水以及不难而重复的工作曾使得自己非常迷茫,非常浮躁,找不到一个方向;我曾经最危险的迷茫是觉得编程设计不那么重要,至少在测试领域,至少在自己的发展路上;但是,现在我觉得,这是错误的,一定。

在谈论自己的发展方向时,首先先说说国内测试的发展方向,我现在的理解简单说就是测试和开发在技能和职责上的区别会越来越少,一个测试人员只不过是一个更加有测试方面经验的开发人员而已。
70年代,测试职位的分离,是一个时代的必然和标志;敏捷/XP设计的提出,则是测试和开发重新融合的开始。在国内,测试领域的发展确实比国外少不仅仅是10年。
但我有一个大胆的预测:在国内,在未来5年,会出现一些公司,一些团队,测试人员将完全融入到开发团队中,这些人用一半时间来进行测试足以,而一半时间会用来进行测试理念的传播和具体的开发工作。

在这里,就有很多人会想,怎么可能?测试怎么可能这么轻松?难道是用了自动化测试?
不错,在这样的团队中,自动化测试会是一种常态,但不是银弹。但,大家设想一下,如果你现在测试的产品,当交到你手中时已经没有什么Bug时,你的测试时间会缩短很多吗?

如果要说到银弹,”让开发人员进行有效的测试“或许能算上。这里说的和测试驱动开发有些类似,但我们只是借鉴里面的思想,而不是全部,因为我们有中国的”国情“。
测试人员一直试图去负责”质量“这个东西,也一直有人在不断提出我们怎么样怎么样把质量贯穿到整个产品中,也试图让测试人员做一些事情来”督促“、”改善“质量;我个人觉得让质量贯穿产品一个最简单也是最有效的方式就是开发人员进行测试。

开发人员进行测试?
我靠,那测试人员干嘛?开发?

不对,但也差不多。测试人员的职责会这么转变:
1.在团队确定了这种产品开发理念后,测试人员的职责有两个:一是进行通常意义的产品测试,在此时,花费的时间和现在的测试工作会差不多;
二是培训,培训开发人员如何编写测试用例,和开发人员一起研究如何在开发阶段融入更多的测试代码,进行更多有效的自测;测试驱动开发是一个可以参考的模型;
2.当第一个阶段,进行的很顺利后,开发人员的代码质量应该会有很大的提高,接着到测试人员手中的产品会越来越有质量保证,Bug会越来越少;此时,测试人员就可以把更多的精力放到自动化测试上,注意,这里的自动化测试应该融入编码阶段,而不是仅仅当代码被Build以后才进行;
3.当一个团队的开发人员逐步学会了如何测试,以及一个有效的自动化测试体系得到建立,此时的测试人员平时能干的事情就会少很多了,那么干什么?
补充测试用例?写产品测试总结?
错,进行一些开发工作,熟悉产品,提高自己的技能呗。

这里插一句,我注意到不少公司都要求员工将那些Google就能获得的东西不断总结成Word文档。我觉得这里很大的原因是我发现不少员工都不怎么会用Google搜索,找不到想要的内容。这或许通过培训Google搜索技巧就可以解决了,而不是让不同的人不断去写类似”Tcpreplay使用指南“。

我觉得这将是一个国内测试的趋势,至少我们在Thoughtwork之类的公司已经看到这样团队的大量存在,在国内一些精炼的团队中也已经有这样的影子。

说道这里,如果你觉得我说的有道理,那么对于现在我们要做什么准备就应该很清楚了。
程序设计

每个测试人员都不会去否认程序设计的重要性,但由于工作的繁重以及自己周围环境对自己潜移默化的影响,很多人在潜意识中已经觉得自己和程序设计没关系,那东西只是给自己锦上添花的东西,自己主要的精力应该放在某些产品的应用上;如果你有这样的想法,我到觉得你现在转作工程或者售后会是一个不错的选择。

如果你是一个想在技术上发展的测试人员;
如果你是一个未满28岁,又不是部门总监级别的测试人员;
那么,从现在起,拾回程序设计。该学什么?
很简单,按照google招聘的要求,做即可:
一门脚本语言;(我推荐python或者Ruby)
一门程序设计语言;(C++或者JAVA呗)
Google很强调算法,但现在的高级语言的编程很多时候就是调用库,调用库,再调试,而那些库已经把算法问题考虑的比较清楚了,所以算法到不一定是学习重点,而且我始终认为算法是一个靠经验或者天赋才能领悟的东西。

现在国内大部分企业的测试工作,很多时候只能磨练你的性格,给你一个养家的职业,而如果你要把这个职位作为事业,程序设计将是你始终要面对的。

写的有些凌乱,不过想法应该都反映了,也很想听听各位测试大牛的见解。

[ 本帖最后由 蓝色 于 2008-8-3 18:16 编辑 ]
作者: afeng    时间: 2008-8-3 17:54
测试人员的开发水平不需要很高,但起码能做就行,能用自己有限的开发水平解决测试中的问题就可以,不要忘了,一切都是为了测试,一切都是服务于测试,过于强调开发水平对于测试人员来说也是没什么意义的

[ 本帖最后由 afeng 于 2008-8-3 17:55 编辑 ]
作者: 蓝色    时间: 2008-8-3 17:56
你说的还是立足与现在的测试发展现状,以及现在国内几乎90%以上的公司情况;
我谈的可能是5年后,20%公司的情况,呵呵。

尊重公司发展的现状,但不能说我就要因为公司或者大环境的原因而放松去自己的要求。
我并没有否认测试经验,比如Bug分析能力,耐心,文档能力等等在测试中的重要性,我始终认为一个好的测试人员应该具备三个特征:
1、测试经验,这个很多时候必须靠时间来获得;
2、程序设计能力;
3、知识面

[ 本帖最后由 蓝色 于 2008-8-3 18:02 编辑 ]
作者: fei.ge    时间: 2008-8-4 09:48
测试工程师该掌握:数据结构,程序设计,数据库原理,计算机网络...
作者: afeng    时间: 2008-8-4 11:44
不好意思,我没有看你的文章,只是针对你的标题发表了一些看法,呵呵,其实现阶段很多外企的测试人员就是一半开发,一半手工测试,对于测试人员的开发并不要求一定要象开发人员那样掌握一整套开发技术,只要能针对所测试的项目,开发一些小工具,解决手工测试所无法解决难题即可,并不要求要达到优秀开发人员那样的水平
作者: xiaoyaoke    时间: 2008-8-4 11:51
我和你同意LZ的想法,随着敏捷开发的推广,测试与开发的界限会越来越模糊。
作者: cleverman    时间: 2008-8-4 12:11
单纯说测试就有些笼统了。一般来讲测试分三类
SQAA, SQAE and SDET。楼主的重点在于如何从SQAA/SQAE往SDET上发展。而且对于程序设计的要求也只是SDET的基本入门要求。有了这些还未必能应聘得到。
作者: 蓝色    时间: 2008-8-4 13:42
大公司细分的职业划分,不是我的重点。我更多是想探讨当你一开始没有进入微软/google后很多同行面临的问题,以及如果有机会,可以怎么在现有环境下改变自己的团队。很多人在的公司已经是某个行业的NO1,但测试的发展到不一定...
作者: elliot_qu    时间: 2008-8-4 13:58
前途是光明的,道路是曲折的。
作者: xiaoyaoke    时间: 2008-8-4 14:15
明确了方向,多学一点总不是坏处,有的时候古话说的还是很好的,“艺不压身”,如果你的时间用来无节制的游戏或者逛街吃喝,那用这些时间学些东西更好的。
作者: 62369432    时间: 2008-8-5 11:34
说的都是一个很理想的状态
作者: xiaoyaoke    时间: 2008-8-5 11:40
生活就是需要理想
作者: xiatongbing    时间: 2008-8-9 16:14
这个需要一个过程,开始的时候,测试的都是简单基本的问题,过一段时间自然就渗透到程序里去了,这个有上进心的测试新手们会自主的接触到编程的 .
作者: gucciyoung    时间: 2008-9-2 22:18
想要达到楼主所要求的测试状态,中国估计还要好多年。

测试要懂开发是为了更好的测试,测试教开发写测试用例,融入开发团队中,你觉得开发会怎么想
作者: chengxq    时间: 2008-9-3 09:31
我也有这样的想法,只是工作时间上,安排上有问题。老了,没有精力了
作者: heqingbluesky    时间: 2008-9-3 11:09
就目前很多的外企也没有达到这个水平,这个要求也只是MS和Google公司而已。

而且LZ说的也不过是从手工测试转换到(升级到)单元测试的高度而已。测试不仅仅是代码的能力,代码的能力只是测试的一个方面。
作者: 任道远    时间: 2008-9-11 10:32
看个人的侧重点吧
作者: tiancaim    时间: 2008-9-16 14:08
不是很懂的说
作者: 月老的徒弟    时间: 2008-9-16 14:35
确实,刚来 不太懂!
作者: afeng    时间: 2008-9-17 09:55
写程序也不是这么难吧,况且测试人员得开发要求也没有向开发人员那么高,可能还是很多测试人员主观上不愿意写代码,而不是没有这个能力,人是要靠逼出来得,呵呵
作者: xiaoshancom    时间: 2008-9-17 21:18
标题: 回复 20# 的帖子
对测试人员来说,写程序的目的好像更多的是为了解决测试中的各类问题,而并不是把它当作一个难题来解。比如说如果熟悉IO操作,你会有兴趣写出工具读类似PE或者二进制文件,进而促进对文件格式、字符集和字符编码等的理解;如果有条件,再加上点windbg的掌握,能用它来读pe和二进制文件,省钱也省力。

现在感觉,做好单元测试就是件非常不容易的事情。
作者: hyper    时间: 2008-9-18 09:41
原帖由 heqingbluesky 于 2008-9-3 11:09 发表
就目前很多的外企也没有达到这个水平,这个要求也只是MS和Google公司而已。

而且LZ说的也不过是从手工测试转换到(升级到)单元测试的高度而已。测试不仅仅是代码的能力,代码的能力只是测试的一个方面。


只是单元测试,有点片面了了吧。
会编码码才能把自己的好的想法真正实现,比如针对公司特定系统做做工具,小的框架。。。
作者: afeng    时间: 2008-9-18 17:35
自动化测试确实是为了解决手工测试无法解决的问题,不过自动化测试对人员能力要求和成本都相对较高一些,而且很多自动化的东西也需要人力成本去维护,这都是一些中小公司说无法承受的,而且我个人觉得,现阶段的自动化也不是万能的,就拿gui的function测试来说,很多自动化测试工具对有些功能都无法实现,还是需要手工测试,而且自动化工具也存在价格偏高,很多公司不愿意承受,而靠测试人员来编写程序进行测试,成本又太高,所以现阶段,只有少数有实力的公司才能实现全面自动化,绝大多数公司都是不可能的
作者: kingsang    时间: 2008-9-18 22:35
顶一下罗  有了学习的目标
作者: xiaoshancom    时间: 2008-9-19 21:53
标题: 回复 23#
GUI测试并不算太困难,用一部分winapi和COM就能构建一套简易的自动化界面测试框架。如果你所面对的产品不很大,这样的搭建实际上已能替代商业Automation工具的作用。即便是比较复杂的产品,只要有足够的时间和资金投入问题也不大。你说的国内中小公司从资金投入来说确实无法实现这样的vision,再加上这些公司领导们对测试的轻视,能成功已属万幸。所以,我一直认为测试职业的出路只能在大公司。

如今测试领域的难度依然是:
自动化界面<性能<安全。
作者: afeng    时间: 2008-9-20 12:46
是这样的,大公司有钱,有钱什么都好办,gui么现在大多用作验收测试,测试框架大多有现成的代码可供下载,不过对新的feature还是得用手工测试,自动化在目前来说可能还取代不了手工测试,个人看法
作者: heqingbluesky    时间: 2008-9-22 10:16
标题: 回复 26# 的帖子
手工测试仍然占据重要的位置,毕竟自动化适合做回归测试。如果新的功能不稳定,自动化一定代价很大。

当然,测试最好还是进大公司,毕竟瘦死的骆驼比马大。
作者: geral123    时间: 2008-9-22 11:56
不明白。。。。
作者: afeng    时间: 2008-9-24 08:08
不一定非要大公司,但一定要国际化公司,最好是欧美的,因为那里的老外很喜欢新技术,你也就跟着可以学到很多先进的东西.
作者: dengyewu    时间: 2008-9-24 09:00
专业测试人员教开发人员怎么测试,开发人员教测试人员怎么开发,这在中国目前是
一种理想的假设而已,现实中,开发是比测试牛的,他们怎么会向测试低头了?
作者: 蓝色    时间: 2008-10-28 15:34
牛和不牛都是有范围的,很多牛开发在测试方面的思考并不比测试人员强,那么如果公司层面有这种要求,开发人员是愿意向测试人员学习方法的。
作者: zhanzhan    时间: 2008-10-29 10:17
的确 现在程序设计的基础的确是要补一补了
作者: czh042    时间: 2009-2-4 16:53
标题: 开发和测试在职责上应该区别开
我不太赞成楼主的说法,虽然才刚接触软件测试,对软件还没有深入的了解,但是我认为开发和测试在职能上应该区别开。因为开发人员在测试时思维很多时候会不自觉得限制在正常的操作上,而想到的异常操作却比较少。而专职的测试人员在这方面经验丰富些,想到的比较多。所谓旁观者清,毕竟是自己开发出来的东西,局外人在使用时想法会多很多,还可能给一些很有价值的建议。测试人员要具有测试员的素质,而有些开发人员往往会比较浮躁,没办法更好地完成测试的任务。
我赞成测试人员要懂得至少一门的脚本语言和程序设计语言,学会测试工具,这对测试来说无疑是锦上添花。自动化测试会提高测试的效率甚至是减少成本,但是手工测试仍然占据主导的位置,自动化测试最终也是一种辅助。我也赞成在写用例时开发人员也参与,这样会使用例更加完善。
一开始这种不难而重复的工作也曾使得我非常迷茫、浮躁,找不到方向。还觉得在白拿薪水,心里不塌实。但是我发现我是错的,企业是以盈利为目的的,如果因为一个bug产品就卖不出去,那就会亏损很多,企业当然不想这样。说现实一点就是,我领着人家的薪水,就要帮人家把事情做好,我的责任就是通过反复的测试,尽可能多地找出bug,使产品更加稳定。另一方面呢,我也是在学习,在创造自己的价值。总的来说,我之前那样是因为对测试认识不深,心态没纠正过来。
可能不同的公司适用的做法不同,以上是我的一点体会,有不对的地方,望请各位多多指教。

[ 本帖最后由 czh042 于 2009-2-4 16:55 编辑 ]
作者: redwanghb    时间: 2009-2-6 14:26
LZ说得挺好,我想每一个做测试工作三年左右的人都会进行深入的思考,自己的未来应该是什么样的?测试的未来到底是什么样的?
主要还是因为我们所处的团队我们所做的事情,在这其中会遇到很多我们认为是错误的事情或者是可以改进的事情。一直以来我一直在寻求改变,也总是希望能够更多的去了解开发过程,了解代码,我相信一个好的测试人员的一个基本要素就是要能够读懂代码。不过我一直做不到这一点。

想改变,而无法改变的原因就在于我没有想到的时候就迈出第一步,所以LZ说的按照google的招聘来的时候让我有所感悟。确实我可以先学会一门脚本语言。谢谢LZ。很遗憾这么晚才见到这个帖子。

另外想对一些朋友说,不要总在想我们达到那种状态要多少年,当你意识到的时候就开始去做,就算很多年后中国的测试行业才能达到那一步,那么在那之前你已经领先其他人很多年了。
作者: xiaosan51test    时间: 2009-2-6 15:13
看来我有必要去学习了,哈哈……很年轻啊,怕什么?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2