系统测试与集成测试.ppt
第七章 集成测试 与系统测试,1,内容概要,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,开发设计模型,制定集成计划,实施类,进行单元测试划型,制定计划,设计用例测试过程,脚本,执行集成测试,生成测试日志,执行集成测试,生成测试日志,Test Designer,Tester,The Designer,Implementer,Integrator,Designer,13,三.1.集成测试阶段工作流程,2.人员安排,14,3.测试计划,用集成测试计划的模板(详见附录B:集成测试计划模板)写集成测试计划书。计划书内容通常应该包含以下部分:确定集成测试对象,确定集成测试策略,确定集成测试验收标准,确定集成测试挂起和恢复条件,估计集成测试工作量,估计集成测试所需资源;进行集成测试任务划分(包括任务名、责任人、输入和输出、风险及应对措施、进度安排等)等。,15,4.测试内容,功能性测试,可靠性测试,易用性测试,性能测试,维护性测试,可移植性测试,16,5集成模式的选取,集成模式是软件集成测试中的策略体现,其重要性是明显的,直接关系到测试的效率、结果等,一般要根据具体的系统来决定采用哪种模式。集成测试基本可以概括为以下两种:非渐增式测试模式和渐增式测试模式。非渐增式测试模式:先分别测试每个模块,再把所有模块按设计要求一次全部组装起来,然后进行整体测试。渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个模块结合进来测试。非渐增式测试时可能发现一大堆错误,定位和纠正每个错误非常困难,并且在改正一个错误的同时又可能引入新的错误,新旧错误混杂,更难断定出错的原因和位置。与之相反的是渐增式集成模式,程序一段一段地扩展,测试的范围一步一步地增大,错误易于定位和纠正,接口的测试亦可做到完全彻底。两种模式中,渐增式测试模式虽然需要编写的驱动或桩程序较多,发现模块间接口错误相对稍晚些,但仍然具有比较明显的优势。在实际测试中,应该将两种模式有机结合起来,采用并行的自顶向下、自底向上集成方式,从而形成改进的三明治方法。而更重要的是采取持续集成的策略,软件开发中各个模块不是同时完成,根据进度将完成的模块尽可能早地进行集成,有助于尽早发现缺陷,避免集成阶段大量缺陷涌现。同时自底向上集成时,先期完成的模块将是后期模块的桩程序,而自顶向下集成时,先期完成的模块将是后期模块的驱动程序,从而使后期模块的单元测试和集成测试出现了部分的交叉,不仅节省了测试代码的编写,也有利于提高工作效率。,17,总之,实际应用中,常用的集成策略有:自顶向下集成、自底向上集成和混合集成。因为这三种策略并不相互排斥,因此基于这三种策略的组合可以派生出多种策略。集成策略的选取主要依赖于:(1)集成部件的可用性(例如第三方软件或硬件)。(2)系统规模。(3)是新系统还是在现有系统上增加、改变功能。(4)体系架构。,18,第二节.系统测试,系统测试类型系统测试内容系统测试过程,本章重点:,19,本节概要,五种重要系统测试类型十八种系统测试系统测试主要流程,本节难点:,20,一.系统测试的类型,21,1.,2.,3.,4.,5.,6.,用户支持测试,用户界面测试,可维护性测试,安全性测试,1、用户层,22,2、应用层,23,初验测试:系统核心功能、基本业务流程的验证。,业务功能覆盖:关注需求规格定义的所有功能是否都已实现。,业务场景测试:模拟用户操作实际业务场景,遍历主要业务流程和业务规则。,业务功能分解:将每个功能分解为测试项,关注每个测试项的测试类型都被测试通过。,业务功能组合:相关联的功能项的组合功能都被正确实现。,业务功能冲突:业务功能间存在的功能冲突情况均测试通过,例如:共享资源访问等。,异常处理及容错性:输入异常数据,或执行异常操作后,系统容错性及错误处理机制的健壮性。,24,3、功能层,(1)检验能否适当地接受输入数据而产生正确的输 出结果。(2)检验能否接受不同的数据输入(能接受正确的 数据输入、对异常数据的输入进行提示和溶出 处理)。(3)检验数据输出结果是否正确、格式是否清晰,能否保存和读取。(4)检验功能逻辑是否清楚,符合使用者的习惯。(5)检验系统的各种状态是否按照业务流程变化,并保持稳定。(6)检验菜单、按钮操作是否正常、灵活,能处理 一些异常操作。(7)检验系统的界面是否清晰、美观。(8)支持各种应用的环境,能配合多种硬件周边设 备,与外部应用系统的接口有效。(9)检验是否所有功能都能够实现,是否存在遗漏 功能。(10)检验是否所有功能都能正常实现,是否存在不 正常功能。(11)检验是否存在额外的功能,如功能键等。(12)检验功能是否满足系统设计的隐含需求,如系 统对意外情况的反应能力等。(13)检验软件升级后,能否继续支持旧版本的数据。,25,1、,二.系统测试内容:,2、性能测试应包含内容,26,一次加载每个数量的用户,在预定的时间段内持续运行。例如,早晨上班,用户访问网站或登录网站的时间非常集中,基本上属于Flat负载模式。,有规律地逐渐增加用户,每几秒增加一些新用户,交错上升,这种方式又称为ra-mp-up模式。借助这种负载方式的测试,容易发现性能的拐点,即性能瓶颈的位置。,某个时间用户数量很大,突然降级到很低,然后,过一段时间,又突然加到很高,反复几次。借助这种负载方式,容易发现资源释放、内存泄漏等问题。,由随机算法自动生成某个数量范围动态的负载。虽然不容易模拟系统运行出现的高峰期,但能模拟长时间的高位运行过程。,递增加载,高低突变加载,随机加载方式,一次加载,3、负载测试,27,4、压力测试压力测试(Stress Testing)。压力测试是持续不断地给被测系统增加压力,直到被测系统被压垮,从而确定系统能承受的最大压力。5、疲劳测试通常是采用系统稳定运行情况下,在一段时间内(经验上一般是连续72个小时),保持能够支持最大并发用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。,28,6、易用性测试易用性测试方法有静态测试、动态测试以及动态和静态结合测试。易用性测试就是要检查系统界面和功能是否容易学习,使用方式是否规范一致,是否会误导用户或者使用模糊的信息。,29,安装测试(Installing Testing)是确保软件在正常情况和异常情况下都能进行安装,并核实软件在安装后可立即正常运行的测试。异常情况包括磁盘空间不足、缺少目录创建权限等场景。安装测试包括测试安装代码以及安装手册。安装手册提供如何进行安装,安装代码提供安装一些程序能够运行的基础数据。进行安装测试时,从下面3点开展测试工作。(1)检查系统安装是否能够安装所有需要的文件/数据并进行必要的系统设置,是否会破坏其他位置的文件,是否可以终止并恢复现场。(2)检查系统是否能够正确卸载并恢复现场。(3)检查安装和卸载过程的用户提示和功能是否出现错误,7、安装测试,30,8、配置测试过程,确定所需的硬件类型。确定哪些硬件、型号和驱动程序可用。确定可能的硬件特性、模式和选项。将确定后的硬件配置缩减为可控制的范围。明确使用硬件配置的软件唯一特性。设计在每一种配置中执行的测试用例。在每种配置中执行测试。反复测试直到小组对结果满意为止。,31,9、文档测试,文档测试是检查系统文档是否齐全,是否有多余文档或者死文档,文档内容是否正确、规范、一致等。,文档测试,开发文件,用户文件,管理文件,32,10、安全测试,安全测试(Security Testing)用于检验系统对非法侵入的防范能力。系统的安全必须能够经受各方面的攻击。在安全测试的过程中,测试人员扮演非法入侵者的角色,采用各种方法试图突破系统的安全防线。从理论上讲,只要给予足够的时间和资源,任何系统都可以侵入。因此,系统安全设计原则是将系统设计为想攻破系统而付出的代价应大于侵入系统之后得到的信息价值,使得非法侵入者无利可图。常见的非法入侵手段有以下3种。(1)尝试通过外部手段截获或破译系统口令。(2)使用甚至专门开发能够瓦解防守的客户软件来攻击系统,试图破坏系统的保护机制。(3)故意引发系统错误,导致系统失败,企图趁系统恢复时侵入系统。安全测试应包括以下内容。(1)检查系统是否有病毒。(2)检查系统是否正确加密。(3)系统在非授权的内部或外部用户访问或故意破坏时候是否出现错误。,33,人为使系统发生灾难(系统崩溃、硬件损坏、病毒入侵等),检查系统是否能恢复被破坏的环境和数据。在这种测试中,将把应用程序或系统置于极端条件下(或者是模拟的极端条件下),以产生故障,然后调用恢复进程并监测和检验应用程序和系统,核实应用程序或系统和数据已得到了正确的恢复。恢复测试中考虑的典型问题如下:(1)是否存在潜在的和已确认的故障,导致的后果是怎样。(2)故障恢复过程是否为错误提供了足够的反应。(3)恢复过程是否能够正确工作。,11、恢复测试,34,一种选择性重新测试,目的是检测系统或系统组成部分在修改期间产生的缺陷,用于验证已进行的修改并未引起不希望的有害效果,或确认修改后的系统或系统组成部分仍满足规定的要求。设计和引入回归测试数据的重要原则,是应保证数据中可能影响测试的因素与未经修改扩充的原软件上进行测试时的那些因素尽可能一致,否则要想确定观测到的测试结果是由于数据变化引起的还是很困难。如果在回归测试中使用真实数据,理想的方法是首先使用以前软件测试中归档的测试数据集,以便把观测到的与数据无关的软件缺陷分离出来。若分离出来的测试结果令人满意,则可以使用新的真实数据,以便进一步确定软件的正确性。,12、回归测试,35,36,上述18种测试内容并不是都要必须进行的,实际测试中根据制定测试策略和测试计划的侧重点不同选用,还可根据测试目标、测试资源、软件系统特点和相关业务环境等选用。另外这18种测试可以交由第三方测试机构进行,以发挥其专业技术优势、独立性优势,以进一步促进承办方的工作。功能测试一般不交给第三方测试机构进行。,37,系统测试的过程,38,集成测试与系统测试区别,集成测试,也叫组装测试、联合测试、子系统测试或部件测试,它是在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。系统测试则是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案。,39,本 章 小 结,本章首先介绍了集成测试和系统测试的概念,分析了两种测试的区别,然后详细阐述了集成测试阶段所要做的工作,接着分析了系统测试的类型、工作内容,详细介绍了系统测试的结果分析方法,以及系统测试文档的书写模板。,40,