资源预览内容
第1页 / 共60页
第2页 / 共60页
第3页 / 共60页
第4页 / 共60页
第5页 / 共60页
第6页 / 共60页
第7页 / 共60页
第8页 / 共60页
第9页 / 共60页
第10页 / 共60页
亲,该文档总共60页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软件测试培训讲义,深圳市软件行业协会培训中心,课程目的,了解软件工程的基本概念和过程 了解软件质量定义和软件质量保证过程 深入掌握软件测试原理、方法、过程 通过实战掌握测试策略、技术,第一部分 软件测试的原理第三章,软件测试概念,目的与内容,软件危机 软件缺陷是什么 软件测试职业发展 软件测试人员应具备的素质和技能 软件测试基本概念 软件测试的目的 软件测试的重要性 软件测试的原则 软件开发与软件测试,第一部分:软件测试的原理第三章:软件测试概念,软件危机,软件危机的产生,软件是人编的所以不完美 实例: 1994-1995,迪斯尼的狮子王系统不支持问题 Intel的pentium处理器 1994年浮点除法缺陷 200年8月28日,1.13MHZ处理器一个可能导致运行程序被挂起的执行指令问题 1999年12月3日,美国航天局火星极地登陆飞船失踪 1991年爱国者导弹防御系统系统时钟错误积累造成跟踪系统失去精确度 千年虫,世界各地解决2000年错误超过数亿美元,软件危机的产生,软件是人编的所以不完美 实例: 1994-1995,迪斯尼的狮子王系统不支持问题:迪斯尼94年秋开发了一个面向儿童的游戏,当年卖得非常火,几乎是美国儿童,人手一套,但在圣诞节后的第一天,迪斯尼的投诉电话就被打爆了,因为这个有戏在很多不通类型的PC上都不能运行,导致公司损失惨重。 点评:典型的兼容性测试没做好,软件危机的产生,软件是人编的所以不完美 实例: 1991年爱国者导弹防御系统系统时钟错误积累造成跟踪系统失去精确度:由于系统始终的一个很小的计时错误,积累起来到14小时后,跟踪系统不再准确 点评:没有进行压力测试,软件危机的产生,软件是人编的所以不完美 实例: 千年虫,世界各地解决2000年错误超过数亿美元:由于存储一个年份需要四个数字,即需要四个字节的存储空间,在70年代那个视存储空间为命的年代,把年的表示变成了两位,即:1981年存储为81年,而到2000年的时候,存储器记录的就变成了00年,这么一个小错误,是全球更换或升级系统所费估计达到了数千亿美元。 点评:测试的边界问题没覆盖,第一部分:软件测试的原理第三章:软件测试概念,软件缺陷,“臭虫”的由来,人们将软件错误称为“臭虫”,这是因为第一个有记载的电脑故障是由线路上的臭虫造成的。就是我们通常称的“BUG”。,软件失败的术语描述,缺点(defect) 问题 (problem) 谬误 (fault) 矛盾(inconsistency) 失败(failure) 偏差(variance) 毛病 (incident) 特殊(feature) 异常 (anomaly) 错误 (error) 缺陷(bug),软件失败的几个定义,错误:人类会犯错误。 缺陷:缺陷是错误的结果。 失效:当缺陷执行时会发生失效。 事故:当出现失效时,可能会也可能不会呈现给用户。,软件缺陷,软件未达到产品描述表明的功能。 软件出现了产品描述指明不会出现的错误。 软件功能超出产品描述指明范围。 软件未达到产品描述虽未指出但应达到的目标。 软件测试人员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。,软件缺陷的分类,以出现相应错误的开发阶段来划分; 以相应失效产生的后果来划分; 以解决难度来划分; 以不解决会产生的风险来划分; 根据异常出现的频率来划分。,软件缺陷产生的原因,软件缺陷产生的原因有很多,但最主要的原因要归咎于产品描述,软件缺陷的寄生虫性,找到的软件缺陷越多,就说明软件缺陷越多,原因: 程序员的疲倦 程序员往往犯同样的错误 某些软件的缺陷其实是大灾难的征兆,软件测试的杀虫剂现象,软件测试越多,其免疫力越强的现象,克服方法: 不断编写不同的新的测试程序 对程序的不同部分进行测试,软件测试的不修复原则,并非所有软件缺陷都能修复,不需要修复软件缺陷的原因: 没有足够的时间 不算真正的软件缺陷 修复的风险太大 不值得修复,Pareto原则,Pareto原则暗示着测试发现的错误中的80%很可能起源于程序模块中的20%。,软件测试员的目标,发现软件缺陷,第一部分:软件测试的原理第三章:软件测试概念,软件测试职业发展,测试团队的责任,事后的检测 测试活动,大多数是一种检验活动,他主要是对事件完成后的一种检测和验证 事后检测的力度 事后检测的力度,在于对事件或活动的细分,也就是是检测的力度 事后检测的精度 事后检测的精度,在于对事件或活动的数据化,也就是每个检测力度下的量化,测试团队的责任发展,事后的检测,增加检测力度,增加检测精度,改进和优化,问题预测,测试人员面临的机遇,我们的机遇 : 软件产业蒸蒸日上 亲身参加我国赶超世界先进水平的竞争,就业机会多 锻炼提高个人素质 挑战性的环境更锻炼人 需要研发适合我国实际状况的最佳测试技术、方 法、管理,测试人员的使命,测试人员的使命和重担 : 做为测试人员应怎样武装自己,迎接新时代软件测试的需求和挑战? 使命1:为我国软件测试领域赶超世界先进水平贡献我们的最大力量! 使命2:从现在做起:培养优秀测试技术和管理人才!,第一部分:软件测试的原理第三章:软件测试概念,软件测试人员应具备的素质,测试人员应具备的素质,从人的基本素质而言,需要具备以下素质: 探索精神:不害怕陌生环境,喜欢装新软件,总是不停尝试,寻找转瞬即使的缺陷 善于发现问题:喜欢解迷 具有创造性:常需要使用超常手段来寻找缺陷 追求完美:完美主义者 沟通能力:一名理想的测试者必须能够同测试涉及到的所有人进行沟通,测试人员应具备的素质,从人的基本素质而言,需要具备以下素质: 自信心:开发者指责测试者出了错是常有的事,测试者必须对自己的观点有足够的自信心。如果容许别人对自己指东指西,就不能完成什么更多的事情了 幽默感:在遇到狡辩的情况下,一个幽默的批评将是很有帮助的 强的记忆力:一个理想的测试者应该有能力将以前曾经遇到过的类似的错误从记忆深处挖掘出来,这一能力在测试过程中的价值是无法衡量的。因为许多新出现的问题和我们已经发现的问题相差无几,测试人员应具备的素质,从人的基本素质而言,需要具备以下素质: 耐心:一些质量保证工作需要难以置信的耐心。有时你需要花费惊人的时间去分离、识别和分派一个错误。这个工作是那些坐不住的人无法完成的 自我督促:干测试工作很容易使你变得懒散。只有那些具有自我督促能力的人才能够使自己每天正常地工作 学习能力:需要不断的进行学习新东西,测试人员应具备的素质,从技术角度而言,需要具备以下素质: 测试能力:即对所测试对象的业务需要比较熟悉,因为测试人员靠什么吃饭?首先是业务的掌握能力,一般来说,大的行业业务(移动支撑、银行、物流等)掌握2年为一段 计算机的基本知识:需要掌握一些计算机硬件的基本知识,如:存储原理、处理器指令类型等 编码、操作系统、数据库等知识:具体根据所测对象的具体而定,测试人员应具备的素质,从技术角度而言,需要具备以下素质: 软工的基本知识:软件工程中关于软件开发过程的基本模型,基本理论等 测试的理论方法:测试的策略、方法等 软件质量标准:软件包的国家、国际质量标准 文字表达能力:标准、准确、完整的文字表达能力,第一部分:软件测试的原理第三章:软件测试概念,软件测试的基本概念,内容和目的,软件测试概述 什么是软件测试 软件测试的目的 软件测试的原则 软件测试的工作内容 软件测试的重要性,软件测试概述,随着信息技术的飞速发展,软件产品已经应用到社会的各个领域,软件产品的质量自然成为人们共同关注的焦点; 不论软件的生产者还是软件的使用者,均生存在竞争的环境中; 软件开发商为了占有市场,必须把产品质量作为企业的重要目标之一,以免在激烈的竞争中被淘汰出局; 用户为了保证自己业务的顺利完成,当然希望选用优质的软件。,软件测试概述,软件带来错误的原因很多,具体地说,主要有如下几点: 交流不够、交流上有误解或者根本不进行交流 软件复杂性 程序设计错误 需求变化 时间压力 代码文档贫乏 软件开发工具,什么是软件测试,什么是软件测试? 软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。,什么是软件测试,G.J.Myers在中认为: “程序测试是为了发现错误而 执行程序的过程.”,软件测试定义,软件测试定义: 软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。,软件测试的目的,(1)预防错误: 几乎不可实现 (2)发现错误: 软件测试目的,找错,软件测试的目的,软件测试的目的 基于不同的立场,存在着两种完全不同的测试目的。 从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。 从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。,软件测试的目的(续),Myers软件测试目的 (1) 测试是程序的执行过程,目的在于发现错误; (2) 一个好的测试用例在于能发现至今未发现的错误; (3) 一个成功的测试是发现了至今未发现的错误的测试。,软件测试的目的(续),总而言之,测试的目的是 想以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。如果我们成功地实施了测试,我们就能够发现软件中的错误。 测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。 实施测试收集到的测试结果数据为可靠性分析提供了依据。 测试不能表明软件中不存在错误,它只能说明软件中存在错误,E.W.Dijkstra 指出: “程序测试能证明错误的存在,但不能证明错误不存在.” 测试的目的是发现程序中 的错误,是为了证明程序有错, 而不是证明程序无错.,软件测试的目的(续),把证明程序无错当作测试目的不仅是不正确的, 完全做不到的,而且对做好测试没有任何益处,甚至是十分有害的. 软件测试要设法使软件发生故障,暴露软件错误 测试的“成功”与“失败” 能够发现错误的测试是成功的测试,否则是失败的测试。,软件测试的目的(续),“测试的目的是说明程序正确地执行它应有的功能”也是错误的. 例:程序Triangle,输入三个整数,表示一个三角形的三个边长,该程序产生一个结果,指出该三角形是等边三角形、等腰三角形还是不等边三角形。 为说明其能正确执行它的功能,可使用“测试用例”(3,4,5),(5,5,6),(6,6,6), 程序都能给出正确结果,是否就可认为程序是正确的?,软件测试的目的(续),软件测试的原则,软件测试的原则 1. 应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。 2. 测试用例应由测试输入数据和对应的预期输出结果这两部分组成。 3. 程序员应避免检查自己的程序。 4. 在设计测试用例时,应包括合理的输入条件和不合理的输入条件。,软件测试的原则,软件测试的原则 5. 充分注意测试中的群集现象。经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。 6. 严格执行测试计划,排除测试的随意性。 7. 应当对每一个测试结果做全面检查。 8. 妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。,软件测试的工作内容,软件测试工作内容? 得到需求、功能设计、内部设计说书和其他必要的文档 得到预算和进度要求确定与项目有关的人员和他们的责任、对报告的要求、所需的标准和过程 (例如发行过程、变更过程、等等) 确定应用软件的高风险范围,建立优先级、确定测试所涉及的范围和限制 确定测试的步骤和方法 部件、集成、功能、系统、负载、可用性等各种测试 确定对测试环境的要求 (硬件、软件、通信等) 确定所需的测试用具 (testware),包括记录/回放工具、覆盖分析、测试跟踪、问题/错误跟踪、等等 确定对测试的输入数据的要求,软件测试的工作内容(
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号