第十三章 软件测试
1.软件测试基本概念
1.1 软件测试背景
1979年Glenford Myers在《软件测试艺术》一书中作出了当时最好的软件测试定义:“测试是为了发现错误而执行的一个程序或者系统的过程。”
1983年,bill hetzel在《软件测试完全指南》一书中指出:“测试是以评价一个程序或者系统属性为目标的如何一种活动。测试是对人家质量的度量。”
Myers和hetzel的定义至今仍被引用
2002年,Rick和Stefan在《系统的软件测试》中对软件测试做了进一步的定义:“测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护整个生命周过程。”
近20年来,随着计算机和软件技术的飞快发展,软件测试技术研究也取得了很大的突破。测试专家总结了很好的测试模型,比如著名的V模型、W模型等,在测试过程改进方面提出了TMM的概念,在单元测试、自动化测试、负载压力测试及测试管理等方面涌向了大量优秀的软件测试工具。
1.2 软件测试著名案例
狮子王案例,Intel浮点出发软件测试,美国航天局火星登陆,爱国者导弹防御系统
1.3 软件缺陷
缺陷:
软件未达到产品说明书标明的功能。
软件出现了产品说明书指明不会出现的错误。
软件功能超出产品说明书指明的范围。
软件未达到产品说明书虽然未指出但应达到的目标,此条的目的是抓住产品说明书上遗漏之处。
软件测试员认为软件难以理解,不易使用,运行速度缓慢,或者最终用户认为不好。
产生缺陷的原因:
软件模型或者说业务建模不正确(约占百分70)
软件庞大,功能十分复杂
编程过程出错(约占百分20)
个别功能要求改变而影响到其他部分
与要开产的软件对接的第三方软件有缺陷
个人因素:项目组管理方法、项目进度要求时间紧、项目组配备人力不足、组内及组外沟通不充分等几种情况
1.4 软件测试原则
(1)完全测试程序是不可能的
(2)软件测试是有风险的行为。
(3)测试无法显示潜伏的软件测试。
(4)软件缺陷会成群出现。
(5)并非所有软件缺陷都能修复
(6)难以说清的建缺陷
(7)产品说明书不断变化
(8)软件测试员在小组中不受欢迎
(10)软件测试是一向讲究条例的技术专业
1.5 软件的版本
在整个软件开发的生命周期中,可能会出现各种版本,每个公司对版本的定义也不一样
1.6 优秀软件测试员必备
探索精神、故障排除能手、不懈努力、创造性、追求完美、判断准确。
2.软件测试分类
白盒测试、灰盒测试、黑盒测试、基本功能测试、全面测试、基准测试、功能测试、非功能测试。
3.自动化测试
一般认为使用自动化测试工具来进行的测试叫自动化测试,一般不需要人干预。
4.BUG管理流程
4.1 通用BUG管理流程
(1)BUG登记——测试工程师,初始。
(2)指派任务——项目经理,激活。
(3)修改BUG——开发工程师,修改。
(4)验证——测试工程师,通过则转第5步,否则转第2步,状态为再激活。
(5)关闭——测试工程师。
4.2 BUG分类
(1)按缺陷状态分类
(2)按缺陷严重级分类
(3)按缺陷优先级分类
第十四章 系统实现与测试过程
1.系统实现与测试过程简述
系统实现与测试过程至关重要,在此过程中,主要是达到以下几个目的:
1)实现产品组件的编码并产生相应的支持文档。
2)准备产品/系统集成,确保接口兼容性,组装产品组件。
3)同时适时对产品组件进行单元测试和集成测试,实现对产品组件及集成的产品构件的验证。
2.测试流程
(1)单元测试
(2)集成测试
3.缺陷管理与改错
(1)在单元测试和集成测试过程中发,发现缺陷时,必须将缺陷记录在《缺陷管理列表》或记录进BUG管理工具。
(2)开发人员消除缺陷后,测试开发人员应当马上进行回归测试,确保不会引入新的缺陷。
(3)测试人员发现缺陷后,填写《缺陷管理列表》或BUG管理工具中缺陷信息项,并将其状态置为“已建议”,提交项目经理。
(4)项目经理确认缺陷内容后,将其转为相关人员解决或指派给相关人员解决,状态改为“活动的”。
(5)当缺陷解决人员认为缺陷已经修复后,即可填写《缺陷管理列表》或BUG管理工具中相应项改为“已解决”,指派给原来的测试人员进行回测。
4.建立产品支持文档
在整个系统实现及测试过程中,负责文档的人员应当根据开发的进展及时编写并调整相关产品支持文档。
第15章 制订测试方案及编写测试用例
1.测试资料收集与整理
(1)通用的信息
(2)被测软件的类别及构成
(3)被测软件的用户界面
2.检查产品规格说明书
3.测试方案的制订
(1)软件的现状及将来可能的发展
(2)现有资源及将来可能获得的补充资源
(3)风险分析
(4)制定测试的策略
4.测试计划书的编写及要素
(1)测试计划书衡量标准
(2)测试计划内容
5.测试用例编写
(1)单元测试用例编写
(2)集成测试用例编写
(3)系统测试用例编写
第十六章 系统测试
1.系统测试简述
系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计的标准和规定。采用黑盒测试的方法进行测试,只要内容有:功能测试,健壮性测试,性能--效率测试、用户界面测试、安全性测试、压力测试、可靠性测试、安装/反安装测试等。
2.系统测试内容
(1)用户层
(2)应用层
(3)功能层
(4)子系统层
(5)协议/指标层
2.制订系统测试计划
(1)测试目标
(2)测试范围
(3)测试方法
(4)测试环境与辅助工具
(5)测试完成准则
(6)人员与任务表
3.执行系统测试
(1)对于非严格系统可以采用“基于测试用例“的准则。
(2)对于严格系统,应采用“基于缺陷密度'的规则。