1、2.5.4.1 谁负责软件质量,Tester or SQA ? SQA负责软件的质量 防止软件缺陷的出现 保证软件达到一定的质量和可靠性等级 SQA如何做到 对项目进行近乎完全的控制 建立标准和方法论,监视和评价开发过程 拥有决定产品何时准备发布的授权,SQA与软件测试的关系,SQA 是管理工作、审查对象是流程、强调以预防为主 测试是技术工作、测试对象是产品、主要是以事后检查SQA指导、监控开发和测试活动 测试为SQA提供依据 Tester的职业发展方向 - SQA,3.1 软件测试的基本方法,根据测试方法论,可分为 黑盒测试 白盒测试 灰盒测试 根据测试方式,可分为 静态测试 动态测试,3.
2、1.2 白盒测试 White-box testing,了解内部逻辑结构和处理过程,测试其变量状态、逻辑结构、运行路径等; 用于软件验证;要求尽量做到全覆盖 风险:受代码的影响,3.1.1 黑盒测试 Black-box testing,把事物看成一个整体,不考虑其内部结构和运行机制,通过分析其输入、输出以及周边条件来验证所应具备的功能是否正确实现 主要用于软件功能测试、确认测试,白盒测试常用方法,基于覆盖的测试 语句覆盖 判定(分支)覆盖 条件覆盖 判定/条件覆盖 条件组合覆盖 路径覆盖 循环覆盖,3.1.3 静态测试和动态测试,静态方法(不需运行程序) 检查:需求定义;组件质量、代码质量(依标
3、准、规范)、过程标准 思想:早测试;过程决定质量 效益:好的静态测试,可发现大部分的Bug 动态方法(通过运行程序来检验) 检验系统实际运行的情况 需要做测试用例的设计,3.2 软件测试的流程,软件测试贯穿软件产品开发的整个生命期 按阶段进行测试是一种基本的测试策略,RAD模型生命期示意图,项目计划,需求分析,概要设计,详细设计,软件编码与单元测试,软件计划及审查 软件安装测试计划,软件规格书及审查 系统测试计划,概要设计书及审查 功能测试计划,详细设计书及审查 集成测试计划,集成测试,功能测试,系统测试及验收测试,安装测试,测试活动网络计划图,项目 计划,系统 分析,概要 设计,详细 设计,
4、编代码 单元测,集成 测试,功能 测试,系统 测试,验收 测试,验收测试计划,验收测试用例设计,系统测试计划,系统测试用例设计,功能测试计划,功能测试 用例设计,集成测试计 划及集成测 试用例设计,3.7.1 软件测试的工作流程,制定测试计划 设计测试用例 执行软件测试 软件缺陷记录及跟踪管理 测试结果分析和质量报告,3.7.3 软件测试用例,测试用例是软件测试的核心 何谓测试用例 Test Case 是按一定顺序执行的与测试目标相关的测试活动的描述;是确定“怎样”测试 有明确的输入描述和对输出的预期描述 最小的测试执行单元; 谁来写测试用例,3.7.3.1 测试用例特点,可复用 重复使用,测
5、试的稳定性 有效性 良好的用例不需要穷举而覆盖尽量大 管理性 测试用例的通过率是代码质量的指标 基础性 新手能马上使用,软件测试用例举例,依据相关规格说明书 考虑正确的输入 考虑错误的输入 考虑异常的输入 考虑触发错误的条件(输入)测试用例范例,4.1 软件测试方法概述,4.2 测试产品说明书,静态、黑盒测试 测试时机 尽早介入(软件需求分析、系统设计阶段) 测试目的 在软件投产之前找出缺陷 产品说明书(需求规格书)很重要 确保最终产品符合客户要求 通过说明书,完整描述产品,有一致的理解,4.3 闭着眼睛测试软件,动态、黑盒测试 测试方式 输入、接受输出、检验结果(行为测试) 应用领域 集成测
6、试、功能测试、系统测试、验收测试等 精心组织的有计划的测试 应采用目标明确的结构化方法 认真设计测试用例;精心选择测试用例集会 测试依据 - 软件产品说明书,4.3.1 通过测试与失败测试,软件测试的两个基本思路 通过测试 软件能做什么 验证基本功能是否实现 失败测试 软件有哪些缺陷 考验软件能力、破坏性试验 哪个为主、先做哪个?,4.3.2测试技术之1等价分配,软件测试员的最重要任务 设计、选择适合的测试用例-以有限的用例覆盖被测试的所有情况 如何做到-等价分配 分步骤把过多(无限)的测试用例减少到同样有效的小范围的过程 等价类别(区间)-测试相同目标或暴露相同软件缺陷的一组测试用例 等价分
7、配的原则-足以覆盖测试目标,4.3.3测试技术之2数据测试,软件的两个基本要素 数据 + 程序 对数据进行软件测试 输入、输出、中间值的检查 对数据的等价分配 边界条件 次(内部)边界条件 空值 无效数据,4.3.4测试技术之3 状态测试,软件的两个基本要素 测试软件的逻辑流程 通过不同的状态验证程序的逻辑流程 软件状态-软件当前所处的情况或者模式 程序的状态和分支是结合的(相当的多!) 如何有效地测试 - 等价分配状态和分支 状态转换图,4.3.5测试技术之4 因果图方法,根据数据之间的关系,分析因果关系,确定等价类 例: 两列数据,要求第一列为A或B,同时第二列为数字 如第一列不满足,则提
8、示:L 如第二列不满足,则提示:M,黑盒测试技术要综合运用,等价类 有效的、无效的;合法的、不合法的数据 边界值 数据的极限、边界情况 状态图、功能图 考虑各种条件的组合 错误推测方法 利用经验和历史错误数据,4.4 检查代码,静态、白盒测试 不必执行程序,以找出软件缺陷 结构分析-审查软件设计、体系结构和代码 形式:代码走查、审查、评审会 应用领域 主要在单元测试 检查代码的目的 尽可能早地发现软件缺陷 为黑盒测试用例的设计提供思路,4.5 戴上X光眼镜检查软件,动态、白盒测试 利用查看代码功能和实现方式得到的信息来确定哪些要测试,那些不要测试,如何展开测试 - 结构测试 应用领域 单元测试
9、、集成测试 测试内容 直接测试 控制软件-强制赋值、干预执行 评估覆盖、调整测试 测试工具 开发环境之调试器,4.5.2 黑盒与白盒相结合,通过黑盒 建立一个初步的、中立的测试用例 通过白盒 获得系统实现方面的信息 依此对等价分配作进一步的提炼、调整 大幅减轻测试工作 增加没有考虑到的测试 查找内部边界条件 应用举例 先黑盒、后白盒,4.5.3 数据范围分析,数据流跟踪 通过调试器,了解数据的初值、中间值、结束值 找到更多的次边界 计算公式 了解计算过程、避免出现溢出或间接异常 强制赋值 通过强制赋值,构建某种不易出现的状态,以测试该状态下的软件运行情况,4.5.4 代码范围分析,需要测试程序
10、的状态 需要测试程序的流程 进入和退出每一个模块/函数 执行每一行代码 进入每一个分支结构 跟踪每一条逻辑判断 要求: 通过可控制的测试用例,实现代码的全覆盖,测试技术在各测试阶段中的应用,软件分析设计 静态黑盒 单元测试 静态白盒、动态白盒 集成测试 动态白盒、动态黑盒 功能测试、系统测试、验收测试、安装测试 动态黑盒,测试技术的综合应用,黑盒测试 更广些、更高些、更浅些 中医方法 白盒测试 更深些、更专些 西医方法 根据具体情况、因事而异,6.1 执行测试,对测试用例的组织和跟踪 已经有的测试用例有哪些 计划执行哪些测试用例(测试用例集合) 计划执行多少个测试用例,执行需要多长时间 执行测
11、试用例时,哪些通过了、哪些失败 在失败的测试用例中,哪些在上次执行时也失败了 上次执行测试案例时通过的百分比是多少 形成两份报告 测试执行情况报告 软件缺陷报告,6.3 让别人重视自己的缺陷报告,编写缺陷报告的基本原则 尽快报告软件缺陷 修复风险随时间而大大增加 有效描述软件缺陷 短小、单一、明显和通用、再现 在报告时不做评价 陈述事实、对事不对人 补充完善缺陷报告 保存好缺陷描述、并跟踪缺陷、补充进展信息,6.3.3 协调测试与调试职责,基于缺陷的职责协调 再现缺陷所需的最少步骤 缺陷是否成立(缺陷或测试员的错误) 产生缺陷的外部因素 产生缺陷的内部因素 如何在不产生新缺陷的条件下修复该缺陷
12、 该修复是否经过调试、单元是否经过测试 测试是否被关闭(确认及回归测试),4.4 软件缺陷的生命期,新建缺陷 - 测试员 审查缺陷报告 - 项目经理 修复缺陷 - 程序员 验证修复 - 测试员 关闭缺陷 - 测试员三方共同协作、对缺陷严密监控 由测试员打开、由测试员关闭,打开(T),修复(PG),关闭(T),审查(PM),检查 (T),软件缺陷的生命期示意图,评审,驳回,公开,分配,修复,测试,关闭,Bug状态: 打开、修复中、已修复、关闭 报告无效,软件缺陷的生命期示意图,评审,驳回,公开,分配,修复,测试,关闭,Bug状态: 打开、修复中、已修复、关闭 报告无效 信息不足,软件缺陷的生命期
13、示意图,评审,驳回,公开,分配,修复,测试,关闭,Bug状态: 打开、修复中、已修复、关闭、信息不足 报告无效 重新公开,重新公开,6.6 软件缺陷跟踪管理,缺陷跟踪管理的意义 软件缺陷反映了软件的本质 测试驱动的软件开发过程 缺陷跟踪管理的原则 基于缺陷生命周期 三方配合,跟踪Bug整个生命期 谁打开、谁关闭(第一责任人),6.6.1 软件缺陷跟踪管理手段,以数据库形式对软件缺陷进行管理 数据库内容 Bug总括信息(标题、责任人、当前情况等) Bug详细信息(Bug详细描述、修复详细描述、进展等) Bug状态、日志等信息 信息管理内容 缺陷的建立 缺陷修复任务的分派 缺陷信息的维护 缺陷状态
14、更新 缺陷信息的价值,6.6.2 缺陷信息的价值,软件缺陷跟踪数据库是整个项目组的中心点 缺陷信息的查询与统计 Bug分布情况(区域、模块) Tester发现Bug的情况 总的Bug发现情况 每天发现的Bug数量 Bug的修复情况 未修复的Bug数量 所发现Bug的属性(严重性/优先级),6.7 软件缺陷分析,软件缺陷信息反映软件项目的本质 缺陷数据库为项目组成员提供丰富、翔实的信息 反映测试工作状态方面的信息 反映项目开发组工作状态方面的信息 预测项目进展趋势方面的信息,Bug分布情况-按原因,Bug打开关闭累计曲线,Bug打开关闭累计曲线,Bug打开关闭累计曲线,Bug打开关闭累计曲线,B
15、ug打开 / 解决 / 关闭累计曲线,QuickTest测试流程,录制测试脚本 加强测试脚本 设置检查点 参数化脚本 建立输出值 执行测试脚本 分析测试结果,因果图方法示例,1,2,3,11,22,21,23,or,and,not,not,E,测试用例执行报告格式,测试用例示例,测试用例:验证记事本程序可以编辑中英文混合的内容 测试步骤 : 1、 运行记事本程序 2 、切换到中文输入法,输入中文“学习编写” 3 、切换到英文输入法,输入英文“Test Case” 4、 保存文件,文件名为 testcase.txt 5、 关闭记事本程序 6、 双击 testcase.txt 以打开文件预期结果:
16、 1、文件内容是“学习编写 Test Case”,缺陷报告的示例,优秀的缺陷报告 重现步骤 : 打开一个编辑文字的软件并且创建一个新的文档(这个文件可以录入文字) 在这个文件里随意录入一两行文字 选中一两行文字,通过选择Font 菜单然后选择Arial字体格式 一两行文字变成了无意义的乱字符 期望结果:当用户选择已录入的文字并改变文字格式的时候,文本应该显示正确的文字格式不会出现乱字符显示。 实际结果:它是字体格式的问题,如果改变文字格式成Arial之前,你保存文件,缺陷不会出现。缺陷仅仅发生在Windows98并且改变文字格式成其它的字体格式,文字是显示正常的。 见所附的图片,缺陷报告示例,
17、标题:虽然对乘积做清零,但乘法后做加法出错 软件:小精灵计算器 版本号:V1.0.2 操作系统:Win XPsp2 级别:1(严重) 重现步骤 : 1、运行小精灵计算器软件 2、做任意乘法,如 2*3,计算结果为6 3、点击“清零”,界面显示为 0 4、做任意加法,如 2+3 期望结果: 1、计算结果应为 5 实际结果: 1、计算结果为 11 原因分析:直接进行加法运算,结果正确。可能是点击“清零”时,程序内部暂存器没有清零,导致乘法积影响后面加法运行结果,快速入门回顾,测试什么 怎么测试-方法、思路 测试用例 执行测试用例 提交缺陷(Bug) 跟踪Bug 测试环境、平台 软件开发项目的组织与管理,