资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1 毕业论文毕业论文 姓姓 名:陈鑫名:陈鑫 专专 业业:.Net:.Net 软件开发软件开发 年年 级:计软级:计软 13021302 学学 号:号:201317140212201317140212 指导教师指导教师: :王梅王梅 2 软件测试的概述及方法 、 、 完成时间:2012 年 3 月 摘要:摘要:从软件产业的发展初期到目前的大型软件开发过程,软件测 试已成为其中一个不可分割的部分。随着软件规模的日益增大,软 件测试问题也日益突出,现代社会对软件的依赖越来越强,高可信软 件测试有着广泛的需求,基于缺陷模式的软件测试技术作为高可信 软件的重要保证,可以大大降低软件的缺陷密度,提高软件的可信性。 本文从测试的基本概念入手,深入剖析软件测试相关理论 关键字:关键字:软件测试、白盒测试、黑盒测试、类测试 目目 录录 1 1 软件测试的发展史软件测试的发展史4 2 2 软件测试的相关背景软件测试的相关背景. 5 3 3 3 软件测试概述软件测试概述6 3.1 软件测试的定义. .6 3.2 软件测试的描述. 6 3.3 软件测试的目的7 3.4 软件测试的原则. 8 4 软件测试的内容软件测试的内容9 4.1 验证(verification).9 4.2 确认(validation). .9 5 5 软件测试的分类软件测试的分类.10 5.1 常用分类10 5.2 黑盒测试10 5.3 白盒测试. 11 5.4 静态测试14 5.5 动态测试.15 6 6 软件测试中的类测试软件测试中的类测试.15 6.1 面向对象软件的类测试概念. 15 6.2.类测试技术. 4 16 7 7 参考文献参考文献1717 8 8 致谢致谢.18 1 1 软件测试的发展史软件测试的发展史 软件测试的发展历史:20 世纪 60 年代(软件工程建立前) ,为表明 程序正确而进行测试。. 1972 年在北卡罗来纳大学举行了首届软件 测试正式会议。. 1975 年 John Good Enough 和 Susan Gerhart 在 IEEE 上发表了测试数据选择的原理的文章,软件测试被确定为 一种研究方向。. 1979 年,Glenford Myers 的软件测试艺术 , 对测试做了定义:测试是为发现错误而执行的一个程序或者系统的 过程。. 20 世纪 80 年代早期, “质量”的号角开始吹响。软件测试 定义发生了改变,测试不单纯是一个发现错误的过程,而且包含软 件质量评价的内容。制定了各类标准。. 1983 年,Bill Hetzel 在 软件测试完全指南中指出:测试是以评价一个程序或者系统属 性为目标的任何一种活动,测试是对软件质量的度量。. 20 世纪 90 年代,测试工具盛行起来。. 1996 年提出的测试能力成熟度 TCMM(Testing Capability Maturity Model) 、测试支持度 TSM(Testability Support Model) 、测试成熟度 TMM(Testing Maturity Model) 。. 到了 2002 年,Rick 和 Stefan 在系统的软 5 件测试一书中对软件测试做了进一步定义:测试是为了度量和提 高被测软件的质量,对测试软件进行工程设计、实施和维护的整个 生命过程。 2 2 软件测试的相关背景软件测试的相关背景 相关背景:前段时间, 就是在我没有认真了解测试行业之前, 可能由于测试在中国的重视程度的问题, 我也一直认为测试应该是 不重要的, 甚至认为有必要有专门的测试职业吗?认为软件主要是 开发人员的事, 软件的成果也是由开发人员决定的, 当我在参加工 作后, 真正从学校的学习环境中走上实际运用开发的时候, 事实上 真的不是那么一回事哦。软件无处不在, 软而, 软件是人编的 所以不完美。臭名昭著的软件测试案例: 1、迪士尼的狮子王 (19941995)软件在少数系统中能正常 工作, 但在大众使用的常见系统中不行。后来证实, 迪士尼公司没 有对市场上投入实用的各种 pc 机型进行正确的测试。 2、英特尔奔腾浮点除法软件缺陷(1994)英特尔为自己处理软 件缺陷拿出 4 亿美元支付更换坏芯片的费用。导致付出如此昂贵的 代价, 其主要原因是发现了软件缺陷没有正确的处理。 3、美国航天局火星极地登陆(1999)该项目使用前有经过测试, 两个测试小组双方独立工作都很好, 但从未走在一起。 4、爱国者导弹防御系统 (1991)一枚导弹在多哈击毙 28 名美 6 国士兵, 症结在于一个软件缺陷:一个很小的系统时钟错误累积起 来就可能拖延 14 小时, 造成跟踪系统失去准确度。在多哈袭击战中 系统被拖延 100 小时。 5、千年虫 (大约 1974)估计世界各地更换或升级该系统程序 解决原有 2000 年错误的费用已经超过数亿美元。 3 3 软件测试的概述软件测试的概述 3.1 软件测试的定义 软件测试使用人工或者自动手段来运行或测试某个系统的过程, 其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果 之间的差别。它是帮助识别开发完成(中间或最终的版本)的计算 机软件(整体或部分)的正确度(correctness) 完全度 (completeness)和质量(quality)的软件过程;是 SQA(software quality assurance)的重要子域。 (1)测试并不仅仅是为了找出错误.通过分析错误产生的原因和 错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺 陷,以便及时改进; (2)这种分析也能帮助测试人员设计出有针对性的测试方法,改 善测试的效率和有效性; (3)没有发现错误的测试也是有价值的,完整的测试是评定软件 质量的一种方法。 7 3.2 软件测试的描述 测试是软件开发过程的重要组成部分, 是用来确认一个程序的 品质或性能是否符合开发之前所提出的一些要求。软件测试的目的, 第一是确认软件的质量, 其一方面是确认软件做了你所期望的事情 (Do the right thing), 另一方面是确认软件以正确的方式来做 了这个事件(Do it right) ;第二是提供信息, 比如提供给开发人 员或程序经理的反馈信息, 为风险评估所准备的信息;第三软件测 试不仅是在测试软件产品的本身, 而且还包括软件开发的过程。如 果一个软件产品开发完成之后发现了很多问题, 这说明此软件开发 过程很可能是有缺陷的。 3.3 软件测试的目的 如果测试的目的是为了尽可能多地找出错误,那么测试就应该 直接针对软件比较复杂的部分或是以前出错比较多的位置。如果测 试目的是为了给最终用户提供具有一定可信度的质量评价,那么测 试就应该直接针对在实际应用中会经常用到的商业假设。 在谈到 软件测试时,引用 Grenford J. Myers 在The Art of Software Testing一书中的观点: (1)软件测试是为了发现错误而执行程 序的过程; (2)测试是为了证明程序有错,而不是证明程序无错误; (3)一个好的测试用例是在于它能发现至今未发现的错误; (4)一 个成功的测试是发现了至今未发现的错误的测试。 这种观点可以 8 提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功 能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错 误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事 实并非如此。 首先,测试并不仅仅是为了要找出错误。通过分析 错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前 所采用的软件过程的缺陷,以便改进。同时,这种分析也能帮助我 们设计出有针对性地检测方法,改善测试的有效性。其次,没有发 现错误的测试也是有价值的,完整的测试是评定测试质量的一种方 法。 3.4 软件测试的原则 1应当把“尽早和不断的测试“作为开发者的座右铭。 2程序员应该避免检查自己的程序, 测试工作应该由独立的专 业的软件测试机构来完成。 3设计测试用例时应该考虑到合法的输入和不合法的输入以及 各种边界条件, 特殊情况下要制造极端状态和意外状态, 比如网络 异常中断、电源断电等情况。 4一定要注意测试中的错误集中发生现象, 这和程序员的编程 水平和习惯有很大的关系。 5对测试错误结果一定要有一个确认的过程, 一般有 A 测试出 来的错误, 一定要有一个 B 来确认, 严重的错误可以召开评审会进 行讨论和分析。 6制定严格的测试计划, 并把测试时间安排的尽量宽松, 不要 9 希望在极短的时间内完成一个高水平的测试。 7回归测试的关联性一定要引起充分的注意, 修改一个错误而 引起更多的错误出现的现象并不少见。 8妥善保存一切测试过程文档, 意义是不言而喻的, 测试的重 现性往往要靠测试文档 4 4 软件测试的内容软件测试的内容 4.1 验证(verification) 验证(verification)是保证软件正确地实现了一些特定功能的 一系列活动, 即保证软件做了你所期望的事情。(Do the right thing) 1.确定软件生存周期中的一个给定阶段的产品是否达到前阶段 确立的需求的过程; 2.程序正确性的形式证明, 即采用形式理论证明程序符号设计 规约规定的过程; 3.评市、审查、测试、检查、审计等各类活动, 或对某些项处 理、服务或文件等是否和规定的需求相一致进行判断和提出报告。 4.2 确认(validation) 确认(validation)是一系列的活动和过程, 目的是想证实在一 个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式 10 来做了这个事件(Do it right) 1.静态确认, 不在计算机上实际执行程序, 通过人工或程序分 析来证明软件的正确性; 2.动态确认, 通过执行程序做分析, 测试程序的动态行为, 以 证实软件是否存在问题。 软件测试的对象不仅仅是程序测试, 软件测试应该包括整个软 件开发期问各个阶段所产生的文档, 如需求规格说明、概要设计文 档、详细设计文档, 当然软件测试的主要对象还是源程序。 5 5 软件测试的分类软件测试的分类 5.1 常用分类 从是否需要执行被测软件的角度, 可分为: 静态测试 和动态测试 从测试是否针对系统的内部结构和具体实现算法的角度来看, 可分为 : 白盒测试 和黑盒测试 5.2 黑盒测试 黑盒测试 指的是把被测软件看作是一个黑盒子, 我们不去关心盒子里面 11 的结构是什么样子, 只关心软件的输入数据和输出结果。 黑盒测试方法是在程序接口上进行测试, 主要是为了发现以下 错误: 是否有不正确或遗漏了的功能? 在接口上, 输入能否正确地接受? 能否输出正确的结果? 是否有数据结构错误或外部信息(例如数据文件)访问错误? 性能上是否能够满足要求? 是否有初始化或终止性错误? 用黑盒测试发现程序中的错误, 必须在所有可能的输入条件和 输出条件中确定测试数据, 来检查程序是否都能产生正确的输出。 但这是不可能的。 n 假设一个程序 P 有输入量 X 和 Y 及输出量 Z。在字长为 32 位 的计算机上运行。若 X、Y 取整数, 按黑盒方法进行穷举测试: n 可能采用的 测试数据组: 232232 264 n 如果 测试一组数据需要 1 毫秒, 一年工作 365 24 小时, 完成所有测试 需 5 亿年。 黑盒测试的测试用例设计 等价划分法 边界值法 错误推测法 因果图法 12 5.3 白盒测试 白盒测试指的是把盒子盖打开, 去研究里面的源代码和程序结 构。 白盒测试也称结构测试或逻辑驱动测试, 它是知道产品内部工 作过程, 可通过测试来检测产品内部动作是否按照规格说明书的规 定正常进行, 按照程序内部的结构测试程序, 检验程序中的每条通 路是否都有能按预定要求正确工作, 而不顾它的功能。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号