第七章集成测试与系统测试1集成测试概述11集成测试概述集成测试概述1111系统测试概述33系统测试概述系统测试概述3333系统测试的结果分析44系统测试的结果分析系统测试的结果分析4444系统测试的文档模板55系统测试的文档模板系统测试的文档模板5555集成测试阶段工作22集成测试阶段工作集成测试阶段工作2222内容概要2第一节.集成测试集成测试的策略集成测试的过程集成测试阶段工作3本章重点:本节概要常用的集成策略有哪些集成测试的流程集成测试的工作过程重点掌握:4一.常用的集成测试策略(1)大爆炸集成大爆炸集成是一种一次性将系统内的组件全部集合到测试系统中进行测试的方法。这种方法可以很快看到程序运行起来,但很难定位问题,并且该方法必须先对所有单元进行单元测试,然后再将所有单元组装起来进行测试。5(2)自顶向下集成自顶向下集成的方法是从最顶层程序开始,所有被主程序调用的下层单元全部使用桩来代替,然后一层一层向下进行测试,每层程序调用的下一层程序单元都要打桩。整个集成可以按深度优先的策略进行,也可按照广度优先的策略进行。采用深度优先策略可以较快验证一个子系统的完整功能。6对模块1进行集成测试时,先测试模块1的内部接口的集成,需对模块2和模块3打桩,然后进行测试。接着再测试模块1和模块2、模块3的集成关系,当测试模块1和模块2的集成关系时,需对模块3打桩,同理,测试模块1和模块3的集成关系时,需对模块2打桩。7(3)自底向上集成从最底层模块开始按照接口依赖关系,逐层向上集成。如下图测试模块3时,不需要写桩模块,但是需要为模块3编写驱动模块,测试完模块3和模块4后,再对模块2进行集成测试。由于模块3和模块4已经测试完,不需要写桩模块,但还需要为模块3编写驱动模块。8(4)三明治集成结合自底向上和自顶向下两种集成方法,对于底层模块采用自底向上的法,对于顶层模块采用自顶向下的集成方法进行测试。测试模块3采用自底向上集成,测试模块5采用自顶向下集成。9测试策略优点缺点大爆炸集成可以迅速完成集成测试;需要的桩和桩模块非常少;需要的用例是最少的,多个测试人员可以并行测试;操作简单;资源利用率高一次试运行成功的可能性不大;问题定位和修改比较困难;接口间的交互关系只被测试到很少一部分,大量的实际中会运行到的程序执行路径没有被测试到;风险高。自顶向下集成较早地验证了主要控制和判断点;按深度优先可以首先实现和验证一个完整的软件功能;功能较早证实,带来信心;只需一个驱动,减少驱动器开发的费用;支持故障隔离。缺点:桩的开发工作量大,底层验证被推迟,底层组件测试不充分。该方法适用于产品控制结构比较清晰和稳定,高层接口变化较小,底层接口未定义或经常可能被修改,产品控制组件具有较大的技术风险,需要尽早被验证,希望尽早能看到产品的系统功能行为的情况。自底向上集成对底层组件行为较早验证;工作最初可以并行集成,比自顶向下效率高;减少了桩的工作量;支持故障隔离。驱动的开发工作量大;对高层的验证被推迟,设计上的错误不能被及时发现。适用于底层接口比较稳定,高层接口变化比较频繁,底层组件较早被完成的情况。三明治集成集合了自顶向下和自底向上两种策略的优点。中间层测试不充分。该方法适用于大部分软件开发项目。10其他一些集成测试策略集成策略优点缺点基干**集成具有三明治集成的优点,更适合于大型复杂项目的集成。必须对系统的结构和相互依存性进行仔细的分析;驱动和桩开发量大;局部采用了大爆炸的策略,有些接口可能测试不充分。分层集成适用于有明显层次关系的系统。基于功能的集成优先验证关键功能的正确性,减少驱动的开发,进度要快。对接口测试不充分,有较大的冗余测试。基于消息的集成优先验证关键消息的正确性,减少驱动的开发,进度要快。对接口测试不充分,有较大的冗余测试。基于风险的集成最具有风险的组件最早进行验证,有助于系统的快速稳定。需要对各组件的风险有一个清晰的分析。基于进度的集成具有较高的并行度,能够有效缩短项目的开发进度。桩和驱动工作量较大,有些接口测试不充分,有些测试重复和浪费。11·制定集成测试计划··设计集成测试实施集成测试·执行集成测试·评估集成测试二.集成测试五阶段12开发设计模型制定集成计划实施类,进行单元测试划型制定计划,设计用例测试过程,脚本执行集成测试,生成测试日志执行集成测试,生成测试日志TestDesignerTesterTheDesignerImplementerIntegratorDesigner13三.1.集成测试阶段工作流程2.人员安排角色职责测试设计员负责制定集成测试计划、设计集成测试、实施集成测试、评估集成测试测试员执行集成测试,记录测试结果实施员负责实施类(包括驱动程序和桩),并对其进行单元测试,根据集成测试发现的缺陷提出变更申请配置管理员负责对测试工作进行配置管理集成员负责制定集成构建计划,按照集成计划将通过了单元测试的类集成设计员负责设计测试驱动程序和桩;根据集合测试发现的缺陷提出变更申请143.测试计划用集成测试计划的模板(详见附录B:集成测试计划模板)写集成测试计划书。计划书内容通常应该包含以下部分:确定集成测试对象,确定集成测试策略,确定集成测试验收标准,确定集成测试挂起和恢复条件,估计集成测试工作量,估计集成测试所需资源;进行集成测试任务划分(包括任务名、责任人、输入和输出、风险及应对措施、进度安排等)等。154.测试内容功能性测试可靠性测试易用性测试性能测试维护性测试可移植性测试165.集成模式的选取集成模式是软件集成测试中的策略体现,其重要性是明显的,直接关系到测试的效率、结果等,一般要根据具体的系统来决定采用哪种模式。集成测试基本可以概括为以下两种:非渐增式测试模式和渐增式测试模式。非渐增式测试模式:先分别测试每个模块,再把所有模块按设计要求一次全部组装起来,然后进行整体测试。渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个模块结合进来测试。非渐增式测试时可能发现一大堆错误,定位和纠正每个错误非常困难,并且在改正一个错误的同时又可能引入新的错误,新旧错误混杂,更难断定出错的原因和位置。与之相反的是渐增式集成模式,程序一段一段地扩展,测试的范围一步一步地增大,错误易于定位和纠正,接口的测试亦可做到完全彻底。两种模式中,渐增式测试模式虽然需要编写的驱动或桩程序较多,发现模块间接口错误相对稍晚些,但仍然具有比较明显的优势。在实际测试中,应该将两种模式有机结合起来,采用并行的自顶向下、自底向上集成方式,从而形成改进的三明治方法。而更重要的是采取持续集成的策略,软件开发中各个模块不是同时完成,根据进度将完成的模块尽可能早地进行集成,有助于尽早发现缺陷,避免集成阶段大量缺陷涌现。同时自底向上集成时,先期完成的模块将是后期模块的桩程序,而自顶向下集成时,先期完成的模块将是后期模块的驱动程序,从而使后期模块的单元测试和集成测试出现了部分的交叉,不仅节省了测试代码的编写,也有利于提高工作效率。17总之,实际应用中,常用的集成策略有:自顶向下集成、自底向上集成和混合集成。因为这三种策略并不相互排斥,因此基于这三种策略的组合可以派生出多种策略。集成策略的选取主要依赖于:(1)集成部件的可用性(例如第三方软件或硬件)。(2)系统规模。(3)是新系统还是在现有系统上增加、改变功能。(4)体系架构。18第二节.系统测试系统测试类型系统测试内容系统测试过程本章重点:19本节概要五种重要系统测试类型十八种系统测试系统测试主要流程本节难点:20一.系统测试的类型211.2.3.4.5.6.IIIIIIIIIIIIIIIIIIIVIVIV用户支持测试用户界面测试可维护性测试安全性测试1、用户层22系统兼容性测试系统组网测试性能测试系统安装升级测试系统可靠性、稳定性测试2、应用层23初验测试:系统核心功能、基本业务流程的验证。业务功能覆盖:关注需求规格定义的所有功能是否都已实现。业务场景测试:模拟用户操作实际业务场景,遍历主要业务流程和业务规则。业务功能分解:将每个功能分解为测试项,关注每个测试项的测试类型都被测试通过。业务功能组合:相关联的功能项的组合功能都被正确实现。业务功能冲突:业务功能间存在的功能冲突情况均测试通过,例如:共享资源访问等。异常处理及容错性:输入异常数据,或执行异常操作后,系统容错性及错误处理机制的健壮性。243、功能层(1)检验能否适当地接受输入数据而产生正确的输出结果。(2)检验能否接受不同的数据输入(能接受正确的数据输入、对异常数据的输入进行提示和溶出处理)。(3)检验数据输出结果是否正确、格式是否清晰,能否保存和读取。(4)检验功能逻辑是否清楚,符合使用者的习惯。(5)检验系统的各种状态是否按照业务流程变化,并保持稳定。(6)检验菜单、按钮操作是否正常、灵活,能处理一些异常操作。(7)检验系统的界面是否清晰、美观。(8)支持各种应用的环境,能配合多种硬件周边设备,与外部应用系统的接口有效。(9)检验是否所有功能都能够实现,是否存在遗漏功能。(10)检验是否所有功能都能正常实现,是否存在不正常功能。(11)检验是否存在额外的功能,如功能键等。(12)检验功能是否满足系统设计的隐含需求,如系统对意外情况的反应能力等。(13)检验软件升级后,能否继续支持旧版本的数据。功能测试251、二.系统测试内容:(1)对软件系统架构的分析(了解输入、输出数据类型、数据量)。(2)网络环境说明。(3)硬件环境说明。(4)测试范围、目的与方法。(5)性能测试工具的选型。(6)测试的启动和退出条件。(7)测试执行及测试结果分析。2、性能测试应包含内容26一次加载每个数量的用户,在预定的时间段内持续运行。例如,早晨上班,用户访问网站或登录网站的时间非常集中,基本上属于Flat负载模式。有规律地逐渐增加用户,每几秒增加一些新用户,交错上升,这种方式又称为ra-mp-up模式。借助这种负载方式的测试,容易发现性能的拐点,即性能瓶颈的位置。某个时间用户数量很大,突然降级到很低,然后,过一段时间,又突然加到很高,反复几次。借助这种负载方式,容易发现资源释放、内存泄漏等问题。由随机算法自动生成某个数量范围动态的负载。虽然不容易模拟系统运行出现的高峰期,但能模拟长时间的高位运行过程。递增加载高低突变加载随机加载方式一次加载3、负载测试274、压力测试压力测试(StressTesting)。压力测试是持续不断地给被测系统增加压力,直到被测系统被压垮,从而确定系统能承受的最大压力。5、疲劳测试通常是采用系统稳定运行情况下,在一段时间内(经验上一般是连续72个小时),保持能够支持最大并发用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。286、易用性测试易用性测试方法有静态测试、动态测试以及动态和静态结合测试。易用性测试就是要检查系统界面和功能是否容易学习,使用方式是否规范一致,是否会误导用户或者使用模糊的信息。29安装测试(InstallingTesting)是确保软件在正常情况和异常情况下都能进行安装,并核实软件在安装后可立即正常运行的测试。异常情况包括磁盘空间不足、缺少目录创建权限等场景。安装测试包括测试安装代码以及安装手册。安装手册提供如何进行安装,安装代码提供安装一些程序能够运行的基础数据。进行安装测试时,从下面3点开展测试工作。(1)检查系统安装是否能够安装所有需要的文件/数据并进行必要的系统设置,是否会破坏其他位置的文件,是否可以终止并恢复现场。(2)检查系统是否能够正确卸载并恢复现场。(3)检查安装和卸载过程的用户提示和功能是否出现错误7、安装测试308、配置测试过程确定所需的硬件类型。确定哪些硬件、型号和驱动程序可用。确定可能的硬件特性、模式和选项。将确定后的硬件配置缩减为可控制的范围。明确使用硬件配置的软件唯一特性。设计在每一种配置中执行的测试用例。在每种配置中执行测试。反复测试直到