不知不觉已经从事软件测试五年了,从毕业到进入外包公司外包给微软做软件测试, 到现在加入著名的腾讯。八年的时间过得真快。长期的测试工作也让我对软件测试有了比较深入的认识。我就跟大家分享一下我做测试的心得,从一个什么都不会,到测试技术人员再到测试管理,期间有迷茫,有痛苦,有弯路,有捷径。什么舍己为人、助人为乐说不上,希望能带给软件测试新人一些职业生涯规划的灵感吧,也能给自己重新出发增加动力!
实话实说,昨晚又失眠了,这段时间出去都会被同事调侃,“昨晚捉鬼去了吗?”哎!这哪是我愿意的呢?只是因为在知乎上会看到很多朋友迷茫吗,焦虑,比较频繁的问题就是:“软件功能测试后期如何提升自己,感觉得到迫切希望提升自己,但又找不到明确的方向”,“想要改善生活,让父母不在操心,月入过万,但是不知道如何突破”…
是啊,这不就是以前的我吗?我非常能感同身受。
文章内容讲的很真实,不管是刚入行还是在这个行业做了两三年的同志们,都可以看一下,可能很多人觉得讲的都是大道理,但是这些点都是我们今后要面对的。
每当经济不好,公司业绩不好的时候,公司都可能进行裁员。首先裁的就是测试人员。因为测试人员的技术水平相对来说比较低,容易被替代,招起来也比较容易。公司往往先拿测试人员开刀。
身为测试人员,虽然我们平常的工作大部分都比较安逸。但是千万不能温水煮青蛙。应该自强不息, 要像开发人员一样, 不断学习,提高自己的编程水平。这样就算被裁也能很快找到新的工作。
测试人员的水平主要体现在测试用例的设计上。要设计出全面,覆盖广的测试用例,需要测试人员对自己所测试的项目的业务需求非常熟悉,甚至要比开发人员还要熟悉。
如果是测试银行系统,通信行业,或者ERP软件。这些业务知识非常有用的,学习起来比较有激情。
要做到精通业务需求谈何容易。
- 要熟读功能需求文档, 任何有疑问的地方都要去和PM确认。
- 把自己当成最终用户, 经常使用自己所测试的软件。模拟用户的行为。
- 熟记软件的每个功能。
假如倒霉碰到一些又没用,又繁琐的软件, 真的是不想去学习它的业务(出了这个公司就再也用不到的业务)
测试人员必须跟开发人员密切合作, 所以跟开发人员搞好关系是相当重要的。
1.和开发人员成为朋友。
熟悉了干啥都方便
2.不要打扰开发人员。
看到开发在聚精会神写代码的时候,千万不要去打扰人家。写代码需要集中精力,如果被打扰,就会中断思考。
3.集中问问题。
把需要问的问题都总结起来, 集中起来问开发,这样能节省大量的时间。
4.写好Bug,不被开发人员烦。
如果开发人员看到一个Bug 描述不清楚,还无法重现,他肯定会骂测试人员。所以测试人员一定要写好Bug,描述精确,简洁,没有歧义,详细简洁的重现步骤,加截图。
你的产品是用java开发的,那测试人员应该有java的入门知识。你测试web程序,你起码要了解HTML,CSS, javascript, jquery吧,否则你测了一两年web程序,都不知道这东西是怎么做的,悲剧了吧。
测试人员搭建开发环境
产品的代码是最好的学习资料了,我们不能总跟在开发屁股后面做测试,不能老是等开发build一个版本后,我们就测试这个版本,开发check in了什么代码,测试人员一点都不知道。偶尔我们应该了解下产品代码是怎么设计的,了解下开发人员是如何修复bug的。说不定编程水平高了,还能帮开发做code review.
使用源代码工具把产品代码check out到本机。经常看看代码,经常看看开发修复bug时候提交的代码。
我记得我以前的test lead说,之所以她能当lead, 是因为她很会写文档发邮件。写文档需要总结归纳的能力,还要逻辑清晰。她非常擅长分析几十页的Spec,写出几十页的测试计划。她还非常擅长汇总测试报告。每天将完整,清晰,漂亮的测试报告发给各个组, 让公司所有的人都能清晰的看到测试组的工作。
在她的带领下,我们总结出很多文档,比如,”New hire checklist”, “on boarding traning”, 测试工具使用的文档,等等。
交叉测试,就是指两个测试工程师,互相交换下测试的项目。这样做有很多好处。
1.有利于找出bug, 测试工程师测久了自己的项目,容易形成眼盲。会对一些Bug熟视无睹。
2.有利于知识和业务共享,避免人员离职,请假,造成无人测试的情况。
3.测试思想不一样,可以互相找出很多问题
手动测试工作做个两三年,基本上就能掌握测试需要的大部分知识,如果没有爬到test lead的位置, 很多人就感觉到发展瓶颈了,每天重复测试,学不到东西,很快就会对测试工作失去激情。
学不到东西,技术水平低下,是测试这个行业最大的毛病。
一点要抽时间尽量把自己的测试工作实现自动化,可以节省测试的时间,提高自己的技术水平,也可以避免老是重复测试。
现在很多公司招测试的要求越来越高,很多好公司招senior QA,都要求5年工作经验以上,掌握一门编程语言,有丰富的自动化测试经验。当然自动化测试的待遇也会比手动测试好很多。
自动化是趋势, 只会做手动测试的人,以后肯定会失去竞争力。
一、测试基础
了解测试的基础技能,掌握主流缺陷管理工具的使用,熟练测试环境的操作与运维
二、Linux必备知识
三、Shell脚本
掌握Shell脚本:包括Shell基础与运用、Shell逻辑控制、Shell逻辑函数
四、互联网程序原理
自动化必经之路:前端开发基础知识以及互联网网络必备知识四、互联网程序原理
五、MySQL数据库
软件测试工程师必备MySQL数据库知识,不仅仅停留在基本的“增删改查”。
六、抓包工具
Fiddler,Wireshark,Sniffer,Tcpdump各种抓包工具适用于各种项目,总有一款适合你的
七、接口测试工具
接口测试神器,你绕不开的强大工具:Jmeter。小巧灵活:Postman
八、Web自动化测试Java&Python
了解自动化的目的,熟练掌握TestNG&unittest自动化框架,以及断言与日志处理
九、接口与移动端自动化
专业接口调用、测试解决方案。组建完整的web和接口自动化框架,Appium整体使用
十、敏捷测试&TestOps构建
揭开TestOps的神秘面纱,持续集成Jenkins框架烂熟于心
十一、性能测试&安全测试
软件测试的彼岸:性能测试和安全测试,选个方向努力爬坑吧!
这些都是高附加值的知识!
其实这些高附加值的知识和能力可以边工作边自学的。
可以关注公众号:豆子熊,免费领取!最近断断续续整理了一些软件测试学习资源,主体内容包含:测试文档、测试工具安装包、自动化测试视频教程、性能测试、接口测试、面试技巧、简历模版、全套面试题等知识内容。目的是想了解一下大厂招聘的技术热点,不断提升学习。
送给大家一句话,共勉:当我们能力不足的时候,首先要做的是内修!当我们能力足够强大的时候,就可以外寻了!