第13章 软件测试简介
13.1.1,2 软件测试背景及著名案例(狮子王案例、Intel浮点出发软件缺陷、美国航天局火星登陆、爱国者导弹防御系统)
13.1.3 软件缺陷
定义
- 软件未达到产品说明书标明的功能。
- 软件出现了产品说明书指明不会出现的错误。
- 软件功能超出产品说明书指明范围。
- 软件未达到产品说明书虽然未指出但应达到的目标,此条是抓住产品说明书上遗漏之处。
- 软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。
原因
- 软件模型或者说业务建模制定不正确,这类占了70%左右,并且难以纠正。
- 软件庞大,功能复杂。
- 编程过程出错,此类占20%左右,一般比较容易纠正。
- 个别功能要求改变而影响其他部分。
- 与要开发的软件对接的第三方软件有缺陷。
- 人为因素。 不同时期修复BUG的投入费用也不一样,越到开发后期修复BUG的成本越高。
Bug发现阶段修正花费对照表
纠错阶段 | 单位费用 | |
1 | 功能需求搜集分析/软件设计阶段 | 1单位费用 |
2 | 编程或分块测试阶段 | 5单位费用 |
3 | 整体或系统测试阶段 | 10单位费用 |
4 | 早期用户使用或Beta测试阶段 | 15单位费用 |
5 | 软件推出市场后 | 30单位费用 |
13.1.4 软件测试原则
- 完全测试程序是不可能的,不可能找出软件的所有缺陷。
- 软件测试是有风险的行为,风险来自于软件测试的范围,故要去粗存精。
- 测试无法显示的潜伏的软件缺陷。
- 软件缺陷都是成群出现的。
- 软件测试方法及技术要不断更新。
- 不是所有软件都能修复。
- 开发小组对于缺陷的的定义不一定一致。
- 产品不断升级导致缺陷越多。
- 软件测试员在小组不受欢迎。
13.1.5 软件的版本
- Alph版本:公司内部测试的版本
- Beta版本:对外发布公测
- 正式版:正式发布版本一般在Beta3之后软件正式发布
13.1.6 优秀软件测试原必备
探索精神、故障排除能手、不懈努力、创造性、追求完美、判断准确、老练稳重、表达能力、在编程方面受过教育。
13.2软件测试分类
软件测试特性:白盒测试、灰盒测试、黑盒测试。
软件开发过程:单元测试、集成测试、系统测试、用户验收测试、回归测试
软件测试要求:基本功能测试、全面测试、基准测试。
软件特性:功能测试、非功能测试。
13.3自动化测试
一般认为使用(自动化测试)工具来进行的测试交自动化测试,一般不需要人进行干预。
优点
- 节省大量时间与资源。
- 没有时间限制。
- 可以反复执行。
- 保证测试的一致性以及准确性。
- 有较高的功能测试覆盖率。
- 模拟操作进行压力测试。
缺点
- 并非所有都能使用自动化。
- 没有创造性。
- 受具体项目资源限制,受人力限制。
步骤
- 编写测试用例。
- 分析、验证测试用例。
- 对已有测试用例归类,制订自动化计划方案。
- 编写自动化测试程序。
- 尽量用“数据驱动”来提高测试覆盖率。
- 将测试用例编写成自动化测试程序。
- 执行测试程序,记录并反馈BUG。
- 不断完善自动化测试系统或程序。
13.4BUG管理流程
微软研发中心的BUG管理。
通用的BUG管理流程
- BUG登记——测试工程师,初始。
- 指派任务——项目经理,激活。
- 修改BUG——开发工程师,修改。
- 验证——测试工程师,通过则转第5步,否则转第2步,状态为再激活。
- 关闭——测试工程师。
分类
- 按缺陷状态分类。
- 按缺陷严重分类。
- 按缺陷优先级分类。
第14章 系统实现与测试过程
14.1 CMMI中对应实践
技术解决方案(Tenchnical Solution,TS)过程域中对应的实践
- SG3 Implement the Product Design(实现产品设计)
- SP3.1 Implement the Design(实现设计)
- SP3.2 Develop Product Support Documentation(建立产品支持文档)
产品集成(Product Integration,PI)
- SG1 Prepare for Product Integration(产品集成准备)
- SP1.1 Establish an Integration Strategy(建立集成战略)
- SP1.2 Establish the Product Integration Environment(建立产品集成环境)
- SP1.3 Establish Product Integration Procedures and Criteria(建立集成规程及准则)
- SG2 Ensure Interface Compatibility(确保接口的兼容性)
- SP2.1 Review Interface Descriptions for Completenss(审查接口描述的完整性)
- SP2.2 Manage Interfaces(管理接口)
- SG3 Assemble Product Components and Deliver the Product(装配产品组件并交付作品)
- SP3.1 Confirm Readiness of Product Components for Integration(确认用于集成的产品组件准备就绪)
- SP3.2 Assemble Product Components(装配产品备件)
- SP3.3 Evaluate Assembled Product Components(评估已装配产品部件)
- SP3.4 Package and Deliver the Product Component(打包并交付产品或产品组件)
验证(Verification,VER)
- SG1 Prepare for Verification(准备验证)
- SP1.1 Select Work Product for Verification (选择待验证的工作产品)
- SP1.2 Establish the Verification Environment(建立验证环境)
- SP1.3 Establish Verification Procedures an Criteria(建立验证规格说明)
- SG3 Verify Selected Work Products(验证选定的工作产品)
- SP3.1 Perform Verification(执行验证)
- SP3.2 Analyze Verification Results(分析验证等级)
14.2 系统实现与测试过程简述
系统实现与测试过程达到目的
1、实现产品组件的编码并产生相应的支持文档
2、准备产品/系统集成,确保接口兼容性,组装产品组件。
3、同时适时对产品组件进行单元测试和集成测试,实现对产品组件及集成的产品构件的验证。
实现及测试活动流程图
14.3编码流程
14.3.3 编码中常见问题
1、如何避免卡法阻塞?
项目经理合理安排分配任务。
2、有最好的编程语言吗?
没有,只有最适合的编程语言。
3、换用更快的计算机还是开发更快的算法?
根据“成本——收益”来决定。
4、要多用新技术和技巧吗?
应当尽可能采用成熟可靠的技术开发软件。
5、夜里编程效率更高吗?
因为一鼓作气完成效率高,中途如果停下来,思路会被打断。
6、如何提高团队编程的质量
编程人员中新手的比例不超过50%,多一些责任心。
14.4测试流程
单元测试
在设计阶段整个系统被分为许多的单元模块,因此要先进行单元测试来找出具体问题。
集成测试
集成测试是单元测试的逻辑扩展,找出当许多单元结合时产生的问题。
14.5缺陷管理与改错
如果在测试发现了缺陷,开发人鱼应当尽早消除缺陷,并且需要对缺陷的全生命周期进行详细的跟踪及管理。
第15章 制定测试方案及编写测试用例
15.1 CMMI中对应实践
- SP1.1 Select Product for Validation(选择需要确认的产品)
- SP1.2 Establish the Validation Environment(建立确认环境)
- SP1.3 Establish Validation Producedures and Criteria(建立并维护确认过程和准则)
15.2 测试资料收集与整理
1、通用信息
一般信息:公司大体情况;测试部门大体情况;周围人与事、工作环境;公司文化
技术信息:软件类别及构成;软件的用户界面;涉及的第三方软件
2、被测软件的类别及构成
需要了解软件的类别及结构
3、被测软件的用户界面
需要了解最终用户的软件界面
测试计划要解决的重点:
- 软件及测试基本情况
- 软件目前主要存在的问题
- 软件管理流程(BUG)
- 使用的测试软件、BUG管理软件、配置管理软件
- 测试环境
- 软件产品的文件、说明
15.3检查软件说明书
充分利用说明书可以测试和找出缺陷。
15.4 测试方案的制订
测试方案是软件测试的总体规划。
测试计划书的衡量标准——必须有明确的测试目标、范围和深度、具体实施方案、及测试重点;提供大体的测试进度及所需的资源(人力、物力、软件、硬件等)
15.5 测试计划书的编写及要素
测试计划内容
- 测试计划书的文件名及版本号
- 基本情况介绍
- 测试的具体目标
- 具体执行的测试类型
- 测试通过的判断标准
- 测试用例
- 测试准备工作及测试结果的处理
- 测试工作中涉及的相关事项
- 部门责任分工
- 测试人力资源分配
- 测试进度列表
- 测试工作可能面临的偶然事件及危机处理;缺陷管理流程
第16章 系统测试
16.1CMMI中对应实践
VAL过程域
SG2 Validate Product or Product Components(确认产品或产品组件)
SP2.1 Perform Validation(执行确认)
SP2.2 Analyze Validation Results (分析确认结果)
16.2系统测试简述
系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计的标准和规定。
16.3系统测试活动内容
- 用户层,主要是面向产品最终的使用操作者的测试,重点是突出从操作者角度,测试系统对用户支持的情况。
- 应用层,针对产品应用的测试,重点在系统应用的角度,模拟实际应用环境,对系统兼容性、可靠性、性能进行的测试。
- 功能层、针对产品具体功能实现测试。
- 子系统层,针对产品具体功能实现的测试。
- 协议/指标层,针对系统支持的协议、指标的测试。