第一章 测试基础 软件测试的定义: 使用人工和自动的手段来运行或测试某个系统的过程。其目的是检验它是否满足规定的需求或弄清预期结果与实际结果间的差别。
软件测试的目的: 证明 检测 预防 证明: 1) 获取系统在可接受风险范围内可用的信心 2) 尝试在非正常情况和条件下的功能和特性 3) 保证一个工作产品是完整的且可用或可被集成的
检测: 1) 发现缺陷,错误和系统不足 2) 定义系统能力和局限性 3) 提供组件、工作产品和系统的质量信息
预防: 1) 通过将测试活动提前介入到软件生命周期中,尽早的发现并消除前期研发阶段引入的缺陷,以防止前期缺陷遗留并放大到后续环节 2) 通过对发现的缺陷进行分析,找出导致这些缺陷产生的流程上的不足,通过改进流程,预防同类缺陷再次产生
软件生命周期: 计划->需求分析->概要设计->详细设计->编码->测试->运行维护 1) 计划: SDP (软件研发计划) UTP(单元测试计划) SVVP(软件验证与确认计划) ITP (集成测试计划) STP (系统测试计划) 2) 需求分析: SRS(软件需求规格说明) 根据研发类型,需求来源,则用户针对的具体对象分为两种:针对产品的与针对项目的 3) 设计: HLD(High Level Design概要设计) LLD(Low Level Design 详细设计) 4) 编码: 写成以某个程序设计语言表示的源程序清单,使用RDBMS(Relational Database Management System 关系型数据库管理系统)工具建立数据库。 5) 测试: 检验软件是否符合客户需求,达到质量要求。 按测试阶段分 单元测试(UT) 集成测试(IT) 系统测试(ST)——最先介入,最晚结束 6) 运行维护: 将软件交付用户投入正式使用,以后便进入维护阶段,可能有多种原因需要对其进行修改,如软件错误、系统软件升级、增强软件功能、提高性能等。
软件研发的相关要素: 人员 过程 工具
1) 人员组成 分析人员 设计人员 开发人员 测试人员 配置管理人员(CMO,SCM) SQA
2) 组架构
软件研发流程: 常见的软件研发流程:瀑布模型,螺旋模型,RUP流程,IPD流程
软件缺陷和BUG(包括错误和不足): 缺陷的引入是随时的,不确定的。 缺陷可以归结为三类:遗漏、错误、额外的实现。
项目经理 配置经理 测试经理 开发经理 配置管理组 软件测试组 软件开发组
SQA
过程(流程) 技术(工具) 质量 人(组织) 附录: 1) SDP: Software Develop Plan软件研发计划 2) SVVP: Software Verification and Validation Plan软件验证与生效计划
第二章 测试过程 划分为三阶段: 单元测试(Unit Testing) 集成测试(Integration Testing) 系统测试(System Testing) *确认测试(Validation Testing)
a) UT:针对软件基本组成单元 目的:检验软件模块对《详细设计说明书》的符合程度。 UT 面向过程:函数 面向对象:类 属性 方法 b) IT:针对组装后功能及模块间接口是否正确 目的:检验软件模块对《概要设计说明书》的符合程度。 c) ST:针对硬件、外设、某些支持软件、数据和人员等 目的:检验对《软件需求规格说明书》的符合程度。 d) VT:纯系统测试,介于IT与ST之间 若该软件包括硬件外设等,则VT相当于IT。 若该软件为纯系统软件,则VT相当于ST。
UT IT ST VT UT,IT,ST的比较 UT IT ST 测试方法 白盒(某些情况下也可用黑盒测试) 灰盒 黑盒(某些情况下也可用白盒测试) 考察范围 数据结构、逻辑控制、异常处理 模块间接口组合后的功能 系统相对于需求的符合程度
评估标准 逻辑覆盖率 方法: TDD(测试驱动开发) 接口覆盖率 方法: 1.每个接口被覆盖的程度 2.每个接口的等价类、边界值被覆盖的程度 测试用例对需求项的覆盖程度 方法: 1. 等价类两两组合 2. 边界值分析 3. 业务流程法 4. 状态迁移法 5. 错误猜测法 6. 输出域覆盖
回归测试(Regression Testing) 目的:验证缺陷得到正确的修复,同时对系统的修复没有影响以前的功能。 *回归测试可以发生在任何一个阶段 1) 回归测试流程 a. 制定策略 b. 确定版本 c. 按策略执行测试 d. 验收 通过:则关闭缺陷跟踪单 不通过:返回缺陷跟踪单,开发人员重新修改,再次提交 2) 回归测试策略 a. 完全重复测试 覆盖修改法 b. 选择性重复测试 周边影响法:比a更充分。难点:如何选取用例 指标达成法:选择一个最小的测试用例集合 风险识别法:选择重要级别高的用例 3) 回归测试自动化 a. 程序自动化: 功能测试自动化 b. 自动配置:Builder 、ANT/NANT 、BVT c. 测试用例、结果自动化:测试管理工具QTP、Robot(基于GUI) d. 利用脚本语言:TCL、Python、Perl e. 专用测试工具: f. 尽早考虑(可继承、推广):
其他测试阶段(针对用户): 1) 验收测试项目型 验收依据:合同、需求规格说明书、验收测试计划 2) α测试 β测试 产品型 γ测试 α测试是用户在开发环境下,开发者或测试人员在用户旁,记录错误情况等,环境是受控的。目的在于评价软件的FLURPS(即功能、局域化、可用性、可靠性、性能和技术支持) β测试是在实际使用环境下,开发者及测试人员不在测试现场。 γ测试是产品正式发型的候选版,可能会是以后发行的正式版。
第三章 软件质量 软件质量的定义: 实体(被测试系统)基于某些特性满足需求的程度。 实体 特性 需求 1) 实体:软件——被测对象 2) 特性:基于ISO9126分析SRS得出测试内容,分析测试内容的两种主要方法: a. ISO 9126分析方法 优点:国际标准 b. 测试类型分析方法 缺点:无标准,实际应用中需要企业根据自身行业特点定义测试类型 *相同点:成功经验复用,二者存在对应关系 3) 需求:质量三个层次 a. 符合需求规格(内部要求) b. 用户显示需求(外部要求) c. 用户隐式需求(使用要求) 4) 质量铁三角:过程 技术 组织 软件质量管理体系 质量管理理论: 第一阶段:检验质量管理 第二阶段:统计质量控制 第三阶段:全面质量管理
流行的质量管理体系 1) ISO a. 三个核心 ISO9000 管理理念和原则 Iso9001 组织质量管理体系必须履行的的要求做了明确的规定 ISO9004 组织持续改进的指南标准 b. 八项质量原则 以顾客为中心 * 发挥领导作用 全员参与 过程方法 管理的系统方法 持续改进 基于事实的决策方法 * 互利的供方关系
TC质量评价(通过质量统计学得出) 需求覆盖 通过用例发现缺陷数占总发现缺陷数比例 Defects/TC (每用例缺陷数) 100% TCs/页SRS
测试前期发现严重缺陷数占总发现严重缺陷数比例 2) CMM/CMMI(Capability Maturity Model)能力成熟度模型 a. 起源:美国国防部委托立项 美国软件工程研究所(SEI)提出的模型 用来: 评估软件承包商能力 协助组织改进过程、提高过程能力 b. 必要性 业界的实施标准 业界的交流语言 中国企业获取国际订单的门槛 向下采购的保障 降低软件生产风险的有力手段 c. 特点及各级概要 初始级:不可预测的、无序的、混乱的。 可重复级:有纪律的,经验复用 已定义级:标准的、一致的 已管理级:可预测的 优化级:不断改进的
3) 六西格玛
软件质量模型: 质量模型:一组特性及特性之间的关系,它提供规定质量需求和评价质量的基础
第四章 测试方法 功能性 可靠性 易用性 效率 维护性 可移植性 适合性 准确性 户操作性 保密安全性 功能性的依从性 适应性 易安装性 共存性 易替换性 可移植性的依从性 易分析性 易改变性 稳定性 易测试性 维护性的依从性 时间特性 资源利用性 效率的依从性 易理解性 易学性 易操作性 吸引性 易用性的依从性 成熟性 容错性 易恢复性
可靠性的依从性
外部和内部质量 UT阶段的工作 开发人员编码编译(测试)编码规则检查(测试)注释率检查(保证充分注释,计算方法:注释行数/(代码行数+注释行数))代码走读(测试)UT执行 编码规则: 1) 变量命名规则 如:gcount 全局变量,pcount 指针变量 2) If(x==1)应写成if (1==x)避免类似将if(x==1)错写成if(x=1) UT计划、UT设计、UT实现
IT阶段工作 例如:测试通信协议栈 层4 层3 层2 物理层 层内集成层间集成 IT计划、IT设计、IT实现
ST阶段工作 ST计划、ST设计、ST实现 搭建测试环境执行
黑盒、白盒 例子 1. 测试工程师 VS 医生 2. 自动售货机
总结: 使用黑盒测试方法需要了解软件的外部特性(如何使用) 使用白盒测试方法需要了解软件的内部构造和工作原理
针对不同产品如何测试 杯子:信息 外部:外观、漏水、容量、使用者黑盒 内部:材质、制造过程白盒
白盒测试方法的好处 1) 能对代码进行覆盖 2) 能有针对性的进行测试 3) 发现及解决BUG的成本较低
两部分信息都是做好测试需要的