软件测试第七讲分段测试.ppt
软件测试,分段测试,分段测试的目的,隔离软件缺陷效率递增测试的途径自底向上自顶向下,测试层次与步骤,测试层次与步骤(续),自底向上测试方法:测试单个组件,然后将这些组件集成到子系统中,直到测试完整个系统。单元测试用例从单元详细设计中导出集成测试的目标都是根据功能分解树集成以前测试过的单元系统测试应该是用户能够理解的活动,常常与用户验收测试结合在一起进行。,分段建立与测试,自底向上测试,自顶向下测试,软件测试过程,规格定义,设计,编码,系统测试,集成测试,单元测试,用户需求,验收测试,回归测试,配置管理,缺陷跟踪,单元测试,单元测试又称模块测试,检查软件设计的最小单元模块。测试策略白盒法和黑盒法结合运用。先用黑盒法设计出一组基本的测试用例,然后用白盒法,根据覆盖标准要求补充新的测试用例满足覆盖标准。测试内容单元测试在于考察模块的接口和内部结构,检查是否符合程序规格说明的要求。,单元测试的阶段及活动,完善测试计划阶段获得测试用例集阶段评价测试单元阶段,单元测试,单元测试:Unit Testing 目标:-检验程序最小单元有无错误,如接口、数据结构、边界、覆盖、逻辑检验单元编码与设计是否吻合应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误 时机:-编码完成后,首先要实施的测试。测试依据是详细设描述 方法:-静态测试-白盒测试 责任:-开发工程师,单元测试(续),单元测试任务 模块接口测试;模块局部数据结构测试;模块边界条件测试;模块中所有独立执行通路测试;模块的各条错误处理通路测试。,单元测试(续),模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义。测试接口正确与否应该考虑下列因素:1 输入的实际参数与形式参数的个数是否相同;2 输入的实际参数与形式参数的属性是否匹配;3 输入的实际参数与形式参数的量纲是否一致;4 调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;5 调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;6调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致;7 调用预定义函数时所用参数的个数、属性和次序是否正确;8 是否存在与当前入口点无关的参数引用;9 是否修改了只读型参数;10 对全程变量的定义各模块是否一致;11是否把某些约束作为参数传递。,单元测试(续),检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确。局部数据结构往往是错误的根源,应仔细设计测试用例,力求发现下面几类错误:不合适或不相容的类型说明;变量无初值;变量初始化或省缺值有错;不正确的变量名(拼错或不正确地截断);出现上溢、下溢和地址异常。,单元测试(续),在模块中应对每一条独立执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行一次。此时设计测试用例是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。此时基本路径测试和循环测试是最常用且最有效的测试技术。计算中常见的错误包括:误解或用错了算符优先级;混合类型运算;变量初值错;精度不够;表达式符号错。,单元测试(续),一个好的设计应能预见各种出错条件,并预设各种出错处理通路,出错处理通路同样需要认真测试,测试应着重检查下列问题:输出的出错信息难以理解;记录的错误与实际遇到的错误不相符;在程序自定义的出错处理段运行之前,系统已介入;异常处理不当;错误陈述中未能提供足够的定位出错信息。,单元测试(续),边界条件测试是单元测试中最后,也是最重要的一项任务。众的周知,软件经常在边界上失效,采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误。,集成测试,集成测试,又称组装测试、综合测试或联调。在单元测试完成之后,将所有模块按概要设计要求组装成系统的时候进行的测试,主要目标是发现与接口有关的问题。,软件测试过程(续),集成测试:Integration Testing 目标:-检验组成系统的模块接口有无错误-代码实现的系统设计与需求定义是否吻合 时机:-主要的单元测试完成后,经常与单元测试同步进行 方法:-黑盒测试 责任:-开发工程师-测试工程师,集成测试的内容,接口完整性在每一个模块集成到整个结构中的时候,要对其内部和外部接口进行测试功能有效性进行以发现功能性错误为目的的测试数据一致性进行以发现与局部或全局数据结构相关的错误为目的的测试性能测试在边界和在人为条件下软件的性能,集成测试,组装测试的主要内容有:各模块是否无错误地连接;能否保证数据有效传送及数据的完整性和一致性;人机界面及各种通信接口能否满足设计要求;除了在存储器中需要分配绝对地址的程序段外,是否具有新定位的能力;能否与软件需求规格说明中规定的所有设备正确联接。组装模块的过程可以分为自顶向下组装法和由底向上组装法。,集成测试,1)自顶向下组装自顶向下集成测试是一个递增的组装软件结构的方法。从主控模块(主程序)开始沿控制层向下移动,把模块一一组合起来。分两种方法:第一、先深度:按照结构,用一条主控制路径将所有模块组合起来;第二、先宽度:逐层组合所有直接下属模块,在每一层水平地沿着结构移动。,集成测试,组装过程分以下五个步骤:用主控模块作为测试驱动程序,其直接下属模块用承接模块来代替;根据所选择的集成测试法(先深度或先宽度),每次用实际模块代替下述的承接模块;在组合每个实际模块时都要进行测试;完成一组测试后再用一个实际模块代替另一个承接模块;可以进行回归测试(即重新再做所有的或者部分已做过的测试),以保证不引入新的错误。,集成测试,2)由底向上组装 由底向上集成测试是从端点模块即软件结构中不调用其他模块的模块开始进行组装以及测试。在逐步处理上层模块时所需要的子模块总是可以得到的,因此不需要承接模块。由底向上组装可以按照以下步骤:将低层模块组合成实现某个特定的软件子功能的簇;需要编写一个驱动程序作为测试的控制程序,用来协调测试用例的输入和输出;测试模块簇;去掉小簇的驱动程序,将几个小簇合并成大簇,再重复步,这样沿着软件结构逐步向上组装。,确认测试,确认测试应检查软件能否按合同要求进行工作,即是否满足软件需求说明书中的确认标准。确认测试的内容功能测试性能测试强度测试配置复审,确认测试(续),确认测试标准确认测试同样需要制订测试计划和过程,测试计划应规定测试的种类和测试进度,测试过程则定义一些特殊的测试用例,旨在说明软件与需求是否一致 无是计划还是过程,都应该着重考虑软件是否满足合同规定的所有功能和性能,文档资料是否完整、准确人机界面和其他方面(例如,可移植性、兼容性、错误恢复能力和可维护性等)是否令用户满意。,确认测试(续),确认测试的结果有两种可能,一种是功能和性能指标满足软件需求说明的要求,用户可以接受;另一种是软件不满足软件需求说明的要求,用户无法接受。项目进行到这个阶段才发现严重错误和偏差一般很难在预定的工期内改正,因此必须与用户协商,寻求一个妥善解决问题的方法。,确认测试(续),配置复审 确认测试的另一个重要环节是配置复审。复审的目的在于保证软件配置齐全、分类有序,并且包括软件维护所必须的细节。,确认测试(续),测试:是指软件开发公司组织内部人员模拟各类用户行对即将面市软件产品(称为版本)进行测试,试图发现错误并修正。测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用版本,并要求用户报告异常情况、提出批评意见。,系统测试,系统测试通常由用户组织的验收小组负责,一般应根据需求分析说明书来设计测试用例,在实际环境中运行。测试的主要内容恢复测试安全性测试可用性测试安装测试互连测试,软件测试过程(续),系统测试:System Testing 目标:-检验组成整个系统的代码、以及系统的软硬件配合有无错误-代码实现的系统与用户需求是否吻合-检验系统的文档等各种是否完整、有效-模拟验收测试的要求,检查系统是否符合用户的验收标准 时机:-多数集成测试完成后 方法:-黑盒测试 责任:测试工程师,系统测试-恢复测试,就是通过各种手段,让软件强制性发生故障,然后验证恢复是否能正常进行的一种测试方法测试的范围如果系统的恢复是自动的,则应对重新初始化、数据恢复、重新启动等逐个进行正确性评价如果恢复需要人工干预,则需要对修复的平均时间进行评估以判定它是否在允许的范围内,系统测试-安全性测试,用来验证集成在系统内的保护机制是否能够在实际中保护系统不受到非法侵入。主要的破坏方法:攻击易受损坏的部分,破坏安全性有目的地引发系统出错,期望在系统恢复过程中侵入系统通过各种手段,获取系统的密码浏览非保密数据,从中找到进入系统的方法 利用输入的容错性进行攻击通过申请和占用系统资源破坏安全措施,从而进入系统,系统测试-可用性测试,主要从使用的方便性、易理解性和易学性等方面对系统进行检查,以发现人为因素或使用习惯等问题。,系统测试-安装测试,安装测试是要找出系统安装过程中出现的问题,安装测试一般在系统安装之后进行。,系统测试-强度测试,强度测试检验系统的能力最高能达到什么实际限度。在强度测试中程序被强制在它的设计能力极限状态下运行,进而超出极限,以验证在超出临界状态下性能降低不是灾难性的。,系统测试-性能测试,性能测试检验安装在系统内的软件运行性能,这种测试需与强度测试结合起来进行。为记录性能需要再安装必要的仪表或度量性能的软件。,系统测试-互连测试,互连测试是要验证两个或多个不同的系统之间的互操作性。,软件测试过程(续),验收测试:Acceptance Testing 目标:-使客户验收签字-系统是否符合事先约定的验收标准 时机:-系统测试完成后,在项目组看来开发和测试工作已经全部完成,可以交付使用 方法:-黑盒测试 责任:-产品经理或其他高级经理-开发工程师-测试工程师-用户,验收测试,系统测试完成后,并使系统试运行了预定的时间,企业应进行验收测试。确认已开发的软件能否达到验收标准,包括对测试有关的文档资料的审查验收和对程序测试验收。对于一些关键性软件,还必须按照合同一些严格条款进行特殊测试,如强化测试和性能降级执行方式测试等,验收测试应在软件投入运行后所处的实际生产环境下进行。验收测试的目的是测试程序的操作和合同规定的要求是否一致。通常以用户为主体来进行,由用户设计测试用例,确定系统功能和性能的可接受性,按照合同中预定的验收原则进行的测试,这是一种非常实用的测试,实质上就是用户用大量的真实数据试用软件系统。,验收测试,文档资料的审查验收。所有与测试有关的文档资料是否编写齐全,并得到分类编写,这些文档资料主要包括各测试阶段的测试计划、测试申请及测试报告等。余量要求。必须实际考察计算机存储空间,输入、输出通道和批处理间接使用情况,要保持至少有20%的余量。功能测试。必须根据需求规格说明书中规定的功能,对被验收的软件逐项进行测试,以确认软件是否具备规定的各项功能。性能测试。必须根据需求规格说明书中规定的性能,对被验收的软件进行测试,以确认该软件的性能是否得到满足,开发单位应提交开发阶段内各测试阶段所作的测试分析报告,包括测试中发现的错误类型,以及修正活动情况。开发单位必须设计性能测试用例,并预先征得用户的认可。,验收测试,强化测试。强化测试必须按照 GB8566-88计算机软件开发规范中的强化测试条款进行。开发单位必须设计强化测试用例,其中应包括典型的运行环境、所有的运行方式,以及在系统运行期可能发生的其他情况。性能降级执行方式测试。在某些设备或程序发生故障时,对于允许降级运行的系统,必须确定经用户批准的能够安全完成的性能降级执行方式,开发单位必须按照用户指定的所有性能降级执行方式或性能降级地方式组合来设计测试用例,应设定典型的错误原因和所导致的性能降级执行方式。开发单位必须确保测试结果与需求规格说明中包括的所有运行性能需求一致。安装测试。安装测试的目的不是检查程序的错误,而是检查软件安装时产生的问题,即程序和库、文件系统、配置管理系统的接口有什么问题。,测试与调试的关系,测试回顾,什么时候测试可以停止:当时间用光时当继续测试没有产生新失败时当继续测试没有发现新缺陷时当无法考虑新测试用例时当回报很小时当达到所要求的覆盖时当所有缺陷都已经清除时,测试工具简介,测试工作在软件开发整个过程中占有极为重要的位置,而全人工测试是非常麻烦的,所以测试过程的自动化已成为测试发展的重要方向。测试工具的选择对测试的规范化影响很大,目前已开发出了各种自动化软件测试工具,它们为软件测试提供了强有力的支持。测试工具从测试的方法上可以分为两种:白盒测试工具和黑盒测试工具。,测试工具简介,白盒测试工具主要有:内存资源泄漏检查:Numega中的bouncechecker,Rational的Purify等;代码覆盖率检查:Numega中的truecoverage,Rational的Purecoverage,Telelogic公司的logiscope,,Macabe公司的Macabe等;代码性能检查:Numega中的truetime,Rational的Quantify等;代码静态度量分析质量检查工具:logiscope和Macabe等。,测试工具简介,NuMega DevPartner Studio是康博(compuware)软件公司开发的自动化白盒工具包,它是一个全面的SmartDebugging工具包,能自动地检查企业级或Internet级用多语言创建的组件和应用中出现的软件错误和性能问题,并能很快地给予解决。它主要用于代码开发阶段,检查应用的可靠性和稳定性。它提供了先进的错误检查和调试解决方案,充分地改善生产力和开发团队的软件开发质量。,测试工具简介,它们主要有自动地错误检测、性能分析、代码覆盖分析等功能,分别用于捕获、定位错误,抽取代码执行频度,以及抽取代码覆盖率等数据。主要由内存资源泄漏检查BoundsChecker、代码覆盖率检查TrueCoverage、代码性能检查TrueTime、SmartCheck等工具组成。,测试工具简介,黑盒测试工具主要有:客户端功能测试:MI公司的winrunner,compuware的QACenter,Rational的SQA robot,SQATeamTest,Rational Viaual Test等。软件性能测试工具:LoadRunner(MI产品)、Rational Visual Qantify等。,测试工具简介,QACenter是Compuware公司自动化的黑盒测试工具,它能帮助所有的测试人员创建一个快速、可重用的测试过程。这些测试工具自动帮助管理测试过程,快速分析和调试程序,包括针对回归、强度、单元、并发、集成、移植、容量和负载建立测试用例,自动执行测试和产生文档结果。QACenter主要包括以下几个模块:应用的功能测试工具QARun,强负载下应用的性能测试工具QALoad,测试的组织设计和创建以及管理工具QADirector,集成的缺陷跟踪管理工具TrackRecord等。,测试工具简介,OARun为当今关键的客户机服务器、电子商务到企业资源规划(ERP)应用提供企业级的功能测试,通过将费时的测试脚本开发和测试执行自动化,帮助测试人员和QA管理人员更有效地工作以加快应用开发。QALoad是客户/服务器系统、企业资源配置(ERP)和电子商务应用的自动化负载测试工具,它通过可重复的、真实的测试能够彻底地度量应用的可扩展性和性能。QADirector分布式的测试能力和多平台支持,能够使开发和测试团队跨越多个环境控制测试活动,它允许开发人员、测试人员和QA管理人员共享测试资产,测试过程和测试结果、当前的和历史的信息。从而为客户提供了最完全彻底的、一致的测试。,测试工具简介,TrackRecord是一个高级的需求变更和缺陷管理工具,可以帮助组织建立一个系统方法来协调软件开发、调试、测试和实现。它支持并加速各种开发过程,并具有针对开发、测试和管理需求而设计的灵活、开放的体系结构。另外,在软件测试过程中,测试用例数量大,测试计划和测试报告多,维护工作量大,往往需要选择自动化的测试管理系统。目前测试管理软件主要有Rational公司的Rational TestManager和国内中科软件公司的i-Test等。,测试工具简介,TestManager可以管理软件开发过程中测试的所有方面及所有与测试相关的信息资源:测试计划、测试设计、测试开发、测试执行、结果分析,可以处理以下每种测试的计划、执行和结果收集:功能测试、负载测试、人工测试、集成测试、单元测试等,包括运行第三方测试工具并比较测试结果。使用Rational TestManager,测试人员可以创建、维护或参照测试计划,测试计划可以组织测试用例、反复测试和测试配置,也包括一些来自文档、模型、变更请求和EXCEL数据表的输入。,测试工具简介,Rational TestManager提供了跟踪需求和由于自动标记对测试用例的潜在影响导致的其他变化的影响的重要功能。采用Rational TestManager,QA或QE经理、商业分析师、开发人员和测试人员都可以从他们自己的角度看测试结果,并做出决策。Rational TestManager提供了面向整个开发生命周期的测试计划定义的目标连续进程跟踪的全部信息。,小节,单元测试进行单个函数测试,单元之间集成测试检查交互,系统测试检查原子系统功能之间的交互。软件测试基础静态黑盒测试动态黑盒测试静态白盒测试动态白盒测试,