时间如白驹过隙,不知不觉从事测试行业已经近八年了,这些年来经常会听到这样的质疑,你是不是因为技术不好,不会编码,才做的测试?我先给出我的真实经历,我是正规软件工程专业出身,我毕业那年,正是安卓编程大行其道的时候,许多同学都去参加了培训机构,培训完成去做研发,而我自己选择了先行实习,而后毕业后阴差阳错入了测试一行,刚开始的时候,我和许多刚入门的测试同行一样,每天点点点,觉得这工作没有任何技术含量,想着做一段就转开发,但是随着工作时间越来越长,我经常会听到开发这样的抱怨,一次次置自己处在难堪的境。
1.你发现的是个无效缺陷,而我自己却无法辨别其到底是不是编码问题。
2.测试环境我们研发没时间弄,你自己去部署一下,我发现我根本不知道如何着手部署测试环境。
3.研发指着一段代码对我讲,你看这里我用了接口、这个方法我传了参,你一看就懂,而我根本看不懂代码。
4.明明自己已经在测试环境测试好好的下载功能,到了线上就超时了,领导对我说,有没有考虑大数量下的性能影响,而我一脸懵逼。
5.系统越来越大,回归测试用例执行耗费的时间越来越长,只能点灯熬夜,确根本不知道如何搭建一套自动化框架。
我想以上的经历,大部分测试人员都经历过,而我自己从一次次的质疑、一次次的求解过程中,激励自己去深入学习软件测试,我才发现,软件测试领域浩瀚如海,如果将其做好,肯定不弱开发。下面我从几个方面介绍,分享下我现在的认识。
测试不只是点点点
大多数功能测试的工作,看着就只是点点点,但是实际上我们要考虑的内容非常多。
从上面这张图中,我们可以清晰的看到,您在做测试的时候,最起码要从功能、数据、性能、安全、自动化五个方面进行考量,不然您测试的系统肯定不充分,容易出现线上问题。那么这也就解决了我们的第一个问题,测试是有广度的工作,需要您不仅在功能测试领域专业,更需要在数据、安全、性能、自动化等领域也有所深入。
测试是有技术含量的工作
测试并不是谁都可以胜任的工作,测试工作是非常具有技术含量的工作,不仅要求您有耐心、细致、善于沟通、有风险意识、有结构化思维的软实力,更需要有强大的技术储备,要想做测试工作高人一等,最起码要精通以下的技术栈:
1.熟练一门开发语言,推荐 java 和 python
2.熟练 SQL,包含常见关键字、常见聚合函数,还应该包含其常见特性:锁、事物、索引是必须要牢记于胸的内容。
3.熟练常见的 linux 命令,查看日志、切换文件、搜索关键字、查看端口占用、查看 ip 是否连通,这些常见的命名必须熟练掌握。
4.熟练常见的开发框架,目前而言:主要学习 Springboot、mybatis、redis、XXMQ
5.熟练常见的工程管理工具:maven
6.熟练常见的测试框架:testng、junit、selenium等
7.掌握常见中间件 tomcat
8.掌握一门脚本语法,go 或者 shell
还有更加深入的技术栈,这里不再列举,您不难发现,想要做好测试,要掌握的技术不比开发少,甚至对我们的要求更高,因此我们做测试,在技术栈上应不弱开发。
最后的屏障
我现在越来越认为,我们测试伙伴从事的工作是至关重要的,因为我们是软件的最后一道屏障,而且牢牢着掌握着软件的生死,当然也会承接着来自研发、业务、产品各方的压力,这个时候更考验我们的耐心、专业性和操守,我们必须守住底线,守住软件的最后一道屏障。
多元化的工种是测试
互联网行业发展至今,已经日趋成熟,除了研发、测试、产品许多岗位因此产生,比如:运维工程师、产品经理、技术咨询等等,您会发现测试人员是个多面手,这个岗位所涉及的技术、业务涵盖了众多岗位,如果对哪个岗位产生兴趣,可以迅速转行。
·您善于沟通,前瞻性好,有视野,那么可以转产品;
·您善于技术,技术实力充分,想做研发,可以转研发;
·您想默默的从事后台工作,可以转行运维。
总之一切都是那么的水到渠成选择测试行业,相当于无形中给自己准备好了第二职业。
测试开发是趋势
从近几年的趋势可以看出,市场对测试开发的人员需求倍增,这也是未来的趋势所在,所以归根结底,测试不只是功能,研发不能只关注代码,二者要有效结合,从这个趋势来看,测试开发其实是殊途同归,只不过是各有侧重,但是二者的技术栈互补互通,既然如此,何不努力提升自我,做个好测开,不必无谓的纠结于目前的职位title是测试还是开发。
所以我想要说,我们不必纠结于处于哪个岗位,关键在于您是否想在这个行业有所作为,只要您想,那么你就能。测试做好,肯定不弱开发,超过研发的测试比比皆是,但是请记者,无论哪个岗位都是要有技术职称,因此,希望您不必苛求身处何职,请不断提升自我,不负时光不负卿!
作者:海宝