您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 网络/安全 > 正文

软件测试工程师必须会的网络知识

发表于:2023-01-05 作者:Tricy 来源:柠檬班社区

导语

随着现在互联网公司的普及,越来越多的测试工程师从事web应用测试和移动APP测试类的产品,更加偏向应用。

所以导致越来越多的测试工程师对网络基础知道的甚少。

我曾经做过一个小调查,大概200多个测试从业者中只有不到20人知道如IP协议和路由协议这样的基础网络知识,这样的现象一点都不夸张。


那么不懂网络知识,测试工程师真的能走得很远么?

我是在2010年左右进入测试行业的,那个时候互联网行业还没有现在这么繁荣,需要测试岗位的公司很多都是一些传统公司。

比如路由交换设备厂商:思科,华为,华三等;

防火墙VPN的安全厂商:如Juniper,深信服,360等;

还有一系列外企:如IBM,Oracle,F5等。

这些公司的测试工程师,对于网络基础知识的要求相对比较高,不仅在笔试面试中会作为招聘的门槛,而且在具体测试工作开展过程中,也需要实施和使用到。


我在北京就职的其中一家公司就是SSL VPN的一家外企,所有测试工作中很重要的一个部分就是需要自己准备测试环境,也就是要根据需求自己设计出来对应的测试网络拓扑图。

然后协调到资源之后,在实验室把这个网络搭建并且调通。

这个过程如果没有丰富的网络知识储备,你就可能会被block在网络环境准备阶段,无法真正的开始执行测试用例,因为没有环境的承载,测试软件根本无法运行。

当然,可能在你作为一个新人的时候,能够去请求别的同事的支援,协助你配置网络和准备测试环境。

但是如果你一直需要别人的帮助才能完成本来属于你的测试工作,那么相信公司也会开始考虑是不是需要你这样一个比较鸡肋存在。


说到这里,可能有些同学会说,我现在并不在这些传统行业上班,而且现在传统行业也不太景气了。

我就在互联网公司工作,我掌握测试理论,熟悉各种测试方法,熟练使用各种测试工具就可以了,网络知识对我还有那么重要么?

答案是肯定的。

如果想要在测试行业走的很远,就算是互联网公司,网络基础知识仍然是一个测试工程师的一个必备技能,区别可能只是你掌握的深和浅的问题。

如果你现在从事的是web应用测试,你在浏览器上输入一个URL进行访问,服务器会给你返回一个页面,请问你了解这个过程是怎么实现么?

如果你现在测试的是手机APP应用,手机连接wifi或者4G网络是怎么上网的,这个你又清楚么?

电脑插上网线或者连接wifi,分配IP地址或者手动配置IP地址上网的规则和过程,你又明白么?

或许你依然觉得这些过程不清楚也没有关系啊,并不会影响测试工作的进行,那么我再问你,如果web页面访问失败了,返回了一个错误码,你知道怎么定位是服务器的问题,还是网络的问题么?

APP应用测试需要需要覆盖各种网络环境,比如弱网测试,你清楚怎么模拟么?

测试网络出现问题,你知道怎么去做基本的调试命令和方法么?

夺命三连问,是否直击你的心灵最深处呢?

真实经验告诉你,网络知识是你要成长为一名优秀测试工程师的重要基石。


既然知道了测试工程师掌握网络知识的必要性,那网络体系这么庞大,我们怎么从中选取跟测试相关的知识,高效地学以致用来辅助测试工作呢?

首先,从认识网络基开始,知道网络中每一层的具体工作职责和工作流程。

我们以OSI网络七层模型为例(TCP/IP四层协议栈与其类似),从下向上分别是:

“物理层-数据链路层-网络层-传输层-会话层-表示层-应用层”

每一层都各司其职,下层向上层提供服务,上层使用下层提供的服务,如此和谐的运转着。


下面的图很直观的表示出了数据包在网络中传输的过程以及每一层在这个过程中的具体工作:

在浏览器中输入URL“https://baidu.con”访问,百度服务器给我们返回一个百度的页面。


其次,需要知道每一层常用的网络协议。

所有你所在测试的软件,都是基于某一个协议来实现,所以了解协议,能够帮助你更加深刻的理解测试的产品,从而能够更加充分的测试。

比如网络层的ARP协议,IP协议,路由协议;

传输层的两个重要协议:TCP协议和UDP协议;

应用层的常用协议:http协议,https协议,FTP协议等。

下面是这些常用协议的简介:

◆ ARP协议:

地址解析协议,在已知对方的IP地址的时候,去寻找对方的MAC地址;

◆ IP协议:

分配给用户上网使用的网际协议。我们需要知道IP协议的构成:网络地址和主机地址,以区分网络中的设备或者主机是否在同一个子网,是否可以直接通信;

◆ 路由协议:

如果主机们不在同一个子网,就需要用到路由协议。查找设备上的路由表,选择数据转发的最优路径;

◆ TCP协议:

在传输层提供可靠的传输,并且通过定义端口来区分主机上的应用服务;

◆ UDP协议:

在传输层提供快速的传输,同样可以通过端口来区分主机上的应用服务;

◆ http协议:

超文本传输协议,定义了客户端发送给服务器的消息格式以及服务器响应消息的格式。

◆ https协议:

超文本传输安全协议,在HTTP下加入SSL层,提供加密的功能。

◆ FTP协议:

文件传输协议,FTP服务器存储文件,用户使用FTP客户端访问FTP服务器上的资源。


当然一个协议肯定不是这样一句话可以简单描述清楚的,其中细节和实现大家可以根据自己的工作需求去做具体详细的了解。

如果有需求,我可以后续再出一个详细的系列文章给大家做更加细致的讲解。

从事测试行业的人都知道,测试工程师其实并不是外行人看起来那么简单的职业,需要有广泛的知识涉猎面,要求的是知识的广度。

刚入测试行业的同学,我们需要明确自己必须要掌握的知识类型,然后按照优先级一步一个脚印的去完善自己;

如果已经在测试行业工作多年的同学,同样需要知道想要跳出自己当前的舒适区,提高一个层次,到底还需要一些什么知识的扩充。

所以,对于测试工程师,测试理论和测试工具我们不能否认其重要性,它是测试工作的重要基础;

但是网络知识是也同样是不可或缺的辅助,它可以帮助开阔测试之路,弥补测试知识体系中的不足,让你在测试行业中走得更高,走得更远。