您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 集成测试与系统测试-Ch6
软件测试方法和技术第2版第6章集成测试和系统测试第5章回顾Zhu.Kerry@gmail.com①单元测试的定义与进行单元测试的重要性②单元测试的目标与任务③静态测试技术的运用④动态测试技术的运用⑤调试与评估⑥单元测试的过程与文档管理⑦单元测试的常用工具简介第6章集成测试和系统测试Zhu.Kerry@gmail.com6.1系统集成的模式与方法6.2功能测试6.3回归测试6.4非功能性测试6.1系统集成的模式与方法Zhu.Kerry@gmail.com6.1.1集成测试前的准备6.1.2集成测试的模式6.1.3自顶向下和自底向上集成方法6.1.4大棒与三明治集成方法6.1.5持续集成6.1.1集成测试前的准备◇人员安排◇测试计划◇测试内容◇集成模式◇测试方法Zhu.Kerry@gmail.com为什么总是集成不起来?Zhu.Kerry@gmail.com6.1.2集成测试的模式渐增式测试模式与非渐增式测试模式非渐增式测试模式:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,如大棒模式。渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。各自的优缺点Zhu.Kerry@gmail.com6.1.3自顶向下和自底向上集成方法Zhu.Kerry@gmail.com驱动程序/驱动模块(driver),用以模拟被测模块的上级模块。驱动模块在集成测试中接受测试数据,把相关的数据传送给被测模块,启动被测模块,并打印出相应的结果。桩程序/桩模块(stub),也有人称为存根程序,用以模拟被测模块工作过程中所调用的模块。桩模块由被测模块调用,它们一般只进行很少的数据处理,例如打印入口和返回,以便于检验被测模块与其下级模块的接口自顶向下法(Top-downIntegration)Zhu.Kerry@gmail.com自顶向下法的主要优缺点Zhu.Kerry@gmail.com自顶向下法(Top-downIntegration)自底向上法(Bottom-upIntegration)Zhu.Kerry@gmail.com自底向上法的主要优缺点自底向上法(Bottom-upIntegration)Zhu.Kerry@gmail.com混合策略(ModifiedTop-downIntegration)Zhu.Kerry@gmail.com混合法:对软件结构中较上层,使用的是“自顶向下”法;对软件结构中较下层,使用的是“自底向上”法,两者相结合6.1.4大棒集成方法(Big-bangIntegration)Zhu.Kerry@gmail.com采用大棒集成方法,先是对每一个子模块进行测试(单元测试阶段),然后将所有模块一次性的全部集成起来进行集成测试。因为所有的模块一次集成的,所以很难确定出错的真正位置、所在的模块、错误的原因。这种方法并不推荐在任何系统中使用,适合在规模较小的应用系统中使用。三明治集成方法(SandwichIntegration)Zhu.Kerry@gmail.com采用三明治方法的优点是:它将自顶向下和自底向上的集成方法有机地结合起来,不需要写桩程序因为在测试初自底向上集成已经验证了底层模块的正确性。采用这种方法的主要缺点是:在真正集成之前每一个独立的模块没有完全测试过。改善的三明治集成方法Zhu.Kerry@gmail.com改进的三明治集成方法,不仅自两头向中间集成,而且保证每个模块得到单独的测试,使测试进行得比较彻底。6.1.5持续集成Zhu.Kerry@gmail.com通常系统集成都会采用持续集成的策略,软件开发中各个模块不是同时完成,根据进度将完成的模块尽可能早的进行集成,有助于尽早发现Bug,避免集成中大量Bug涌现而且容易定位Bug、修正Bug,最终提高软件开发的质量与效率几种集成方法性能的比较Zhu.Kerry@gmail.com自底向上自顶向下混合策略大棒三明治改进三明治集成早早早晚早早基本程序能工作时间晚早早晚早早需要驱动程序是否是是是是需要桩程序否是是是是是工作并行性中低中高中高特殊路径测试容易难容易容易中等容易计划与控制容易难难容易难难6.2功能测试Zhu.Kerry@gmail.com目的和内容程序安装、启动正常,有相应的提示框、错误提示等每项功能符合实际要求系统的界面清晰、美观菜单、按钮操作正常、灵活,能处理一些异常操作能接受正确的数据输入,对异常数据的输入有提示、容错处理等数据的输出结果准确,格式清晰,可以保存和读取功能逻辑清楚,符合使用者习惯系统的各种状态按照业务流程而变化,并保持稳定支持各种应用的环境能配合多种硬件周边设备软件升级后,能继续支持旧版本的数据与外部应用系统的接口有效功能测试的方法等价类划分法边界值分析法错误推测法因果图法组合分析法Zhu.Kerry@gmail.com我要测试所有的功能回归测试的目的所做的修改达到了预定的目的,如错误得到了改正,新功能得到了实现,能够适应新的运行环境等;不影响软件原有功能的正确性。回归测试的方法再测试全部用例基于风险选择测试基于操作剖面选择测试再测试修改的部分6.3回归测试2000Zhu.Kerry@gmail.com回归测试的组织和实施回归测试Zhu.Kerry@gmail.com6.4非功能性测试6.4.1性能测试6.4.2压力测试6.4.3容量测试6.4.4安全性测试6.4.5可靠性测试6.4.6容错性测试Zhu.Kerry@gmail.com6.4.1性能测试Zhu.Kerry@gmail.com性能测试(Performancetest)通过测试以确定系统运行时的性能表现,如得到运行速度、响应时间、占有系统资源等方面的系统数据。0510152025301X51X1001X5001X7001X90010X5HTTPTCPHTTP&TCP性能测试目的和需求目的:为了验证系统是否达到用户提出的性能指标,同时发现系统中存在的性能瓶颈,起到优化系统的目的。性能测试需求:用户对各项指标提出的明确需求;如果用户没有提出性能指标则根据用户需求、测试设计人员的经验来设计各项测试指标。(需求+经验)主要的性能指标:服务器的各项指标(CPU、内存占用率等)、后台数据库的各项指标、网络流量、响应时间性能测试方法负载模拟并发用户+思考时间+每次请求的数据量+负载模式性能测试步骤1.确定性能测试需求2.根据测试需求,选择测试工具和开发相应的测试脚本3.建立性能测试负载模型,就是确定并发虚拟用户的数量、每次请求的数据量、思考时间、加载方式和持续加载的时间等4.执行性能测试5.结果分析,并提交性能测试报告性能测试的过程评估系统制定测试资产执行基线&基准测试分析结果验证需求完成调试系统识别探索性测试非决定性结果不符合标准调试之后重新进行基准测试开发探索性的测试符合所有的标准性能测试要点测试环境应尽量与产品运行环境保持一致,应单独运行尽量避免与其他软件同时使用。性能测试一般使用测试工具和测试人员编制测试脚本来完成。性能测试的重点在于前期数据的设计与后期数据的分析。性能测试的用例主要涉及到整个系统架构的问题,所以测试用例一旦生成,改动一般不大,所以做性能测试的重复使用率一般比较高。性能测试的方法和技巧两种负载类型“flat”测试ramp-up测试对于企业级的系统,性能测试的方法主要有:基准测试性能规划测试渗入测试峰谷测试两种负载类型“Flat”测试:对于一次给定的测试,应该取响应时间和吞吐量的平均值。精确地获得这些值的唯一方法是一次加载所有的用户,然后在预定的时间段内持续运行。虚拟用户的数量两种负载类型Ramp-up测试:用户是交错上升的(每几秒增加一些新用户)。ramp-up测试不能产生精确和可重现的平均值,这是因为由于用户的增加是每次一部分,系统的负载在不断地变化。其优点是,可以看出随着系统负载的改变,测量值是如何改变的据此选择要运行的flat测试的范围。Flat测试“波动”效应PageDownloadedperSecond系统吞吐量Flat测试“波动”效应ResourceUsage基准测试同时与服务器通信的连接(或虚拟用户)的数目,每个虚拟用户请求之间间隔时间的长短。随着服务器上负载的增加,吞吐量会不断攀升,直到到达一个点,并在这个点上稳定下来基准测试的关键是要获得一致的、可再现的结果。假定测试的两个指标是服务器的响应时间和吞吐量,会受到负载的影响。而负载又受两个因素影响:与服务器通信的用户越多,负载就越大。同样,请求之间间隔时间越短,负载也越大。这两个因素的不同组合会产生不同的服务器负载等级.基准测试(2)在某一点上,执行队列开始增长,因为服务器上所有的线程都已投入使用,传入的请求不再被立即处理,而是放入队列中,当线程空闲时再处理。当系统达到饱和点,服务器吞吐量保持稳定后,就达到了给定条件下的系统上限。但是,随着服务器负载的继续增长,响应时间也随之延长,虽然吞吐量保持稳定。队列产生响应时间资源使用将系统置于相同的高负载下,将请求之间间隔时间设为零。这样服务器会立即超载,并开始构建执行队列。如果请求(虚拟用户)数保持一致,基准测试的结果会非常精确flat运行是获得基准测试数据的理想模式基准测试(3)两个事务的响应时间曲线性能规划测试性能规划类型的测试其目标是找出在特定的环境下,给定应用程序的性能可以达到何种程度。例如,如果要以5秒或更少的响应时间支持8,000个当前用户,需要多少个服务器?要确定系统的容量,需要考虑几个因素:用户中有多少是并发与服务器通信的。每个用户的请求间时间间隔是多少。如何加载用户以模拟负载状态?最好的方法是模拟高峰时间用户与服务器通信的状况。如果用户负载状态是在一段时间内逐步达到的,选择ramp-up测试,每隔几秒增加x个用户;如果所有用户是在一个非常短的时间内同时与系统通信,就应该使用flat测试,将所有的用户同时加载到服务器什么是确定容量的最好方法?结合两种负载类型的优点,并运行一系列的测试如:首先使用ramp-up测试确定系统支持的用户范围该范围内不同的并发用户负载进行一系列的flat测试,更精确地确定系统的容量。性能规划测试(2)渗入测试渗入测试是一种比较简单的性能测试。渗入测试所需时间较长,它使用固定数目的并发用户测试系统的总体健壮性。这些测试将会通过内存泄漏、增加的垃圾收集(GC)或系统的其他问题,显示因长时间运行而出现的任何性能降低。建议运行两次测试——一次使用较低的用户负载(要在系统容量之下,以便不会出现执行队列),一次使用较高的负载(以便出现积极的执行队列)。峰谷测试兼有容量规划ramp-up测试和渗入测试的特征,目标是确定从高负载(例如系统高峰时间的负载)恢复、转为几乎空闲、然后再攀升到高负载、再降低的能力。系统瓶颈分析举例-1交易的响应时间如果很长,远远超过系统性能需求,表示耗费CPU的数据库操作,例如排序,执行aggregatefunctions(例如sum、min、max、count)等较多,可考虑是否有索引以及索引建立的是否合理;尽量使用简单的表联接;水平分割大表格等方法来降低该值。Zhu.Kerry@gmail.com系统瓶颈分析举例-2分段排除错误。测试工具可以模拟不同的虚拟用户来单独访问Web服务器、应用服务器和数据库服务器,这样,就可以在Web端测出的响应时间减去以上各个分段测出的时间就可以知道瓶颈在哪并着手调优。Zhu.Kerry@gmail.com系统瓶颈分析举例-3UNIX资源监控(NT操作系统同理)中指标内存页交换速率(Pagingrate),如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。也可能是内存访问命中率低。“Swapinrate”和“Swapoutrate”也有类似的解释。Zhu.Kerry@gmail.com系统瓶颈分析举例-4UNIX资源监控(NT操作系统同理)中指
本文标题:集成测试与系统测试-Ch6
链接地址:https://www.777doc.com/doc-3800606 .html