测试是做产品的一个很重要的部分,国内重视测试除了几家硬件和数据库公司就都是外包给外企的测试人员了。
笔者也在外企外包测试了很久,有些话,不吐不快。
笔者认为:
1、测试是一项枯燥的事情,如果不是对技术有很大的信心和爱好,干不长久。
2、测试的种类很多,可以说从高到底。但是国内的普遍都不是技术流所以干不长久。
3、手工测试貌似谁都会,但是有经验的会去找各种边界值和反向值,这个就是编程序的经验的老道与否决定的。
4、开发也普遍看不起测试,因为啥。因为测试的不是和开发平起平坐的。虽然口头上都是说一样。我做了这么久,最大的原因我觉得就是测试的普遍不会写代码。或者对代码抵触。自动化的除外。
再就是领域知识,数据库为中心的产品核心自然是那么些个表盒存储过程。你不比开发的熟悉你咋知道好不好呢?硬件或者固件为中心的比如嵌入式的一些测试,要求的一些平台相关的知识。如果不懂得基本的,那也是玩不转的。
5、但是角色都相反的,开发的是善于编制制造东西,而测试是善于拆东西。把东西拆掉看看内部构造。
所以开发的熟悉的类啊,成员变量啊,静态函数啊,模板类啊。测试的所知有限。
但是做黑盒来讲,你系统慢或者点击就死机这些常见的错误还是一目了然的。
6、对一个成熟的产品而言,测试的作用比开发作用大。为啥,测试就是你养了这么些年的高级用户啊。他们代表着先进产品的需求代表着老用户依然觉得产品好用,代表着新加入的功能还是能被老用户接受。
而新进入的开发人员却不是这样的,一些个之前的开发翻过的错误没写注释的代码,你觉得没用,大笔已删的就是一个回归错误。
我是一个开发人员认可的测试人员吗?
我觉得我是:理由如下。
1、我的开发技术不赖。我测试的是C++ COM的程序,所以我对ATL MFC还是熟悉的。我需要测试的产品的API是基于COM的是早期的微软技术。(童鞋们不要不屑,Citrix AutoCAD等等都是C++的。不想做语言之争。)
我设计了一套框架,自定义了String,加入了XML4C的支持用于解析我的输入的Case,加入了ThreadMemberFunction实现多线程,定义了日志的级别...
然而在实际测试中,为了让开发的能迅速重现我遇到的问题,我不可能把几百M的文件发给开发人员要他用我的这么大一套东西去重现。既然是COM的,我就写COM的C++的程序有时候是VB程序。。(童鞋们不要不屑,Citrix 脚本就是用来做胶水来填补应用程序之间的Gap的,不是是Pathon就一定现金,VB就一定落后...)
然后我把相先出现问题的版本号告诉开发,开发这里就Checking一个缺陷,只能是哪儿出错了。当天3个LocalFix砸过来,第二天就修好了。
久而久之,开发的不服都不行。主要是你每次都有理有据,把他定位的工作也做了。你用你的Code去和人Argue,所谓子之矛卖攻子之盾。不是我的Coding比他好或差的问题。是问题的2个方面他看不到而已。
也不是IBMer就一定比我的Coding强,那BuildTeam的就玩Ant和不到10个Java代码。你去玩2年不比他差。项目决定的,或者说机遇决定的吧...