文档介绍:基于CMMI的软件工程
软件测试简介
1
第十二章 软件测试简介
软件测试基本概念
软件测试分类
自动化测试
常见测试工具
BUG管理流程
软件测试的定义:使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(Correctness) 、完全度(Completeness)和质量(Quality)的软件过程;
软件测试是为了发现程序中的错误而执行的过程。
定义
软件测试历史
1947年 ,测试等同于调试
1957年,测试是为了表明程序正确而进行的
1972年,测试是为发现错误而至此能够的一个程序或者系统的过程
1996年,提出测试能力成熟度TCMM(Testing Capability Maturity Model),测试支持度TSM(Testability Support Model),测试成熟度TMM(Testing Maturity Model),测试工具流行。
2002年,测试是为了度量和提高被测软件的质量,对测试件进行工程设计、实施和维护的整个生命周期过程。
软件测试著名失败案例
狮子王案例:缺乏配置测试
Intel浮点除法软件缺陷
美国航天局火星登陆
爱国者导弹防御系统
软件缺陷
软件未达到产品说明书(简称,SPEC)标明的功能;
软件出现了产品说明书指明不会出现的错误;
软件功能超出产品说明书指明范围;
软件未达到产品说明书虽未指出但应达到的目标,此条的目的是抓住产品说明书上遗漏之处;
软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。
软件模型或者说业务建模制定不正确,更直观的理解是,SEPC本身不明确或有错误,没有能很好的描述要开发的软件,这类原因占了70%左右,并且很难于纠正;
软件庞大,功能十分复杂;
编程过程出错,此类原因导致的错误大概占20%,一般来说比较容易纠正;
个别功能要求改变而影响到其他部分;
与要开产的软件对接的第三方软件有缺陷;
人为因素,常见的因素包括:项目组管理方法、项目进度要求时间紧、项目组配备人力不足、组内及组外沟通不充分等几种情况。
产生软件缺陷的原因
发现阶段修正花费对照表
软件测试的原则
为了能够更好的进行软件测试,提高测试的整体效率,降低项目的整体成本,我们在执行软件测试过程中可以参照以下几点原则:
1、完全测试程序是不可能的,不可能找出软件的所有缺陷,这是因为:
输入量太大
输出结果太多
软件实现途径太多
软件说明书没有客观标准,从不同的角度来看,软件缺陷的标准不同。
2、软件测试是有风险的行为,如果决定不去测试所有的情况,那就是选择了风险。软件测试人员要学会的一个主要原则是如何把无边无际的可能减少到可以控制的范围,以及如何针对风险制订作出明智抉择,去粗存精。
3、测试无法显示潜伏的软件缺陷,软件测试工作与防疫员的工作极为相似,可以报告已发现的软件缺陷,却无法报告潜伏的软件缺陷,更不可能保证找到全部的缺陷。
4、找到的软件缺陷越多,就说明软件缺陷越多。生活中的寄生虫和软件缺陷几乎完全一样,两者都成群出现。发现一个附近就会有一群。
软件测试的原则(续)