
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
IT小白转行软件测试,该学些什么技能?未来的职业选择又有哪些?下面和达内北京IT培训机构一起来看看!
开发工程师,何为开发?测试工程师,何为测试?
从简单的软件开发流程谈起。
瀑布模型:
计划→需求分析→设计→编码→测试→运行维护
计划、需求是产品的活;设计是UI的活,编码是开发的活,测试是测试的活,运行维护是运维的活。
开发一词是指以荒地、矿山、森林、水力等自然资源为对象进行劳动,以达到利用的目的;通俗的讲,就是根据自己掌握的资源,通过自己的技能,完成一项既定的“任务”。
测试,是动词、名词。测试行为,一般发生于为检测特定的目标是否符合标准而采用专用的工具或者方法进行验证,并最终得出特定的结果。多么生动的描述啊!
如果说开发的任务是建造一座房子,那么测试的任务就是对房子的材料,设计图纸(文档),外观,抗震性,舒适性等等进行综合验证,并得出一份“质检报告”。
而开发往往对自己的代码“高度”自信,认为自己建造的房子就是最完美的,无可挑剔的;而测试往往反其道行之,认为开发建造的房子肯定是不完美的,肯定是有“缺陷”的,也就是所谓的“破坏性测试”;所以,测试在开发眼里,就是来“找茬”的;实际不然,测试的目的是为了更好地驱动开发,做出完美的产品。
而对开发的代码怀有一种“天生”的质疑,是测试工程师所必须的;正如前文举开发“造房”为例,评价一个软件的是否合格,同样需要对其进行各方面的测试,不同方面的测试,需要不同的测试方法,甚至不同的测试人员来完成;事实证明,对一个软件的测试工作的进行的越早,那么对发现问题并修复所承担的成本就越低,所以测试工作贯穿于整个项目周期。也正是这一点,决定了绝大多数测试工程师不可能掌握(精通)整个项目周期所要求的测定技能。
因此,测试岗位根据不同的测试方向与技能划分为:功能测试工程师,性能测试工程师,自动化测试工程师,测试开发工程师。
测试职位具体划分
功能测试工程师
想必大多数测试人员都是从功能测试开始做起的,或者至今一直在从事功能测试工作;顾名思义,功能测试也称为黑盒测试,产品就像一个黑盒子,我们无需关心其内部构造是怎样的,只需要对其进行输入参数,将输出的参数和预期的参数进行对比,验证是否满足需求文档里所定义的那样。简言之,功能测试的目的就是验证所测产品的“功能”是否满足甚至超出产品设计所要求结果的预期;比如,需求文档里要求实现一个加法功能,那么就要通过各个方面来验证产品是否具备“加法”功能。
因此,功能测试重心就是测试用例的设计。而测试用例的设计,取决于测试人员对产品需求的理解;对产品需求的理解取决于测试人员对业务的“接受”程度。这也是功能测试发展往往会遇到“瓶颈”的原因,过多的项目只不过是在反复地学习不同的业务;因此功能测试工程师往往要具备一定的测试管理能力,掌握一定的测试策略,发展通道一般是管理方向。
性能测试工程师
产品,实际上是指产品的功能和质量两个方面。功能是构成竞争力的首要要素。用户购买某个产品,首先是购买它的功能,也就是实现其所需要的某种行为的能力。质量是指产品能实现其功能的程度和在使用期内功能的保持性,质量可以定义为“实现功能的程度和持久性的度量”。
想必大家都听说甚至经历过12306网站买火车票崩溃的例子。12306网站也不仅仅满足于大家能通过它进行网上购买火车票单纯这一功能,更需要满足N多人在使用它同时进行买票且不出错。这就是性能。性能可以分为稳定性,可靠性,安全性,易用性,兼容性等等,不同的产品要求的性能也不近相同;比如说公司有些部门研发的沪(深)交易所使用的交易系统,在传统金融领域,对系统稳定性的要求往往高于其他需求。而相应的性能测试,可以针对不同的性能指标分为负载测试,压力测试,并发测试,可靠性测试,基准测试等等。
性能测试往往要求测试工程师不但具备对产品基本的功能以及业务知识,还要对产品所“在”(部署)的环境有必须的了解。这就要求性能测试工程师必须掌握一定的系统知识,如服务器硬件知识(CPU、MEM、NETWORK、IO),数据库(ORACLE,MYSQL),中间件(TOMCAT,NGINX),操作系统等知识。
自动化测试工程师
反复的手工测试势必会让测试人员开始思考人生。工作中几乎每个测试人员都会遇到过一些重复性比较高,而且必须要做的工作,如回归测试,冒烟测试等;顾名思义,自动化测试就是为了把测试人员从一些重复性高,而且需求变化不大的工作中解放出来;比如web自动化测试,可以通过selenium编写测试脚本,一次写完,就可以反复用到需求变动不大的任务中。
测试开发工程师
测试开发岗位,工作的目的就是为了更高效,更快捷地让测试工程师进行测试工作;测试开发岗位一般要求一定的开发能力,解决问题的能力尤为重要。比如我们项目组的测试开发小伙伴就经常开发一些脚本自动生成工具给我们使用,这也直接提高了我们的测试效率,间接地缩短了测试周期,可以更好更快地交付产品给客户使用。
测试需要掌握哪些技能
把自己工作中接触到的和非接触的到的知识罗列一下。
开发能力:JAVA(集合,泛型,基础知识,调试,代码阅读),JavaScript/CSS/HTML(基础知识,能结合知识实现项目),Python(基础知识);
框架:Spring Boot,Spring MVC;Vuejs;
开发成果:可以单独开发JAVAWEB后台系统,前端项目;管理系统;
兴趣爱好:机器学习(理解常用的机器学习知识与算法原理,以及简单机器学习实现);
计算机网络知识:TCP/IP协议(HTTP,DNS);
操作系统:LINUX服务器常用指令,服务器硬件指标分析,shell编程基础;
中间件:TOMCAT,NGINX(负载均衡,结合keepalive高可用架构),Mycat(分表分库),Redis,Zookeeper;
数据库:Oracle/MySQL,复杂查询;
测试工具:JMeter,Postman等;
版本管理:GIT,SVN;
调度工具:JENKINS(理解);
大数据:Hadoop(理解架构),Hive;
以上知识,都是工作中接触到的并且运用到的,当然测试工作中有些可能不需要精通掌握,只仅限于“使用”;而我个人更倾向于问题驱动学习,所以项目的多寡也决定了我对一些知识的理解深浅;工作前半年,接触的项目少,但是自己也自学了一些用不到的知识,现在想想当时已经“掌握”的知识,长时间不用也会“褪色”,所以建议大家不要为了学习而学习。
一定要用问题/项目驱动才能高效地掌握某项知识。工作之余,也要多看一些机器学习,区块链的知识,好让自己不“脱节”(也可能是测试人员都会有一种职业危机感吧,总想让自己多学点)。
以上是达内北京IT培训机构为大家分享的IT小白转行软件测试,该学些什么技能及职业选择的相关内容,希望可以帮助到大家!