您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > Load Testing
定义及目标Loadtesting(负载测试),通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行,不是为了破坏系统。此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关的方面。负载测试主要考验系统的两个指标:一个是系统的容量,另一个是系统的耐久性。系统的容量是指给系统添加大数据量的文件或者数据,让系统进行处理并实时观察系统的表现情况。目的是找到系统能添加负载的最大量。(例如大数据量文件输入让系统处理,大访问量的输入处理等)系统的耐久性指给出数量巨大的任务,让系统始终处于高负荷量的运行状态,并观察记录系统的表现情况。目的是找到系统的疲劳点。(例如运行多少时间后系统返回时间开始变大,系统什么时候处理时间变得缓慢等)容量测试容量测试关注点是howmuch,而不是howfast例如:通过编辑一个巨大的文件来测试文字处理软件;通过发送一个巨大的作业来测试打印机;通过成千上万的用户邮箱来测试邮件服务器;有一种比较特别的容量测试是叫作“零容量测试”,它是给系统加上空任务来测试。耐久性测试例如:在一个循环中不停的运行客户端超过一个扩展时间段。负载测试周期及前提条件负载测试周期:一次测试常常持续几天甚至几周。负载测试实现的前提是先准备巨大的数据量(例如上百兆的文件,上万的用户等)。负载测试不会以系统崩溃为目的,负载测试的期望值一般以满足使用需求为主,不需要太夸张地数值。负载测试执行阶段紧张的进度加上有限的资源,看起来会在不同阶段困扰着开发工作。有一些团队选择在每一次迭代时进行负载测试。大多数情况下,负载测试仅仅在开发周期的末期即项目被首次展示之前被执行。这就不可避免的会威胁到应用程序的质量及其满足客户的SLA(服务级别协定)的能力。故而应尽量在开发过程的早期执行。尽早地实施负载测试计划有助于确保将在开发时出现的意外情况降至最低限度,发现和修复开发周期中出现的系统问题。负载测试方式通常来说,负载测试可以采用手动和自动两种方式。手动测试会遇到很多问题,如无法模拟太多用户、测试者很难精确记录相应时间、连续测试和重复测试的工作量特别大等。因此对于负载测试,手动方式通常用于初级的负载测试。目前,绝大多数的负载测试都是通过自动化工具完成的。测试人员及测试工具要求测试人员:负载测试人员需要对整个网络架构应用和应用系统非常熟悉。测试工具:1、功能方面,主要考虑工具所支持的协议、分析方式、监视目标种类等以及该工具能否精确计量、回放用户的访问情况。2、性能方面,主要考虑它模拟虚拟用户的能力。例如考虑该工具在一定资源下可以模拟的用户数量和速度负载测试软件工作原理图负载测试软件须包含几个部分:1)记录软件;2)发生器;3)监控软件;4)报告软件。测试工具LoadRunnerAstraLoadTestRationalRobotWebLoadVS2010中的LoadTestSilkPerformer负载测试过程第一步:系统分析分析被测系统需要满足什么要求,例如支持多少人在线、支持连续多长时间的访问等,以及需要定义测试所需输入的数据。测试者的主要任务就是将系统的需求转换成测试目标,对系统进行全面的分析和评估,并结合测试的实际环境和条件以确保测试目标和测试计划的正确性。例:确定测试哪些流程、测试中使用何种系统架构、并发连接数、预期每秒网络点击率等。负载测试过程第二步:创建虚拟用户脚本首先,要记录业务流程,创建测试脚本。为了模拟多个用户访问服务器必须编写脚本。简单的脚本可以通过自动化工具提供的脚本编辑环境来编写。复杂的脚本则通常是通过记录单用户的活动生成最初的脚本,再在此基础上进行修改以保证该脚本可以支持多个用户。其中最主要的修改是关于数据池的,因为不同用户通常使用不同数据,例如用户名和密码等。因此,我们通常要将这些数据存储在数据库(或者数据池)中,以便在执行中被脚本程序调用。负载测试过程第三步:构造运行环境有了脚本后,就可以通过一个场景来管理这些脚本的执行。场景是一个执行单位,可以通过场景来模拟一个工作负载。在场景中,我们将管理脚本的数量、执行次数、执行时间等,甚至还可以加上一些定时器、同步点等控制机制。另外,还可以将模拟用户分配到不同的计算机上。负载测试过程第四步:运行场景设置好场景后,就可以运行了。通常,在运行场景的同时还要启动相关监控模块,监控服务器性能、网络状态、Web服务器性能和数据库性能等。自动化工具同时记录了各种客户端信息,包括相应时间、交易成功率等。负载测试过程第五步:分析测试结果评估测试结果是负载测试过程中最重要的一步。通常,在场景运行后,自动化工具会生成标准报告,可以通过分析这个报告来分析整个系统性能,找到系统瓶颈。LoadRunner为例LoadRunner是一种预测系统行为和性能的工业标准级负载测试工具。通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。10字真言:虚拟的用户,真实的负载VuGen:脚本录制工具Controller:场景控制器Analysis:结果分析工具负载测试VS压力测试VS性能测试压力测试是指对系统不断加压力的测试,通过确定一个系统的瓶颈或不能接收用户请求的性能点,来获得系统能提供的最大服务级别的测试。压力测试的目的是发现在什么条件下系统的性能变得不可接受,并通过对应用程序施加越来越大的负载,直到发现应用程序性能下载的拐点。任何能使系统崩溃的测试都可以称之为压力测试。负载测试VS压力测试VS性能测试性能测试的目的是找到系统在某种条件下的瓶颈,前提是这种条件在软件或服务的实际应用中可能发生。在进行性能测试之前,首先要明确两个值:一个是系统负载预期值,一个是系统响应时间的预期值。有了这两个目标,才可以使用对系统持续增加负载的方法来观察系统的瓶颈所在。性能测试的另一个目的是要建立一组被测系统的基准数据,系统在同样的测试环境与测试条件下,表现应当符合或优于基准数据的要求,否则测试不通过。另外,基准数据也可以为其他类似的系统提供预期数据及预期返回时间的数值参考。负载测试VS压力测试VS性能测试负载测试、压力测试和性能测试的测试目的不同,但其手段和方法在一定程度上比较相似,通常会使用相同的测试环境和测试工具,而且都会监控系统所占用资源的情况以及其它相应的性能指标。案例:测试者使用LoadRunner测试工具,让Vuser从50一直增加到1000的过程中,观察系统的表现,重点关注响应数及响应时间这两个指标。当系统添加到50个Vuser时点击数及响应时间都保持在100左右,系统表现良好;当添加到250到1000个Vuser之后,系统点击数仍然保持在100,而响应时间最后超过150秒,最后系统崩溃。这次测试到底是什么测试呢?是什么方式的测试?案例分析:首先,我们设定了一个系统预期值500次点击量,没有设置响应时间,因为在正常情况下,点击就应该马上有响应,因此响应时间应该为零。这是性能测试和负载测试的基本要求。其次,当系统添加到250个Vuser之后,点击数仍然还是100,出现瓶颈了,而找系统的各种瓶颈正是性能测试的主要任务(此时CPU监控显示使用率为96%)。然后,我们给出了一个大数据量的访问,500个Vuser,这个值系统在4分钟到6分钟的时间之内,勉强还能跑起来,这是负载测试的典型情况,当然500个Vuser是期望值所定的,负载测试是否最大只能是这个数值还有待商榷。案例分析:最后,Vuser增加到1000,系统崩溃,这是压力测试的目的。在这次测试实践中,我们通过性能测试知道了系统目前的最大瓶颈在哪里;通过负载测试了解到500个Vuser条件下至少还能跑起来,因此可以试一下提高CPU性能是否能提高系统性能;通过压力测试了解到系统的响应时间是缓慢增加的,崩溃过程是逐渐进行的。因此可以着手进行系统优化,然后准备下一次测试。案例总结:从上述例子说明,一次测试可以包含性能测试、负载测试以及压力测试三个方面的内容。它们并不是独立进行测试的。其实到测试操作环节,上述三个测试方法都基本一致,只是各自所关注的东西不一样。
本文标题:Load Testing
链接地址:https://www.777doc.com/doc-9980 .html