1、大学中打下了宽广扎实的计算机基础——具备解决问题能力的基础
作为一个计算机科学与技术出身的我,在大学中打下了宽广扎实的基础:数据结构、操作系统、编译原理(语法分析词法分析)、网络基础知识(TCP/IP)、数据库、微机接口——拥有所有这些领域的编程经验。我一直在思考如何让我所学的知识全都得到发挥的平台和空间,因为这些都我大学时代最感兴趣的领域,冥冥之中的幸运,我在后续的测试工作中全都得到了运用并获得了更深的拔高:光传输产品(涉及微机接口知识和网络基础知识)、路由交换机产品(涉及网络基础知识和数据结构知识)、各类windows和web软件(涉及数据库知识、网络基础知识和GUI开发知识)、各类存储软件(涉及操作系统、数据结构和数据库知识)、 分布式数据库项目(涉及操作系统、数据库知识和编译原理的语法分析词法分析)。当然在这么多项目过程中,更是深刻的真正的把软件工程的知识进行提升,真正明白了需求应该怎么来,需求的质量是什么样?架构和设计的质量应该是什么样?软件测试的质量应该是什么样?
眸然回首才发现软件测试领域是最能满足我大部分IT兴趣的领域,而不需要牺牲自己的其他IT爱好。因此要感谢大学时代给我上课的老师们——“师傅领进门”,没有这些现在还坚守在教学一线的普通高校老师,也许就不会有我现在的一技傍身。
2、坚持到一线才是成长关键——拥有成长所需发现问题的条件
至今还坚持每年亲自做产品最复杂,最重要部分的测试设计,并参与测试执行实施,通过发现bug的效果优化自己的测试设计;每年还在参与bug定位,积累bug根因的经验。09年临危在不到2个月商用部署的条件下主导中国第一个商用电信级云存储系统版本的测试技术工作,给了我一份如何在极短时间条件下满足进度和质量目标的测试技术平衡运作的宝贵经验。2010年的多个短期救火式的产品测试技术工作,又给我大量一线测试分析设计存在问题的最深刻认知的经验,并获得了通过测试分析设计技术的改进减少漏测数量的经验。
虽然曾同时领导1个区域测试架构师团队(白盒级测试技术子团队+黑盒公共测试技术子团队)+1个测试技术Leader团队(最多时10人,间接影响达70多人)+1个公司级虚拟测试技术团队(最多时十几名个产品代表,代表所有产品线,横跨北京杭州深圳成都,影响所有产品线某几个领域的测试技术发展),即使在一周因为管理工作有3天开会的情况下,也坚持至少2-3天融入一个产品的测试相关工作,要么在一线救火帮助减少漏测,要么参与日常活动发现组织中测试团队的不足。根据我的经验:仅仅是参加评审用例、计划和报告是难发现真正测试问题的根因。最佳发现测试用例问题的方法——亲自去执行一定数量的测试用例,从测试用例的问题类型你就能发现从测试经理到测试人员各类待改进之处(管理类和技术类),从而给自己创造出解决问题提升各方面能力的机会——这就是成长机会,并能尽早发现组织和项目的质量风险。仅靠QA的数据风险极大,QA的数据是很容易人为“取长补短”的,可以做为参考因子之一,但不能是唯一。
记得有几次在某些公司交流时,这些公司的测试一把手当场就说:“很实用,很实在”。因为通过解决工作中具体的问题所积累下来的经验怎么能不实用不实在呢。“问题驱动”虽然感觉关注过于短期化,过于功利化,亡羊补牢,但是你在公司里所做测试技术积累会100%都是“干货”。 “成长机会在哪”——到“一线”去。
3、解决问题能力的锻炼
不要坐等靠,也不要怨天尤人,更不要轻易否定。也许是我的幸运,也是我的不幸,我从进入软件测试领域以来,就缺乏真正身边的教练和导师。从刚入行时,大家都不知道该如何写测试用例,只知道找bug,当时中国更没有测试学习网站;到后来进入一家美国专业测试公司(我曾被分配立负责研究基于网络产品的安全性测试和系统测试;到加入某公司的公共测试技术研究团队(刚组建);可以说三个阶段都成为了当时环境下软件测试走在最前面的人,谁也告诉不了我答案,我也靠不到任何人。怎么办?最早时靠自己悟和想办法;后来通过搜索引擎到一些能获得测试数据和测试资料的地方先去了解行业现状(但通常得不到完全适合自己的解决方案),了解行业现状至今也是我每周必做的事,只要是我好奇或不了解的标准主题,我都会去阅读,无论它是中国的还是英文的(文章不问出处)。然后再结合自己的情况裁剪+补充优化,尝试后再补充优化。同时创新的提出自己的解决方法,在行业没有最佳标准答案的环境下,唯有创新才能解决自己眼前的问题,才能完成自己眼前的任务。
软件测试是一个新行业,因为到处都是迷茫,困惑,问题。而问题域就是我们锻炼解决问题能力的机会,解决一个问题提升一点能力。
4、积累——1万小时的规律
先暂且引用《异类》这本书中提到1万小时规律,我算了一下,一年工作至少250天每天都至少在8小时(算加班),其实5年我们就能达到1万小时的一线锻炼积累,幸好我前5年没有过早的转管理工作,还一直在积累写用例,找bug,少量的测试技术研究从而满足1万小时,后来每年还坚持一线又在积累。因此积累多了,就熟练了,认知更深刻,自己最大的体会是随着每年看到的不同测试问题,改进测试技术的经验,自己每年对测试都是不同的认知,难怪一些国外的测试大师会对测试认知上升到测试专业词汇以外的高度(在国内通常被认为是虚无用)。
5、经常总结提炼
我测试功力提升最快最多的时间是从08年到现在,首先有前面1万小时以上的积累,然后还坚持在一线运用1万小时的积累解决问题,最关键是解决问题后为了推广测试技术解决方法,最后还得进行总结让其更易让人可接受,提高测试技术成果的可用性而不是给测试人员一部没有外壳的汽车。这样无形中锻炼了自己总结,归纳,提炼的能力(大家的bug描述不正锻炼了这些能力吗)。我记得09年7月时我们公司的测试技术总负责人焦传国看着我们团队发现的100多个需求和设计的缺陷数据时提出要求“要成长为测试专家就需要提出自己的理论”,我当时觉得这个要求对于我太高了。但1年多后,我理解了他的苦心。每次抽象,抽取共性形成体系,形成框架,形成高度概括的理论时,都需要自己再去做更多的验证和补充,而这个活动无形中又给了自己去发现更本质更宽问题域的机会。 人的能力70%来自于实践后的总结。
周末休息,闲来无事简单回答很多朋友所关心的问题——我怎么成长的,内容不是很多很详细,还请谅解。
版权声明:本文出自 架构师Jack 的51Testing软件测试博客:http://www.51testing.com/?293557
原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。