软件测试基础知识大全【乐搏TestPRO】

在很多人的认知里,软件测试入门门槛低,简单易学。确实,软件测试基础知识更偏向于理论方法的学习,及部分常用工具的学习。

接下来的70个基础知识讲解,弄明白后这些问题后,软件测试入门也基本掌握了。本篇共分为4大版块,分别是(内容过多,请务必耐心看完,或者收藏,也可以添加文末二维码领取视频版):

软件测试基础理论篇
软件测试重要概念篇
软件测试缺陷篇
软件测试必知的协议知识

一、软件测试基本理论篇

1. 软件测试的定义

官方解释是:用来促进鉴定软件的正确性、完整性、安全性和质量的过程。是一种实际输出与预期输出间的审核或者比较过程。使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。

通俗点讲就是:在规定的条件下对程序进行操作,以发现错误;也是对软件质量进行评估的一个过程。

2. 软件测试的目的

软件测试的目的就是在已经规定好的条件下,对软件进行测试,通过测试去发现软件中程序的错误或者是BUG(缺陷),这样可以让程序员衡量软件的质量,然后对软件是否满足最初的要求或者初衷做出一个正确的判断。

3. 软件测试原则(掌握)

基于测试是为了寻找软件的错误与缺陷,评估与提高软件质量,因此我们提出了这样的一组测试原则,如下所示。

所有的软件测试都应追溯到用户需求。

应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭。

完全测试是不可能的,测试需要终止。

测试无法显示软件潜在的缺陷。

充分注意测试中的群集现象。

程序员应避免检查自己的程序。

尽量避免测试的随意性

4. 软件测试对象(掌握)

(1) 根据软件的定义,软件包括程序、数据、文档,所以软件测试并不仅仅是程序测试。软件测试贯穿于整个软件生命周期中。

(2) 由于在整个软件生命周期中,各阶段有不同的测试对象,形成了不同开发阶段的不同类型的测试。需求分析、概要设计、详细设计以及程序编码等各阶段产生的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应作为“软件测试”的对象。

5. 软件测试生命周期(模型)

在软件开发中,有很多开发模型,相应的,测试也有与之对应的测试模型。需要大概了解下相关概念。软件测试模型指的是软件测试和开发阶段的对应关系,它可以被用来指导整个软件测试过程,常见的软件测试模型包括:V模型、W模型、H模型、X模型,其中V模型是最具代表性的软件测试模型,需要掌握,其余模型了解即可。

(1) V模型: V模型从左往右依次是用户需求-需求分析-概要设计-详细设计-编码-单元测试-集成测试-系统测试-验收测试

软件测试基础知识大全【乐搏TestPRO】

(2) W模型: W模型又称双V模型,它由V模型演变而来,弥补了V模型的不足。左边的V是开发的生命周期,右边的V是测试的生命周期

软件测试基础知识大全【乐搏TestPRO】

(3) H模型

软件测试基础知识大全【乐搏TestPRO】

(4) X模型

软件测试基础知识大全【乐搏TestPRO】

6. 软件测试流程

软件测试基础知识大全【乐搏TestPRO】

关于软件测试流程的不同阶段,可以参阅往期精彩内容:

细说上市企业软件测试详细流程

7. 软件测试质量模型

(1)内部质量:它是从内部观点出发的软件产品特性的总体。内部质量是针对内部质量需求被测量和评价的质量。

(2)外部质量:外部质量是从外部观点出发的软件产品特性的总体。它是当软件执行时,更典型地是使用外部度量在模拟环境中,用模拟数据测试时,所被测量和评价的质量。

(3)使用质量:是从用户观点出发,来看待软件产品用于特定环境和条件下的质量。它测量用户在特定环境中达到其任务目标的程度,而不是测量软件自身的性质。

软件测试基础知识大全【乐搏TestPRO】

软件测试基础知识大全【乐搏TestPRO】

软件测试基础知识大全【乐搏TestPRO】

软件测试基础知识大全【乐搏TestPRO】

软件测试基础知识大全【乐搏TestPRO】

软件测试基础知识大全【乐搏TestPRO】

软件测试基础知识大全【乐搏TestPRO】

8. 软件项目成员

项目经理:驱动整个项目的运转,负责制定计划,安排人力,管理进度,协调团队,进行重大决策。

架构师 / 系统工程师:技术专家,经验丰富,负责整个系统的体系架构的设计以及关键模块的设计。

程序员 / 开发人员:设计、编写软件,并修复软件中的缺陷。

测试工程师:负责找出软件产品存在的问题并报告。

资料工程师:负责编写软件产品附带的文件和联机帮助文档

配置管理员:负责管理程序员写的代码和资料工程师写的文档资料,并组合成一个软件包

QA:质量监管人员

二、软件测试重要概念篇

1. 软件测试策略

黑盒测试:把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。

白盒测试:是对软件的过程性细节做细致的检查。是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。

灰盒测试:灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。

2. 软件测试方法(用例设计方法)

根据不同的测试策略,使用的设计方法也不一样,比如:黑盒测试方法包括:等价类划分、边界值分析、因果图分析、错误推测法、功能图分析等。白盒测试方法包括:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖等。

软件测试基础知识大全【乐搏TestPRO】

参考往期精彩,项目实战讲解黑盒测试用例设计的具体操作:

黑盒测试策略及应用方法实战

3. 软件测试类型

软件测试基础知识大全【乐搏TestPRO】

参考往期精彩,详细讲解了软件测试各种类型的概念:

软件测试类型及概念

4. 软件测试不同阶段

(1) 按开发阶段来分:单元测试、集成测试、系统测试、验收测试。

(2) 按测试的实施单位来分:开发方测试、用户测试、第三方测试。

(3) 按是否查看代码来分:白盒测试、黑盒测试、灰盒测试。

(4) 按是否手工执行划分:手工测试,自动化测试。

(5) 按是否运行划分:静态测试、动态测试。

三、软件测试缺陷篇

1. 缺陷优先级

缺陷优先级是指缺陷必须被修复的紧急程度,一般来说,严重级别程度较高的缺陷具有较高的优先级,严重级别高的缺陷对软件质量造成的危害大,需要优先处理,缺陷优先级,从高到低,可分为三级(不同企业对缺陷可能有不同的分级):

1. 立即解决(Urgent):缺陷必须立即被解决

2. 正常排队(Normal Queue):缺陷需要正常排队等待修复或列入软件发布清单

3. 不紧急(Not Urgent):缺陷可以在方便时被纠正

2. 缺陷状态 

缺陷状态是指缺陷在跟踪管理过程中对缺陷的处理情况,如下:

1. 已提交/新建:可能的缺陷被提交

2. 认可(Acknowledged):开发团队收到了被提交的可能缺陷,还没有确

3. 已确认(Confirmed):开发团队确认提交的是缺陷,等待分配处理

4. 已拒绝(Rejected):拒绝"提交的缺陷",不需要修复或不是缺陷

5. 已分配(Assigned):开发团队已分配相关人员处理缺陷

6. 已解决(Resolved):缺陷被处理

7. 已关闭(Closed):确认被修复的缺陷,将其关闭

除了以上缺陷状态,还可以使用其他一些状态,例如已修复(开发人员已修复缺陷,等待测试人员进行回归测试)、重新打开(回归测试不通过,重新打开缺陷,继续等待处理)等,不同企业可能使用不同的缺陷状态跟踪缺陷。

3. 缺陷管理流程

软件测试基础知识大全【乐搏TestPRO】

4. 缺陷管理工具

(1). Mantis:是一个基于PHP技术的轻量级的开源缺陷跟踪系统,以Web操作的形式提供项目管理及缺陷跟踪服务。

(2). Bugzilla:Mozilla公司提供的一款开源的免费Bug追踪系统。用来管理软件开发中缺陷的提交、修复、关闭等整个生命周期。

(3). Jira:对整个软件研发生命周期(包括计划、开发、发布)进行管理的项目跟踪工具。

(4). Fogbugz:是最简单的Bug跟踪系统,提供Wiki项目管理,共享式计划表、问题追踪、电子邮件和讨论组等实用工具,可以让管理者方便地安排轻重缓急的任务顺序,以及在项目中随时调整成员工作监控进度。

(5). Youtrack:是捷克JetBrains公司旗下一款创新性一键盘操作为主的问题和项目跟踪工具,主要用于开发过程中的任务和缺陷修正安排跟踪。

(6). Redmime:开源,基于Web项目管理和缺陷跟踪工具,它用日历和甘特图辅助项目及进度可视化显示,同时它又支持多项目管理。

(7). Trac:是一个为软件开发者设计的增强Wiki和问题的跟踪系统,它使用非常简约的方法来管理基于Web的软件项目,团队的任务是编写出杰出的软件,更好地帮助其他开发者。完全免费。

5. 缺陷生命周期

(1) 提交(打开)缺陷:在提交一个缺陷的缺陷,首先尽量描述这个缺陷的属性。Bug重现环境,bug类型,bug等级,bug的优先级以及详细的重现步骤,结果与期望等当然,我们在提交一个问题之前首先应该保证,这个缺陷是没有被提过的,以免造成重复缺陷单。如果是回归不通过的缺陷,其状态又会变为打开状态。

(2) 分配(转交)缺陷:这一步不是必须的,跟项目模式有关,有些公司测试部门与开发部门独立,那么测试人员就不确定自己测试的模块是由哪位开发人员负责的,在这种情况下,测试人员统一把问题指派给项目组长或经理,由项目组长(或经理)对问题进行确认后再次分配给相应的开发人员。有些测试人员是穿插到不同研发团队中的,所以对不同的开人发员负责的开发模块非常清楚,这个时候就可以将问题直接指派给相应的开发人员。也有一种情况,本来此问题应该由A开发人员负责,但由于A开发人员的调离或辞职,些问题为转交给其它人员处理。“分配”强调是上级对下级;“转交”强调的是平级之间。

(3) 确认缺陷:当开发人员接到一个缺陷时,首先是对其进行分析与重现,如果对其进行分析发现不是缺陷(可能由于测试人员不了解需求)或无法对此问题进行重现,那么就需要将此问题反回给测试人员,并注明原因。如果确认为缺陷则需要对其进行处理。

(4) 推迟处理:在处理问题之后,还需要进行一次判断,是否需要推迟处理,有些需求已经确认了是问题,由于其可能在极端情况下才会出现,或需要对系统架构进行改动,或其优先级非常低,所以暂时不需要对此问题进行处理(或到下个版本进再进行修复)。

(5) 固定:对于推迟处理的问题可以暂时进行固定(“固定”为QC中的叫法。)一般固定的问题需要经过项目经理与测试经理协商后才能固定。

(6) 处理缺陷:开发人员在确认完一个问题需要处理时,那么就对其进行处理工作。(例如,redmine 是支持处理人时时更新问题处理进度的,如 已处理30% ,已处理80% 等,当然,对于短时间内可以修复的问题就没必要时时的去更新处理进度。)

(7) 回归缺陷:回归缺陷对于测试人员来说是非常重要的工作,其有三个入口两个出口。

(8) 确认非缺陷问题:对于提交的一个缺陷,开人员处理为非问题或无法重现,然后直接转交给测试人员回归。测试人员再次确认,如果真如开发人员所说,则将问题关闭。如果非开发人员所说,是由于问题描述模糊或其它原因喂重现问题,则再次注明原因转给开发人员。

(9) 确认修复问题:对开发人员修复的问题再次进行确认,确认能过,则关闭问题。确认不通过,将问题再次打开并转给开发人员。

(10) 确认固定问题:有计划的对固定问题进行确认,有些固定问题随着时间的推移,版本的更新或已经不存在了,对这类问题应该及时关闭。有些固定问题依然存在且变得紧急,对于这类问题应该及时打开交给开发人员处理。

(11) 关闭缺陷:对于已经修复的缺陷进行关闭,这也是一个缺陷的最后一个状态。

四、软件测试必知的协议知识

软件测试基础知识大全【乐搏TestPRO】

1. tcp/ip四层模型

(1) 主机到网络层: 实际上TCP/IP参考模型没有真正描述这一层的实现,只是要求能够提供给其上层-网络互连层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将随着网络类型的不同而不同。

(2) 网络互连层: 网络互连层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机。同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。网络互连层定义了分组格式和协议,即IP协议(Internet Protocol)。网络互连层除了需要完成路由的功能外,也可以完成将不同类型的网络(异构网)互连的任务。除此之外,网络互连层还需要完成拥塞控制的功能。

(3) 传输层: 在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议TCP(transmission control protocol)和用户数据报协议UDP(user datagram protocol)。TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据。UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。

(4) 应用层: TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。应用层面向不同的网络应用引入了不同的应用层协议。其中,有基于TCP协议的,如文件传输协议(File Transfer Protocol,FTP)、虚拟终端协议(TELNET)、超文本链接协议(Hyper Text Transfer Protocol,HTTP),也有基于UDP协议的。

2. 七层网络模型

OSI 模型(Open System Interconnection model)是一个由国际标准化组织提出的概念模型,试图供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。它将计算机网络体系结构划分为七层,每层都可以????供抽象良好的接口。了解 OSI 模型有助于理解实际上互联网络的工业标准——TCP/IP 协议。OSI 模型各层间关系和通讯时的数据流向如图所示:

软件测试基础知识大全【乐搏TestPRO】

七层模型介绍

物理层:物理层负责最后将信息编码成电流脉冲或其它信号用于网上传输;

数据链路层:数据链路层通过物理网络链路????供数据传输。不同的数据链路层定义了不同的网络和协 议特征,其中包括物理编址、网络拓扑结构、错误校验、数据帧序列以及流控;可以简单的理解为:规定了0和1的分包形式,确定了网络数据包的形式;

网络层: 网络层负责在源和终点之间建立连接;可以理解为,此处需要确定计算机的位置,怎么确定?IPv4,IPv6!

传输层: 传输层向高层????提供可靠的端到端的网络数据流服务。可以理解为:每一个应用程序都会在网卡注册一个端口号,该层就是端口与端口的通信!常用的(TCP/IP)协议;

会话层: 会话层建立、管理和终止表示层与实体之间的通信会话;建立一个连接(自动的手机信息、自动的网络寻址);

表示层: 表示层供多种功能用于应用层数据编码和转化,以确保以一个系统应用层发送的信息 可以被另一个系统应用层识别;可以理解为:解决不同系统之间的通信,eg:Linux下的QQ和Windows下的QQ可以通信;

应用层: OSI 的应用层协议包括文件的传输、访问及管理协议(FTAM) ,以及文件虚拟终端协议(VIP)和公用管理系统信息(CMIP)等。

软件测试基础知识大全【乐搏TestPRO】

看到这里,如果你有一颗想要顺利进阶,升职加薪的❤️不妨参与我们的软件测试一周集训吧!可以后台私信我,也可以进入qun :⑥③⑥⑧⑤⑨⑨⑥④,获取更多咨询哦~