由于我工作后一直做测试开发工作,而且还时常写一下博客什么的。虽然没有做出什么成就吧,但是经验还是有点儿的,最近常被问到一个问题:我想以后做测试开发工作,学习自动化测试,学习哪儿种语言或是框架更加有优势呢?
这是一个不太容易回答的问题,就像你问用筷子和刀叉吃饭,哪儿个更有优势一样。还是以我的经验分析一下,你们自行思考决定吧!
一,目前行业发展的趋势是什么?不管做什么事情,我们不能盲人骑瞎马,走到哪儿算哪儿。虽然我们也许做不到高瞻远瞩,能准确地预测行业发展的方向;可是我们也要紧紧把握行业发展的动向,与时代同步才不会被社会抛弃嘛。不做好情报工作,就不能有针对性地部署兵力,带着你那点儿精力,在社会大潮流中乱撞是不行的。要分析好以后互联网方向会往哪儿方面发展,行业内的趋势是什么?测试行业都在使用什么技术?比如说移动互联网发展势头迅猛,我会就要盯紧这个方向。
二,你的目的是什么?像打仗一样,你的目标是中途岛,还是列宁格勒?你必须先搞清楚自己的目标,你以后准备从事哪儿方面的工作:页面自动化测试,接口自动化测试,移动App自动化测试,压力测试还是安全测试?等你选择好了方向,才能更加明确地决定你选择什么样的框架,语言。攻击海岛就要部署军舰,航母以及两栖登陆的军队;如果攻击的是堡垒或是阵地,就要部署装甲劲旅,重炮或是轰炸机等。
三,你自己的实力有多少?你手中拥有多少兵力,可是调动的部队有多少?这也是你要考虑的重要因素。如果你有编码能力,而且学习能力强,那你就可以选择你喜欢的行业,努力学习就行了。如果你不会任何语言,或是没有计算机相关的知识,想学习测试开发,就不能选择太难的框架或是语言。虽然有些儿框架或是语言所能带来的利益很高,但是也要符合自己才行。否则不说你学的效果不太好,当你在学习过程中困难重重的话,你自己就会失去信心,放弃学习的。
四,代价是什么,你能承受吗?如果攻击一个目标,我们可以获取很大的利益,但是如果代价是损兵折将的话,我们也要考虑一下了。现有很多语言,如C, C++, php, java, python, shell, ruby等,这些儿语言的学习代价是不一样的。学习之前先调查一下,哪儿上手比较快,你学习这些儿语言要花费的时间是多少?你平时有这么多时间吗?你愿意忍受学习过程中的枯燥和压力吗?
五,根据目的,综合灵活地利用语言。坦克,飞机和航空母舰哪儿个更有优势?脱离外界条件来单独谈论兵器的优劣是没有意义的。其实语言也是一样的,你很难说php, python和java哪儿个更加有优势。如果你要开发可视化的测试工具,用php开发起来比较容易;但是接口,移动自动化测试,python在跨平台方面更加有利;而对服务的测试,或是编写平台性的东西,java的优势就突显出来了。而且我们还要考虑是否团队开发,公司原有的框架或是测试用例是什么?这些儿因素也是影响我们选择的方向的。
不要过多的考虑我们到底是用筷子好呢,还是用刀叉好呢?我们的目的是什么,是吃饭。只要吃的开心,你完全可以先用刀叉把肉切成小块,再用筷子夹起来吃嘛!测试开发也是一样,为了让测试工作变得更加轻松愉快。从自己的实际情况选择一个简单的语言入手,然后综合运用各种语言开发出强大的测试框架和工具,这才是目的。