今年四月份刚刚换了份工作,来到新公司后忙于学习业务,搭建测试相关的基础设置,梳理业务等等工作,没有来得及学习,感觉有点儿不踏实。最近才去网上看一下技术文档,逛一下相关的社区啊,论坛啊,再加上近期与相关开发,业务等相关的同学交流,有一些儿感触,写下来与大家交流一下。
其中主要集中在下面几个不够积极的声音:
1,不知道测试是做什么工作的,认为就是在那根据需求点点鼠标,提一下 Bug.
2,感觉测试发展空间有限,容易遇到天花板,学着学着有点儿迷茫,还有想转开发的想法。
3,跟着需求走,有需求就去测试,忙于响应各种需求,验证各种 Bug,疲于应付。
4,意识到了自己的不足,苦于工作太忙,没有方向,要学的东西太多无从下手等原因,一边焦虑一边苦恼。
5,自己具备一些儿编码能力,牛气哄哄,在公司感觉到不能发挥自己的转长,面试的时候感觉面试官太水,都不问一下技术较深的问题。
问题比较多,各有各的抱怨,当然也有过的比较牛 X 的,虽然我也不能算是做的比较好吧,但是也算是小有成就;工作时在公司能发挥所长,换工作的时候能到找满意的工作,两年时间内完成了买房,结婚,生娃等人生大事,生活过的还算精致,所以才在此闲谈一下测试那些儿事。

一,你想要什么?

我们先抛开具体的测试工作不谈,先聊一下你工作究竟为了什么?为了让自己不无聊?为了为社会做贡献?为了实现自己的价值?为了让自己和家人过的更好?一万人眼中就有一万个不同的哈姆雷特,究竟想要什么?恐怕没有人比你自己更加清楚了,为了这个目标,你应该怎么做?知人者智,自知者明!当你想明白了问题的根源的时候,很多问题就变得不那么复杂了。

二,什么是测试?

什么是测试,恐怕有很多答案,究竟哪儿个是标准好像也没有太清楚。不过你要了解到,测试在国外的地位和要求很高,这个也是我在外企实习的时候学习到的。在外企测试是最终的质量把关人员,只有测试有权利决定能否上线;修改 bug 的时候测试有最高的代码修改权限;一个业务的测试人员必须是业务专家,编码能力最强,项目管理权利最大的人;他们的理念是 “如果一个测试人员业务能力不比产品强,编码开发能力没有 RD 牛,你怎么能发现他们的问题呢?” 这也是我一个计算机专业的研究生,为什么要从事测试开发工作的原因。
但是实际工作后发现,国内的企业好像不这回事。测试人员基本上就是跟着需求走,而且很多时候都是最后一个知道需求的人;任务通知到你,告诉你上线时间,你就着急忙慌的去测试,好像任务还没完没了;同时不管是小组长,直属领导,部门负责人等等吧,都来指挥你什么时候上线,而具体的一线员工却没有任何权力。所谓的项目流程,各种规章制度执行起来都比较难,最后出了问题还是要推给测试人员,“你当初怎么没有测试到呢?” 如果团队中有人做技术相关的建设工作,而你有幸参加并得到了领导的重视的话,成就感还是比较不错的,同时发展也会挺好,但往往机会不太多。
是不是感觉现状差不多呢,其实也有很多发展的不错的测试大牛,所以说希望还是有的,不要灰心。

三,测试是做什么工作的?

测试是做什么工作的?这个问题是不是很傻?其实有很多与我们合作的同事并不清楚,而我们做为测试人员真的就清楚了吗?下面我们以一个完整的项目来介绍一下测试的工作:
(1)项目立项,需求产出
很多人都在强调要测试前置,可是这是有条件的,如果你不按项目流程来走,都开发完相应的功能了才告诉测试,测试如何前置啊?所以在项目立项后,需求产出阶段要进行需求评审,确定好开发人员,测试人员,一起参与需求评审会议,此时三方人员根据各自的经验和专长,来讨论一下需求。开发从技术实现角度,测试从用户角度来对需求提出自己的意见,力争通过需求评审达到三方意见一致。一起排出项目周期及各个环节的关键日期,交付物等。
(2)需求开发,测试用例编写
在开发人员开发需求的时候,测试人员必须确定测试方案,编写相应的测试用例,通过 xmind, excel 编写冒烟测试用例,或者通过编码来编写冒烟测试用例,以供开发提测的时候进行自测;同时编写全面的测试用例,组织三方人员进行用例评审,进行测试必要的前期准备,如测试数据,测试环境等,监控项目周期各个环节执行的情况,如果出现任何风险及时预警。
(3)代码提测,测试阶段
在开发提测后,需要进行提测试验收,验证冒烟测试用例的执行情况。如果冒烟测试通过,则需要借助于各种测试工具,测试代码,测试平台等进行具体的测试工作。如果有特殊的需要,则去开发相应的测试工具,添加自动化测试用例或是测试平台的新功能等;同时需要了解开发的代码实现原理,评估出影响范围,进行必要的回归测试。评估 bug 的级别,与相关人员进行交流和跟踪问题。
(4)上线与交付
在测试环境,仿真或是沙箱下测试完成后,就到了上线与交付阶段了。如果公司有完整的测试平台可以直接上线,或是由运维的同学进行上线的话,就根据流程准备相应的资料,安排上线。上线完成后,在线上回归相应的功能,以及可能影响到的功能。

当然上面都是按项目工程的流程来进行的工作,其他还有很多软技能也是非常必要的:
(1)如何恰当的提 bug?
当你遇到一个 bug 的时候,如何恰当地提 bug?如果你用的是 bug 管理平台,那就把 bug 描述清楚,复现步骤写详细点儿。但是要给开发人面反馈的时候,如果一个开发人员比较活跃开朗,容易交流,就事论事描述清楚即可;如果一个开发人员技术相当牛,但是不爱交流的话,你就应该说:“我发现一个和需求不一样的地方,是不是我测试有问题,你能不能看一下?” 让他自己发现问题比较容易接受。

(2)总结经验,指导未来
在平时工作中要善于总结问题,在后面遇到同样的问题的时候能快速解决。总结与相关部门合作的经验,比如哪个部门的人比较墨迹,需要提前沟通;哪个人在合并代码,提交的时候容易出错,就需要重点关注等等。
测试人员的工作还是比较复杂的,能大能小,大可以包罗万象,项目经理,公司 CTO 的职责;小就只需要借助于测试手段验证一下需求即可。

四,测试需要的能力

测试需要什么能力呢?这是个入门容易,发展难的行业,可以说认识字就能做测试;要不怎么有那么多人通过短短两三个月的培训就能找到测试工作呢?发展难表现在,各大公司现在招聘测试经理,资深测试开发,高级测试开发非常难,通常是可遇而不可求的事情。

根据招聘岗位描述和个人发展经验来看,测试的技术是要求越来越高:
1,基本测试技能
最初的功能测试要求基本的测试技能:如需求分析,会通过如边界值法,条件覆盖等手段来编写测试用例,测试环境的部署(有的时候也不需要部署环境),Bug 的定位与准确描述,Bug 验证及回归测试等。加上一些与人沟通和交流的技巧,简单的测试管理工具如 jira 的使用,基本就能胜任测试工作。
2,脚本编写和工具的使用
随着业务的发展,会有不同场景需要一些重复性的工作,或是大量数据日志的处理,此时就需要通过编写一些脚本代码,如 python, shell 等来处理这些工作。同时会引入如 PostMan, LR, Jemter, QTP 等等的工具来辅助测试,进而达到提高效率和扩大测试覆盖面的目的。当然我们测试人员就需要具备相应的编码能力,以及快速学习各种工具,或是可定制化合适的测试计划的能力;此时如果你有这样的能力,会很受欢迎的。
3,自动化测试实施与开展
具体不知道是从什么时候开始,招聘测试的岗位要求上都会有这么一条 “会自动化测试”,可是进入工作后是否真得进行自动化测试,那就不得而知。但是要做自动化测试,就需要具备熟练使用测试框架如 phpunit,unittest,junit,TestNG,Webdriver,Appium 等主流的框架,或是其他公司开源的二次开发的框架,如 Macaca,KIF 等;而且不管是什么自动化测试(接口自动化测试,Web 自动化测试,App 自动化测试,Service 自动化测试),最终都会做成持续化集成(CI)=测试框架 + 测试用例 +Jenkins+Report。当然也有对开源框架做二次开发,集成业务逻辑函数,用例管理,测试计划管理,日志管理,报告生成等功能于一身,形成新的测试框架的。
4,测试平台的开发
在有一定的技术积累的前提下,秉承互联网整合资源的传统,测试行业也开始了整合各种测试资源。如先前公司做的环境管理平台(整合代码管理,环境部署,自动化测试,上线流程等),服务化管理平台(整合服务开发与部署,服务的执行与管理,测试用例与测试计划管理,业务测试流程管理等)等各种平台,方便大家通过平台进行一站式测试,降低测试成本,提高测试质量和效率。
此时就要求测试人员具备通过平时的工作提取平台需求的能力;网站开发能力通过一门编码语言如 java, python,php 等开发后端服务,前端如 Bootstrap+jquery,vue 等框架设计前端页面;前后端联调与测试的能力;网站部署与运维的能力,如 apache, tomcat, mysql, mongodb, docker 等等。要想做好测试平台的开发,几乎要掌握软件工程涉及的各个环节,虽然不需要精通但是最低也要会使用,集各家所长于一身,才能形成自己的一套拳路,立于不败之地。
5,测试架构与团队管理能力
当你的技术达到一定的能力,在公司工作年限够久,很受领导重视的时候,就会相应地走到管理岗位。但目前的管理也越来越难做了,不仅要求管理要有套路,还要求技术上要有方向。所以要求你有测试架构能力,你对于目前的测试工作有什么想法?准备引入什么技术或是方案来提高测试效率?投入产出比如何?还要注意团队的发展,就算你的架构能力再强,没有具体的实施人员,也很难实现的。一头狼带着一群羊也没有什么战斗力的,所以要有计划的提高团队的整体能力,最终形成群狼效率,头狼一声吼,群狼去冲杀。
在群狼中也要进行详细的分工,保证核心员工的战力。谁擅长冲锋,谁擅长厮杀,谁又擅长断后?要安排到正确的位置,防止因为安排不当造成整体团队战力的下降。同时还要在合适的时机表扬战将,给其更多的肉,因为战力强劲的员工如果受委屈了,会随时离开团队的,他的发展空间很大,到哪儿都有发挥的机会。如果一个团队缺少战力强劲的战将,执行力低下,最后只能维持基本的生存,头狼再好的想法也很难实现。

五,测试之道法自然

测试是地处中原,辐射八方的一个行业。怎么可能会有瓶颈之说呢?以功能测试为中心,进行引入各种测试工具,测试脚本,自动化测试,测试平台等等。同时我们需要了解业务需求的来源,内容;开发人员代码架构,实现的原理与影响范围;运维人员的部署,打包发版与相应的问题处理;销售人员的销售效果与客户反馈,以及最终这个需求对公司战略目标和发展方向的影响。而不仅仅是发现 bug,验证 bug 的工作?
你目前都关注这些方向了吗?还是天天在坐井观天,抱怨连连呢?还是应该静下心来,好好思考测试究竟应该如何做,相应的方面有没有做到?这是一个互联网行业,涉及的内容浩如烟海,具体的技术更新更是日新月异,怎么可能没有东西可学呢?只有你具备了相当牛 X 的能力,再会过的更加自由,今年当一年半载的测试,明年就去做几个月的开发玩玩,后年可能去做个产品经理,尝一下鲜也未尝不可嘛!此时就不用担心就业机会,薪资待遇,加班等问题了,而且随着你的能力越来越强,就不会自傲自满,否则你的能力根本无法提升。
道法自然,没事多学点东西;选择你所爱的,爱你所选择的;使自己和家人过的开心过乐,比什么都强!

视频版本的"测试那些儿事":https://qatech.ke.qq.com/,感兴趣的可以去看一下!


↙↙↙阅读原文可查看相关链接,并与作者交流