为什么程序员做测试其实是有优势的?这是我听过最....的话

1835 篇文章 51 订阅
1221 篇文章 21 订阅

在这里插入图片描述
圈里有这样一个关于测试的段子:每个程序员在修改代码时都希望有测试,但在写代码时,都不想写测试。

希望有测试,是因为测试可以给我们带来安全感。不想写测试,一方面,很多人会觉得麻烦,另一方面,也是更重要的,团队没要求。那为什么很多团队不要求程序员都写测试呢?这里有一个很可悲的答案,是因为大部分程序员根本都不会写测试。

为什么这么说?

有次培训,我问大家每次代码提交之前,对自己编写的代码有信心的举手,不少程序员骄傲地举起了手。“你在提交之前,会验证一下吗?”大部分人的手还是高高地举着。“你是验证了这次编写的代码呢?还是验证所有的代码呢?”,所有人一脸茫然。

很多人包括你,是不是都认为只要保证自己的代码没问题,就不用去测试所有的代码了,而且有没有破坏已有的代码那是测试的事儿,与我无关。但事实却是因为功能太多,测试也力不从心,最终没人去验证系统中所有的功能。

这才是大多数团队在实际开发中的真相。

团队的放任,加上我们总是对自己编写的代码有种凭空的自信,让我们无法准确判断自己每次提交的代码最终会带来什么样的影响。所以,我们总能看到在生产环境中出了问题,定位半天最后发现只是一个简单的错误,浪费了大量时间和精力。

但其实只需要做个简单的自动化测试,这就能轻松避免。在当下的大环境,测试,尤其是自动化测试,更应该成为你我技术能力中的“标配”。

这里我们要先走出一个误区,一般你想到的测试,大都集中在下图中“已知的未知”这个象限,比如使用不熟悉的库带来未知,然后程序员通过在测试中调用和观察结果来消除未知等。

在这里插入图片描述

然而,仅仅关注未知是不够的,我们还得关注已知。在已知的时间和资源中,如何通过测试在成本和获得安全的保障之间取得平衡;如何通过测试技术改进使原本难以挽回的决定变得不那么昂贵等,这些都很重要。

是不是你觉得测试的工作就是很简单,只需要点点点就可以了!

我的回答是,是也不是。说是,是因为初级测试大概率就是在不停的点点点,做一些基本的功能测试,即使没有经验,也可以胜任。

初级测试工程师的薪资大概在4K-8K,根据实际情况会有波动。

说不是,想要月薪过万,可不能只停留在功能测试。

真正优秀的测试开发工程师是不仅能发现Bug,还能分析定位原因,可以熟练利用一些工具代替繁琐的手工测试。

还需要一定的代码能力,可以自主开发自动化测试平台或者工具,实现自动化测试。

不仅如此,测试开发以为着需要对软件的质量负责,因此还需要把握和评估其中的风险,从大局上把控软件开发迭代中的各种未知和异常。

可以说,测试开发工程师在整个工程迭代过程中的重要性不言而喻,大概率直接决定你写出的代码会不会造成线上事故。

可以很确定的说,现在成熟的互联网企业不可能没有测试开发这个岗位。就是这么自信。

说到这里,那测试开发工程师都需要具备哪些技能呢?这里总结了八大模块,建议小白和初级测开可以先掌握1234点。

1、软件测试基础,掌握测试流程、熟悉编写测试用例;

2、数据库基础。增删改查等SQL语句,掌握连接查询的操作技巧;

3、Linux模块。熟练掌握Linux常见命令,文件处理、日志类;

4、项目实战。GitHub开源项目,体验完整测试流程;

5、Python脚本代码。掌握基本语法函数、文件日志等处理;

6、接口测试模块。熟练掌握HTTP协议、抓包工具、postman、Jmeter等工具的使用。

7、性能测试。性能测试基本概念、服务端的指标、压测脚本;熟悉服务器的监控和性能数据分析;

8、自动化测试。接口自动化、APP自动化、web端测试(递进的过程);

初级:1234;中级:123456; 高级:12345678;

1 软件测试基础

万丈高楼平地起,测试先从理论起。

首先你需要知道什么是软件测试,简单来说就是利用一些手段来发现软件中的错误、不合理的地方。

如何发现呢,你需要先知道产品的需求,比如需求说首次打开抖音默认是推荐首页,但你打开却是「我」的页面,这时你就可以勇敢给开发提Bug了。

如何提呢,直接跑去告诉开发你的代码有问题,我不保证开发会不会打你哦。

这里涉及到Bug的管理和跟踪,常用的工具有禅道、JIRA等,功能基本包括项目类型、Bug所属项目、影响的版本、类型、指派人、优先级、严重程度等等。

一般提交完成bug后,需要跟踪bug的状态,如果验证通过了才可以关闭此bug。除此之外,你还需要掌握测试用例的设计和编写。

例如让你测试微信登陆页面,你需要测试哪些方面,如何测试,预期结果如何等等。

测试基础还有很多,诸如,黑盒白盒测试、软件的生命周期、测试报告编写等等。

2 数据库基础

数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。

常用的数据库有MySQL、SqlServer、Oracle等,但不管是哪种数据库,你都一定要掌握数据库数据的增删改查操作以及连接和查询。

这一块就没啥好说的了,就是作为一个开发的基本修养。

3 Linux模块

需要掌握Linux常见的命令,尤其是文件处理、日志查看之类的,用到的频率很高。比如cd,mv,pwd,ping啊之类的。

因为在测试的过程中,需要对不同环境进行兼容性的测试。因此对不同的系统的熟悉也有一定的要求。

4 项目实战

项目经历是面试必备问题,对于应届生来说,可能缺乏项目经验,建议可以去GitHub寻找开源项目,跟着项目测试,体验完整测试流程。

从中可以强化理解系统测试项目的实时过程和技术细节。经过一番实操之后,面对面试官的提问才会更有信心和底气,遇到技术细节也不用担心啦。

初级测试满足前面提到的1-4步,需要进阶的参考1-6,可能大佬级别的就是1-8都精通了吧。

5 Python编程基础

掌握Python的基本语法规则、函数、数据类型等,可以独立进行常用的文件日志处理脚本的编写。

打好基础,为后面的自动化测试做好准备。

6 接口测试模块

首先需要对网络协议有一定了解,一般与网络相关的都离不开协议,接口测试也和HTTP协议等密切相关。

还需要会使用接口测试工具,读懂接口文档,会写接口用例,会去实现接口的脚本,比如说没有文档的时候我们还要会去抓包(Fiddler)。

除此之外,postman、Jmeter等接口测试工具的使用也很重要,毕竟工具用的好,涨薪少不了。

7 性能测试

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

例如,淘宝双十一有上亿人同时抢购,为避免到时候服务器承受不住如此巨大的用户量出现崩溃,就需要提前测试,那总不能找上亿个人来帮你测试吧,这里就需要用到性能测试工具了。

除次之外,常见的服务端指标要知道,例如平均负载、进程/线程交换率、CPU利用率等等。此外熟悉服务器的监控和性能数据分析也很有必要。

8 自动化测试

这需要有一定的编程基础以及测试基础,是个循序渐进的过程,需要提升的技术很多,例如接口自动化、APP自动化、web端测试逐步递进。

开发能力很大程度上也是为了能够自主编写出自动化测试的工具或者平台。

在大公司,其实测开很多都跟普通的开发没啥区别,只不过是开发测试相关的工具,为普通开发者以及普通的测试服务。

所以测试开发并不是一个简单而无脑的工作,反而更像是开发的子集,能够在一个更专的领域进行代码输出。

不管任何时候,努力提高自己的技术都没有错,尤其是大热的互联网行业,薪资水平还是很香的。

如果你是没有任何经验的小白,并且开发能力稍微弱一点,同时也喜欢找茬,软件测试开发工程师或许是比较合适的选择。

如果你想要去更好的平台,想跳槽互联网大厂,那就持续提升吧。

在这里插入图片描述

最后: 可以关注公众号:伤心的辣条 ! 进去有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值