软件测试与质量概述

什么是软件测试?

从五个方面来阐述软件测试:

  • 根本目的:确保被测系统符合用户需求
  • 基本手段:设计测试用例
  • 执行方式:手工/自动化
  • 测试策略:动态运行/静态审阅
  • 通用流程:设计、计划、实施、评估
为什么需要软件测试?

确保产品质量,是软件产品质量保证的重要措施之一。

什么是软件缺陷?
  1. 软件未达到需求规格说明书中指明的功能,则是缺陷;
  2. 软件出现了需求规格说明书中指明不会出现的错误,则是缺陷;
  3. 软件功能超出需求规格说明书中指明的范围,则是缺陷;
  4. 软件未达到需求规格说明书中虽未达到但应达到的目标,则是缺陷。
什么是测试用例?

测试用例组成:输入 + 输出 + 测试环境
输入:测试数据和操作步骤
输出:系统预期执行结果
测试环境:系统环境设置,即进行软件测试所必须的工作平台和前提条件

以输入数据为例,设计测试用例:
在这里插入图片描述

什么是软件质量?
  • 软件产品中能满足给定需要的性质和特性的总体。
  • 软件具有所期望的各种属性的组合程度。
  • 顾客和用户觉得软件满足其综合期望的程度。
  • 确定软件在使用中将满足顾客预期要求的程度。

软件测试的定义?

测试是发现并指出软件中存在的缺陷的过程,这个过程指明和标注问题存在的正确位置,详细记录导致问题出现的操作步骤及当时存储时的错误状态。
在这里插入图片描述

软件测试 vs 软件质量
  • 软件测试
      目的:保证被测软件系统符合用户需求
      手段:通过找bug来判断软件与需求的一致性
  • 软件质量
      定义:是反映软件满足明确或隐含需要能力的特性总和
      狭义的质量:产品无缺陷
      广义的质量:产品质量、过程质量、客户满意度

软件测试分类

  • 动态测试

通过测试用例的执行来完成对系统的测试。基本步骤:

(1)选取程序输入定义域的有效值或选取定义域外的无效值;

(2)决定已选输入值的预期结构;

(3)用选取输入值执行程序;

(4)比较执行结果和预期结果,不吻合时说明程序出错。

需要做的工作:

(1)提供被测对象,可以是可执行程序、数据或文档;

(2)准备相关预期作为测试一句,主要是开发过程中得到的一些文档。例如:需求规格说明,概要设计文档或详细设计文档;

(3)根据需求设计测试用例(测试工作核心之一);

(4)搭建测试环境,即运行系统需要的软硬件配置;

(5)运行测试用例,即在配置好的测试环境中将测试用例施加给被测对象;

(6)检查每一个测试用例的执行结果判断实际结果是否符合原始需求;

(7)记录测试过程,并针对失败的测试用例报告缺陷;

(8)针对程序员的回复执行回归测试。

在这个过程中,测试人员的主要交付件包括:测试用例、驱动或桩模块(为测试需要而额外开发的代码)、缺陷报告。

  • 静态测试

测试程序不被真正运行。包括代码检查、静态结构分析、代码质量度量等。通常在静态测试阶段进行以下一些测试活动:

(1)检查算法的逻辑正确性,如检查算法是否实现了所要求的功能;

(2)检查模块接口的正确性,如检查参数个数、参数类型、返回值类型的正确性;

(3)检查调用其它模块接口的正确性,如检查实参个数、实参类型、返回值类型是否与模块接口匹配,被调用模块是否出现异常;

(4)检查表达式、语句的正确性,如检查容易产生歧义的表达式或运算符优先级;

(5)检查长量或全局变量使用的正确性;

(6)检查输入参数是否会有合法性检查;

(7)检查编程风格的规范性,如检查变量命名、代码、注释是否规范。

需要做的工作:

(1)提供被测对象;

(2)准备相关预期;

(3)阅读的代码及相关文档或模拟运行及阅读评审;

(4)报告发现的缺陷;

(5)执行回归测试。

这个过程中,测试人员的主要交付件:缺陷报告。少数情况下,阅读代码时,需要设计少量简单的测试用例。

- 从测试阶段或对象角度分
  • 单元测试 <对应> 编码阶段 [对象]单个模块或组件
  • 集成测试 <对应> 详细设计 [对象]一组模块或组件
  • 系统测试 <对应> 概要设计 [对象]整个软件系统
  • 验收测试 <对应> 需求分析 [对象]整个软件系统
- 从测试技术的角度分
  • 白盒测试
      关注的是与代码内部相关的缺陷,因此需要测试人员掌握一定的编程技术。

  • 黑盒测试
      关注的是与产品外部行为相关的缺陷,此时并不考虑产品的内部结构或运行逻辑。

  • 灰盒测试
      综合运用黑盒测试和白盒测试技术的一种混合测试方法。

- 从测试目标的角度分
  • 回归测试、功能测试、性能测试、Alpha测试、Beta测试
  • 压力测试、负载测试、安全性测试
  • 配置测试、安装测试、可用性测试、可恢复性测试等。

功能测试:针对软件功能需求进行测试,目的是检查应用程序的行为是否符合预期。

性能测试:用于验证系统是否满足规格说明的性能需求,例如容量和响应时间等。

Alpha测试:在软件发布前,有时会让小规模、有代表性的潜在用户使用软件,如果由开发机构人员来模拟潜在用户开展测试,则称为Alpha测试。

Beta测试:软件早期版本发布给具有代表性用户来测试,称为Beta测试。例如游戏内测。

回归测试:载软件版本修改后,重新测试,可应用于所有测试界别,目的是为了确保被修改组件的行为没有改变,不会造成意外结果。

压力测试:以设计的最大负载或超过最大负载来运行软件,用于确定系统运行的负载界限。

负载测试:通过测试系统在资源超负荷的情况下的表现,以发现设计上的错误或验证系统的负载能力。

安全性测试:用于验证产品是否符合安全需求定义和产品质量。用于测试系统在遭遇未授权访问,计算机犯罪和破坏时是否能保护自己。有时需要安全专家和黑客来破坏系统来检测系统安全性。

配置测试:当开发的系统需要应用于多种环境配置时,需要对每种配置进行测试,以检测系统运行行为是否符合规格要求。包含硬件配置和软件配置。

安装测试:在目标环境中通过安装来验证软件及其安装过程。目的是确保软件在正常或异常情况下都能进行安装。

可用性测试:用于评估系统使用的建议程度,交互是否具有人机工程学设计以及用户文档使用的有效性。

可恢复性测试:用于检验系统在灾难或意外宕机后的重启能力。

- 从测试执行方式的角度分
  • 手动测试
      人工执行测试。
  • 自动化测试
      软件测试的自动化,将以人为驱动的测试行为转化为机器执行的过程。目的是节省人力。时间或硬件资源并提高测试效率。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值