计算机类专业主要包括计算机科学与技术、软件工程、 络工程、信息安全和物联 工程等,这些计算机本行当的专业毕业后均可以从事IT行业,可选择的岗位也比较多。计算机相关理工类专业,比如电子信息工程、通信工程、电气自动化、自动化、测控仪器与装置等专业,同样也可以在IT行业就业,甚至其他理科专业比如物理、化学、生物和数学,也可以进入这个行业。
IT行业主要有两大类岗位,一是研发类岗位,一个是测试类岗位。以前我经常讲,测试岗位相对研发岗位,门槛要低很多,对学历和能力的要求要低不少,很多理科和工科的非计算机专业的同学都可以来选择做软件测试的工作。今天我们就来聊聊非计算机专业的同学在应聘软件测试岗位之前,需要做哪些准备工作。
作为软件开发人员,我经常和软件测试人员打交道,对软件测试行业比较了解!我已经帮助一个足球队建制的朋友们成功跨入了软件测试行业,也积累了一些技术和经验。这些朋友在应聘软件测试岗位之前,我都会给他们做一些专业的技术培训,包括软件测试的基本概念和基本流程、基础的 络知识、常用的数据库SQL语句以及常用的Linux命令等。在这里我把这些培训的心得和细节内容,详细分享给大家,希望能帮到大家。
以下内容不仅仅适用于刚毕业的同学,也适用于中途转行的朋友(中途转行进入软件测试行业)。我帮过的朋友中,有几个就是中途转行进入到软件测试行业的!
前言
从当前IT行业对测试人员普遍要求来看,一般需要了解软件测试的基本流程和基本概念,以及测试用例的编写;需要了解基本的 络知识;需要了解数据库的基本概念,掌握常用的SQL语句;需要熟悉常用的Linux命令等。如果会使用常用的自动化测试工具(比如按键精灵、QTP、selenium等),能用Java和Python脚本语言编写自动化测试和接口测试的脚本,就更好了。在各大IT公司的岗位招聘说明中,基本上都是对这些技术技能的要求。下面我们就来详细讲解一下如何初步掌握上述技能,以满足大部分IT企业的要求。
1、软件测试的基本流程与基本概念
这部分的内容,是一个软件测试工程师必须要了解的内容,在进入到软件测试行业之前,要对该行业有个初步的认识和理解。
1)一个软件产品的完整流程
一个全新的软件产品从开始到最终商用,大概会经历市场调研、竞品分析、产品立项、需求导入、需求评审、编码设计(开发人员)、测试用例编写(测试人员)、测试验证、bug修改、产品bug收敛、产品商用等多个阶段。产品商用后,因为用户机器和系统环境的不同,在用户使用的过程中会陆续 出之前未曾暴露的bug,需要及时修复客户反馈的问题。客户在使用过程中也会提出新的需求,产品自身的功能和特性也会不断的向前演进,所以后续会持续导入新的需求,这样就进入了产品的后期维护与功能迭代的循环往复的过程。
2)软件测试工程师的职责与工作内容
软件测试工程师需要根据产品的需求文档,编写测试用例,待开发人员将软件开发完毕后,测试人员根据之前编写的测试用例,对软件进行功能验证与测试。将测试过程中发现的问题,以bug单的形式反馈给开发人员。开发人员修改bug后,测试人员再对bug进行验证。软件测试人员是产品质量的把关者,是软件不断改进和优化的推动者,在软件产品研发过程中担任着很重要的角色。
3)测试的分类
测试可以分为白盒测试和黑盒测试。白盒测试是指测试人员在不了解软件内部原理和机制的情况下进行的测试,给定一个输入,看能否得到期望的输出。白盒测试是指测试人员在了解软件内部原理和流程的情况下进行的有针对性的测试。
测试又可分为单元测试和集成测试。单元测试是以模块为单位进行的单一模块的测试。集成测试是将软件的所有模块集成在一起,进行整个系统的相关业务和流程的测试。
测试还可以分为压力测试和性能测试。压力测试一个很重要的方面是多客户端的并发测试与性能测试,这对于服务器端甚为重要。性能测试一个最基本的指标是目标软件对系统内存和CPU的占用。一个优秀的软件对内存和CPU等资源的占用都是经过深度优化和改进的。
在测试的过程,还有回归测试和冒烟测试的概念。回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。冒烟测试是在版本转测试之前,先选择一部分基础的测试用例进行验证,确保全流程没有严重、阻塞性的问题。
4)测试用例的编写
测试用例的编写,是指根据软件都的需求中的功能,考虑各种可能的场景,包括正常的场景和异常的场景,给定一个输入,对应一个期望的输出。比如以登录为例,输入正确的用户名和密码,期望结果是能正常登录到系统中,如果登录不上,就是软件功能有问题。输入正确的用户名和错误的密码,期望结果是不能登录的,如果能登录上,就是软件存在问题。
5)软件产品的形态
从产品形态上,可能既有PC端的软件,也有苹果和安卓移动端的软件,也有硬件形态的嵌入式软件,也要有web 页端的软件,甚至还要有支持国产化系统的软件。
这里面需要了解什么是B/S架构,什么是C/S架构。所谓C/S架构就是,客户端(Client)/服务器(Server)模式,比如电脑端的QQ。所谓B/S架构就是,浏览器(Browser)/服务器(Server)模式,比如使用浏览器访问的的淘宝主页。
2、基本的 络知识和常用的 络命令
现在基本所有的软件系统都是基于 络的,有走局域 (私 )的,有走互联 (公 )的,所以掌握基本的 络知识已经是最基本的要求。
(1)基本的 络知识
首先要了解ISO的7层分层和TCPIP的5层(或4层)分层,这是最基本的概念,也是笔试和面试经常遇到的问题。
再就是要了解TCP和UDP的区别。TCP是面向连接的,建立连接后才能进行数据的收发,是可靠的;而UDP是无连接的,无需建立连接,直接将数据丢给目标端,无法保证数据能被送到对端,所以是不可靠的。
要了解TCP建链时的三次握手的流程,即连接发起者给目标端发送一个SYN包,目标端收到这个SYN包后给发起端回一个ACK包,发起端收到这个ACK包后,再给目标端发送一个ACK包,这样就完成了3次握手建链的过程。这个过程使用WireShark抓包软件抓包看的最清楚。
这个在使用WireShark抓包分析 络问题时最基础的知识。此外,还要了解TCP的丢包重传机制,比如客户端给服务器发送了一包数据,客户端会等待服务器回复的ACK确认包,如果长时间没有收到ACK包,客户端就会认为 络出问题了,会重新将之前发送的数据包重新发给服务器。正是因为这种确认机制,有效的保证了TCP的可靠性。
TCP和UDP分别用在什么场景下呢?比如在视频会议和视频监控系统中,会有大量且频繁的音视频数据的收发,这些音视频数据的收发一般要使用UDP,因为UDP可以保证很好的实时性,没有TCP那种繁杂的数据ACK机制(频繁的ACK会影响数据的收发的效率)。当然UDP是不可靠的,但这个场景中,实时性要求性比较高,最好不要有音视频的延时,即使因为UDP不可靠导致小部分数据的丢失,也是可以接收的。但一般情况下,TCP和UDP要结合在一起使用,一些关键的控制信令必须要保证传输的可靠性,所以这些控制信令的收发必须要使用TCP。
我们还需要了解端口的概念,运行在一台电脑的众多软件,IP地址都是一样的,在建立 络连接及后续数据的收发,是如何区分的呢?其实都是通过端口 (一个介于0与65535之间的整数值)进行区分的,建立连接时需要使用到IP和端口。对于服务器而言,要接收客户端的连接请求,必须开启服务监听端口,客户端在连接时,就使用服务器的IP和监听端口与服务器建立连接。如果服务器登录不上,可以先看能否ping通服务器地址,如果能ping通,就要telnet服务器的监听端口,看服务器是否开启了监听端口。在服务器程序出现崩溃退出时,可能就没有开启监听端口了。
另外。还要了解路由器和交换机的区别,可以自行搜索,这个地方就不再赘述了。
(2)常用的 络命令
1)ping命令
当软件出现 络问题时,比如登录不上,首先应该确认是否是所在电脑的 络或者远端服务器的 络出现问题了。最简单的就是ping命令,直接ping一下目标地址就好了。
如果软件系统在交互的过程中数据出现延时或抖动,可以使用ping指令,加上一个-t的参数,比如ping 172.16.72.136 -t,查看连续的ping包,看 络是否存在明显的抖动或延迟,如下:
2)ipconfig命令
ipconfig命令主要用来查看 卡的配置信息,比如IP地址,子 掩码和默认 关等,如下所示:
3)telnet命令
在使用这个命令之前,需要在Windows系统中打开telnet服务,该服务在win7以上系统中默认是关闭的。打开telnet服务的入口是:控制面板–>程序与功能–>打开或关闭Windows功能:
勾选“telnet客户端”,点击确定即可。
一般我们会使用telnet命令,查看服务器的监听端口有没有开启,比如telnet 172.16.72.136 7800,其中172.16.72.136是服务器地址,7800是服务器的监听端口。如果端口没有开启,则会显示端口打开失败,如下所示:
4)netstat命令
netstat命令用来查看本机的 络连接与端口占用情况,如下:
5)route相关命令
route相关命令主要用来查看路由表信息,添加策略路由等。route print命令是将Windows系统中的路由表打印出来,如下图所示:
route add命令可以往路由表中添加一条路由,如下:
一般在处理Windows系统中的多 卡问题时,会用到这些路由相关命令。比如系统中有两张 卡,一张是内 的 卡,一张是外 的 卡:
Windows系统中只能设置一个默认 关,没设置默认 关的 卡,必须通过route add命令添加策略路由来控制ip的访问走向!
6)traccert命令
该命令可以追踪访问目标地址所经历的路径,如下所示:
通过该命令,可以看出数据包是从那个 卡发出去的(看默认 关),也可以看出从哪个运营商线路(联通线路、移动线路、电信线路)访问到目标地址的!
3、数据库与常见的SQL语句
数据库是用来存储软件业务中的数据,任何大型软件都需要用数据库软件来存放数据的。常用的数据库有Oracle、MySQL、小型数据库sqlite等。其中Oracle是美国甲骨文公司收费的商业数据库,MySQL和sqlite数据库则是免费的,大家都可以随意使用的。
这部分我们需要掌握常用的SQL语句即可。Oracle、MySQL和sqlite这些数据库的语法大体上是差不多的,只是部分细节上会有所不同,我们只需要掌握通用的SQL语句即可。比如创建数据库文件(create database)、创建数据表(create table)、修改数据表(alter)、删除数据表(drop)、向数据表中插入数据(insert into)、修改表中的数据(update)、查询表中的满足给定条件的数据(select)、删除表中的数据(delete)等。具体的SQL语句,大家自行学习一下,此处就不一一展开了!
注意要将对表结构的操作与对表中数据的操作区分开来。
4、常用的Linux命令
当前大部分IT公司的后台服务器中使用的操作系统都是Linux系统,Linux系统有多个版本,比如常用的RedHat红帽系统、Ubantu系统和CentOS等,其中CentOS是免费的,也是大多数公司所采用的Linux系统。
除了后台的服务器,很多嵌入式系统使用的也是Linux系统。所以Linux系统已经被IT公司广泛采用,所以很多IT企业在招聘时都会将了解Linux及掌握Linux常用命令当成基本的要求。
掌握常用的Linux命令主要用于Linux系统的日常维护与软件问题的排查。下面简单的列举几个日常工作中常用的命令:
1)vi命令
i – 插入文本
a – 追加文本
命令模式可执行的操作:(按下shift键输入: )
:w保存文本
:wq保存并退出
:wq!保存并强制退出
:q退出
2)ls命令和ll命令
ll命令主要用于罗列出当前目录中所有文件和文件夹的详细信息,比如文件的修改时间、读写权限、文件大小、所属用户等信息,类似于Windows中显示的详细信息,如下所示:
ls命令仅罗列出当前目录中的文件名称,没有详细信息。平时我们常用ll命令查看文件的修改时间。
3)文件和文件夹操作命令touch、mkdir、rm
touch命令用于创建文件,mkdir用于创建文件夹,rm命令(-rf)用来删除文件或文件夹。
4)netstat命令
netstat命令用来本机的 络连接及端口占用情况的。一般使用“netstat -anp|grep + 进程名”命令,列出进程的已建立的连接或者正在监听的端口信息。
5)ps命令
ps命令用来查看进程的相关信息。一般使用“ps -aux|grep + 进程名”命令,列出目标进程的相关信息:
如果要强制杀掉某个进程,可以使用“kill -9 + 进程id”命令,要先使用“ps -aux|grep + 进程名”命令打印出目标进程的id,然后再调用kill命令。
6)top命令
top命令可以查看进程的CPU和内存占用情况,类似于windows下的任务管理器窗口,可以查看系统中各进程的资源占用情况,如下所示:
这个命令在排查目标软件在CPU和内存占用率高的问题时比较好用。
7)tcpdump命令
tcpdump命令主要是用来在Linux系统上抓取 卡上的 络数据包,是个很强大很实用的命令。常用的命令格式为:tcpdump -i eth0 -s 0 -w 0515.pcap,其中-i用来指定抓哪张 卡的,可以是any,表示抓所有 卡的数据包;-s用来指定抓包文件的大小,一般设置为0,即不限制抓包文件的大小;-w用来指定抓包文件的名称。
待抓包完成后,可以将抓包文件下载到Windows系统中,使用WireShark打开抓包文件进行数据包的分析。
5、自动化测试工具的使用与自动化脚本的编写
这一类技能比较高端,属于软件测试的高级阶段,掌握这些技能在招聘市场上会比较受欢迎。大型互联 公司因为自身产品和业务的测试需要,也比较推崇自动化测试技术。
常用的自动化测试工具有按键精灵、QTP、LoadRunner、selenium等。除了自动化测试工具,还需要编写自动化测试脚本,最常用的脚本语言是Python,也是最强大的脚本语言。
有时也需要使用Java语言编写用于自动化接口测试的脚本。Java和Python在大型互联 公司已经被广泛的使用。
6、应聘途径问题
(1)校园招聘的途径
理工科的同学如果选择软件测试的岗位,最好通过毕业前的校园招聘会来应聘,校园招聘会一般会在毕业的前一年的国庆后进行。校园招聘应聘软件测试岗位成功的几率要大很多,一是各大IT公司在校园招聘中投入了大量的招聘名额,二是校园招聘时各大公司对应届生的要求,相对走 会招聘的渠道,要低很多。
(2)拿到毕业证后通过招聘 站应聘
地域比较热的或者学校比较好的同学,有参加校园招聘会的机会,但是一些三四流的高校的学生,很难有这样的机会,因为好点的IT公司都不会去这些三四流的学校去开招聘会招人。这些学校的学生更多的是拿到毕业证后(毕业后),再到大城市(比如北京、深圳、上海、南京等)来找IT行业的工作。
这个时候基本是通过51job、智联招聘和BOSS直聘这些招聘 站来投递简历。其实此时应届生的机会要少很多,因为稍微好点的公司基本上在年前的招聘会上就将应届生的名额招满了,已经基本没有应届生的招聘需求了。这些招聘 站上的职位也基本都是 会招聘的职位,都是需要工作经验的,基本不会考虑应届生。
刚毕业的应届生基本没有任何工作经验,也缺乏基本的技术和技能,很难找到合适的公司和岗位。特别是今年爆发的疫情,对各大IT公司的影响都是比较大的,都在收紧招聘名额,这使得应届生找工作变的更加困难。
(3)作为应届生,面对严峻的就业形势,该怎么应对?
首先必须事先有准备的学习并掌握上述基本知识与技能,以保证能相对顺利通过IT公司的笔试和面试。
其次就是要降低要求,降低对薪资的要求,应该把找到工作并在工作中学到技术和经验放在首位。
再就是以往我们都不建议刚毕业的应届生去外包公司,但是在机会不多的情况下,外包公司是可以考虑的。特别是一些大型的外包公司,他们有着大量的合作资源,提供了大量的就业岗位,并且他们相对要正规一些,公司的业务也要稳定很多。
写在最后
以上就是我多年来的心得与经验的分享,希望能帮到打算进入IT软件测试行业的朋友们!
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!