前言
很多朋友都问我将来测试会不会被开发取代的问题,在回答这个问题之前,我们先看下面这段话。
软件开发是生产制造软件;软件测试是验证开发出来软件的质量。类比传统加工制造企业,软件开发人员就是生产加工的工人,软件测试人员就是质检人员。对于软件测试与软件开发过程之间的关系,套用固定的模型不是聪明之举。
软件测试是贯穿于软件开发进程的,软件生存周期的各个阶段都少不了相应的测试。开发与测试是相得益彰、密不可分的,开发人员宣布新的产品后要经过测试判断产品是否彻底满足用户的需求。假如发现缺点,提交给开发人员进行修复,然后再转交测试人员进行回归测验,直到产品契合需求标准阐明。一个契合用户需求的产品是开发和测试共同努力的效果。
所以说软件测试和软件开发是一种相辅相成不可分割的一个整体,就目前情况来看是不可能会被取代的。
还有大家对软件测试岗位可能存在一些误解,比如:
1、 测试的工作没有任何技术含量
很多人都认为软件测试就是安装程序、运行程序、点点鼠标等工作,但是近几年因为用户要求要来越高,产品变得越来越复杂,测试人员的技术知识体系也需要不断更新和完善,并且随着新工具、新流程、新设计方法的出现,软件测试人员也需要像开发一样持续学习。
2、 测试就是找Bug
找Bug、交Bug是测试人员最基础的工作,测试工程师需要把控整个产品质量,代表客户的利益去把控产品、验收产品,因此他们需要做得不仅仅是找Bug。如果没有测试,软件质量就很难得到保证。近年来由于企业对软件质量的要求越来越高,测试人员也随之而来越来越受到重视,探其原因,主要是:
市场竞争激烈,企业对软件开发的周期和质量要求越来越高,如果没有专业测试人员,开发很难在短时间内做出客户满意的系统。
开发很难在自己编写的程序中检查出错误,开发也会遗漏需求功能或者缺失异常处理,需要测试来帮助他们检查软件是否有Bug,是否符合产品设计,是否符合用户习惯,异常是否都已经处理。
现在的软件系统越来越复杂,一个软件可能由几到几十个人来开发,单个开发可能只熟悉他所编写的模块,对于其他有影响但不熟悉的模块,容易产生错误。
如今,在每个软件企业中,测试都处于一个很重要的地位,对于一个合格的测试工程师,不仅要了解产品想怎么玩,用户会怎么玩,运营想要用户怎么玩,还要知道开发怎么实现,测试如何进行,何为技术难点等等。
一个好的测试人员非常难得,要了解用户使用,要懂代码实现,写的了接口测试,做的了性能优化,还能协调各种矛盾。比产品了解开发,比开发了解运营,比运营了解产品,还要最了解测试及产品质量。
这里不得不点破很重要的一点,普通的测试岗位的确很容易被开发所取代,并且也会逐年减少,测试开发才是未来的发展趋势。测试开发的核心职能依然是测试,知识通过开发的首段提升测试效率,当然,这也是需要在保障质量的前提下,测试与测试开发的区别就比如同一个人用人肉来分拣快递,另一个人发明了自动机器人来分拣快递,看起来后面这位更高级,但是实际目的还是分拣快递。
3、总结
软件测试是对开发质量的检测,测试并不会被开发所取代,反而两者间只会分得越来越明显。
那么对于0基础的朋友,应该怎么去学习软件测试。
学习软件测试有2条路可以选。最省事的当然是找个靠谱的培训机构去培训,你就什么都不用想了,跟着培训结构认真的学习就行了。当然,这里并不会给你推荐培训机构,所以这里我们讲的是,怎么去自学软件测试。毕竟软件测试的门槛真的挺低的。好了,正式开始讲了。
第一阶段 测试基础
测试基础是软件测试最最最重要的部分,只要你是做测试,不管是什么测试,测试的基础、理论知识都是必须学会的。
最好学到什么程度呢,最好是能够理解,并能够用自己的话给复述出来。毕竟面试初级测试的时候,问的问题都是从基础理论上进行考核的。
那测试基础有哪些内容呢?
测试的定义、测试的分类、测试的方法、测试的生命周期。
测试计划、测试方案、测试策略、测试用例的编写。
BUG的定义、BUG的分类、BUG的六要素、BUG的生命周期。
测试和开发流程的关系、瀑布流、V字形、W字型(双V)、螺旋型、敏捷等等。
PDCA、5W2H等分析管理的方法质量管理体系CMMI(了解)
嗯,大概就是以上的内容吧,以上全部都是理论和文档能力、只要你肯背、肯写,都是能独立的掌握的。
这些资源我也已经整理好了:零基础学习必看
第二阶段 工具学习
软件测试的基础学完了过后,应该学习工具了。
其实学工具真的很容易,所以大家不用去纠结工具的选择。
把最基础的几个工具学习了就行了,以后用到什么工具就去学什么。
在这个阶段,学习工具什么的,重点在于接口测试的学习,所有的工具的学习,都是在为了接口测试的学习做铺垫。
下面我会列出需要学习的工具和知识点,按顺序学习就好。
简单的网络协议:TCP/UDP,HTTP/HTTPS
Linux的基本操作和常用指令。
MySQL数据库的基本操作和常用sql语句。
fiddle抓包工具的使用。
postman接口测试工具的使用。
jmeter和loadrunner性能测试工具的使用。
以上的这些工具都是纯图形化的,很好掌握,估计就性能测试工具稍微会费点时间。
loadrunner11下载地址:
链接:loadrunner11下载地址
jmeter下载地址:
链接:jmeter下载地址
有问题可以加群:785128166联系我,其他的工具你们直接去对应的官网下在就行了。
第三阶段
代码学习好了,学完了以上两个部分,恭喜你,你已经是一个出色的初级测试工程师了。
这个阶段,我们应该学习代码了,关于编程语言的选择,我推荐Java或者python。
还有数据库也是必须掌握的!在工具篇的学习里,我认为你已经可以掌握数据库的相关的应用了!
所以现在各位可以去学习编程语言了,不过不用像开发那样,学的那么深入。
比如Java,只需要学完JavaSE的部分就够你用了。 python的话也是一样的,把基础的部分学完就行了。
总之前期你两者二选一的学习就OK了。
自动化方向
等你代码已经基本掌握了,嗯,很好,接下来就要学习各种自动化测试了。
各种单端测试框架:unittest(python)、pytest(python)、JUnit(java)
WEB自动化测试框架:selenium(适用于java\python\javascript)
APP自动化测试框架:appium(适用于java\python\javascript)
以上的内容,根据你学的语言进行选择。appiunm和selenium根据你参与的项目进行选择。
不过无所谓了,反正迟早都要学会的。这部分的教程太多了,你学会了编程的基础后,随便百度,好多博客论坛都有教程。而且凭你那时候的水平,你都能轻松的看懂。
性能方向
对loadrunner和jmeter的掌握更加的深入。
可以手写脚本、脱离录制。
学会了多线程编程、能够手写java或者python、不用工具直接实现压测。
学习linux,毕竟性能总是和服务器打交道的。学习系统架构的相关知识、方便你更容易的分析系统瓶颈。说实话、性能方向的提示更难、因为需要掌握的东西太多了。
性能测试做深入了,基本上就是架构师的水平了。
可能你现在看着这个性能方向的学习一脸懵逼。没关系、等你把上面的编程语言学会了你就不懵逼了。
安全方向
渗透测试
SQL注入
暴力破解
脱库
等等
其实安全测试基本上偏向于网络攻防了,也就是传说中的黑客了,不过我们都是好人,这个的发展方向就是白帽子。
部分教程如下:零基础学习必看
我估计你看到这里就更懵逼了。没关系、等你把基础的东西学会就知道我在说啥了。毕竟你现在还是一个小白嘛。不要去纠结这种小事。各位在这个阶段,正常情况都应该是中级测试工程师的水平了。
第四阶段 架构学习
前三个阶段学习完成后,各位就应该考虑怎么写代码更合理了。
怎么去测试更全面。怎么才能更好的保障项目的质量。
我认为,在这个阶段,应该回头重新学习一遍测试基础。
因为这个阶段的提高是思想、方法的提高了。上面讲的都是教你应该怎么做。在这个阶段你要自己去发现、为什么要那样做。跨过了这个阶段就基本上可以成为专家了。学习都是水到渠成的,在这个时候,你应该已经掌握了不少框架了,甚至自己也能开发合适的框架了。自动化测试框架、性能测试框架等等。已经有了属于自己的一套东西了。可能你也学会了一些其他的技术了,甚至在往全栈等方向跨进了。
总之,到了这个阶段就没什么学习路线了,都是靠自己的悟性了。
下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
以上软件测试资料需要的可以私信我关键词(资料)免费获取
还可以免费获取一份216页软件测试工程师面试宝典文档资料。其中资料包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等…
最后送给大家一句话:你想要你就得付出什么。你想要的越多,你付出的也越多。
结语
欢迎留言,或是关注我的专栏和我交流。