当前位置:文档之家› 软件测试与质量保证期末复习资料整理

软件测试与质量保证期末复习资料整理

复习提纲第一部分软件测试概述1. 软件测试的背景1.1 软件危机与软件质量软件质量保证SQA,软件测试ST;1.2 软件缺陷(分类,来源,累积和放大效应)●常见的软件缺陷:1.软件没有达到规格说明书表明的功能2.软件出现了规格说明书指明不会出现的问题3.软件没有达到规格说明书虽未指明,但应该达到的功能4.软件功能超出规格说明书指明的范围5.软件测试人员或者用户认为软件难以理解、不易使用、运行速度慢。

●原因:1.软件的需求规格说明书;2.软件的设计;3.代码的错误●累积和放大效应:前期的软件缺陷会在后期逐步扩大1.3 软件测试的意义为了发现软件缺陷,软件测试必不可少;开销占总成本的30%~50%;2. 软件测试的含义2.1 什么是软件测试是为了发现错误而执行程序的过程。

2.2 软件测试的目的发现问题;对质量或可接受性做出判断;2.3 软件测试的对象1.需求分析2.概要设计3.详细设计4.编码2.4 测试≠调试测试→发现错误→调试;这是一个交叉循环的过程;测试是一种检验,有一套完整的理论,不需要了解设计细节,有非程序设计者完成,且测试的设计和执行能够自动化;2.5 软件测试的特征●风险性——彻底测试程序是不可能的;●不修复原则——并非所有软件缺陷都需要修复;●群集现象——错误的集中;●寄生虫性——找到缺陷越多,残存的缺陷越多3. 软件测试的过程3.1 软件测试的生命周期需求规格说明→设计→编码→测试→缺陷分类→缺陷隔离→缺陷解决3.2 软件测试的步骤1. 制定测试计划2. 设计测试用例和测试过程3. 运行测试用例(核心)4. 评估测试结果3.3 测试用例=输入+预期输出3.4 通过维恩图理解测试用例——相交的地方尽可能大3.5 测试用例的设计–3.5.1 功能性测试(黑盒测试)●依据于软件的规格说明;●与软件的具体实现无关;●优:并行进行,测试用例与实现的改变无关;●缺:用例冗余度大;会有漏洞,不能发现多余缺陷;–3.5.2 结构性测试(白盒测试)●依据于程序实现;●利用程序内部的逻辑结构;●优:具有覆盖率指标;●缺:不能发现遗漏缺陷;4.错误与缺陷分类●以出现相应错误的开发阶段来划分;●以相应失效产生的后果来划分;●以解决难度来划分;●以不解决会产生的风险来划分5.软件测试的级别1.单元测试——详细设计信息,白盒测试为主;2.集成测试——概要设计信息,模块的组合测试;3.系统测试——软件需求;4.确认测试——依照需求规格说明书;5.验收测试——用户参与,黑盒测试;6.软件测试的分类●静态测试——不运行被测试程序;●动态测试——运行被测试的程序;●自动测试——利用自动化测试工具;●人工测试——人工走查和代码审查;第二部分黑盒测试1. 边界值测试 (书:第5章)•边界值分析(依据,含义,方法)●含义:针对各种边界情况设计测试用例;●依据:大量的错误是发生在输入或输出范围的边界上;●方法:以基于但却像和输入空间的边界值分析,设有n个输入变量,则对应有4n+1个测试用例。

●局限性:只适用于变量之间没有依赖的情况;不适用于布尔变量;•健壮性测试●含义:例外情况时的系统表现;n个变量对应6n+1个测试用例;•最坏情况测试●用例为边界值集合的笛卡儿积(5n个测试用例)•健壮最坏情况测试——7n个测试用例•特殊值测试——主观性和有效性•随机测试——使用随机数生成器,直到每种输出至少出现一次;2. 等价类测试 (书:第6章)•等价类测试的思想⏹依据:集合的划分,无冗余(不代表测试用例不冗余),完备性;⏹基本思想:①划分等价类;②从中选取测试用例,以覆盖所有的等价类;⏹关键:如何划分等价类;⏹特点:典型的黑盒测试方法•有效/无效等价类●有效等价类:合理的输入数据,是否实现了预期的功能;●无效等价类:无意义的输入数据,检验程序对于无效数据的处理;•强/弱,健壮/一般等价类测试●弱一般等价类:单缺陷假设,不考虑无效值,不完备●强一般等价类:多缺陷假设,不考虑无效值,不完备●弱健壮等价类:单缺陷假设,考虑无效值,不完备;●强健壮等价类:多缺陷假设,考虑无效值,完备;•基于输入/输出的等价类测试•等价类测试的经验•根据输入条件,划分等价类的原则●如果确知以划分的等价类中的各元素在程序中的处理方式不同,则应进一步划分成更小的等价类。

•等价类测试的步骤(案例)⏹建立等价类表;⏹生成测试用例,规定一个唯一的编号;⏹对有效等价类: 用一个测试用例覆盖尽可能多;⏹对无效等价类: 每个测试用例只覆盖一个;•不适合情况●输入条件之间存在依赖关系;●由多个输入条件的取值组合,决定是否执行某操作;3. 基于决策表测试 (书:第7章)•案例•特点⏹能够表示复杂逻辑关系;⏹在详细设计和测试阶段均可使用;⏹最严格的黑盒测试方法;•适用于:●逻辑很突出;●输入输出之间存在因果关系;4.因果图测试法,基于正交表的测试法(了解)●因果图测试法:考虑输入情况的各种组合,和输入情况之间的相互制约关系;●基于正交表的测试法:选出食量的,具有代表性的点;5、黑盒测试总结●如果变量引用的是物理量,可采用定义域测试和等价类测试;●如果变量时独立的,可采用定义域测试和等价类测试;●如果变量不是独立的,可采用决策表测试;●如果可保证是单缺陷假设,可采用边界值分析和健壮性测试;●如果可以保证是多缺陷假设,可采用最坏情况测试、健壮最坏情况测试、决策表测试。

●如果程序包含大量的异常处理,可采用健壮性测试和决策表测试;●如果变量引用的是逻辑量,可采用等价类测试用例和决策表测试;第三部分白盒测试1.逻辑覆盖分类及其含义●含义:根据一定的逻辑覆盖的目标以及程序内部的逻辑结构生成测试用例;●分类:◆语句覆盖——每个语句至少执行一次◆判定覆盖——对于每个判断,每个取真,取假分支至少经历一次,有可能查不出某个子条件的错误;◆条件覆盖——每个子条件的可能取值至少执行一次,不一定满足判定覆盖◆判定-条件覆盖——前两者的结合,有可能查不出某个子条件中的错误;◆条件组合覆盖——每个判断的所有可能的子条件取值组合至少执行一次,没有考虑多个判定之间的组合;◆路径覆盖——所有可能的路径;2.基本路径测试——将测试路径压缩在一定的限度内●控制流图一圈一个区域,圈外也算是区域;●从程序导出控制流图,遇到复合条件时的转换—复合条件改为单个条件的嵌套的判断;环路复杂性=V(G)= 边数E -节点数N + 2(或等于区域数)图矩阵(了解)——用矩阵来计算控制流图,有方向的;适合测试控制密集型的程序。

3.数据流测试●数据流问题定义变量:值被改变;使用变量:使用了内存中的变量变量的定义-使用路径定义节点使用节点:①谓词使用(判断语句);②计算使用;定义-使用路径:从定义节点到使用节点;定义清晰路径:定义-使用路径中没有其他定义节点;覆盖路径时,不考虑即是定义又是使用的节点;适合测试计算密集型和控制密集型的程序路径覆盖准则:①全定义一使用路径准则——包含全部的定义清晰路径②全定义准则——每个定义节点到一个使用的定义清晰路径③全使用准则——定义节点到每个使用节点的定义清晰路径④全谓词使用/部分计算使用准则——每个定义节点到所有谓词使用节点的定义清晰路径⑤全计算使用/部分谓词使用准则——每个定义节点到所有计算使用节点的定义清晰路径●基于程序片的测试(了解)影响某个变量在某个点上的取值的一组程序语句4.用白盒测试的覆盖率指标评估黑盒测试覆盖 C(M,S) = 所覆盖的路径数n / 总路径数s冗余 R(M,S) = 测试用例个数m / 总路径数s净冗余 NR(M,S)= 测试用例个数m / 所覆盖的路径数n第四部分 软件测试的级别1. 确认与验证的区别确认:关注最终产品,与用户需求相一致;验收:关注各个开发阶段;与当前步骤的规范相一致;2. 确认测试(黑盒测试)含义——是否满足用户的需求依据——说明书的确认准则;α测试:与β测试:的区别Α测试由若干用户或公司内部人员进行测试;Β测试由最终用户进行测试;3. 验收测试、回归测试的含义验收测试:主要由用户执行,检查是否符合验收标准;回归测试:在软件被修改之后,重新执行以前执行过的测试用例;(bug 被修复后可能会产生新的bug );4. 单元测试,含义——对源代码的每一个单元和模块进行测试,以发现模块内部的错误白盒为主,黑盒为辅;错误的检查范围:● 模块接口测试(数据流的检查,参数,返回值,全局量);● 局部数据结构测试(与变量相关的错误,数据类型,数组越界和地址异常); ● 边界测试(边界值、运行时间);● 错误处理测试(出错的描述、显示、处理);● 路径测试(基本执行路径,最常见的错误执行路径);测试方法:①静态测试;②动态测试:驱动模块——模拟调用模块;桩模块——模拟被调用模块;5. 集成测试——找出模块间的接口和交互错误基于功能分解树的集成(关注静态结构)● 分类⎪⎪⎩⎪⎪⎨⎧⎪⎩⎪⎨⎧→→自顶向下)自底向上,写混合渐增式集成(读层开始,需驱动模块,自底向上集成(从最底到桩模块,需回归测试自顶向下集成(主模块渐增式集成)性很小,很难定位错误一次性运行成功的可能一次性集成(●比较优点缺点一次性集成可以说没有很难定位错误自顶向下集成较早发现控制方面的错误过多的回归测试,大量桩模块(模块数-1)主控部分出错要导致返工自底向上驱动模块(总-底层),并行测试多个模块混合渐增式桩和驱动模块少定位缺陷的难度(子系统一次性集成基于调用图的集成(模块之间的调用关系)●分类:①成对集成;②邻居集成;●缺点:缺陷难以隔离和定位,回归测试量大;基于路径的集成(关注模块间的交互)模块可执行路径——始于一个源节点,终于一个汇节点;MM-路径——起点:主模块的源节点,终点:消息静止点;从主模块开始,到主模块结束;与系统测试无缝连接,面向对象软件案例集成测试的组织与实施(了解)6.系统测试含义——由确认测试的软件和系统的其他成分结合在一起,进行集成测试和确认测试常见的系统测试(理解定义)●功能测试——检验功能的实现;●性能测试——性能是否达标;●负载测试——边界(满负载)的情况下的性能问题●压力测试——资源紧缺的情况下的功能或性能问题;●配置测试——保证硬件的组合多样化;●兼容性测试——两个软件之间的交互;●安全性测试——安全性和保密性是否发挥作用,漏洞;●可靠性测试——平均失效时间,因故障而停机时间;●恢复测试——故障后的恢复情况,不对系统造成任何伤害;●安装测试——安装过程中出现的错误;●易用性测试——使用的合理性和方便性;●文档测试——系统文档的齐全、多余和规范例子第五部分软件测试工具软件测试工具的常见功能⏹测试计划和管理⏹源代码控制⏹自动测试用例生成;⏹标准测试用例包⏹内存泄露测试⏹测试框架⏹捕获、回放与比较(无人照料、机械重复测试)⏹模拟负载测试⏹模拟并发测试⏹测试覆盖率分析优点●测试流程和数据的标准化、规范化;●与项目计划、开发计划集成;●测试用例、缺陷报告、缺陷分析与测试计划集成;●测试文档管理●缺陷跟踪和管理、测试评估;●测试脚本和测试用例可以重复使用、重新编辑;●测试数据与测试过程/脚本分离;●适合回归测试与压力测试、负载测试、疲惫测试;●管擦程序内部信息(对象属性、方法,内部数据变化;缺点⏹费用风险⏹集成风险⏹银弹风险——没有任何技术或管理上的进展,能够独立地许诺十年内使生产率、可靠性或简洁性获得数量级上的进步。

相关主题