> 文档中心 > 测试理论基础知识

测试理论基础知识

测试理论基础知识

文章目录

  • 一、软件的定义与分类
    • 1、软件定义
    • 2、软件分类
      • (1)按照功能划分
      • (2)按照技术架构划分
  • 二、软件测试的定义及目的
    • 1、定义:
    • 2、目的
  • 三、软件测试流程
  • 四、V模型(重点)
    • 1、软件测试V模型:
    • 2、软件缺陷
  • 五、软件测试分类
    • 黑盒测试
    • 白盒测试
    • 灰盒测试
  • 六、软件测试原则

一、软件的定义与分类

1、软件定义

计算机系统中与硬件相互依存的一部分(程序+数据+相关文档

2、软件分类

(1)按照功能划分

系统软件: 能够直接和硬件交互的软件。例如:win10、linux、操作系统
应用软件: 能够为用户提供某种特定条件的应用服务的软件,应用软件通常运行在系统软件中。例如:QQ运行在windows操作系统上

(2)按照技术架构划分

单机软件:直接在单个计算机上安装并运行的软件,如画图工具

C/S 结构软件:C指的是客户端(Client),S指的是服务器端(SERVER),这种软件是基于局域网或互联网的,需要有一台服务器来安装服务器端软件,每台客户端都需要安装客户端软件。不便于升级和维护(升级时需要重新安装每一个客户端)

B/S 结构软件:B是指浏览器(Browser),S指的是服务器端(SERVER).这种软件是基于局域网或互联网的,不需要安装客户端,只需要有浏览器即可,便于升级和维护(升级时只需要升级服务器即可)

二、软件测试的定义及目的

1、定义:

在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程

2、目的

就是尽可能多的发现软件缺陷。bug是测试过程中的产品而非目标。检查系统是否满足要求,站在用户角度思考产品或项目功能实现的正确性。
测试目的不仅仅为了找出错误,通过分析错误产生的原因和错误的分布特征,帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。

三、软件测试流程

在这里插入图片描述

四、V模型(重点)

1、软件测试V模型:

V模型:从左到右,描述了开发过程和测试过程步骤。
在这里插入图片描述

需求分析:明确客户需求,要求分析师能准确的把客户所需要达到的功能、实现方式,等表述出来,给出分析结果,写出需求规格说明书。

概要设计:主要是架构的实现。架构师搭建架构、表述各模块功能、模块接口连接和数据传递的实现等事务。

详细设计:对概要设计中各个模块进行深入分析,对各模块组合进行分析。该阶段要求达到伪代码级别,把程序的具体实现的功能,现象等描述出来。其中需要包含数据库设计说明。

软件编码:按照详细设计好的模块功能表,编程人员编写出实际的代码。

单元测试:按照设定好的最小测试单元进行按单元测试,主要是测试程序代码,为的是确保各单元模块被正确的编译,单元的具体划分按不同的单位与不同的软件有不同,比如有具体到模块的测试,也有具体到类,函数的测试等。

集成测试:在单元测试的基础上,通过单元模块组装成系统,在进行测试,检查模块之间接口的正确性。

系统测试:针对整个产品进行测试,验证系统是否满足需求文档,对实现的系统进行正确性和性能两方面测试。(包括对功能、性能以及软件所运行的软硬件环境进行测试 。系统测试由黑盒测试员来完成,前期主要测试系统的功能是否满足需求,后期主要测试系统运行的性能是否满足需求,是否存在漏洞,以及在不同的软硬件环境中的兼容性,主要依据是《系统需求规格说明》文档 。)

验收测试:主要就是用户在拿到软件的时候,在使用现场,会根据用户需求,以及规格说明书来做相应测试,以确定软件达到符合效果的。包括功能确认测试、安全可靠性测试、易用性测试、可扩充性测试、兼容性测试、资源占用率测试、用户文档资料验收等。

α测试:非正式验收测试,由用户、测试人员、开发人员共同参与的内部测试

α测试的关键在于尽可能逼真地模拟实际运行环境和用户对软件产品的操作并尽最大努力涵盖所有可能的用户操作方式。经过α测试调整的软件产品称为β版本。

β测试:内测后的公测,即将正式发布,完全交给最终客户的测试。

β测试是由软件的多个用户在实际使用环境下进行的测试,这些用户返回有关错误信息给开发者。测试时,开发者通常不在测试现场。因而,β测试是在开发者无法控制的环境下进行的软件现场应用。在β测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告。β测试主要衡量产品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持),着重于产品的支持性,包括文档,客户培训和支持产品生产能力。
注:α测试和β测试均不能由程序员和测试员完成

2、软件缺陷

软件未达到客户需求的功能和性能
软件超出了客户需求的范围
软件出现客户需求不能容忍的错误
软件的使用未能符合客户的习惯和工作环境

五、软件测试分类

1、按开发阶段分类:
单元测试、集成测试、系统测试、验收测试

2、软件结构和算法角度:
黑盒测试、白盒测试、灰盒测试

3、按软件的测试面划分:
功能测试、性能测试、空间性能、时间性能

4、按是否手工执行划分:
手工测试、自动化测试

5、软件的测试周期划分:
冒烟测试、回归测试、随机测试、安全测试

冒烟测试:在对一个新版本进行大规模的系统测试之前,先验证软件的基本功能是否实现,是否具备可测性

回归测试:开发人员修改bug后,修饰旧代码,重新进行测试,确保修改后不会引入新的错误或者导致其他代码出错。

随机测试:所有输入的数据都是随机产生。目的模拟用户真实操作,发现边缘性错误。

安全测试:开发过程完成到发布阶段,对产品进行校验,验证产品符合安全需求定义,产品质量标准。

注:软件所处的阶段和使用的测试技术没有关系

黑盒测试

也称为功能测试。通过测试来检测每个功能是否实现,把程序比喻成黑盒,在完全不考虑程序内部实现的情况下,对程序接口进行测试,功能 对比 需求文档 检查是否实现。

白盒测试

白盒测试对软件代码实现的细节做细致检查。程序员必须全面了解程序的内部逻辑结构,对逻辑结构进行测试。

灰盒测试

介于黑、白盒测试之间。灰盒关注输入数据,输出数据正确性,同时也关注内部实现,关键关注内部实现不像白盒测试那么详细、完整。只是通过一些表象,标志来判断内部运行状态,有时内部程序出了问题,输出结果正确。白盒测试效率低。

六、软件测试原则

◎所有测试的标准都是建立在用户需求之上
◎软件测试必须基于”质量第一”的思想区开展各项工作,当时间和质量冲突时,时间要服从质量。
◎事先定义好产品质量标准,只有有了质量标准,才能根据测试的结果,对产品的质量进行分析和评估。
◎软件项目一启动,软件测试也就是开始,而不是等程序写完,才开始测试。
◎穷举测试是不可能的。
◎软件测试计划是做好软件测试工作的前提。
◎测试用例是设计出来的,不是写出来的,所以要根据测试的目的,采用相应的方法区设计测试用例,从而提高测试的效率,更多地发现错误,提高程序的可靠性。
◎ 对发现错误较多的程序段,应进行更深入的测试,一般来说,一段程序中已发现的错误数越多,其中存在的错误率越大。
◎ 重视文档,妥善保存一切测试过程文档(测试计划,测试用例,测试报告等)
◎ 应当把“尽早和不断的测试”作为测试人员的座右铭
◎ 回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见
◎ 测试应从“小规模”开始,逐步向”大规模”转变
◎ 不可将测试用例置之度外
◎ 必须彻底检查每一个测试结果
◎ 一定要注意测试中错误的集中出现,这和程序猿的编程水平以及习惯息息相关
◎ 对测试错误结果一定要有一个确认的过程