软件测试基础(第二、三讲).ppt

上传人:牧羊曲112 文档编号:6610984 上传时间:2023-11-17 格式:PPT 页数:69 大小:922.50KB
返回 下载 相关 举报
软件测试基础(第二、三讲).ppt_第1页
第1页 / 共69页
软件测试基础(第二、三讲).ppt_第2页
第2页 / 共69页
软件测试基础(第二、三讲).ppt_第3页
第3页 / 共69页
软件测试基础(第二、三讲).ppt_第4页
第4页 / 共69页
软件测试基础(第二、三讲).ppt_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《软件测试基础(第二、三讲).ppt》由会员分享,可在线阅读,更多相关《软件测试基础(第二、三讲).ppt(69页珍藏版)》请在三一办公上搜索。

1、第二讲 软件测试基础,主讲人:张伟,软件过程模型,所谓软件过程模型就是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。瀑布模型 原型模型 增量模型 螺旋模型,瀑布模型,整个开发包括六个阶段:问题定义与可行性分析(计划)、需求分析、设计、编码、测试、运行维护。六个阶段自上而下、相互衔接,以固定的次序来进行。特点 阶段的顺序性和依赖性 推迟实现的观点 质量保证存在问题 完全依赖文档,很可能导致最终开发的软件不能满足用户需要,快速原型模型,快速建立一个能反映用户主要需求的原型系统,用户试用它并提出修改意见,开发人员按照意见修改原型系统,然后重复让用户试用,一旦

2、用户认为这个原型系统满足用户要求,即开始设计规格说明书。使用原因:在项目开发的初期对软件的需求认识不够清晰,使项目难于做到一次成功.特点 1.快速开发 2.可获知用户的真正需求,使开发的系统满足用户的需求,也减少了后期的维护的成本(不需要大返工)。3.一旦需求确定了,原型就可以被弃,增量模型,增量模型中,在每个阶段都生成软件的一个可发布版本。这些阶段是交错进行的。在增量模型中,软件版本是逐步完善的。在原型中,每个阶段是发布一个原型,而在增量模型中,是完成一个正式的版本。,螺旋模型,螺旋模型将瀑布模型和快速原型模型结合起来,并且加入了两种模型均忽略的风险分析。螺旋模型的每一周期都包括制定计划、风

3、险分析、实施工程和评审四个阶段。,软件测试简介,软件测试是软件工程过程中的关键组成部分。软件开发中,在需求、设计、编码阶段都有可能发生错误。软件测试就是为了发现程序中的错误而分析或执行程序的过程。软件测试是软件质量保证的重要手段。,软件测试的价值,防止质量灾难的发生。编程大师说:没有错误的程序世间难求。(编程之道)确保软件满足用户的需求(功能性,非功能性)确保软件符合质量标准(国家,行业,企业),质量灾难的典型例子,千年虫 年份用两位去表示引发歧义。爱国者导弹 误差导致距离偏差阿里亚娜火箭发射失败.,软件测试的目的,发现软件中的缺陷,(包括需求、设计的缺陷和程序中bug)检查软件是否满足用户的

4、需求。注意:软件测试的目的不是证明软件没有缺陷的,实际上这个证明是完全不可能的。,Glen Myers提出关于软件测试的目标,测试是一个为了寻找错误而运行程序的过程。一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例。一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。Glen Myers提到的目标已经不能完全描述如今的软件测试所要达到的目标,如今的软件测试目标是:尽可能多的发现软件中的错误和缺陷,对软件质量进行度量和评估以提高软件质量,并检验软件系统是否满足用户需求。,对测试工作的误解(理解),1、测试和调试是一回事2、对软件可以进行穷举测试a.输入条件太多 b.输入条件的组合太多

5、c.程序中路径太多 c.程序中潜在的错误和缺陷3、软件有缺陷,是测试人员的失职4、关注测试执行而忽视测试用例设计测试用例是由前提条件和操作步骤、预期结果、实际结果等构成。在对软件进行测试时,需要:构造测试用例执行测试用例,检查结果是否与期望的输出一致在编写测试用例时,需要以软件需求为依据。,为什么不可能做穷举测试,M1,D1,D2,D3,D4,M2,M3,M4,M5,M6,M7,D5,=20次,循环次数01220独立路径数51+52+53+5211014(1百万亿)每个测试用例(考虑、执行、验证结果)5分钟共需测试时间10亿年,为什么不可能做穷举测试,若X、Y为所有可能的整数 在字长32位机上

6、测试X1、Y1 Z1 Xn、Yn Znn=232232=264 1.84 1019,软件工程教材,对测试工作的误解(理解),5、测试比编程容易得多。6、测试是编码之后进行的工作7、测试自动化是万能的。自动化测试就是将测试行为输入到机器中,让机器测试代替人为测试的一种测试行为。如功能自动化测试工具winrunner。8、软件测试是一种破坏性的工作9、测试的目的在于证明软件的正确性,软件测试国外现状(了解),1、软件测试在很多高校和研究机构作为一个单独的学科去研究。2、软件测试在软件公司尤其是大型公司受重视3、测试工具比较发达,软件测试国内现状(了解),1、国家、高校和公司越来越关注软件测试理论的

7、研究和测试人员的培养。2、第三方测试机构的重要性越来越体现出来。3、各种测试职业培训机构涌现,为软件测试行业培养了大量的人才。,软件发展的趋势(了解),1、软件测试成为一个完全独立的流程,贯穿与软件开发的每个阶段,使每个阶段都是可测试的。2、面向对象软件、分布式、实时系统的测试理论不断发展。3、软测人员的地位提高。4、三方测试迅速发展。,软件测试定义,软件测试定义(1983,IEEE):使用人工或自动手段来进行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。“软件测试以检验是否满足需求为目标”。比较直白的定义:软件测试是根据开发各阶段的规格说明书和

8、程序的内部结构而精心设计的一批测试用例,并利用这些测试用例运行程序以发现错误的过程。,软件测试对象,软件测试的对象:程序、需求分析(需求分析说明书)、程序设计(概要设计说明书、详细设计说明书),需求规格说明,设计规格说明,程序,软件测试的对象,V&V概念(理解),1、验证:我们在正确地构造软件吗?2、确认:我们在构造正确的软件吗?,软件测试分类-按测试策略分类,1、白盒测试2、黑盒测试3、灰盒测试,白盒测试,1、白盒测试2、黑盒测试3、灰盒测试,黑盒测试,灰盒测试,灰盒测试是一种介于白盒测试和黑盒测试之间的测试。它既基于程序运行的外部表现又结合程序内部逻辑来设计测试用例,执行程序并采集程序路径

9、执行信息和外部用户接口结果。,软件测试分类-按测试执行方式分类,1、静态测试2、动态测试,静态测试,静态测试不执行被测试的软件。类似于汽车检查。,静态测试,1、代码审查(包括代码评审和走查)。检查代码和设计的一致性;检查代码的标准性、可读性;检查代码逻辑表达的正确性和完整性;检查代码结构的合理性等。2、静态分析。主要对程序进行控制流分析、数据流分析、接口分析和表达式分析等。3、文档检查。,动态测试是在测试过程中执行被测试软件,类似于试车。,动态测试,动态测试,实际过程中大部分测试都是动态测试,黑盒和白盒都属于动态测试。,软件测试分类-按测试实施组织分类,1、测试2、测试3、第三方测试,软件测试

10、分类-按开发阶段分类,1、单元测试2、集成测试3、确认测试4、系统测试5、验收测试,按开发阶段分类,单元测试、集成测试、确认测试、系统测试、验收测试,这是一种从小到大、循序渐进的测试过程。单元测试是对程序员编写完成的一个个程序单元进行测试。依照主要文档-详细设计说明书,数据库设计说明书,单元测试,单元通常不是可运行的程序。单元测试必须编写额外的可运行的测试驱动程序。,集成测试,集,成,测,试,也称组装测试,在单元测试的基础上,按照概要设计将模块集成一个系统,对系统进行测试。集成测试可以发现模块间接口以及全局数据结构等问题。集成测试中,会混合使用白盒测试和黑盒测试方法。,集成测试,也称有效性测试

11、,测试的目的是检查已实现的软件系统是否满足需求规格说明书中规定的各种需求。确认测试中,采用黑盒测试技术。依照主要文档-需求规格说明书,确认测试,系统测试,系统测试,系统测试是将通过确认测试的软件作为一个元素,在实际或模拟运行环境下,测试其与系统中其他元素能否正确地配置、连接,并满足用户需求。系统测试的目的找到软件与系统需求不符合的地方。系统测试采用黑盒测试方式,系统测试,验收测试,验收测试是按项目任务书或合同、供需双方约定的验收依据文档对整个系统进行测试与评审,以决定是否接收软件系统。验收测试以用户或者用户信任的第三方测试结构为主的测试,测试过程,需求分析,设计,编码,系统,组装,单元,修正,

12、修正,修正,通过,通过,通过,(集成),测试与开发前期工作的关系,需求分析,概要设计,详细设计,编码,单元测试,集成测试,系统测试,其他测试方法与技术,1、回归测试2、迭代测试3、功能测试4、性能测试5、安全性测试6、可靠性测试7、兼容性测试8、可移植性测试9、冒烟测试10、界面测试11、随机测试,软件测试过程模型,目前主流的开发模型有瀑布模型、原型模型、增量模型等,它们对软件开发具有很好的指导作用。作为与软件开发紧密联系的软件测试也需要测试模型更好的指导实践,目前主流的软件测试模型有:V模型W模型H模型,软件测试过程模型V模型,V模型:V模型是瀑布模型的变种。强调了在整个软件项目开发中需要经

13、历的若干个测试级别,并与每一个开发级别对应。,V模型中的过程从左到右,描述了基本的开发过程和测试行为 V型模型非常明确的标明了测试过程中存在着不同的级别清楚地描述了这些测试阶段和基本开发过程期间各阶段的对应关系。,缺点:1、它仅仅把测试过程作为在需求分析、程序设计及编码之后的一个阶段,容易使人误认为测试是针对程序进行测试寻找错误。2、需求分析、程序设计等活动的测试要到后期才完成,会使修复错误的代价大大增加。,软件测试过程模型V模型,软件测试过程模型W模型,为了弥补V模型的不足,体现“尽早、全面地进行软件测试”的原则,出现了W模型。W模型:强调测试伴随着软件开发的各个阶段,测试的对象不仅仅是程序

14、,需求分析、设计也要进行测试。测试与开发同步进行,只要相应的开发工作完成,我们就可以执行测试。例如:需求分析完成后,测试人员就参与到对需求的验证和确认活动,以尽早的发现需求分析中的问题,并可以从文档的可测性角度为需求文档的编写提供建议。需求文档确定之后,测试人员就要开始着手编写测试计划和测试用例,可以发现需求文档本身的缺陷,避免缺陷残留到一下阶段。这体现了尽早的特点。,软件测试过程模型W模型,W模型中,测试工作贯穿与开发工作的每个阶段,每个阶段生成对应级别的测试计划和测试用例,当开发计划变更时,我们及时调整测试进度和测试策略,并依据需求调整测试计划和用例。这体现了全程性的特点。W模型也是有局限

15、性的。W模型和V模型都把软件的开发视为需求、设计、编码等一系列串行的活动。同样的,软件开发和测试保持一种线性的前后关系,需要有严格的指令表示上一阶段完全结束,才可以正式开始下一个阶段。这样就无法支持迭代、自发性以及变更调整。对于当前很多文档需要事后补充,或者根本没有文档的做法下(这已成为一种开发的文化),开发人员和测试人员都面临同样的困惑。,软件测试过程模型W模型,软件测试过程模型H模型,V和W模型一是无法支持迭代的开发模式,另一种是没有表示出测试流程的完整性。H模型:将测试活动完全独立出来,形成一个完全独立的流程,以将测试准备活动和测试执行活动清晰地体现出来。,这个示意图仅仅演示了在整个生产

16、周期中某个层次上的一次测试“微循环”。图中的其他流程可以是任意开发流程。例如,设计流程和编码流程。也可以是其他非开发流程,例如,SQA流程,甚至是测试流程自身。也就是说,只要测试条件成熟了,测试准备活动完成了,测试执行活动就可以进行了。,软件测试过程模型H模型,概括地说,H模型揭示了:软件测试不仅仅指测试的执行,还包括很多其他的活动。例如测试准备。软件测试是一个独立的过程,贯穿产品整个生命周期,与其他流程并发地进行。软件测试要尽早准备,尽早执行。软件测试是根据被测物的不同而分层次进行的。不同层次的测试活动可以是按照某个次序先后进行的,但也可能是反复的。在H模型中,软件测试模型是一个独立的流程,

17、贯穿于整个产品周期,与其他流程并发地进行。当某个测试时间点就绪时,软件测试即从测试准备阶段进入测试执行阶段。,软件测试过程的实施策略,1、测试过程模型选取策略任何模型都不是万能的,掌握各种过程模型的理念,用各模型中对项目有实用价值的方面去指导我们的测试工作。在实际的测试活动中,以W模型为框架,及早全面地开展测试,同时灵活地运用H模型的独立测试思想,将测试与开发过程紧密结合,在达到恰当的测试就绪点时,执行独立的测试工作。H模型简化我们对测试工作流程的理解,在实际项目的测试工作中,我们利用H模型的理念做测试工作分工和测试工作准备。,软件测试过程的实施策略,2、测试过程管理理念尽早测试全面测试全过程

18、测试独立、迭代测试,软件测试的原则(理解),尽早、全面、全过程地开展测试活动测试标准应建立在满足用户需求的基础上程序员应避免检查自己的程序设计用例时,考虑多种情况(后面会讲到)充分注意测试中错误集中发生现象对测试中发现的错误应当有一个确认的过程制定严格的测试计划并执行之重视回归测试保存一切测试文档,软件测试工作流程,科学的软件测试流程是软件测试人员在项目开发初始就融入到项目中,了解用户需求和设计开发工作。在测试开始前,分析测试需求,拟定软件测试计划,设计和生成测试用例。在测试过程中,有效地进行缺陷和问题跟踪。测试结束后,生成软件测试报告和测试评估报告。,软件测试工作流程,软件公司多采用W型为主

19、的测试模型。因此以W模型为例分析测试流程。对于W模型,测试分成几个阶段,不同的阶段对应不同的开发阶段和不同的测试对象。基本开发阶段:确认测试和系统测试对应需求分析阶段,在需求分析阶段就要开始编写确认和系统测试计划、用例(黑盒测试)。集成测试对应着概要设计阶段,在概要设计阶段就要开始编写集成测试计划、用例(黑+白盒测试)。单元测试对应着详细设计阶段,在详细设计阶段就要开始编写测试计划、用例(白盒测试)。测试阶段:根据相应的测试计划和用例,执行测试,分析和确定软件缺陷,对测试进行总结和评估。,软件测试工作流程(总结),测试准备工作分析需求、文档审核测试计划测试设计与开发测试实施测试评估与总结,测试

20、需求分析、测试计划,分析测试需求测试文档审查估计测试工作量确定测试资源确定测试活动生成软件测试计划,测试设计与开发,设计测试策略测试采用的方法测试重点与非重点测试用例执行顺序测试用例的设计与实现建立测试开发环境,录制和回放测试过程。,测试执行,建立真实或者模拟的测试环境与系统执行测试用例BUG交流与确定生成测试问题报告单BUG的跟踪解决回归测试,测试评估与总结,总结测试的计划完成情况和测试用例执行情况遗留bug的数量及严重程度遗留bug的详细描述被测软件质量评估生成软件测试报告对软件测试工作进行总结,找出测试工作需要改进的地方生成软件测试总结,设计测试建立一个合适的测试执行环境评估、获取、安装

21、和配置自动测试工具执行测试撰写适当的测试文档,测试人员主要职责,软件测试人员的技术素质,测试人员的技术要求与开发相比要更加全面。软件开发技术软件测试技术软件工程能力行业知识,沟通能力移情能力自信心 幽默感 超强的记忆力 足够的耐心怀疑精神自我督促洞察力,测试人员的非技术素质,测试执行(敏锐,逆向思维,洞察力)测试设计(周密,细致,专业知识)测试管理-计划/组织/控制/实施/改进(全局观念,沟通,协调,影响力),测试人员的发展之路,软件测试在整个软件开发中不可或缺软件测试需要面对巨大的技术挑战,可以不断地积累经验和技术,从而做得更好软件测试所需要掌握的技术内容是无止境的,需要进行新的学习,测试工程师职业前景,课后复习,深入理解几种软件工程模型。掌握软件测试的目标理解测试工作的几个误解了解测试用例、测试自动化的概念掌握软件测试的定义、测试的对象理解V&V的概念掌握几种测试方法的含义,课后复习,理解几种测试模型以及测试实施策略理解测试的原则掌握软件测试的流程了解测试人员所需的基本素质及发展道路,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号