我大学学的计算机专业,有一点编程基础。我的软件测试职业开始和大多数测试人员一样,一开始在一家电商公司做软件功能测试。
大部分进入测试行业的朋友,最开始接触都是纯功能界面测试,随着工作年限,会接触到一些常用测试工具,比如抓包,数据库,linux等。
有人留言问到我,在一线城市做功能测试,如果定个小目标,想拿到年薪20W,需要具备哪些技能?
首先必须熟练整个产品的业务流程、业务是基础,这样保证产品在快速迭代时、不仅保证新功能的完整性,而且快速回归原有功能不受影响。
然后需要掌握一些常用测试工具来辅助测试:
- Web端测试:浏览器开发者工具使用,network、console控制台、兼容性测试
- 移动端app测试:(安卓/IOS/ipad端)测试全流程,兼容性测试、稳定性测试,流畅度测试、adb常用命令
- 服务端:掌握接口测试、抓包工具使用、如何校验接口的完整性
- Linux:常用shell命令,查看错误日志
- 数据库测试:熟悉数据库表结构,掌握常用增删改查sql语句,便于分析测试结果。
- 常用工具使用:SVN/git版本控制工具 、postman、jenkins应用打包和构建
换句话说,如果你拿到一个新的产品测试功能,你如果能通过数据库的表结构,和分析系统日志来快速的熟悉产品业务,说明你的测试思维,功能测试能力已经非常优秀了。
当时我掌握了以上技能点,在公司将工作效率提高了,相对比较轻松,这就导致我有充足的时间,拾起编程语言,最初用的java语言,然后学习各种自动化测试技术,当时觉得自动化测试特别有意思,而且挺有成就感,激发了我让自己对测试的理解和对技术更深入一层,成为一个专业的测试人员。
后来发现Python语言越来越火,而且我觉得python来做自动化和对于编程基础比较薄弱的测试工程师来说特别的合适,python还能用来爬虫,用python还能写一些定时脚本,数据库脚本,效率非常高。
放弃年薪20W的offer,挑战自动化测试
我当时在公司得到了领导的信任,待遇方面工资加上年终奖,年薪能达到二十万。
但是在由于当时公司规模和产品的局限性,导致自动化测试始终未能应用到公司实战项目中。我觉得外面的世界很大,自动化已经流行而且越来越普及,我想要突破自己的测试技术瓶颈,我毅然决然的跳槽一家公司专职做自动化测试工作,于是我顶住压力,不断的系统学习自动化测试技能,而且学以致用。
我将公司产品前后端的自动化测试全部落地实现。
那些自动化脚本真正成为公司资产,在每次上线回归带来的收益远超出我的预期。
并且定时在公司的技术分享会展示效果,那种从0到1的成就感非常难忘。
后面负责自动化测试团队工作,核心框架搭建学习用到的技术栈包括Python语言、Selenium、RF、Requests、Jenkins、以及见识到先进主流的Docker容器技术,持续集成等
让我见识到技术的魅力,技术功底的提升能让整个人非常自信。
所以自动测试给我带来的收益不仅仅是待遇的提高,包括中间做自动化测试遇到的坑,解决问题的思路,以及技术的扩展,增长了见识。
最终形成了一套知识框架体系,得到一套有效落地的自动化测试方案。
自动化测试的心得
当你成为一名自动化测试工程师并开始你的测试工作时,出现问题是很正常的。如果你还没有深入研究Selenium自动化的测试脚本,就急于进行自动化网站测试,也可能会出现这种情况。虽然从错误中学习是件好事,但通过向他人学习来预防肯定是更好的。
自动化测试是一个蓬勃发展的行业,从小型Junit测试到大型的Selenium脚本,每个人都在走向自动化。你可能会遇到添加了小补丁的相同代码,并且必须再次运行相同的测试。随着自动化的发展,重复任务的误差率会降低到零,但这一阶段只有经过一定的实践和积累才能实现。
当你第一次尝试自动化时,出现问题很正常,但也是可以避免的,毕竟出现问题就意味着损失,增加成本。所以,作为一名自动化测试新手,希望你能牢记这些注意事项,成为一名优秀的自动化测试工程师。
还有一个经验就是,自动化也需要设计,也需要规范,需要框架。
有了这些教训,后面自动化实践看起来就像样多了,也慢慢有了效果,但在运行过程中,我又发现了一个致命的问题:自动化脚本误判!跑出来的结果明明是pass,但实际上是失败的!omg!甚至还出了网上问题!
这段时间我也读了大量的测试书,记得之在一本当时很流行的测试书中也看到这样的问题,他们的解决方法是记录整个测试过程,但是这又引入新的问题,内容太多,分析不完。我对书中的做法表示怀疑,觉得这还算自动化么。
带着问题去思考和学习总是特别有效。公司中牛人很多,和前辈们讨论交流,发现原来这些问题,是可以通过写好自动化的检查函数来改善甚至避免的。这让我认识到自动化的难点不是让脚本模拟测试者的操作,能够运行起来,而是在check。很多人都喜欢把自动化测试比作"机器人"。自动化测试中模拟测试者的操作,是这个自动化机器人的"手",而check就是机器人的"大脑"。check没有做好,自动化就不够可靠,做也是白做。有同学认为单元测试和接口测试不用太关心对check的设计,我认为这也是不正确的。Check的设计对UI和CLI自动化会比单元测试和接口测试更为重要一些,仅此而已。
自动化不是个人行为,要让一个团队每个人都能快速写好自动化,把check做到位,是自动化管理的难点。一个经验就是,针对业务特点来总结有哪些check类型,然后对这些类型来封装函数,让大家就可以根据用例的情况来用这些函数。
记录测试过程也是需要的,对可能的测试结果分级,设计各种全局调试开关,做出分层级的测试结果报告。除了"成功"和"失败"的状态,还可以加入一个"怀疑"的状态,总结测试时的定位手段和思路,让脚步可以有针对性的抓取更多的定位信息,而不是一出现问题就只有重跑一遍脚本,这不仅提高了自动化测试的效率,还可以提升产品的可测试性水平。
把这些都做好后,自动化就变的舒服多了。后来我的实践还证明,做好check的设计还是提高UI和CLI自动化测试率的方法。自动化测试走上正轨后,我们又开始思考各种小改进,比如自动回填结果,自动生成脚本等等。
关于测试开发
后来一个机缘巧合,朋友推荐我进入字节做测试开发,负责开发公司定制化的测试质量平台。
这对于我来说也是一个挑战,新的领域,测试开发在一线城市非常吃香。当时的待遇比初、中级开发工程师要高。
到岗后顶住压力,不断的系统学习测试开发技能,而且学以致用。技术架构采用的是前后端分享,包括Python的后端开发框架Flask,前端框架vue,elementUI组件等
坚持做了几年的测试开发,真实的体会到测试开发等于测试全周期的工作,包括产品功能业务熟悉,测试平台的需求设计,平台前后端研发,平台的自测,给到测试部门几十号人的推广、培训产品使用、运营。
所以测试开发的大前提是功能测试经验丰富,接口自动化,UI自动化非常熟练,不然很难以开展测试开发工作。
目前测试平台项目研发已经完成并且已开源,有兴趣的朋友可以联系我
测试行业的现状
现在测试行业的的趋势,你去面试任何级别的测试工程师都会问你是否会自动化测试,所以自动化测试已经是必备技能,面试时的加分项。
换句话说,会用开源的测试工具不足以在公司涨薪或者跳槽至一线互联网大厂。因为真正企业自动化测试落地肯定是一个团队在做,当你熟悉使用这些开源框架之后,你会发现有些框架之间是相通的,所以基于这些开源框架,我们打造一个属于自己的测试框架,可以根据公司实际测试需求自主封装适合项目的测试框架,落地实用。建立自己的技术体系,得到一套落地有效的自动化测试方案,从青铜变身王者。
这样让我们自动化团队将更多的精力放在测试用例设计本身上面,达到提高产品质量,提升效率的目的
在这7年测试经验,我看到了太多想提升测试技术而没有明确方向的人,深刻的体会到测试人员的技术痛点,以及测试这个角色在互联网公司的待遇和地位远不及其他岗位,甚至还是会有很多人会认为测试在公司随时能被取代,可有可无。
如何在繁琐重复的手工测试工作中,慢慢扩展积累测试技术,建立自己的技术体系?
大部分进入测试行业的朋友,最开始接触都是纯功能界面测试,随着工作年限,会接触到一些常用测试工具,比如抓包,数据库,linux等。
但是有个比较常见的问题,由于现在企业大多数都是敏捷开发模式,容易陷入版本快速迭代中,以至于没有时间精力再去额外学习一些高级和主流的测试技术,如某种编程语言、自动化测试工具、测试框架搭建、测试平台研发。
即使挤时间强迫自己学习,也不知道从哪里开始入手,那些碎片化的东西,只能让你了解,很难很难消化,
当你要形成自己的输出,用自己的思路和技术来做项目的时候,你要回到那个知识框架里面去学习
不要碎片化信息学习,那不叫学习,要有决策性学习,系统的学习,学习解决问题的思路。
比如自动化测试,已经是测试工程师的必备技能,搭建自动化测试框架也是测试人员能力分水岭的体现。
那么如何来全面的学习自动化测试呢?
作为一名软件测试工程师,该怎样努力才能快速成为一名优秀的测试开发大佬,这不仅是一个刚刚踏入职场的软件测试工程师,也是工作三五年之后开始迷茫的工程师,都必须要面对和想明白的问题。
一、测试基础
了解测试的基础技能,掌握主流缺陷管理工具的使用,熟练测试环境的操作与运维
二、Linux必备知识
Linux作为现在最流行的软件环境系统,一定需要掌握,目前的招聘要求都需要有Linux能力。
三、Shell脚本
掌握Shell脚本:包括Shell基础与运用、Shell逻辑控制、Shell逻辑函数
四、互联网程序原理
自动化必经之路:前端开发基础知识以及互联网网络必备知识四、互联网程序原理
五、MySQL数据库
软件测试工程师必备MySQL数据库知识,不仅仅停留在基本的“增删改查”。
六、抓包工具
Fiddler,Wireshark,Sniffer,Tcpdump各种抓包工具适用于各种项目,总有一款适合你的
七、接口测试工具
接口测试神器,你绕不开的强大工具:Jmeter。小巧灵活:Postman
八、Web自动化测试Java&Python
了解自动化的目的,熟练掌握TestNG&unittest自动化框架,以及断言与日志处理
九、接口与移动端自动化
专业接口调用、测试解决方案。组建完整的web和接口自动化框架,Appium整体使用
十、敏捷测试&TestOps构建
揭开TestOps的神秘面纱,持续集成Jenkins框架烂熟于心
十一、性能测试&安全测试
软件测试的彼岸:性能测试和安全测试,选个方向努力爬坑吧!
相信你根据这个学习架构路线,不断地去摸索与提升,突破技术的瓶颈,可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的生活就轻松很多。正所谓万事开头难,只要迈出了第一步,你就已经成功了一半,等到完成之后再回顾这一段路程的时候,你肯定会感慨良多。我也是走过这样一段路,才能获得更多高薪职位的机会,付出终有回报,也算是对我能力的一种认可吧,真正的证明了自己的价值。
这里给大家分享一下,我是一名摸爬滚打七年的测试人,自己根据这些年从事测试的经验,整理一套系统的自动化进阶教程(课件+笔记+案例源码+测试工具使用文档),跟大家分享下我的成果,定期更新教程和学习方法、学习资源、分享自研自动化测试平台,感兴趣的小伙伴可以关注我
这份资料也已经帮助了很多的软件测试的学习者,希望也能帮助到你。点赞收藏文章后可以评论区留言自取!最重要是免费的!免费的!免费的!
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
最后
凡事要趁早,特别是技术行业,一定要提升技术功底,丰富自动化项目实战经验,这对于你未来几年职业规划,以及测试技术掌握的深度非常有帮助。
如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。