软件质量保证与测试

所谓教材就是把一些简单易懂的词语,扩写成一堆谁也看不懂的句子。

一、概述

计算机软件是在计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文件的完整集合。

落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题得到现象,这就是软件危机

软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。

一般软件生存周期包括问题的定义软件开发软件测试软件使用与维护等几个阶段。
问题的定义:可行性研究、需求分析。确定软件系统的工程需求。
软件开发:设计,概要设计、详细设计。实现,也称为编码。
软件测试:整个测试过程分为,单元测试、集成测试、系统测试、验收测试,四个阶段进行。
软件的使用与维护:。

软件过程模型
瀑布过程模型、螺旋过程模型、增量过程模型、快速原型过程模型、敏捷过程模型。

软件错误是指在软件生存周期内的不希望或不可接受的人为错误,软件错误导致软件缺陷的产生。
软件缺陷是存在于软件(文档、数据、程序)之中的不希望出现或不可接受的偏差,软件缺陷导致软件在运行于某一特定条件时出现软件故障,这时软件缺陷被激活。
软件故障是指在软件运行过程中产生的不希望出现或不可接受的内部状态,对软件故障若无适当措施(容错)加以即使处理,就会使软件失效。
软件失效是指软件在运行时产生的不希望出现或不可接受的外部行为结果。

软件质量是与软件产品满足明确或隐含需求的能力有关的特征和特性的总和。
1. 能满足给定需求的特性。
2. 具有所期望的各种属性的组合的程度。
3. 能满足用户综合期望的程度。
4. 软件的组合特性。

“软件满足规定或潜在用户需求的能力”要从软件的内部、外部和使用中的表现来衡量。

软件测试是为了发现错误而执行程序的过程。
定义:使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别。

软件测试归根结底是为了保证软件质量。

软件测试的目的

测试是一个程序执行的过程,其目的在于发现错误。
一个好的测试用例很可能会发现至今尚未察觉的错误。
一个成功的测试是发现至今尚未察觉的错误的测试。

软件测试的原则

尽早测试
全面测试
全过程测试
独立的、迭代的测试
Pareto原则
对测试出的错误结果一定要有一个确认的过程
制定严格的测试计划
完全测试是不可能的,测试需要终止
注意回归测试的关联性
妥善保存一切测试过程文档

软件测试过程模型

V模型
W模型
X模型
H模型

软件测试的分类

按测试方式分类
静态测试
动态测试

按测试方法分类
白盒测试
黑盒测试
灰盒测试

按测试过程分类
单元测试
集成测试
系统测试
验收测试

按测试目的分类
功能测试
健壮性测试
接口测试
性能测试
强度测试
压力测试
用户界面测试
安全测试
可靠性测试
安装/反安装测试
文档测试
恢复测试
兼容性测试
负载测试

软件测试流程

  1. 制定测试计划
  2. 设计测试方案
  3. 测试准备和测试环境的建立
  4. 执行测试
  5. 测试评估:测试评估主要包含缺陷评估、覆盖评测和质量评测
  6. 测试总结

软件测试计划是描述测试目的、范围、方法和软件测试的重点等内容的文档。

二、技术

黑盒测试:已知产品的功能设计规则和用户手册,可以测试验证每个功能是否都实现、每个实现了的功能是否符合要求,以及产品的性能是否满足用户的要求。
白盒测试:已知产品的内部工作过程,可以通过测试验证每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。

白盒测试

白盒测试是一种被广泛使用的逻辑测试技术,也称为结构测试或逻辑驱动测试。
白盒测试的对象基本上是源程序,是以程序的内部逻辑为基础的一种测试技术。

A. 静态测试

代码检查法
1. 桌面检查:桌面检查是指程序设计人员对源程序代码进行分析、检查,并补充相关的文档,发现程序中的错误。
2. 代码审查:代码审查一般由程序设计人员和测试人员组成审查小组,通过阅读、讨论,对程序进行静态分析。
3. 走查:走查一般由程序设计人员和测试人员组成审查小组,通过逻辑运行程序,发现问题。

静态结构分析法
1. 通过生产各种图表,来帮助对源程序的静态分析:符号交叉引用表、变量交叉引用表、子程序(宏、函数)引用表、等价表、常数表。
2. 静态错误分析:类型和单位分析、引用分析、表达式分析、接口分析。

B. 程序插桩

程序插桩是借助向被测程序中插入操作,来实现测试目的的方法,即向源程序中添加一些语句,实现对程序语句的执行、变量的变化等情况进行检查。

C. 逻辑覆盖

逻辑覆盖的类型
语句覆盖:设计若干个测试用例,运行被测试程序,使得每一条可执行语句至少执行一次。
判定覆盖:设计若干个测试用例,运行被测试程序,使程序中每个判断的取真分支和取假分支至少执行一次。
条件覆盖:设计若干个测试用例,运行被测试程序,使程序中每个判断的每个条件的每个可能取值至少执行一次。

D. 基本路径测试

基本路径测试的步骤
1. 画出程序控制流程图
2. 计算程序环路复杂性:设E为程序控制流程图的边数,N为图的节点数,则定义环路的复杂性为V(G)=E-N+2。
3. 确定独立路径集合

黑盒测试

黑盒测试也称为数据驱动测试,在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口处进行测试。

功能测试

  1. 等价类划分
  2. 边界值分析方法
  3. 错误推测法
  4. 因果图法

非功能测试

三、过程

单元测试

单元测试的定义

单元测试是对软件设计的最小单位——模块进行正确性检验的测试工作,主要测试模块在语法、格式和逻辑上的错误。

“单元”是软件里最小的、可以单独执行编码的单位,单元选择的依据如下
1. 单元必须是可测的。
2. 单元的行为或输出是可观测的。
3. 有明确的可定义的边界或接口。

单元测试的主要任务

模块接口测试
模块局部数据结构测试
模块中所有独立执行路径测试
各种错误处理方式
模块边界条件测试

集成测试

集成测试的定义

将经过单元测试的模块按设计要求把它们连接起来,组成所规定的软件系统的过程称为“集成”

集成测试是在单元测试的基础上,测试将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中,各部分功能是否达到或实现相应技术指标及要求的活动。

集成测试实施方案

非增量式集成测试
增量式集成测试:自顶向下增量式集成测试、自底向上增量式集成测试

系统测试

系统测试的定义

系统测试是指将通过集成测试的软件系统,作为计算机系统的一个重要组成部分,与计算机硬件、外设、某些支撑软件的系统等其他系统元素组合在一起所进行的测试,目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或矛盾的地方。

验收测试

回归测试

你可能感兴趣的:(软件工程)