软件测试的艺术_读书笔记(五)

第四章  更高级别的测试

1.软件开发过程

当程序无法实现其最终用户的要求的合理功能时,就发生了一个软件错误

软件开发过程 :沟通有关最终程序的信息,并将信息从一种形式转换到另一种形式。由于信息的转化,大部分软件错误都可以归结为信息沟通和转换时发生的故障、差错、干扰。

解决办法 :

  1.  在产生需求和设计的时候每一步的输出和上一步要的结果做验证,验证有不一致或者不清楚的地方,需要反馈到这一步设计过程中解决
  2. 在不同阶段采用不同的测试方法,将测试过程针对每一步的输出和原来的期望做对比,多个测试过程可以并行;

不同测试阶段的定义 :

  • 模块测试:为了发现程序模块与接口规格说明书之间的不一致
  • 功能测试:为了证明程序未能符合外部规格说明书的功能要求
  • 系统测试:为了证明软件产品与其初始目标不一致
  • 验收测试:为了验证软件与用户确认需求的不一致

2.功能测试

功能测试 : 发现程序与外部规格说明书之间存在不一致的过程

外部规格说明书: 一份从最终用户的角度对程序行为的精确描述

功能测试主要使用黑盒的测试方法,对规格说明书的进行分析加以提炼,分析用户使用场景,输出测试用例,

注意:

  1. 跟踪那些功能暴露出的错误最多,与之关联的功能可能还存在着更多尚未被发现的错误
  2. 对无效和未预想到的输入给予足够的重视
  3. 目的:为了暴露程序的错误以及发现程序与规格说明书中的不一致之处,而不是为了证明其符合规格说明书

3.系统测试

系统测试 : 将系统或者产品与其初始目标进行比较,寻找不一致的过程

  1. 系统测试并不局限与系统,如果产品是一个程序,就是将这个程序作为整体判断是否满足其目标
  2. 根据定义,如果一个产品没有书面的,可度量的目标,系统测试也就无法进行

系统测试的问题:

  1. 外部规格说明书,不能作为系统测试用例的基础,
  2. 目标文档对系统的描述不能表示测试用例,有可能含糊而有用的描述

解决办法 :

  1. 分析目标文档来设计测试用例
  2. 分析用户文档来阐明测试用例

系统测试 : 系统测试采用了多种不同的测试用例设计方法,不是描述一项技术,而是讨论不同类型的系统测试用例

系统测试的分类: 根据实际情况选取

序号

 分类

 说明

1  能力测试  确保程序的目标功能实现
2 容量测试  发现程序处理大容量时的程序异常,容量的大小
3 强度测试  发现大规模负载,高强度不间断持续的数据处理中的异常
4 可用性测试  评估最终用户在使用软件并与软件交互的可用性问题

5

安全性测试  试图攻破程序的安全防线
6

性能测试

评估系统的响应时间和吞吐量瓶颈
7 配置测试  检查程序在默认的配置上能否正常运行和配置参数的修改,生效
8  存储测试  确保程序正确处理对存储的需求,物理存储 和数据库存储,
9

兼容性/转换测试测试

评估新版本能否兼容老版本
10 安装测试  确保程序在支持的平台能够安装成功
11 可靠性测试  评估程序是否能够达到规格说明书的运行时长和平均故障要求
12 可恢复性测试  测试系统恢复相关功能是否按照设计要求
13 服务/可维护性测试  评估系统是否有良好的数据处理、日志系统,监控系统方便运维
14

文档测试

校验所有用户文档是否准确
15 过程测试  对软件系统操作或维护所需涉及的流程进行评估和确定

3.1能力测试

定义 : 对比用户提供文档,判断程序是否满足文档中要求的能力,

注意 : 区别于功能测试,功能测试的对需求文档进行检查

3.2容量测试

定义 : 证明程序能够处理大容量数据的最大能力,超过这个容量系统奔溃;

3.3强度测试

定义 : 短时间内达到数据或操作的数量峰值, 数据浪涌, 强度测试相对,容量测试考虑时间因素,

注意 : 应该分析软件的用户群,根据实际情况做强度测试,体现出访问站点的最大人群情况

3.4可用性测试

定义 : 又叫用户体验测试,人机交互测试

3.5安全性测试

定义 : 软件使用过程,不能有数据的泄露,被窃取,不能被黑客攻击,导致系统奔溃;

3.6性能测试

定义 : 在特定的负载和配置的环境下,程序响应时间和吞吐量,满足一定的目标

3.7性能测试

定义 : 程序有存储目标,需要检查存储文件的容量,临时文件的大小,磁盘存储溢出的情况

3.8配置测试

定义 : 大型程序有很多配置参数,不同的配置对应不同的运行环境,测试配置是否生效和满足预期情况

3.9兼容性/转换测试

定义 : 兼容性测试有新版本兼容旧版本,新系统兼容旧系统转换过来的数据, 不同中断设备之间的兼容

3.10安装测试

定义 ;  有些软件的安装特别复杂,测试安装在不同系统或者设备上能否成功是测试的一个重要部分

3.11可靠性测试

定义 : 对软件可靠性进行定量的评估或验证,为了达到和验证软件的可靠性定量要求而对软件进行的测试 , 发现软件中可能发生的故障,对这些故障做可靠性方案设计,保证软件可靠,任何情况下能够提供服务;

3.12可恢复性测试

定义 : 部分软件有可恢复性测试要求,如果发生某些位置情况可以恢复到初始状态或者指定状态的可恢复性测试

3.13服务/可维护性测试

定义 : 可维护性目标是指具有运维功能的提供,方便定位,方便调试,方便分析问题,能够快速修复系统或程序的测试;

3.14文档测试

定义 :检查用户文档的正确性,接口文档的正确定

3.15过程测试

定义: 较大的系统都会提供操作文档,要按照操作文档的提示,对提供的操作过程进行测试,因为实际操作的可能不专业,所以过程要写的非常清晰和正确

4.验收测试

定义: 验收测试一般由客户来完成验收测试,不是开发机构的责任

注意 : 测试人员已经从客户角度做了完整的测试,客户可能仍然能测试出问题

5.安装/升级测试

定义 : 发现软件安装中可能会出现的问题,软件安装时软件发布必须提供的内容,确保不能出错

6.测试计划与控制

问题1 : 在测试过程中最常出现的错误是默认不会发现软件缺陷,证明软件满足功能,这个错误带来的结果是对计划投入的资源估计不足,容易造成计划不准确?

问题2:团队对软件测试的定义有误,  测试的目标是发现错误(团队不一定都有这样的共识),上线有可能出现问题,造成重新测试的情况?

一个良好的测试计划应该包括:

目标  定义每个测试阶段的目标明确测试范围
结束准则 制定测试结束的标准
进度 测试设计,测试脚本编写,测试执行到完成的具体时间安排
责任  每个阶段由谁来设计,编写和执行测试用例,对测试结果负责
测试用例库和标准  公用测试工具库或者直接可以使用的开源库等
测试工具  必须的测试工具,如果不具备可能还需要采购
环境准备时间  开始测试之前需要准备的时间,软件的安装,机器的采购等。
配置  硬件的配置和软件配置说明文档,尽量详细。
集成  测试过程中一般是先模块测试,最终会集成测试,保证测试测试质量
跟踪步骤  测试过程中的缺陷跟踪,进度跟踪等,风险控等,需要跟踪测试过程中的方方面面
调试步骤  测试过程中提出的缺陷需要跟踪修改,听过调试定位问题,发现问题,再去解决问题
回归测试  对程序做了优化和修改之后进行完整的回归测试,判断修改是否引起了其他问题和优化确实已经实现。

猜你喜欢

转载自blog.csdn.net/LoveG_G/article/details/114122749