十年测试老兵教你构建软件测试知识体系和技能树

“ 本文 的主要目的是,帮助大家建立属于自己的测试知识体系和测试技能树,就像我给大家搬来了一棵只有树干的大树,需要大家依靠自己平时积累,为这棵大树增加树枝和树叶,让自己的测试技能树枝繁叶茂。 ”

其实现在网络上关于软件测试的知识很容易得到,各种公众号、各种博客,以及线下各种测试大会,都能方便得到各种实践干货。我也是关注了十几个公众号、很多博客,也经常参加各类测试开发大会。但是,我慢慢发现这些公众号、博客或者大会的分享,往往是关注于某一个点,碎片化很严重。很多时候当时是懂了,但是过后就忘记了,我觉得主要原因还是没有建立自己的知识体系。

在本文中,我将软件测试的知识体系或者叫技能树分成两部分,一个是计算机基础,一个是专项测试。我把计算机基础叫作内功,专项测试叫作招式。我认为软件测试水平高低往往取决于内功的深厚程度。招式易学,内功难修。

本文我并没有将需要掌握的每一门知识和技能展开来介绍。因为本文的主要目的是,帮助大家建立属于自己的测试知识体系和测试技能树,就像我给大家搬来了一棵只有树干的大树,需要大家依靠自己平时积累,为这棵大树增加树枝和树叶,让自己的测试技能树枝繁叶茂。

计算机基础知识

想成为一名合格的软件测试工程师,和其他任何 IT 工程师一样,在工作中扎实的计算机基础知识都是至关重要的。无论是从个人的职业发展角度,还是从公司招聘候选人的角度,计算机基础知识都是必备条件和必考内容。某种程度上说,计算机基础知识掌握的程度,决定了软件测试工作的优秀程度,也决定了软件测试职业生涯的高度。

从软件测试领域来讲,一定要掌握的计算机基础知识主要包括:操作系统、计算机网络、数据库、编程语言、数据结构和算法以及架构知识。当然,计算机基础知识还包括计算机组成原理、编译原理等基础学科,这些我们要不要掌握呢?从我的经验来看,软件测试工作还没有直接用到过这两门学科的知识,所以,这里我不会介绍它们。

下面,我就来解释一下软件测试工程师为什么要掌握操作系统、计算机网络、数据库、编程语言、数据结构和算法以及架构方面的知识,并跟大家分享一下我的学习经验。

1.1 操作系统在这里插入图片描述

这里说的操作系统,特指的是Linux操作系统,在计算机行业,Linux操作系统绝对在操作系统领域占据第一把交椅。首先,对于服务器端软件,70%以上都是部署在Linux操作系统上的,其次,客户端的操作系统Android也是基于Linux内核开发的。现在比较火的前沿技术,比如云计算、虚拟化、容器技术、人工智能、大数据,每一项都离不开Linux技术。

软件测试工作,也是离不开Linux操作系统,比如,我们会通过ssh登录到服务器上,使用tail命令查看日志;我们会通过ps或者top命令,查看服务器上的进程状态;通过vim命令编辑服务的配置文件;会通过yum、apt-get、rpm命令安装软件包;某些时候还会编写一些shell脚本来自动化和简化我们的工作;在做性能测试时,需要分析服务的性能瓶颈并进行优化。随着软件测试工作的深入,一定会使用到容器、虚拟化、Kubernetes等前沿技术,而熟练使用和理解Linux,将会让你更加快速理解和使用这些前沿技术。

如果大家没有使用过Linux操作系统,或者使用起来不是那么顺手,我非常建议大家系统学习一下。这里我推荐大家一本非常适合入门的书《鸟哥的 Linux 私房菜》(基础学习篇)。这本书以 CentOS 7 为例,介绍了 Linux 系统的基本使用和管理方法,主要内容包括系统安装、文件和目录操作、磁盘和文件系统管理、编辑器、Bash 以及 Linux 系统的管理维护等。这些内容非常适合刚入门 Linux 系统的新手,是软件测试工程师必须要掌握的。

随着容器技术的普及,容器和容器云在软件测试领域的应用越来越广泛。最火的应该属于Docker容器和Kubernetes容器云技术了。我们可以利用Dokcer快速搭建测试环境、部署被测试服务,使用Kubernetes作为Jenkins slave进行持续集成、快速搭建分布式性能测试环境。因此,掌握Dokcer和Kubernetes的使用,了解他们背后的原理,一定会让我们测试工作更加高效。

关于Docker容器和Kubernetes容器云,我并没有看过纸质版图书。我是照着Docker的官方文档,以容器化一个Python Web应用的实践掌握了Docker的基本使用,大家可以参考我的另一篇博文《通过容器化Python web应用了解Docker容器的核心功能》来亲手实践一下。

关于Kubernetes,我通过学习极客时间的专栏《深入剖析Kubernetes》,成功地将Kubernetes应用到了我们的持续集成和性能测试环境搭建中。

通过对Docker容器和Kubernetes容器云的学习和应用,让我更加深信带着目的、通过动手实践的学习方法,是事半功倍的,是最高效的。

1.2 计算机网络在这里插入图片描述
关于计算机网络,你可能比较困惑,感觉只是在面试时,面试官会问TCP和UDP的区别、TCP建立连接的三次握手流程,HTTP协议是怎么一回事。 感觉计算机网络都是偏理论的内容,在实际工作实践中用到的并不多,是不是不需要深入系统的学习呢。 如果你这样想,就大错特错了。

首先,在软件测试面试中,不管是应聘哪一个级别,计算机网络一定是必考的内容。如果面试中还解答不出TCP和UDP的区别、三次握手四次挥手的流程和状态转移过程、解答不出HTTP协议请求头和响应头各字段含义、HTTPS为什么比HTTP更安全的面试问题,那肯定是应聘不到心仪的岗位。所以,就算为了面试,也一定要掌握好计算机网络的知识。

在日常的软件测试工作中,当遇到网络不通、发现网络请求异常时,计算机网络知识的储备就派上用场了,你需要到ping和telnet来判断是网络问题还是服务异常,你需要通过tcpdump或者wireshark抓包分析网络包的异常,需要用charles或者findler拦截HTTP请求分析请求和响应。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值