目录
13年本科毕业,目前已经工作将近7年时间,第一段工作是在字节工作3年时间,目前是再另外一家大厂工作。今天跟大家分享一下我工作的心得,希望对你有所帮助
我对软件测试的理解
软件测试是软件开发的最后一道防线,也是产品上线前最为重要的一个环节。就测试工程师这个岗位而言,大概有三类角色,一类是做业务功能的测试;一类就是做自动化测试,把这些业务功能的测试转换成自动化的脚本;一类是做测试平台、测试工具、测试服务的开发。
在我们的生活中,我们无时无刻都在接触软件,比如我们的微信、支付宝、淘宝以及各式各样的游戏,它无时无刻不存在我们的生活中,刚开始没有接触这一行的时候,对于软件测试确切的来说基本上是不了解的,不知道它的具体的实现过程,当做了软件测试工程师之后,才知道一个软件的实现要经过规划、需求分析、设计、编码、测试、运行维护这六个阶段,然后去了解每个阶段要侧重做哪些事;分析每个阶段常见的问题,找到解决方法等方面,这个软件才可以使用。
作为一名软件测试工程师,我们要站在用户的角度去思考软件的功能;要能够理解自己所参与的项目的整体架构,不仅仅只局限于自己负责的那个模块,还要了解本模块和其他模块间的联系;坚持“质量第一”,使用不同的测试策略测试软件的功能;还要有自己的业务分析能力、对客户的理解能力和团队沟通协作能力;要积极主动的学习业内前沿的测试技术、方法、策略,从而进一步完善自己的测试能力。
目前的社会更新换代很快,我们需要多的接触、学习,新的测试理论、测试方法、测试工具,提高自己的知识水平及知识体系,才能更好的工作,让自己有一个更加美好的未来。我反思了一下,自身作为一名测试人员,目前所掌握的测试数据准备方法还是太少,仍然需要不断学习新知识,才能提高自身测试水平,为提高测试效率打下良好基础。
成长路线
说实话,软件测试岗位前期门槛低,但是想要拿到高薪真没那么简单。工作 2-3 年薪资还在原地打转的同学,都大有人在。
大概需要多久能到资深呢,正常来看5-7年左右的时间 成长没有捷径,也没有速成,只有一步一个脚印去做
如何能达到目标
随着企业对于软件测试的重视,以及测试行业的技术发展,对于软件测试员的能力有了更高的要求,不再是停留在原来的点点点手工测试阶段。那么,作为一名合格的软件测试人员需要具备哪些能力呢?
首先,肯定是要具有过硬的测试技术。对于测试基础理论、测试流程、测试工具、操作系统、网络知识、自动化测试、测试开发等必须清楚,甚至是熟练掌握。当然对于刚入行的初级测试人员来讲比较难,但是必须要以最快的速度,在实际测试工作中,去深入学习。
除了技术,还必须对业务熟练。光有技术也不行,如果对业务知识不熟练,也很难做好测试工作。测试工程师需要从业务角度、用户角度、产品角度来进行测试,以及运营过程中的数据来做分析,通过数据量化分析产品。
除了技术和业务外,还需要具有较强的逻辑思考能力、沟通交流能力以及严谨认真的态度等。测试人员不仅仅是找bug,发现问题,更重要的是要告诉开发人员bug产生的原因,精准的找到bug源头,以便开发人员能更快速的解决问题。这个就对个人的技术以及逻辑推断力有比较强的要求。除了与开发人员打交道外,软件测试人员还需要与产品、运营、售前售后等不同角色交流。所以如何更准确、更简洁、更让对方易于理解,这就需要有一定的沟通交流能力。
认真严谨的态度,也是测试人员必备的素质之一。测试人员在测试过程中,往往会花费一定的时间去分离、查找bug,因此需要静下心来,仔细认真的对待。
学习
第一阶段 测试基础
测试基础是软件测试最最最重要的部分,只要你是做测试,不管是什么测试,测试的基础、理论知识都是必须学会的。
最好学到什么程度呢,最好是能够理解,并能够用自己的话给复述出来。
毕竟面试初级测试的时候,问的问题都是从基础理论上进行考核的。
那测试基础有哪些内容呢?
测试的定义、测试的分类、测试的方法、测试的生命周期。
测试计划、测试方案、测试策略、测试用例的编写。
BUG的定义、BUG的分类、BUG的六要素、BUG的生命周期。
测试和开发流程的关系、瀑布流、V字形、W字型(双V)、螺旋型、敏捷等等。
PDCA、5W2H等分析管理的方法
质量管理体系CMMI(了解)
嗯,大概就是以上的内容吧,以上全部都是理论和文档能力、只要你肯背、肯写,都是能独立的掌握的。
第二阶段 工具学习
软件测试的基础学完了过后,应该学习工具了。
其实学工具真的很容易,所以大家不用去纠结工具的选择。
把最基础的几个工具学习了就行了,以后用到什么工具就去学什么。
在这个阶段,学习工具什么的,重点在于接口测试的学习,所有的工具的学习,都是在为了接口测试的学习做铺垫。
下面我会列出需要学习的工具和知识点,按顺序学习就好。
简单的网络协议:TCP/UDP,HTTP/HTTPS
Linux的基本操作和常用指令。
MySQL数据库的基本操作和常用sql语句。
fiddle抓包工具的使用。
postman接口测试工具的使用。
jmeter和loadrunner性能测试工具的使用。
第三阶段 代码学习
好了,学完了以上两个部分,恭喜你,你已经是一个出色的初级测试工程师了。
接下来,你要考虑你的发展方向了
是成为一个自动化测试工程师呢?
还是性能测试工程师呢?
还是安全测试工程师呢?
啊!这个问题好难!我也不知道该怎么选。
反正我啥都会一点,哪个岗位都能去面一面。
关于方向的选择,看我的这篇文章
嗯,相信你心中已经有了答案了,那我们继续往下面说。
这个阶段,我们应该学习代码了,关于编程语言的选择,我推荐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注入
暴力破解
脱库
等等
其实安全测试基本上偏向于网络攻防了,也就是传说中的黑客了,不过我们都是好人,这个的发展方向就是白帽子。
推荐知道创宇的学习体系。
我估计你看到这里就更懵逼了。
没关系、等你把基础的东西学会就知道我在说啥了。
毕竟你现在还是一个小白嘛。
不要去纠结这种小事。
各位在这个阶段,正常情况都应该是中级测试工程师的水平了。
第四阶段 架构学习
前三个阶段学习完成后,各位就应该考虑怎么写代码更合理了。
怎么去测试更全面。
怎么才能更好的保障项目的质量。
我认为,在这个阶段,应该回头重新学习一遍测试基础。
因为这个阶段的提高是思想、方法的提高了。
上面讲的都是教你应该怎么做。
在这个阶段你要自己去发现、为什么要那样做。
跨过了这个阶段就基本上可以成为专家了。
学习都是水到渠成的,在这个时候,你应该已经掌握了不少框架了,甚至自己也能开发合适的框架了。
自动化测试框架、性能测试框架等等。
已经有了属于自己的一套东西了。
在群里或者论坛上去装逼、别人都会尊称你一声大佬了。
可能你也学会了一些其他的技术了,甚至在往全栈等方向跨进了。
总之,到了这个阶段就没什么学习路线了。
最后:【可能给你带来帮助的教程】
这一些资料,对做【软件测试】的朋友而言应该是较为完整了,这类学习资料也陪伴我走过了最艰难的路程,希望也可以帮助到你!万事要尽早,尤其是技术行业,一定要提升技术功底。
以上软件测试资料需要的可以点下方小卡片免费获取