专栏文章 功能测试转向自动化测试 / 开发。10 年 心路历程——愿测试人不再迷茫

程序员一凡 · 2020年10月23日 · 最后由 西窗 回复于 2020年10月31日 · 6158 次阅读

十年测试心路历程:

由于历史原因,大部分测试人员,最开始接触都是纯功能界面测试,随着工作年限,会接触到一些常用测试工具,比如抓包,数据库,linux 等。

我大学学的计算机专业,有一定的编程基础。我的软件测试职业开始和大多数测试人员一样,一开始在一家电商公司做软件功能测试。

有人留言问到我,在一线城市做功能测试,如果定个小目标,想拿到年薪二十万,需要具备哪些技能?

首先必须熟练整个产品的业务流程、业务是基础,这样保证产品在快速迭代时、不仅保证新功能的完整性,而且快速回归原有功能不受影响。

然后需要掌握一些常用测试工具来辅助测试:

Web 端测试:浏览器开发者工具使用,network、console 控制台、兼容性测试

移动端 app 测试:(安卓/IOS/ipad 端)测试全流程,兼容性测试、稳定性测试,流畅度测试、adb 常用命令

服务端:掌握接口测试、抓包工具使用、如何校验接口的完整性

Linux:常用 shell 命令,查看错误日志

数据库测试:熟悉数据库表结构,掌握常用增删改查 sql 语句,便于分析测试结果。

常用工具使用:SVN/git 版本控制工具 、postman、jenkins 应用打包和构建

换句话说,如果你拿到一个新的产品测试功能,你如果能通过数据库的表结构,和分析系统日志来快速的熟悉产品业务,说明你的测试思维,功能测试能力已经非常优秀了。

当时我掌握了以上技能点,在公司将工作效率提高了,相对比较轻松,这就导致我有充足的时间,拾起编程语言,最初用的 java 语言,然后学习各种自动化测试技术,当时觉得自动化测试特别有意思,而且挺神奇,激发了我浓厚的兴趣。

后来发现 Python 语言越来越火,而且我发现 python 来做自动化和对于编程基础比较薄弱的测试工程师来说特别的合适,

python 还能用来爬虫,用 python 还能写一些定时脚本,数据库脚本,效率非常高。
放弃了年薪二十万的 offer,挑战自动化测试:

我当时在公司得到了领导的信任,待遇方面工资加上年终奖,年薪能达到二十万。

但是在由于当时公司规模和产品的局限性,导致自动化测试始终未能应用到公司实战项目中。我觉得外面的世界很大,自动化已经流行而且越来越普及,我想要突破自己的测试技术瓶颈,我毅然决然的跳槽一家公司专职做自动化测试工作,

于是我顶住压力,不断的系统学习自动化测试技能,而且学以致用。

我将公司产品前后端的自动化测试全部落地实现。

那些自动化脚本真正成为公司资产,在每次上线回归带来的收益远超出我的预期。

并且定时在公司的技术分享会展示效果,那种从 0 到 1 的成就感非常难忘。

后面负责自动化测试团队工作,核心框架搭建

学习用到的技术栈包括 Python 语言、Selenium、RF、Requests、Jenkins、以及见识到先进主流的 Docker 容器技术,持续集成等

让我见识到技术的魅力,技术功底的提升能让整个人非常自信。

所以自动测试给我带来的收益不仅仅是待遇的提高,包括中间做自动化测试遇到的坑,解决问题的思路,以及技术的扩展,增长了见识。

最终形成了一套知识框架体系,得到一套有效落地的自动化测试方案。

自动化测试心得:

自动化测试没用的误解?:

自动化是测试工程师一个永恒的话题,关于有人经常问到我:

至于"自动化测试真的可以提高效率吗?我觉得不行”,我觉得这是对自动化测试意义的最大的误解。

一个知识比如自动化你觉‎得‎没有‎用,是因‎为你不‎会。而你不会的东西,往往是你的雷区

那我们为什么又要做自动化测试?我认为最大的意义在于,对测试人员的能力的固化。

脚本可以代表测试人员的测试方法,通过脚本就把在原来在人身上的能力,固化为组织的资产。

比如:造测试数据,跑大量数据库脚本,页面服务监控等

自动化测试脚本,能让不同的团队即使不懂这个功能的人,也可以通过测试脚本来分享这种能力,这才是自动化的意义。

关于测试开发

后来一个机缘巧合,朋友推荐我去一家金融公司做测试开发,负责开发公司定制化的测试质量平台。

这对于我来说也是一个挑战,新的领域,测试开发在一线城市非常吃香。当时的待遇比初、中级开发工程师要高。

到岗后顶住压力,不断的系统学习测试开发技能,而且学以致用。技术架构采用的是前后端分享,包括 Python 的后端开发框架 Flask,前端框架 vue,elementUI 组件等

坚持做了几年的测试开发,真实的体会到测试开发等于测试全周期的工作,包括产品功能业务熟悉,

测试平台的需求设计,平台前后端研发,平台的自测,给到测试部门几十号人的推广、培训产品使用、运营。

所以测试开发的大前提是功能测试经验丰富,接口自动化,UI 自动化非常熟练,不然很难以开展测试开发工作。

目前测试平台项目研发已经完成并且在 Github 开源,有兴趣的朋友可以去 Github 下载https://github.com/ooqitech/ATP

测试行业的现状

现在测试行业的的趋势,你去面试任何级别的测试工程师都会问你是否会自动化测试,所以自动化测试已经是必备技能,而不是加分项。

换句话说,会用开源的测试工具不足以在公司涨薪或者跳槽至一线互联网大厂。因为真正企业自动化测试落地肯定是一个团队在做,

当你熟悉使用这些开源框架之后,你会发现有些框架之间是相通的,所以基于这些开源框架,我们打造一个属于自己的测试框架,

可以根据公司实际测试需求自主封装适合项目的测试框架,落地实用。建立自己的技术体系,得到一套落地有效的自动化测试方案,从青铜变身王者。

这样让我们自动化团队将更多的精力放在测试用例设计本身上面,达到提高产品质量,提升效率的目的
如何在繁琐重复的手工测试工作中,慢慢扩展积累测试技术,建立自己的技术体系?

由于历史原因,大部分测试人员,最开始接触都是纯功能界面测试,随着工作年限,会接触到一些常用测试工具,比如抓包,数据库,linux 等。

但是有个比较常见的问题,由于现在企业大多数都是敏捷开发模式,容易陷入版本快速迭代中,

以至于没有时间精力再去额外学习一些高级和主流的测试技术,如某种编程语言、自动化测试工具、测试框架搭建、测试平台研发

即使挤时间强迫自己学习,也不知道从哪里开始入手,那些碎片化的东西,只能让你了解,很难很难消化,

当你要形成自己的输出,用自己的思路和技术来做项目的时候,你要回到那个知识框架里面去学习

不要碎片化信息学习,那不叫学习,要有决策性学习,系统的学习,学习解决问题的思路。

比如自动化测试,已经是测试工程师的必备技能,搭建自动化测试框架也是测试人员能力分水岭的体现。

那么如何来全面的学习自动化测试呢?

一、掌握基本的 Python 基础语法规则,全方位提升 Python 编程技能,面向对象思维
二、全面掌握元素定位技巧、POM 设计模式、关键字驱动、数据驱动、selenium 的 WebUI 自动化测试技能

三、全面掌握元素定位、小程序自动化、Python+Appium 的 APPUI 自动化测试技能

四、全面掌握 request 库的 HTTP 协议接口自动化测试技能,websocket 接口测试、Dubbo 接口测试

五、掌握自动化持续技能能力、自动化用力脚本运行、产出报告、自动化发送邮件、全流程持续集成自动化


六、独立搭建接口、UI 测试框架、接口与 UI 框架整合一体化、场景关联应用,简历自己的技术体系

七、扩展,提升职业技术深度

项目实战
上面就是我为大家整理出来的一份软件测试工程师发展方向知识架构体系图。希望大家能照着这个体系在 3-4 年内完成这样一个体系的构建。可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的生活就轻松很多。正所谓万事开头难,只要迈出了第一步,你就已经成功了一半,等到完成之后再回顾这一段路程的时候,你肯定会感慨良多。

如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以关注我一起讨论。

加油吧,测试人!路就在脚下,成功就在明天!

未来的你肯定会感谢现在拼命的自己!

共收到 17 条回复 时间 点赞

感觉你是来破环 TestHome 得氛围得。高产似母猪。虽然不知道哪里不对劲,但是,加油,打工人。

35 加了,想找个不加班的,楼主看我有希望么?

楼主哪家公司的,这么优秀。

努力吧,测试人

整体知识的图谱是对的,但是缺乏点深度,自动化测试一定要有门技能是自己最擅长的。

不得不承认是个好文案。。。。

“服务端:掌握接口测试、抓包工具使用、如何校验接口的完整性”

杠一下,我觉得抓包工具使用应该被归类为前端测试,尤其是移动端 app 上更合适。
谁同意,谁反对?😉

好文章,把测试做成一门爱好,python 确实是一项效率利器,从中能把平时繁琐的工作大部分都自动化。

几许风雨 回复

你知道的越多,你不知道的越多,共勉!加油

楼主是做了多少年功能化测试,才转自动化的?

看完一半,感觉越来越有广告的氛围,结果最后不是广告。哈哈

楼主写的很详细,给我们测试小白很多指引,收藏收藏收藏!!!

magicyang 回复

具体情况具体分析

看到最后感觉是培训课程体系😂

培训课程文案的既视感。。。

几许风雨 回复

师父领进门😎

卡斯 回复

因为确实是的。。。最后几张图就是某培训班的课程内容

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册