第一章 软件测试基础
1.软件测试的定义:
软件测试就是对软件产品进行验证和确认的过程,是软件质量保证的关键元素,代表了需求规格书,设计和编码的最终检查。
2.软件测试的目标:
尽快尽早地发现软件产品在整个开发生命周期中存在的各种缺陷,以评估软件的质量是否达到发布的水平。
3.软件测试不能确保没有缺陷,只能尽早尽快找到至今没有被发现的缺陷的原因:
(1)测试的覆盖率几乎不可能达到100%
(2)去除现有的缺陷可能会产生新的缺陷,同时系统的需求也在不断变化,这种需求的不稳定性也将带来新的缺陷
(3)测试工程师对产品的理解不能完全代表用户的理解,由于两者之间的差异,这意味着可能存在测试工程师没有发现的缺陷
(4)测试的模拟环境不能完全代表用户的实际使用环境,由于两者之间的差异,这意味着可能存在测试工程师没有发现的缺陷
4.软件测试的原则
(1)可追溯性
。所有的测试都应该追溯到用户需求
(2)尽早开展预防性测试
。测试工作进行的越早,越有利于提高软件的质量和降低软件的质量成本
(3)投入/产出原则
。在满足软件预期的质量标准时,应确定质量的投入/产出比
(4)回归测试
。修改缺陷后,应集中对软件的可能受影响的模块/子系统进行回归测试,确保修改缺陷后不引入新的软件缺陷
(5)80/20原则
。测试实践表明80%左右的缺陷主要来自20%左右的模块/子系统,因此应花较多的时间和代价测试那些具有更多缺陷数目的程序模块/子系统
(6)设立独立的测试机构或委托第三方测试
。
5.软件缺陷的定义:
是软件产品预期属性的偏离现象
,它包括检测缺陷(软件在进入用户使用之前被检测出的缺陷)和残留缺陷(软件发布后存在的缺陷,用户安装前未被检测出的缺陷和已被发现但还未被修复的缺陷)
6.软件故障的定义:
用户使用软件时,由于残留缺陷引起的软件失效症状
7.软件缺陷状态分类:
(1)已提交
。已提交的缺陷确认
(2)已确认
。确认提交的缺陷,等待修复
(3)已拒绝
。拒绝已经提交的缺陷,不需修复或不是缺陷或重新提交
(4)已修复
。缺陷被修复,确认被修复的缺陷
(5)已关闭
。已经被测试,将其关闭
8.软件缺陷来源分类
(1)需求
。由于需求的问题引起的缺陷
(2)架构
。由于构架的问题引起的缺陷
(3)设计
。由于设计的问题引起的缺陷
(4)代码
。由于编码的问题引起的缺陷
(5)测试
。由于测试的问题引起的缺陷
(6)集成
。由于集成的问题引起的缺陷,在测试阶段发现的缺陷
9.测试用例的定义
测试用例是为某个特定测试目标而设计的,它是测试操作过程序列,条件,期望结果及相关数据的一个特定的集合
,包括
测试目标
:回答为什么测试,测试被测件的功能,性能,兼容性,安全性
测试对象
:回答测什么,如对象,类,函数,接口
测试环境
:回答测试用例运行时所处的环境,包括系统的软硬件配置和设定等要求
测试前提
:回答测试在满足什么条件下开始测试
输入数据
:回答运行测试时需要运行哪些测试数据
操作步骤
:回答运行测试用例的操作步骤序列
预期结果
:回答按操作步骤序列运行测试用例时,被测件的预期运行结果
- 为什么要用测试用例:
由于在测试时不可能进行穷举测试,所以应以最小的财力和物力投入
,在最短时间内以最低成本尽快发现软件缺陷
,提高测试效率,节约测试时间
11.软件测试分类:
1.按照开发阶段:
单元测试
:又称模块测试,目的在于检查每个单元能否正确实现详细设计说明中的功能,性能,接口和设计约束等要求,发现单元内部可能存在的各种缺陷
集成测试
:又称组装测试,主要测试单元之间的接口关系,逐步集成为符合概要设计要求的整个系统
系统测试和确认测试
:在真实或模拟系统运行的环境下,为验证和确认系统是否达到需求说明书规定的要求,而对集成的硬件和软件系统进行的测试
验收测试
:按照项目任务书或合同,供需双方约定的验收依据文档进行的对整个系统的评测,决定是否接受或拒收系统
2.按照测试实施组织分类
开发方测试,用户测试,第三方测试
3.按照测试技术
静态测试和动态测试(白盒测试,黑盒测试,灰盒测试)技术
第二章 软件测试模型与过程
1.软件测试模型主要有V模型,W模型,X模型,H模型
等
V模型
:强调了在整个软件项目开发中需要经历的若干个测试级别,并与每一个开发级别对应,忽略了测试对象不应仅仅包含程序,没有明确指出对需求,设计的测试
W模型
:补充了V模型中忽略的内容,强调了测试计划等工作的先行和对系统需求和系统设计的测试,与V模型一样,没有对软件测试流程进行说明
H模型
:强调测试是独立的,只要测试准备完成,就可以执行测试。
第三章 软件测试管理
1.有效的软件测试项目团队具有以下特征:
(1)对软件项目的测试目标有清晰的理解
(2)对每位测试工程师的角色和职责有明确的期望
(3)以目标为导向
(4)高度的互助合作
(5)高度的信任
2.软件测试团队有效工作的障碍
(1)目标不明确
(2)角色和职责不明确
(3)项目结构不健全
(4)工作缺乏投入
(5)沟通不够
3.从以下方面来挑选优秀的测试工程师
(1)计算机专业技能:
测试专业技能
软件编程技能
掌握网络,操作系统,数据库,中间件等计算机基础知识
(2)行业领域知识
(3)个人素养
专心
耐心
责任心
自信心
(4)团队协作能力
4.软件测试计划的目标
为了解决项目的测试目标,任务,方法,资源,进度和风险等问题
5.测试计划需要解决的问题
(1)测试的目标和范围
(2)测试工期的估算,进度安排和资源配置
(3)测试风险评估
(4)确定不同测试阶段的过渡条件
(5)测试版本的管理
第四章 黑盒测试
1.黑盒测试的主要方法:
边界值测试,等价类测试,基于判定表的测试,因果图,正交实验测试法,错误推测法
2.例如,二元函数f(x,y),要求输入变量x,y满足:x属于[1,12],y属于[1,31]
采用边界值分析法设计测试用例:
最小值,略大于最小值,最大值,略小于最大值,正常值
对于有n个输入变量的程序,边界值分析会产生4n+1个测试用例
<1,15> <2,15> <11,15> <12,15> <6,15> <6,1> <6,2> <6,30> <6,31>
3.健壮性边界测试
健壮性:在异常情况下,软件还能正常运行的能力
测试用例:略小于最小值,最小值,略大于最小值,最大值,略小于最大值,略大于最大值,正常值,6n+1各测试用例
4.等价类的特点
(1)完备性
:划分出的各个等价类的并使输入/输出的全集,即程序的定义域/值域
(2)无冗余性
:各个等价类是互不相交的一组子集
(3)等价性
:划分的各个子集是由等价关系决定的,即各个输入数据对于揭露程序中的错误都是等效的。
5.等价类测试用例:p53页
某城市电话号码由三部分组成:
地区码——空白或4位数字
前缀——为三位数字,但不能以0或1开头
后缀——4位数字
第五章 白盒测试
1.白盒测试的主要方法:逻辑覆盖测试,基本路径测试,数据流测试,程序插装,域测试
2.逻辑覆盖测试:
语句覆盖:每条语句至少执行一次
判定覆盖:每个判定的每条分支至少执行一次
条件覆盖:每个判定中的每个条件,分别按真假至少各执行一次
判定-条件覆盖:同时满足判定覆盖和条件覆盖的要求
条件组合覆盖:求出判定中所有条件的各种组合值
路径覆盖:每条可能的路径至少执行一次
第十二章 性能测试实验
1.LoadRunner的组成
(1)脚本生成器
:用于创建脚本,提供了基于录制的可视化图形开发环境,可以方便简洁地生成用于负载的性能脚本
(2)控制器
:用来设计,管理和监控负载测试的中央控制台,它负责对整个负载的过程进行设置,指定负载的方式和周期,同时提供了系统监控的功能
(3)压力生成器
:负责将VuGen脚本复制成大量虚拟用户,对系统生成负载
(4)结果分析工具
:用于分析场景
2.LoadRunner测试原理
(1用户行为模拟
不同用户使用不同的数据
多用户并发操作
请求间的延迟
用户请求间的依赖关系
(2)性能指标监控
请求响应时间监控
服务器处理能力监控
服务器资源利用率监控
(3)性能调优
3.LoadRunner测试流程
5个阶段:
规划性能测试
:定义性能测试要求,制定完整的测试计划,定义明确的测试任务
创建Vuser脚本
:使用VuGen录制最终用户活动,生成测试脚本,以便在执行性能测试时能以虚拟用户的方式模拟真实用户的业务操作行为。
定义场景
:在LoadRunner Controller中,定义测试期间发生的事件,设置负载测试环境,业务流程组合和虚拟用户数量
执行场景
:由LoadRunner Controller运行,管理并监控负载测试
分析结果
:使用LoadRunner Analysis分析在负载测试期间生成的性能数据