写在前面的话
不知不觉已经毕业两年半,工作三年了在同一家公司并未跳槽,今年在合适的契机选择了换一家公司,在这里想总结一下三年的工作经验和这次的面试经验。
我毕业于一个本科院校,二本,学习网络工程出来的。到大三毕业的时候,暑假选择了出来找工作实习,现在想来有好有坏吧。
为何选择软件测试是因为当时觉得自己对开发的把握不大,觉得自己不能胜任,虽然各种编程语言自己都有了解。当时想作为一个女生觉得自己可能做开发要欠缺些。软件测试在大三的时候在网上找课程,大概有些了解,也会基本的功能测试,就从事了软件测试行业。
第一个项目
18年运气还算不错,在一个运维小公司做了一个星期运维,当时实在觉得老板太抠门就放弃了,重新找软件测试的实习岗位,连续几天面试最后找到一家外资企业,可能我英文还不错,也有了一点优势吧,实习待遇都不用提了,反正自己也是抱着学习的态度的。
实习一年时间,在开始几个月是完全在接触新事物的,最开始就是功能测试,难度主要在于对业务的把控,这个主要靠自我的接收能力。项目是一个基于B/S架构的系统,分为前后台。当然这个什么架构都是后来才知道的。除了功能测试,项目还做自动化测试,我们用Python+Selenium写自动化脚本。但是主要还是以功能测试为主。最开始什么都不懂,自我对测试的意识就是点点点,能熟悉业务就好,觉得测试的职位很容易被替代,也忧虑和担心要不要转行。后来思想发生了些许转变,这个后面再说。
这个项目我实习呆了九个月,学习了功能测试和自动化测试,接收能力还不错就安排我去做另一个项目,这个项目跟之前做的项目有一些接口的衔接,属于偕同项目。两个项目是同一个公司的项目,我们在同一个办公室做事。忘记了说,我们做的是外包项目。
后面这个项目才是我学习了很多东西的项目,一方面是软件测试的思想,一方面是软件测试技术。当然现在我接触的还不够多,并不认为自己非常厉害了,我认为自己在软件测试的路上还有很长的一段要走。
第二个项目
第二个项目我呆了两年半。
先说说我们的开发测试流程吧,由于是外包,需求来自客户,客户是美国的,产品经理和测试经理都是美国人,那边也有一些测试和开发,但主要测试开发在我们这边,外包项目的局限性很大,客户并不是专业的软件开发团队,我们做的东西是他们对外销售的产品,他们公司之前也不是做软件方面的。
客户提供给我们需求,我们测试团队和开发团队一起评审需求,随着系统的逐渐增大变得复杂,需求会有一些业务方面的问题,我们会把问题总结起来用英文整理通过管理工具JIRA发给他们,然后在等待他们的回答期间会编写测试用例。
然后问题回复过来之后再更新用例,开发也开始做代码。代码完了之后就开始进行测试。测试发现缺陷就报bug,开发改了之后测试再验证缺陷是否已修复。大概就是这样。
这个项目前后版本加起来也有五六年了,测试开发比例大概1:1吧,这也算是比较多的测试了,工作不是很忙,有时候也清闲,可以自己学习很多东西,当然不学习的人也多。我们这属于项目外包,现在外面还有很多人员外包的项目,这点对员工来说非常没有归属感。基于这些原因,在后来选择工作的时候,我更偏向于做产品的公司。
继续说第二个项目,最开始也是去熟悉业务知识,有一些复杂的业务逻辑,需要对整个系统有完整的把控。同样我们也是功能测试和自动化。这个项目并没有做性能测试,功能测试我们会用数据库工具来查看或者修改一些数据,我们用的MySQL,这是我学习到蛮多的东西,虽然大学学过,但总不如在项目中体会到的多。
数据库工具在软件测试中,每个测试员的利用程度都不一样,但是利用的越多,对软件测试工作肯定是越好的,这都是见仁见智的。这个项目也有欠缺的地方,测试工具接触的太少,几乎没有,我开始去接触测试工具都是迫于找工作面向市场的压力。
三年的思想转变
三年多获得最多的应该还是思想的转变吧。
其实想来觉得自己也算悟的慢的了,三年才领悟到这个软件测试岗位的真正职能,当然每个人领悟到的肯定不一样,我领悟到的内容大概只是对自己的职业定位吧。在贴吧还经常看到有人说软件测试热门又简单,就是点点点,不辛苦很轻松。
以前这些也曾是我对测试的认识,我身边也不乏这样认知测试岗位的人,我现在的想法变了,像k同事说的,软件测试可深可浅:
做的浅的,但凡脑袋比较灵光,很容易上手,但是这部分人很容易被替代;
做的深的,看个人兴趣和认知悟性吧,能知道自己需要一些什么技能能帮助自己做好测试工作,各种编程思想,脚本语言,几种系统的基础命令,这些都是必不可少的。
思想转变
然后工具是另一方面,还要了解开发的框架逻辑思想。可以说并不简单,我个人认为好的测试人员是比开发人员的难度大的,不求全部精通,但要知识广。
所以我们需要看很多技术类书籍,应该学习很多技术,这应该是一个好的技术人员的必备条件。做到后者是能做出一些成绩的,越往上走,越有一些做的浅的被淘汰。
我是靠自己领悟的,工作不如学习有老师教,出了社会,工作岗位上带你的人能给你讲业务都是仁慈了,怎么也不可能把所有肚子里消化过的东西全部吐出来给你。
当然,这样的同事也存在着,还是要靠自己在日常工作中去发现,去与人交流。
技术转变
1、学会Python
深入学习自动化测试开发的基础。这部分主要包含python基础的语法,数据类型,数据结构,面向对象的python程序设计;
当然如果要深入理解核心技术点的原理,机制等,需要查阅python官方文档及技术站点,甚至查看python源码,这就需要深入学习的能力了;
2、熟悉Python常见内库
Python的优点之一就是它有非常丰富的自有库和第三方库,这也是Python开发速度快的原因之一。所以要实现业务逻辑,就需要掌握内嵌模块或者第三方模块。
3、掌握自动化测试框架和常见库
举例:
接口测试——Requests、Postman
性能测试——Locust
APP自动化测试——Appium、UIAutomator
Web自动化测试——Selenium
数据库的连接和操作——pymysql库
4、掌握了自动化测试工具的设计思路
学习UnitTest,pytest、Page Object的设计模式,学习Jenkins,实现持续集成,快速测试,迭代。
5、当然,实践是检验真理的唯一标准
任何技能的学习都是建立在实践上面的,IT行业就特别强调项目经验。不练习,就像是花了半天时间去学习开枪的理论,结果根本没有机会摸枪,你觉得你打得准吗?想要学好软件测试,对技术有更深的理解,就一定要多去实操,没有熟练度的加成,你学的再多也只是纸上谈兵,一旦面对了真正的问题,你就会无从下手。
要学软件测试其实不难,难的是坚持和相信自己,我的经验是既然已经选定软件测试你就要相信它,相信它能成为你日后进阶的高效渠道,这样自己才会更有信念去学习,才能在碰到困难的时候坚持下去。
还有就是不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。
最后我想对测试员说...
总结一下,这三年中我发现以下这些特质都将成为一名测试员在求职和工作中的“潜在力量”,比如:快速学习、系统性学习、学以致用、系统性思考、强大的推动力、技术思维、突出的沟通能力、条理性、抗压性、乐观精神、抗挫折能力、迅速调整的能力、迭代改进的意识、ownership、团队合作、愿景和规划……你一定也要一点点地拥有它!
当然真正的能力,还是来源于工作中的积累,关于技能提升,不管是自学也好,还是参加培训机构,都是需要一个正确的方向去引导你学习,这样学习起来也会比较轻松,不会走多余的弯路,思路很重要。
学习的动力其实是一个很简单的东西,说成目标可能会更好理解一点,你想学成之后能达到什么程度,这样你也能在学习的过程中不被困难所难倒,也会有源源不断的动力促使你前进。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取