软件测试技术

上传人:jiups****uk12 文档编号:45502209 上传时间:2018-06-17 格式:PPT 页数:594 大小:4.64MB
返回 下载 相关 举报
软件测试技术_第1页
第1页 / 共594页
软件测试技术_第2页
第2页 / 共594页
软件测试技术_第3页
第3页 / 共594页
软件测试技术_第4页
第4页 / 共594页
软件测试技术_第5页
第5页 / 共594页
点击查看更多>>
资源描述

《软件测试技术》由会员分享,可在线阅读,更多相关《软件测试技术(594页珍藏版)》请在金锄头文库上搜索。

1、1软 件 测 试 技 术2前导课程程序设计语言软件工程教材软件测试 Ron Patton著3考核方式:平时 30%出勤 10%作业 10%实验 10%期末 70%4第一章 绪论软件危机什么是软件测试软件测试的目的51.1 软件危机1.1.11.1.1软件危机的含义 “软件危机”(Software crisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的软件系统花费大量人力财力,而在开发过程中就夭折。6具体来说,软件危机主要有以下一些典型表现:对软件开发成

2、本和进度的估计常常很不准确。开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见。 用户对“已完成的”软件系统不满意的现象经常发生。软件产品的质量往往靠不住。软件常常是不可维护的。软件通常没有适当的文档资料。软件成本在计算机系统总成本中所占的比例逐年上升。软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。71.1.2 实例IBM公司的 OS/360,共约100万条指令,花费了5000个人年;经费达数亿美元,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。 OS/360系统的负责人Brooks这样描述开发过程的困难和混乱:“像巨兽在

3、泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。程序设计就像这样一个泥潭,一批批程序员在泥潭中挣扎。没人料到问题竟会这样棘手 ” 8 19631963年美国飞往火星的火箭爆炸,造成年美国飞往火星的火箭爆炸,造成10001000万美元的万美元的 损失。原因是损失。原因是FORTRANFORTRAN程序:程序:DO 5 I=1DO 5 I=1,3 3 误写为:误写为:DO 5 I=1DO 5 I=13 3 19671967年苏联年苏联“联盟一号联盟一号”载人宇宙飞船在返航时,由载人宇宙飞船在返航时,由 于软件忽略一个小数点,在进入大气层时因打不开降于软件忽

4、略一个小数点,在进入大气层时因打不开降 落伞而烧毁。落伞而烧毁。91.1.3 产生软件危机的原因(1)由于缺乏大型软件开发的经验和软件开发数据的积累,使得开发工作的计划很难制定。(2)作为软件设计依据的软件需求,在开发的初期提得不够明确,或是未能做出确切的表达。(3)开发过程中没有遵循统一的、公认的方法论或是开发规范,参加工作的人员之间的配合不够严密,约定不够明确。(4)缺乏严密有效的软件质量检测手段。101.1.4 消除软件危机的途径对计算机软件有一个正确的认识。应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成

5、的一些错误概念和做法。应该开发和使用更好的软件工具。按工程化的原则和方法组织软件开发工作。111.2 什么是软件测试软 件 开 发 面 临 的 实 际 问 题121.2.1 软件测试的三个认识阶段阶段1测试和调试没有什么区别。阶段2测试是一种发现软件缺陷的活动。阶段3测试是为了度量和提高被测软件的 质量,对测试软件进行工程设计、实施和维护 的整个生命周期过程。 13阶段1测试调试(1)1.测试从已知条件开始,使用预先定义的规 程并且有可预知的结果,不可预知的仅仅是 程序是否通过测试。调试从不可知的内部条 件开始,结果不可预知。2.测试可以并应该计划、设计和制定工作日程 表,调试的规程和持续时间

6、不受约束。3.测试是一种检验,调试是推理过程。144.测试结果常常表明一个程序员的失败,调 试则是程序员证明其正确。5.当执行时,测试应力求可预见性、约束性、 客观性和严格性,调试要求直觉性、跳跃性 、经验性和推测性。6.大多数测试是在不了解设计细节的条件下完 成的,而调试不了解详细的设计细节是不可 能完成的。阶段1测试调试(2)15阶段1测试调试(3)7.测试经常由非程序设计者完成,调试必须 由编程者完成。8.在能做什么和不能做什么方面,测试有一 套较完善的理论,调试的理论研究则刚刚开 始,至今仅有一些不成熟的结果。9.很多测试执行和设计己经能够自动化,自 动化的调试仍然是个梦。16测试与调

7、试交叉循环测试调试发现错误确定错误性质、位置并修改17阶段2测试是一种发现软件缺陷的活动测试仍然是后于开发的活动。测试目的是确认软件产品能工作。18阶段3测试是对软件质量的度量测试中包含软件质量评价的内容。191.2.2 软件测试的定义 Myers的经典定义:测试是为发现错误而执行的一个程序 或者系统的过程。20 Bill.Hetzel的定义:测试是对程序或系统能否完成特定任务建立信心的过程。测试是目的在于鉴定程序或系统的属性或能力的各种活动,它是软件质量的一种度量。21Rick和Stefan的定义:测试是为了度量和提高被测软件的质 量,对测试软件进行工程设计、实施和 维护的整个生命周期过程。

8、221.2.3 国内外现状在软件比较发达的国家,软件测试已经发 展成为一个独立的产业。软件测试在软件公司中占有重要的地位。软件测试理论研究蓬勃发展,每年举办各种各 样的测试技术年会,发表了大量的软件测试研 究论文,引领软件测试理论研究的国际潮流。软件测试市场繁荣。23中国的软件测试技术研究起步于“六五” 期间。1990年,成立了国家级的中国软件评测 中心。软件测试正在逐步成为一个新兴的产业 。241.2.3 软件测试的对象根据软件定义,软件包括程序、数据和文档,所以软件测试并不仅仅是程序测试。在整个软件生命周期中,各阶段有不同的测试对象,形成了不同开发阶段的不同类型的测试。需求分析、概要设计、

9、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应成为软件测试的对象。251.2.4 软件测试的分类按照全生命周期的软件测试概念,测试对象应该包括软件设计开发的各个阶段的内容,但这里重点讲述开发阶段的测试。 按照开发阶段划分:单元测试、集成测试、系统测试、和验收测试。按照测试实施组织划分:开发方测试、用户测试(测试)、第三方测试。按照测试技术划分:白盒测试、黑盒测试、灰盒测试。261.2.5 软件测试的衡量标准多能够找到尽可能多的、以至于所有的缺陷。快能够尽可能早地发现最严重的缺陷。好找到的缺陷是关键的、用户最关心的。找到缺陷后能够重

10、现找到的缺陷,并为修正缺 陷提供尽可能多的信息。省能够用最少的时间、人力和资源发现缺陷。测试的过程和数据可以重用。271.3 软件测试的目的1.3.1 软件测试的目的用户的角度:普遍希望通过软件测试暴露软件 中隐藏的错误和缺陷,以考虑是否可接受该产 品。软件开发者的角度:希望测试不仅仅是为了发 现软件缺陷与错误,而且也是对软件质量进行 度量和评估,以提高软件的质量。28软件测试的目的是发现程序中的错误,是为了证明 程序有错,而不是证明程序无错。软件测试要设法使软件发生故障,暴露软件错误。测试的“成功”与“失败”能够发现错误的测试是成功的测试,否则是失败的测试。 291.3.2 软件测试的特点1

11、、软件测试的开销大按照Boehm的统计,软件测试的开销大约占总成本的30%-50%。例如:APPOLLO登月计划, 80%的经费用于软件测试。302、软件测试的时间长对软件尤其是人命关天的软件(如飞机控制、核反应堆等)测试所花费的时间往往是其 它软件工程活动时间之和的三到五倍。313、不能进行“穷举”测试只有将所有可能的情况都测试到,才有可能检查出所有的错误。但这是不可能的。例:程序P有两个整型输入量 X、Y,输出量为Z,在32位机上运行。所有的测试数据组(Xi,Yi)的数目 为: 232232 =264 1毫秒执行1次,共需5亿年。PXYZ324、软件测试难度大(结论)根据上述分析,既然不能

12、进行 “穷举”测试,又要查出尽可能多的错误,软件测试工作的难度大。只有选择 “高效的测试用例”331.3.3 正确认识软件测试判断正误: (1)软件开发完成后进行软件测试。(2)软件发布后如果发现质量问题,那是软件测试人员的错 。 (3)软件测试要求不高,随便找个人都行。 (4)软件测试是测试人员的事情,与程序员无关。 (5)项目进度吃紧时少做些测试,时间富裕时多做测试。(6)软件测试是没有前途的工作,只有程序员才是软件高手。 34(1)软件开发完成后进行软件测试。软件测试是一个系列过程活动,主要包括软件测试需求分析,测试计划设计、测试用例设计和执行测试四个测试过程,软件测试贯穿于软件项目的整

13、个生命过程。 35(2)软件发布后如果发现质量问题,那是软件 测试人员的错。软件中的错误可能来自软件项目中的各个过程,软件 测试只能确认软件中存在错误,不能确保软件中没有 错误,因为从根本上讲,软件测试不可能发现全部的错误。 36(3)软件测试要求不高,随便找个人都行 。随着软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,想要进行软件测试工作需要掌握和学习很多的测试知识。 37(4)软件测试是测试人员的事情,与程序 员无关。开发和测试是相辅相成的过程,需要软件测试人员、程序员和系统分析师等保持密切的联系。需要他们之间更多的交流和协调,以便提高测试效率。对于测试中

14、发现的软件错误,很多需要程序员通过修改编码才能修复。 38(5)项目进度吃紧时少做些测试,时间富 裕时多做测试。一个软件项目的顺利完成需要有合理的项目进 度计划,其中包括合理的测试计划,对项目实 施过程中的任何问题,都要有风险分析和相应 的对策,不要因为开发进度的延期而简单的缩 短测试时间,因为缩短测试时间带来的测试不完整引起的潜在风险,往往造成更大的浪费。 39(6)软件测试是没有前途的工作,只有程序员才是软件高手。 随着市场对软件质量需求的不断提高,软件测试将变得越来越重要,相应的软件测试人员的地位和待遇将会逐渐提高。 40习题: 1、判断对错:测试的目的是说明程序正确地执行它 应有的功能

15、。2、程序Triangle,输入三个整数,表示一个三角形 的三个边长,该程序产生一个结果,指出该三角形 是等边三角形、等腰三角形还是不等边三角形。为 说明其能正确执行它的功能,可使用“测试用例 ”(3,4,5),(5,5,6),(6,6,6), 程序都能给出正确结 果,是否就可认为程序是正确的?41第二章 软件缺陷什么是软件缺陷为什么会出现软件缺陷Bug如何穿透测试软件缺陷的分类研究软件缺陷的目的软件缺陷的修复费用422.1 什么是软件缺陷2.1.1 软件缺陷Bug的由来从电脑诞生之日起,就有了电脑BUG。第一个有记载的bug是美国海军的编程员,编译 器的发明者格蕾斯哈珀(Grace Hopp

16、er)发现的。4344452.1.2 软件缺陷的定义符合下列5个规则才能叫软件缺陷: 1. 软件未达到产品说明书标明的功能。 2. 软件出现了产品说明书指明不会出现的错 误。 3. 软件功能超出产品说明书指明范围。 4. 软件未达到产品说明书虽未指出但应达到 的目标。 5. 软件测试员认为软件难以理解、不易使用 、运行速度缓慢,或者最终用户认为不好。46产品说明书:产品说明书又简称为说明或产品说明,是软 件开发小组的一个协定。它对所开发的软件 产品进行定义, 给出产品的细节、如何做 、做什么、不能做什么等。472.1.3 软件失败的术语描述1、常用术语描述:缺点(defect) 偏差 (variance)谬误 (fa

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号