1北华航天工业学院《软件测试技术》杨丽娟计算机科学与工程系2北华航天工业学院第7章集成测试和系统测试3回顾典型软件测试过程单元测试单元测试单元测试集成测试集成测试确认测试系统测试*这三个测试可能交叉与前后互换被测模块被测模块被测模块设计信息单元软件需求其它元素用户信息其它元素*…*验收测试*交付用户…47.1集成测试教学内容集成测试定义集成测试的实施集成测试的策略57.1.1集成测试定义什么是集成测试?将经过单元测试的多个模块按概要设计要求连接起来,进行测试。是介于单元测试和系统测试之间的过渡阶段。也称为组装测试,联合测试。6.1集成测试概述软件的模块结构图7集成测试关注的问题(1)模块间的数据传递是否正确?(2)一个模块的功能是否会对另一个模块的功能产生错误的影响?(3)全局数据结构是否有问题,会不会被异常修改?(4)块组合起来的功能能否满足要求?(5)集成后,各个模块的累积误差是否会扩大,是否达到不可接受的程度?7.1.1集成测试定义8集成测试的原则①所有公共接口都要被测试到。②关键模块必须进行充分的测试。③集成测试应当按一定的层次进行。④集成测试的策略选择应当综合考虑质量、成本和进度之间的关系。7.1.1集成测试定义9集成测试的原则⑤集成测试应当尽早开始,并以总体设计为基础。⑥在模块与接口的划分上,测试人员应当和开发人员进行充分的沟通。⑦当接口发生修改时,涉及的相关接口必须进行再测试。⑧测试执行结果应当如实记录。7.1.1集成测试定义107.1.2集成测试的策略典型集成测试的策略一次性集成测试(非增值式集成测试)对所有模块进行个别的单元测试后,按照程序结构图一次性将各模块连接起来,把连接后的程序当作一个整体进行测试。增值式集成测试把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。11(一)一次性集成测试对所有模块进行个别的单元测试后,按照程序结构图将各模块连接起来,把连接后的程序当作一个整体进行测试。辅助模块驱动模块(Driver)和桩模块(Stub)例如7.1.2集成测试的策略AS3S4S5d2Cd4Ed5Fd1Bs1d3s2DABCDEFABCDEF(1)程序结构图(2)单元测试示意图(3)集成测试示意图13(一)一次性集成测试缺点–容易出现混乱,对错误的诊断定位以及修改都非常困难。–适用规模较小的应用系统。7.1.2集成测试的策略14(二)增值式集成测试自顶向下集成自底向上集成混合式集成方式7.1.2集成测试的策略15(二)增值式集成测试1、自顶向下集成按照模块结构图自上而下进行测试。即模块集成的顺序:首先集成主控模块(主程序)然后依照控制层次结构向下进行集成。从属于主控模块的按深度优先方式(纵向)或者广度优先方式(横向)集成到结构中去。7.1.2集成测试的策略166.3集成测试的策略(二)增值式集成测试1、自顶向下集成广度优先方式的集成——首先沿着水平方向,把每一层中所有直接隶属于上一层的模块集成起来,直到底层。深度优先方式的集成——首先集成在结构中的一个主控路径下的所有模块,主控路径的选择是任意的。ABCDEFAS1S2S3ABCDS4S5ABCDEF(1)(2)(3)广度优先方式ABCDEFAS1S2S3ABS2S3E(1)(2)(3)深度优先方式(4)ABCS3E19(二)增值式集成测试1、自顶向下集成优点:——它可以自然的做到逐步求精,一开始就能让测试者看到系统的框架,减少了驱动模块的开发成本。缺点:——需要提供桩模块,并且在输入/输出模块接入系统以前,在桩模块中表示测试数据有一定困难。7.1.2集成测试的策略20(二)增值式集成测试2、自底向上集成按结构图自下而上进行的,即从程序模块结构的最底层模块开始集成和测试。不再需要使用桩模块进行辅助测试。在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到。7.1.2集成测试的策略ABCDEFd2Cd1Ed3Fd4BEd5FDABCDEF22(二)增值式集成测试2、自底向上集成优点:——不需要桩模块,且可以实施多个模块的并行测试,最先对底层模块进行测试,减少了回归测试的成本。缺点:——直到最后一个模块被加进去之后才能看到整个程序(系统)的框架。7.1.2集成测试的策略23(二)增值式集成测试3、混合增值集成把自顶向下测试和自底向上测试这两种方式结合起来进行集成和测试。这样可以兼具两者的优点,而摒弃其缺点。例如:三明治集成方法(自两头向中间集成)7.1.2集成测试的策略ABCDEFd1Ed3Fd4BEd3Fd5FDABCDEF257.1.3集成测试的策略一次性集成方式适用于规模较小的系统自底向上集成和混合集成适用用于结构化方法开发的系统测试策略优点缺点大爆炸集成可以迅速完成集成测试;需要的桩和桩模块非常少;需要的用例是最少的,多个测试人员可以并行测试;操作简单;资源利用率高一次试运行成功的可能性不大;问题定位和修改比较困难;接口间的交互关系只被测试到很少一部分,大量的实际中会运行到的程序执行路径没有被测试到;风险高。自顶向下集成较早地验证了主要控制和判断点;按深度优先可以首先实现和验证一个完整的软件功能;功能较早证实,带来信心;只需一个驱动,减少驱动器开发的费用;支持故障隔离。缺点:桩的开发工作量大,底层验证被推迟,底层组件测试不充分。该方法适用于产品控制结构比较清晰和稳定,高层接口变化较小,底层接口未定义或经常可能被修改,产品控制组件具有较大的技术风险,需要尽早被验证,希望尽早能看到产品的系统功能行为的情况。自底向上集成对底层组件行为较早验证;工作最初可以并行集成,比自顶向下效率高;减少了桩的工作量;支持故障隔离。驱动的开发工作量大;对高层的验证被推迟,设计上的错误不能被及时发现。适用于底层接口比较稳定,高层接口变化比较频繁,底层组件较早被完成的情况。三明治集成集合了自顶向下和自底向上两种策略的优点。中间层测试不充分。该方法适用于大部分软件开发项目。277.1.4集成测试过程28·制定集成测试计划··设计集成测试实施集成测试·执行集成测试·评估集成测试集成测试五阶段各阶段工作内容及流程见P132表7-1297.2系统测试7.2.1系统测试的概念为什么进行系统测试?307.2系统测试7.2.1系统测试的概念系统平台硬件系统外部设备软件数据信息网络平台软件产品317.2系统测试7.2.1系统测试的概念(一)概念系统测试就是将通过确认测试的软件作为整个系统的一个元素,与系统中其他所有元素结合起来,在实际运行环境下或模拟系统环境下,测试各组成部分能否实现正确的连接,以满足用户需求。一般由测试部门或第三方测试机构完成。327.2系统测试7.2.1系统测试的概念(二)系统测试与确认测试的关系确认测试一般以功能测试为主;系统测试一般以验证系统性能为主;例如:系统使用资源状况(内存,处理器等);系统的峰值负载条件;出现故障能否满足恢复的要求;…………337.2系统测试7.2.2常见的系统测试方法(一)性能测试(二)安全性测试(三)健壮性测试(四)可靠性测试(五)配置测试和兼容性测试(六)用户界面测试(七)文档测试(八)安装测试和卸载测试34(一)性能测试1、定义检验系统在一定的工作环境下,能否达到预期的性能要求。目标:通过测试,确认软件是否满足产品的性能需求,同时发现系统中存在的性能瓶颈,并对系统进行优化。35(一)性能测试2、主要性能指标①响应时间指从应用系统发出请求开始,到客户端接收到最后一个字节数据为止所消耗的时间。合理的响应时间要取决于实际的用户需求。例如:考试系统;36(一)性能测试2、主要性能指标②并发用户数指同一时间段内访问系统的用户数量。区分:系统用户数,同时在线用户人数;例如:校园网的选课系统。37(一)性能测试2、主要性能指标③吞吐量指单位时间内系统处理的客户请求数量。可直接体现软件系统的性能。一般以每秒钟请求数或每秒钟处理页面数来衡量;38(一)性能测试2、主要性能指标④性能计数器描述服务器或操作系统性能的一些数据指标。例如:CPU的使用率内存使用率等39(一)性能测试3、性能测试方法(1)压力测试和负载测试例如:检验该游戏网站的负载能力。40(一)性能测试3、性能测试方法压力测试持续不断的给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。一般通过逐步增加系统负载来测试系统性能的变化,最终确定在什么负载条件下系统性能处于失效状态,从而获得系统性能的最大服务级别的测试。41(一)性能测试举例——某通信软件系统的压力测试测试采用压力测试方法。在正常情况下,每天的电话数目大约2000个,一天24小时服从正态分布。在系统第1年使用时,系统的平均无故障时间大约1个月左右。分析表明,系统的出错原因主要来源于单位时间内电话数量比较大的情况下,为此,对系统采用压力测试,测试时将每天电话的数目增加10倍,即20000个左右,分布采用均匀和正态两种分布,测试大约进行了4个月,共发现了314个错误,修复这些错误大约花费了6个月的时间,修复后的系统运行了近2年,尚未出现问题。42(一)性能测试3、性能测试方法负载测试通过逐步增加系统工作量,测试系统能力的变化。并最终确定在满足系统的性能指标情况下,系统所能承受的最大负载量的测试压力测试是一种特定类型的负载测试。压力和负载测试一般都需通过自动化负载测试工具来模拟进行。43(一)性能测试3、性能测试方法(2)疲劳测试采用系统稳定运行情况下能够支持的最大并发用户数。主要用于测试系统的稳定性和并发性能的测试。44(一)性能测试3、性能测试方法(3)容量测试主要用于数据库系统。通过使系统承受超额的数据容量来确定系统的容量瓶颈(如同时在线的最大用户数等),进而优化系统的容量处理能力。45(二)安全测试根据ISO8402的定义:安全性是“使伤害或损害的风险限制在可接受的水平内”。安全测试的目的在于验证安装在系统内的保护机制能否在实际中保护系统且不受非法入侵,不受各种非法干扰。安全保密措施,检验系统是否有安全保密的漏洞。46(二)安全测试在安全测试中,测试者扮演着试图攻击系统的个人角色:—尝试去通过外部的手段来获取系统的密码—使用可以瓦解任何防守的客户软件来攻击系统—把系统“瘫痪”,使得其他用户无法访问—有目的地引发系统错误,期望在恢复过程中侵入系统—通过浏览非保密的数据,从中找到进入系统的钥匙47(三)健壮性测试健壮性——异常情况下,软件能继续正常运行的能力。分为:1、容错性测试构造一些不合理的输入来测试软件是否继续工作。2、恢复性测试48(三)健壮性测试2、恢复性测试恢复测试是通过各种手段,强制性地使软件出错,使其不能正常工作,进而检验系统的恢复能力。包含的内容:——如果系统恢复是自动的(由系统自身完成),则应该检验:重新初始化、检验点设置机构、数据恢复以及重新启动是否正确。——如果恢复需要人为干预,则应考虑平均修复时间是否在限定的、可以接受的范围之内。49(四)可靠性测试可靠性(Reliability)是产品在规定的条件下和规定的时间内完成规定功能的能力,它的概率度量称为可靠度。软件可靠性是软件系统的固有特性之一,它表明了一个软件系统按照用户的要求和设计的目标,执行其功能的可靠程度。软件可靠性与软件缺陷有关,也与系统输入和系统使用有关。理论上说,可靠的软件系统应该是正确、完整、一致和健壮的。50(五)配置测试和兼容性测试1、配置测试保证软件能在其相关的硬件上能够正常运行。2、兼容性测试检测各软件之间能否正确地交互和共享信息,其目标是保证软件按照用户期望的方式进行交互,使用其它软件检查软件操作的过程。例如:每一个浏览器和版本支持的特性上都有细微的差别,在不同的操作系统上表现也有所不同。PCUnix/MacWin98WinMEWinNTWin2000SolarisHP-UXOSIXOSXIE5√√IE5.5√√√IE6√√√NS4.7√√√√NS6.0√√…52(五)配置测试和兼容性测试兼容性的测试通常需要解决以下问题:(1