您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第1章 软件测试概述
SoftwareTesting&PracticeSTP第1章软件测试概述软件测试与实践STP22020年2月1日星期六生活中有测试(质检)的例子?问题STP32020年2月1日星期六为什么要软件测试?Chrome运行时,笔记本电脑有时无法进入休眠状态;Chrome不支持SSL身份验证;在插件比较多的网页上(例如内含视频或flash),滚动条响应迟钝;当打开RSSfeed或xml文件时,Chrome只显示xml原始数据;图片有时不能显示的问题;鼠标滚轮只能向下滚不能向上滚;Chrome几乎打开每一个网页都需刷新一遍STP42020年2月1日星期六内容提要1.3软件测试基本理论1.2软件缺陷及分类1.6软件测试职业与素质1.5软件测试流程1.4软件测试过程1.1软件测试背景STP52020年2月1日星期六1.1软件测试背景在软件业较发达的国家,软件测试不仅成为软件开发的一个有机组成部分,而且在软件开发的系统工程中占据着相当大的比重,大量统计资料表明,软件测试的工作量往往占软件开发总工作量的40%以上。可见软件测试在软件开发中的地位不言而喻。发达国家的软件测试的专业化水平非常高,软件测试是一项很受重视的工作。STP62020年2月1日星期六1.1软件测试背景(1)辽宁福彩漏洞(2)千年虫(Y2K)问题(3)英特尔奔腾浮点除法软件故障软件缺陷的案例STP72020年2月1日星期六1.2软件缺陷及分类软件缺陷的定义:计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。软件缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。STP82020年2月1日星期六1.2.2软件缺陷本书中定义:只有至少满足下列5个规则之一才称为发生了一个软件缺陷:(1)软件没有实现产品规格说明所要求的功能;(2)软件中出现了产品规格说明指明不应该出现的错误;(3)软件实现了产品规格说明没有提到的功能;(4)软件没有实现虽然产品规格说明没有明确提及但应该实现的目标;(5)软件难以理解,不容易使用,运行缓慢,或从测试员的角度看,最终用户会认为不好.STP92020年2月1日星期六1.2软件缺陷及分类缺陷–Bug缺点(defect)偏差(variance)谬误(fault)失败(failure)问题(problem)矛盾(inconsistency)错误(error)毛病(incident)异常(anomy)STP102020年2月1日星期六1.2.2软件缺陷的分类(1)致命的(Fatal):致命错误,不能完全满足系统要求,基本业务功能未实现,系统崩溃、不稳定或挂起等导致系统不能继续运行。(2)严重的(Critical):严重错误,严重地影响系统要求或基本功能的实现,且没有办法更正(重新安装或重新启动不属于更正办法),使系统不稳定、破坏数据、产生错误结果,部分功能无法实现。(3)一般的(Major):一般性错误,如界面错误(严重的界面提示错误或不友好表现),非重要功能无法正确执行,实现不完整,但不影响系统功能等。这样的软件缺陷不会影响系统的基本使用。(4)微小的(Minor):轻微错误,使操作者不方便或遇到麻烦,但它不影响执行工作功能或重要功能,或对最终结果影响有限。1.软件缺陷按其严重性一般可以分为以下4类:STP112020年2月1日星期六1.2.2软件缺陷的分类(1)功能性错误:列在产品规格说明中的需求没有在最终系统中实现。(2)系统错误:存在或产生于所开发的系统之外的软硬件错误。(3)逻辑错误:程序运行起来不像要求的样子。(4)用户界面错误:字段和控件标号不一致,功能提供的不一致等。(5)数据错误:访问数据库时出错。(6)编码错误:源代码中存在的语法错误。(7)测试错误:测试者误操作却认为发现了问题。2.软件缺陷按照技术种类可以分为以下7类:STP122020年2月1日星期六1.2.2软件缺陷的分类(1)激活状态(Active或Open):问题没有解决,测试人员新报告的缺陷或者验证后缺陷仍旧存在。(2)已修正状态(Fixed或Resolved):开发人员针对缺陷,修正软件后已解决问题或通过单元测试。(3)关闭状态(Close或Inactive):测试人员经过验证后,确认缺陷不存在之后的状态。2.软件缺陷按所处状态的不同可以分为:STP132020年2月1日星期六1.2.3软件缺陷的产生问题出在哪里?项目没有被很好地理解;计划不周,最终导致进度拖延。没有充分的文档资料。人与人的交流比写程序困难得多。软件可靠性缺少度量的标准,质量无法保证。软件难以维护、不易升级。STP142020年2月1日星期六1.2.3软件缺陷的产生(1)软件本身:文档错误、用户使用场合(userscenario),时间上不协调、或不一致性所带来的问题,系统的自我恢复或数据的异地备份、灾难性恢复等问题(2)团队工作:误解、沟通不充分(3)技术问题:算法错误,语法错误,计算和精度问题,接口参数传递不匹配(4)项目管理的问题从软件本身、团队工作和技术问题等角度分析,就可以了解造成软件缺陷的主要因素STP152020年2月1日星期六1.2.4软件缺陷的构成通过对众多从小到大的项目进行研究发现,大多数的软件缺陷并非源自编程错误,而是产品规格说明书,排在产品规格说明书之后的是设计,编码排在第三位。其他编码设计产品规格说明STP162020年2月1日星期六1.2.4软件缺陷的构成软件缺陷的分布主要集中在需求分析和设计阶段。,修复缺陷的代价不是随时间线性增长,而几乎是呈指数增长的,STP172020年2月1日星期六1.2.4软件缺陷的构成软件测试的发展:从测试的思想导向来划分为4个阶段:1957~1978年,以功能验证为导向,测试是证明软件是正确的(正向思维)。1978~1983年,以破坏性为为导向,测试是为了找到软件中的错误(逆向思维)。1983~1987年,以质量评估为导向,测试是提供产品的评估和质量度量。1988年起,以缺陷预防为导向,测试是为了展示软件符合设计要求,发现缺陷、预防缺陷STP182020年2月1日星期六1.2.4软件缺陷的构成软件测试的发展:分为3个阶段——初期阶段、发展阶段和成熟阶段初级阶段(1957~1971)测试通常被认为是对产品进行事后检验,缺乏有效的测试方法发展阶段(1972~1982),1972年第一次关于软件测试的正式会议,促进了软件测试的发展成熟阶段(1983到现在),国际标准Std829-1983,形成一门独立的学科和专业,成为软件工程学科中的一个重要组成部分。STP192020年2月1日星期六1.3软件测试基本理论软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。软件测试的定义从广义上讲,软件测试是指软件产品生存周期内所有的检查、评审和确认活动。如:设计评审、文档审查、单元测试、集成测试、系统测试、验收测试等。从狭义上讲,软件测试是对软件产品质量的检验和评价。它一方面检查、揭露软件产品质量中存在的质量问题,同时又需要对产品质量进行客观的评价并能提出改进意见。STP202020年2月1日星期六1.3软件测试的基本理论软件测试的目的软件测试就是“验证(Verification)”和“有效性确认(Validation)”活动构成的整体,即软件测试=V&V。“验证”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性。验证过程提供证据表明软件相关产品与所有生命周期活动的要求(如正确性、完整性、一致性、准确性等)相一致。“有效性确认”是确认所开发的软件是否满足用户真正需求的活动。相当于,保持对软件需求定义、设计的怀疑,一切从客户出发,理解客户的需求,发现需求定义和产品设计中的问题。这主要通过各种软件评审活动来实现。STP212020年2月1日星期六1.3软件测试基本理论(1)软件开发人员即程序员应当避免测试自己的程序。(2)应尽早地和不断地进行软件测试。(3)对测试用例要有正确的态度(4)人以群分,物以类聚,软件测试也不例外,一定要充分注意软件测试中的群集现象,也可以认为是“80-20原则”。(5)严格执行测试计划,排除测试的随意性,以避免发生疏漏或者重复无效的工作。(6)应当对每一个测试结果进行全面检查。(7)妥善保存测试用例、测试计划、测试报告和最终分析报告,以备回归测试及维护之用。软件测试原则STP222020年2月1日星期六1.4软件测试过程(一)V模型确认确认确认集成测试报告单元测试报告单元测试计划集成测试计划(说明)确认测试计划(说明)系统测试计划(说明)编码详细设计单元测试概要设计集成测试需求分析用户测试确认测试报告系统测试报告软件测试技术的发展历程中出现过很多种模型,最常见的有V模型,W模型H模型,X模型等STP232020年2月1日星期六1.4软件测试过程(1)测试是开发之后的一个阶段。(2)测试的对象就是程序本身。(3)实际应用中容易导致需求阶段的错误一直到最后系统测试阶段才被发现。(4)整个软件产品的过程质量保证完全依赖于开发人员的能力和对工作的责任心,而且上一步的结果必须是充分和正确的,如果任何一个环节出了问题,则必将严重的影响整个工程的质量和预期进度。V模型问题存在的问题如下:STP242020年2月1日星期六1.4软件测试过程(二)W模型STP252020年2月1日星期六1.4软件测试过程在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。W模型存在的局限:STP262020年2月1日星期六1.4软件测试过程(三)H模型STP272020年2月1日星期六1.4软件测试过程它将测试活动完全独立出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来。H模型揭示了一个原理:软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。H模型指出软件测试要尽早准备,尽早执行。不同的测试活动可以是按照某个次序先后进行的,但也可能是反复的,只要某个测试达到准备就绪点,测试执行活动就可以开展。H模型的特点:STP282020年2月1日星期六1.4软件测试过程(二)X模型STP292020年2月1日星期六1.4软件测试过程X模型的特点:提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行的程序。STP302020年2月1日星期六1.4软件测试过程(五)前置测试模型STP312020年2月1日星期六1.4软件测试过程(1)开发和测试相结合前置测试模型的特点:(2)对每一个交付内容进行测试(3)在设计阶段进行测试计划和测试设计(4)测试和开发结合在一起(5)让验收测试和技术测试保持相对独立STP322020年2月1日星期六1.4软件测试过程(1)尽早测试软件测试过程管理原则(2)全面测试(3)全过程测试(4)独立的、迭代的测试STP332020年2月1日星期六1.5软件测试流程软件测试可以分为5个阶段:计划阶段、设计阶段、执行阶段、评估阶段和验收阶段。在计划阶段的主要工作就是编写测试计划,对整个测试进度的安排,人力物力的分配等做一个规划。设计阶段的主要工作是编写详细测试策略和测试用例。在测试执行阶段,主要是进行环境的搭建,测试用例的执行,提交缺陷报告,主要的输出就是测试用例的执行结果和缺陷报告。评估阶段主要工作是编写测试报告,对整个测试过程和被测软件的质量做一个评估。最后验收阶段要求编写出操作指引、用户手册等文档,指导用户使用。STP3
本文标题:第1章 软件测试概述
链接地址:https://www.777doc.com/doc-3403887 .html