《软件测试第二讲软件测试策略与过程.ppt》由会员分享,可在线阅读,更多相关《软件测试第二讲软件测试策略与过程.ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件测试软件测试第第2讲讲 软件测试策略与过程软件测试策略与过程1李钏 licleadall.cc软件测试策略与过程软件测试策略与过程软件测试的策略与方法软件测试的策略与方法软件测试过程软件测试过程软件测试的分类软件测试的分类 软件测试的策略与方法软件测试的策略与方法软件测试的策略与方法软件测试的策略与方法方法方法目标目标/特性特性单元测试单元测试系统测试系统测试验收测试验收测试性能测试性能测试强壮性测试强壮性测试功能测试功能测试白盒测试白盒测试黑盒测试黑盒测试测试阶段或层次测试阶段或层次适用性测试适用性测试可靠性测试可靠性测试集成测试集成测试安全性测试安全性测试动态测试和静态测试动态测试和静
2、态测试静态测试不执行程序来寻找代码中存在的错误或评估代码的过程。由人工来进行,发挥了人的逻辑思维的优势或测试经验。能够批量性地发现问题,并直接定位到缺陷或错误的具体位置。用静态测试来进行代码检查、静态结构分析。动态测试必须生成测试数据来运行被测试程序,取得程序运行的真实情况、动态情况,进而进行分析测试质量依赖于测试数据 生成测试数据、分析测试结果的工作量大,使开展测试工作费时、费力、费人动态测试和静态测试动态测试和静态测试静态测试静态测试不实际运行软件,主要是对软件的编程格式、结构等方面进行评估静态测试包括代码检查、程序结构分析、代码质量度量等。它可以由人工进行,也可以借助软件工具自动进行代码
3、检查比动态测试更有效率,能快速找到缺陷,发现30%70%的逻辑设计和编码缺陷黑盒测试和白盒测试黑盒测试和白盒测试什么是黑盒测试(Black-boxTesting)功能测试,数据驱动测试:是在已知软件产品具有何种功能的前提下,用来检验每个功能是否能够正常使用的一个测试方法。测试的方法和原理:把程序看成是一个不能打开的黑盒子,在不考虑程序内部结构的情况下,测试人员用操作接口的方式进行测试,检查程序能否按照需求指定的功能接收输入数据产生正确的结果。黑盒测试主要在开发后期进行。基于对需求、设计、用户要求的理解黑盒测试关注输入、输出的信息域,而不关注软件的内部结构黑盒测试是穷举输入测试黑盒黑盒测试和白测
4、试和白盒测试盒测试什么是白盒测试白盒测试也称结构测试或逻辑驱动测试必须知道软件内部工作过程,通过测试来检测软件内部是否按照需求、设计正常运行通过逻辑覆盖、路径覆盖等方式选择测试用例,可以用测试覆盖率评价测试用例白盒测试法是否可以用穷举逻辑或路径法来测试?黑盒黑盒测试和白测试和白盒测试盒测试PINOUT白盒测试白盒测试:黑盒测试黑盒测试:黑盒黑盒测试和白测试和白盒测试盒测试黑盒测试主要工作:检查实现功能与实际需求的满足程度;(确认和验证的过程)白盒测试主要工作:-代码检查(语法、逻辑、书写)-静态结构分析(内部关系如系统结构、函数调用关系等)-功能确认与接口分析(主要是确认过程)-逻辑覆盖率分析
5、(内部的执行路径、提高软件的可靠性)-性能与效率分析-内存分析(内存泄露、内存越界等)手工手工测试和自和自动测试手工测试自动测试适合自动化的测试操作手工测试和自动测试的比较手工手工测试和自和自动测试手工测试传统的测试方法由测试人员手工编写测试用例缺点在于测试工作量大,重复多,回归测试难以实现手工手工测试和自和自动测试自动测试利用软件测试工具自动实现全部或部分测试工作:管理、设计、执行和报告自动测试节省大量的测试开销,并能够完成一些手工测试无法实现的测试自动化测试前必须首先手工测试(调试)缺点:无法及时进行动态调整和数理分析,例如:计算正确不代表逻辑性上没有错误;手工手工测试和自和自动测试适合自
6、动化的测试操作测试用例的生成(包括测试输入,标准输出,测试操作指令等)测试的执行与控制(包括单机与网络多机分布运行;夜间及假日运行)测试对象、范围、版本等的控制测试结果与预期输出的对比不吻合的测试结果的分析、记录、分类、和通报测试的统计,报表的产生手工手工测试和自和自动测试的比的比较手工完成测试的全部过程无法保证测试的科学性与严密性:修改的缺陷越多,回归测试越困难没有人能向决策层提供精确的数据以度量当前的工作进度及工作效率反复测试带来的倦怠情绪及其他人为因素使得测试标准前后不一测试花费的时间越长,测试的严格性也就越低难以对不可视对象或对象的不可视属性进行测试。手工手工测试和自和自动测试的比的比
7、较自动测试将测试人员从反复、烦杂的测试执行中解放出来,用更多的时间进行测试设计和结果分析软件测试不可能完全自动化不能完成所有手工测试任务无创造性且灵活性差,不能改进测试的有效性过程中可能会遇到许多意想不到的问题,特别是当软件不稳定时测试脚本的维护高 软件测试的各个阶段软件测试的各个阶段开发生命周期开发生命周期.维护 需求定义应用定义应用开发 修订 建立 建立测试生命周期测试生命周期.执行.执行执行.测试计划缺陷跟踪测试开发测试设计评估n 好处:可以找到软件的好处:可以找到软件的Bug,提高软件可靠性!,提高软件可靠性!n 不好:这些不好:这些Bug可能让开发人员疯掉!可能项目延期!可能让开发人
8、员疯掉!可能项目延期!软件测试是软件测试是“不得不做不得不做”!软件测试阶段软件测试阶段阶阶 段段输输 入入 输输 出出 需求分析需求分析需求定义需求定义,市场分析文档市场分析文档,相关技相关技术文档术文档市场需求分析会议记要市场需求分析会议记要,功能设计功能设计,技术设计技术设计设计审查设计审查 市场需求文档市场需求文档,技术设计文档技术设计文档 测试计划测试计划,测试用例测试用例功能验证功能验证 代码完成文件包代码完成文件包,功能详细设计说功能详细设计说明书明书最终技术文档最终技术文档完整测试用例完整测试用例,完备的测试计划完备的测试计划,缺缺陷报告陷报告,功能验证测试报告功能验证测试报告
9、系统测试系统测试代码修改后的文件包代码修改后的文件包 完整测试用例完整测试用例,完备的测试计划完备的测试计划 缺陷报告缺陷报告缺陷状态报告缺陷状态报告项目阶段报告项目阶段报告确认测试确认测试代码冻结文件包代码冻结文件包确认测试用例确认测试用例缺陷状态报告缺陷状态报告缺陷报告审查缺陷报告审查版本审查版本审查版本发布版本发布 代码发布文件包代码发布文件包 测试计划检查清单测试计划检查清单当前版本已知问题的清单当前版本已知问题的清单版本发布报告版本发布报告测试阶段测试阶段(SDLC)需求和设计审查需求和设计审查测试人员参与产品需求分析和系统设计,认真阅读有关文档,真正理解客户的需求和技术上的设计,检
10、查需求说明书对产品描述的准确性、一致性等,检查系统设计的合理性和可测试性等单元测试单元测试单元测试单元测试的对象是程序系统中的最小单元-模块或组件上,在编码阶段进行,针对每个模块进行测试,主要通过白盒测试方法,从程序的内部结构出发设计测试用例,检查程序模块或组件的已实现的功能与定义的功能是否一致、以及编码中是否存在错误。多个模块可以平行地、对立地测试,通常要编写驱动模块和桩模块单元测试一般由编程人员和测试人员共同完成,而以开发人员为主单元测试包括代码评审,代码评审可以发现程序50%70%代码的缺陷。单元测试单元测试 单元测试又称为模块测试单元测试又称为模块测试,什么是模块?并没有严格的定义,不
11、过按照一般的理解,模块应该具有以下的一些基本属性:名字;明确规定的功能;内部使用的数据,或称局部数据;与其它模块或外界的数据联系;实现其特定功能的算法;可被其上层模块调用,也可调用其下属模块进行协同工作。单元测试单元测试1.单元元测试的任的任务模块接口测试对被测模块,检测数据能否正确无误地进入和流出模块;模块局部数据结构测试检测模块在工作过程中,其内部数据能否保持其完整性,包括内部数据的内容、形式以及相互之间关系;模块边界条件测试检测在数据边界处,模块能否正常工作;覆盖测试检测模块运行能否满足特定的逻辑覆盖;出错处理检测检测模块出错处理是否有效。单元测试单元测试2.单元测试过程单元元测试一般在
12、一般在编码之后之后进行。行。由于每个模块在整个软件中并不是孤立的,在对每个模块进行单元测试时,需要考虑它和周围模块的相互联系。为模拟这一联系,在进行单元测试时,必须设置若干个辅助测试模块。这些辅助模块分为两种:驱动模模块(driver):用以模拟被测模块的上级模块,相当于被测模块的主程序。桩模模块(stub):用以模拟被测模块的下级模块,相当于被测模块调用的子模块。单元测试单元测试被测模块与其相关的驱动模块和桩模块共同构成了一个“测试环境”,如图所示。集成测试集成测试集成测试,也称组装测试、联合测试、子系统测试,在单元测试的基础上,将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有
13、关的模块之间问题两种集成方式:一次性集成方式和增殖式集成方式。集成测试集成测试一些模块单独能够工作,并不能保证连接起来也能正常工作。程序在某些局部反映不出的问题,在全局上很可能暴露出来,影响功能的发挥。可能的原因有:模块相互调用时引入了新的问题;几个子功能组合起来不能实现主功能;误差不断积累达到不可接受的程度;全局数据结构出现错误等。集成测试集成测试集成测试集成测试非增式测试非增式测试 增式测试增式测试 自顶向下测试自顶向下测试自底向上测试自底向上测试独立地测试程序的每个模块,然后再把独立地测试程序的每个模块,然后再把它们组合成整个程序的集成测试方法。它们组合成整个程序的集成测试方法。把下一个
14、待测试的模块组合到已把下一个待测试的模块组合到已经测试过的那些模块上去,再进经测试过的那些模块上去,再进行测试。行测试。从主控模块开始,按从主控模块开始,按照软件的控制层次结照软件的控制层次结构,逐步把各个模块构,逐步把各个模块集成在一起。集成在一起。从最下层的模块开始,按照从最下层的模块开始,按照程序的层次结构,逐渐形成程序的层次结构,逐渐形成完整的整体。完整的整体。集成测试集成测试 在在软件集成件集成阶段,段,测试的复的复杂程度程度远远的超的超过单元元测试的复的复杂程度。程度。确认测试确认测试集成测试完成以后,分散开发的模块被联接起来,构成一个完整的程序。其中各模块之间接口存在的种种问题都
15、已消除。于是进入了确认测试阶段。所谓确认测试,是对照软件需求规格说明书,对软件产品进行评估以确定其是否满足需求规格的过程。确认测试确认测试经过确认测试,应该为已开发的软件做出结论性的评价。这无非是两种情况之中:(1)经过检验,软件功能、性能及其它要求都已满足需求规格说明书的规定,是一个合格的软件。(2)经过检验,发现与需求说明书有相当的偏离,我们得到一个缺陷清单,这就需要开发部门和顾客进行协商,找出解决的办法。系统测试系统测试系统测试是将软件放在整个计算机环境下,包括软硬件平台、某些支持软件、数据和人员等,在实际运行环境下进行一系列的测试,包括恢复测试、安全测试、强度测试和性能测试等系统测试系
16、统测试系统测试系统测试实际上是针对系统中各个组成部分进行的综合性检验,很接近我们的日常测试实践。系统测试的目标不是要找出软件故障,而是要证明系统的性能。系统测试很困难,需要很多的创造性。那么,系统测试应该由谁来进行测试。我们说:系统开发人员不能进行系统测试。系统开发组织不能负责系统测试。系统测试最好由独立的测试机构独立的测试机构完成。验收测试验收测试 验收收测试是将最终产品与最终用户的当前需求进行比较的过程,是软件开发结束后,软件产品向用户交付之前进行的最后一次质量检验活动,回答开发的软件产品是否符合预期的各项要求,用户是否接受等问题。验收测试不只检验软件某方面的质量,还要进行全面的质量检验并
17、决定软件是否合格。因此验收测试是一项严格的正格的正规的的测试活动,并且应该在生生产环境中境中而不是开发环境中进行。各各阶段所段所使用的方法技使用的方法技术单元测试白盒、自动、静态集成测试白盒、黑盒、自动、静态系统测试黑盒、自动、手工用户验收/确认测试黑盒、自动、手工 软件测试分类软件测试分类软件件测试按按应用用阶段划分段划分单元元测试集成集成测试系系统测试验收收测试按是否按是否针对细节划分划分白盒白盒测试黑盒黑盒测试按是否按是否执行行软件划分件划分静静态测试动态测试按是否按是否见检查文档划分文档划分验证测试确确认测试按是否人工干按是否人工干预划分划分人工人工测试自自动测试其它其它回回归测试随机随机测试软件测试的分类软件测试的分类按测试的对象或范围分类,如单元测试、文档测试、系统测试等按测试目的分类,如功能测试、回归测试、性能测试、可靠性测试、安全性测试和兼容性测试等根据测试过程中被测软件是否被执行,分为静态测试和动态测试根据是否针对系统的内部结构和具体实现算法来完成测试,可分为白盒测试和黑盒测试按测试方法分类数据库测试、压力测试、恢复测试、安全测试、兼容性测试等注意:不要在术语上纠缠,因为不同的测试小组可能使用不同的术语。理解其含义及其在小组中的应用是软件测试人员的职责。RonPatton软件测试39THE ENDTHE END39