性能测试从零开始笔记.docx

上传人:牧羊曲112 文档编号:5287663 上传时间:2023-06-22 格式:DOCX 页数:17 大小:126.34KB
返回 下载 相关 举报
性能测试从零开始笔记.docx_第1页
第1页 / 共17页
性能测试从零开始笔记.docx_第2页
第2页 / 共17页
性能测试从零开始笔记.docx_第3页
第3页 / 共17页
性能测试从零开始笔记.docx_第4页
第4页 / 共17页
性能测试从零开始笔记.docx_第5页
第5页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《性能测试从零开始笔记.docx》由会员分享,可在线阅读,更多相关《性能测试从零开始笔记.docx(17页珍藏版)》请在三一办公上搜索。

1、功能测试:功能指的是在一般条件下软件系统能够为用户做什么,能够满足用户什么样的需求性能测试:性能就是在空间和时间资源有限的条件下,软件系统还能不能工作。区别:软件性能和功能区别的实质是,软件功能焦点在于软件“做什么”,关注软件物质“主体” 发生的“事件”;而软件性能则关注于软件物质“做得如何”,这是综合“空间”和“时间” 考虑的方案(资源和速度),表现为软件对“空间”和“时间”的敏感度。认识到性能的这 个基本特征对于性能测试人员非常重要,性能测试就属于软件系统级测试,其最终目的是验证用户的性能需求是否达到,在这个目标 下,性能测试还常常用来做:(1)识别系统瓶颈和产生瓶颈的原因;(2)最优化和

2、调整平台的配置(包括硬件和软件)来达到最高的性能;(3)判断一个新的模块是否对整个系统的性能有影响。性能指标:用户关注的性能指标包括响应时间,资源占用:CPU占用率、内存使用率、磁盘I/O、网络 I/O,计算性能;资源的利用和回收,启动时间、伸缩性、稳定性。响应时间(Response time)响应时间就是用户感受软件系统为其服务所耗费的时间,对于网站系统来说,响应时间就是 从点击了一个页面计时开始,到这个页面完全在浏览器里展现计时结束的这一段时间间隔, 看起来很简单,但其实在这段响应时间内,软件系统在幕后经过了一系列的处理工作,贯穿 了整个系统节点。根据“管辖区域”不同,响应时间可以细分为:

3、(1)服务器端响应时间,这个时间指的是服务器完成交易请求执行的时间,不包括客 户端到服务器端的反应(请求和耗费在网络上的通信时间),这个服务器端响应时间可以度 量服务器的处理能力。(2)网络响应时间,这是网络硬件传输交易请求和交易结果所耗费的时间。(3)客户端响应时间,这是客户端在构建请求和展现交易结果时所耗费的时间,对于 普通的瘦客户端Web应用来说,这个时间很短,通常可以忽略不计;但是对于胖客户端Web 应用来说,比如Java applet. AJAX,由于客户端内嵌了大量的逻辑处理,耗费的时间有可能 很长,从而成为系统的瓶颈,这是要注意的一个地方。那么客户感受的响应时间其实是等于客户端响

4、应时间+服务器端响应时间+网络响应时 间。细分的目的是为了方便定位性能瓶颈出现在哪个节点上。吞吐量(Throughput):指软件系统在每单位时间内能处理多少个事务/请求/单位数据等。但它的定义比较灵活,在 不同的场景下有不同的诠释,比如数据库的吞吐量指的是单位时间内,不同SQL语句的执 行数量,网络的吞吐量指的是单位时间内在网络上传输的数据流量。资源使用率(Resource utilization):常见的资源有:CPU占用率、内存使用率、磁盘I/O、网络I/O。点击数(Hits per second)点击数是衡量Web Server处理能力的一个很有用的指标。点击数不是我们通常理解的用户

5、鼠标点击次数,而是按照客户端向Web Server发起了多少次http请求计算的,一次鼠标可 能触发多个http请求,这需要结合具体的Web系统实现来计算。并发用户数(Concurrent users)并发用户数用来度量服务器并发容量和同步协调能力。在客户端指一批用户同时执行一个操 作。并发数反映了软件系统的并发处理能力,和吞吐量不同的是,它大多是占用套接字、句 柄等操作系统资源。另外,度量软件系统的性能指标还有系统恢复时间等,其实凡是用户有关资源和时间的要求 都可以被视作性能指标,都可以作为软件系统的度量,而性能测试就是为了验证这些性能指 标是否被满足。计算性能;计算性能是用户最关心的一个指

6、标,即软件系统有多快。完成用户典型操作,比如业务的交 易计算,数据的增、删、改、查时间是不是在用户可以接受的范围内。资源的利用和回收;资源包括硬件和软件资源,硬件资源包括客户端硬件、服务器硬件和网络硬件;软件资源包 括操作系统、中间件和数据库等。运行软件系统需要使用到的服务器内存数量,对于整个系 统的性能表现是至关重要的。因此,软件系统能否在运行时有效地使用和释放内存是我们考 察软件性能的一个重要因素。在评价一个系统性能的时候,要特别关注这个系统对内存的使用。如果内存不够大,CPU就不能把全部的数据和程序放到内存里,只好放一部分在内存,一部 分放在硬盘中,现用现取,而读取内存和读取硬盘数据的速

7、度要差好几个数量级,这就大大 影响了计算机的工作效率。启动时间;用户希望系统进入正常工作状态的时间越短越好,不同软件系统启动时间会不同,J2EE系 统在第一次启动的时候一般会比较慢,因为期间涉及缓存的加载、JSP页面的编译、Java class编译成机器指令等。所以在第一次启动应用感到非常慢是比较正常的,这也是J2EE 或者Java应用的一个特点。而C/C+程序直接运行的是二进制机器代码,启动速度就要快 一些。伸缩性;伸缩性是分析系统性能经常被忽略的一个方面。比如一个系统在50个并发用户访问的时候 表现正常,但是当并发用户达到1000的时候,系统表现如何?随着并发用户的增加,平均 响应时间逐渐

8、稳定下来。稳定性用户希望自己的软件系统是千里马,而不是黑马。千里马是一直跑得快,黑马是短时间内跑 得快。满足用户性能需求解决方案内存泄露:程序在运行过程中无法释放不再需要的内存空间,导致系统无内存可用,甚至系 统崩溃。具体来讲,当用户程序在运行过程中需要动态获得内存时,操作系统总是从堆(heap)上分 配相应的空间给应用,分配的结果是将该堆内存的起始地址通过指针返回给应用。应用程序 使用完这块内存后,应通过系统调用主动通知操作系统回收这些堆内存以便重用。但是,如 果由于设计缺陷导致在某些情况下程序没有主动地通知到操作系统,而后应用又失去了对这 块内存的引用时,则该堆内存块将成为既不受程序控制,

9、又不能被系统回收重用的“孤儿” 内存,这便是我们所指的内存泄漏。做性能测试的大部分工作都是为了寻找这个瓶颈到底在何处。对于性能测试来说,预期输出就是用户的性能需求,一份明确的性能需求是成功性能测试的 先决条件。pareto原则应用于软件测试,也包括性能测试,即性能测试发现的错误中的80%很可能集中 在20%的程序模块中。性能问题从以下三方面考虑:1、软件系统设计的架构及技术平台软件在设计阶段一旦决定采用哪种架构和技术,其性能也就注定只能在一定的范围内变动了。 这就是“先天”因素。比如一个删除/增加数据的业务操作,如果用户对时间非常苛刻,密 集型计算、在线的大数据量统计和分析等应用,这些场景通常

10、J2EE不能够很好地解决,使 用C+或者其他平台搭建会更合理些。如果在这些场景下硬要采用J2EE架构,那么开发和 设计人员如何绞尽脑汁,优化设计和程序,也不会满足用户的性能要求。2、中间件的设置和优化这里的中间件是广义的中间件,是应用程序调用的第三方软件,包括操作系统、数据库、 Web服务器、消息服务器等。我们不能改变中间件的程序,只能通过调优手段来提高它所 支持的软件系统的性能。3、硬件的配置这里包括服务器硬件配置和网络环境。服务器硬件包括内存、CPU等,网络环境有交换机、 路由器等。选择性能测试案例时应遵循的原则:(1) 基本且常用的比如,一个E-mail系统,基本且常用的功能有注册、登录

11、、收邮件、查询邮件,用户使用这 些功能的频率较高,要做性能测试。而高级查询、过滤器、邮件列表等功能被使用的次数较 少,就可以不做性能测试,或者进行性能测试的优先级低一些。(2) 对响应时间要求苛刻的如金融和电信等对实时性要求比较高的系统,比如电信系统中,从拨号到经过基站、核心网, 再到被叫手机响铃,整个系统的处理时间应该在用户能接受的范围内。这些功能细分,就是性能测试中的事务(transaction)o性能测试开始的必要条件是软件系统已经处于一个比较稳定的状态,系统架构、主要代码、 中间件等都不再有大的变化,否则会给性能测试带来很大的风险。性能测试方法:负载测试:负载测试指的是最常见的验证一般

12、性能需求而进行的性能测试负载测试主要是考察软件系统在既定负载下的性能表现。我们对负载测试可以有如下理解:(1) 负载测试是站在用户的角度去观察在一定条件下软件系统的性能表现。(2) 负载测试的预期结果是用户的性能需求得到满足。此指标一般体现为响应时间、交易 容量、并发容量、资源使用率等。压力测试压力测试是为了考察系统在极端条件下的表现,极端条件可以是超负荷的交易量和并发用户 数。注意,这个极端条件并不一定是用户的性能需求,可能要远远高于用户的性能需求。可 以这样理解,压力测试和负载测试不同的是,压力测试的预期结果就是系统出现问题,而我 们要考察的是系统处理问题的方式。比如说,我们期待一个系统在

13、面临压力的情况下能够保 持稳定,处理速度可以变慢,但不能系统崩溃。因此,压力测试是能让我们识别系统的弱点 和在极限负载下程序将如何运行。负载测试关心的是用户规则和需求,压力测试关心的是软件系统本身。并发测试验证系统的并发处理能力。一般是和服务器端建立大量的并发连接,通过客户端的响应时间 和服务器端的性能监测情况来判断系统是否达到了既定的并发能力指标。负载测试往往就会 使用并发来创造负载,之所以把并发测试单独提出来,是因为并发测试往往涉及服务器的并 发容量,以及多进程/多线程协调同步可能带来的问题。这是要特别注意,必须测试的。基准测试当软件系统中增加一个新的模块的时候,需要做基准测试,以判断新模

14、块对整个软件系统的 性能影响。按照基准测试的方法,需要打开/关闭新模块至少各做一次测试。关闭模块之前 的系统各个性能指标记下来作为基准(Benchmark),然后与打开模块状态下的系统性能指 标作比较,以判断模块对系统性能的影响。稳定性测试测试系统在一定负载下运行长时间后是否会发生问题。软件系统的有些问题是不能一下子就 暴露出来的,或者说是需要时间积累才能达到能够度量的程度。为什么会需要这样的测试呢? 因为有些软件的问题只有在运行一天或一个星期甚至更长的时间才会暴露。这种问题一般是 程序占用资源却不能及时释放而引起的。比如,内存泄漏问题就是经过一段时间积累才会慢 慢变得显著,在运行初期却很难检

15、测出来;还有客户端和服务器在负载运行一段时间后,建 立了大量的连接通路,却不能有效地复用或及时释放。可恢复测试测试系统能否快速地从错误状态中恢复到正常状态。比如,在一个配有负载均衡的系统中, 主机承受了压力无法正常工作后,备份机是否能够快速地接管负载。可恢复测试通常结合压 力测试一起来做。提示:每种测试有其存在的空间和目的。当我们接手一个软件项目后,在有限的资源条件下, 选择去做哪一种测试,这应该根据当前软件过程阶段和项目的本身特点来做选择。比如,在 集成测试的时候要做基准测试,在软件产品每个发布点要做性能测试。性能测试质量度量下面是部分度量的方法:(1)性能测试耗费的资源,包括时间、人力、物

16、力。(2)性能测试中发现的bug数目,以及各自的级别。(3)软件系统交付用户,在生产环境运行后发现的性能bug数目、级别。GAME(A)性能测试过程模型:G: Goal,目标A: Analysis,分析M: Metrics,度量E: Execution,执行(A): Adjust,调整。E执行失败后才进入A阶段,并且涉及的大多是有关开发和系统管 理工作,因此A设为隐式。Goal (定义目标)制定一个明确而详细的测试目标是性能测试开始的第一步,也是性能测试成功的关键。本步骤的开始时间:需求获取阶段本步骤的输入:性能需求意向本步骤的输出:明确的性能测试目标和性能测试策略常规的性能测试目标有以下几种

17、:(1)度量最终用户响应时间查看用户执行业务流程以及从服务器得到响应所花费的时间。例如,假设我们想要检测:系 统在正常的负载情况下运行时,最终用户能否在20秒内得到所有请求的响应。(2)定义最优的硬件配置检测各项系统配置(内存、CPU速度、缓存、适配器、调制解调器)对性能的影响。了解系 统体系结构并测试了应用程序响应时间后,您可以度量不同系统配置下的应用程序响应时间, 从而确定哪一种设置能够提供理想的性能级别。例如,您可以设置三种不同的服务器配置,并针对各个配置运行相同的测试,以确定性能上 的差异:配置 1: 1.2GHz、1GB RAM配置 2: 1.2GHz、2GB RAM配置 3: 2.

18、4GHz、1GB RAM(3)检查可靠性确定系统在连续的高工作负载下的稳定性级别。强制系统在短时间内处理大量任务,以模 拟系统在数周或数月的时间内通常会遇到的活动类型。(4)查看硬件或软件升级执行回归测试,以便对新旧版本的硬件或软件进行比较。您可以查看软件或硬件升级对响 应时间(基准)和可靠性的影响。注意:此回归测试的目的不是验证升级版的新功能,而是 查看新版本的效率和可靠性是否与旧版本相同。(5)确定瓶颈您可以运行测试以确定系统的瓶颈,并确定哪些因素导致性能下降,例如,文件锁定、资源 争用和网络过载。将LoadRunner与新的网络和计算机监视工具结合使用以生成负载,并度 量系统中不同点的性

19、能,最终找出瓶颈所在的位置。(6)度量系统容量 度量系统容量,并确定系统在不降低性能的前提下能提供多少额外容量。如图1-7所示,要 查看容量,您可以查看现有系统中性能与负载间的关系,并确定出现响应时间显著延长的位 置。该处通常称为响应时间曲线的“拐点”。C5.eJ0O)iAcceptitile.i我们根据不同的测试目标去选择合适的性能测试设计策略。比如,“度量最终用户响应时间” 可以采用负载测试策略,“检查可靠性”就可以用压力测试策略,等等。1-TmijliHr of Users我1-7用户戴-响应时间拐点图4Analysis (分析)本步骤的开始时间:需求分析阶段和性能测试启动阶段本步骤的输

20、入:性能需求本步骤的输出:达成一致的性能指标列表,性能测试案例文档1 .分析性能需求在这里,要定义性能测试的内容,细化性能需求。客户、需求分析人员和测试工程师一起起草一个性能需求标准,对此标准获得一致认同。此 标准将用户的需求细化、量化,并能在测试中作为判断依据。比如,对于负载测试来说,可以从以下角度来细化需求,逐步找出测试关键点。测试的对象是什么,例如“被测系统中有负载压力需求的功能点包括哪些?” “测试中需要 模拟哪些部门用户产生的负载压力?”等问题。系统配置如何,例如“预计有多少用户并发访问?” “用户客户端的配置如何? ”; “使用什 么样的数据库”;“服务器怎样和客户端通信?”。应用

21、系统的使用模式是什么,例如“使用在什么时间达到高峰期?” “用户使用该系统是采用B/S运行模式吗?”;“网络设备的吞吐能力如何,每个环节承受多少并发用户?”等问题。最后得出的性能测试指标标准至少要包含测试环境、业务规则、期望响应时间等。2.分析系统架构对硬件和软件组件、系统配置以及典型的使用模型有一个透彻的了解。结合性能测试指标标 准,生成性能测试用例。Metrics (度量)本步骤的开始时间:性能测试设计阶段本步骤的输入:细化的性能指标和性能测试案例本步骤的输出:和工具相关的场景度量、交易度量、监控器度量和虚拟用户度量等 度量是非常重要的一步,它把性能测试本身量化。这个量化的过程因测试工具的

22、不同而异。(1)场景的定义,pass/fail的标准测试场景包含了性能测试的宏观信息,有测试环境、运行规则和监控数据等。具体可 表现为历史数据记录数、虚拟用户数、虚拟用户加载方式、监控指标等。(2)事务(Transaction)的定义,pass/fail 的标准事务用来度量服务器的处理能力。事务定义应该从性能指标标准而来,是性能指标的 具体体现。事务的定义是很重要的,不同的定义会导致不同的TPS(transaction per second)结 果。提示:使用性能测试工具执行性能测试之后,我们能看到的是pass/fail的用户数、pass/fail 的事务数。而这些pass/fail的标准应该

23、在执行性能测试之前就应该被定义好。比如, LoadRunner默认的pass/fail标准是基于协议层的,而我们要的pass/fail可能是业务级的,需 要在业务层上进行判断来决定是pass还是fail。另外,还可能由于案例的关联性引起的 pass/fail,如果两个案例之间有关联,A脚本负责向数据库插入数据,B脚本负责查询数据, A要是fail 了,导致B也会fail,虽然B本身不一定有错。解决这个问题,一方面可以削弱 脚本之间的关联性,另一方面也可以通过增强脚本的健壮性来达到。(3)虚拟用户pass/fail的标准虚拟用户是性能测试工具中的一个普遍的概念,虚拟用户负责执行性能测试脚本,在

24、这里应该定义虚拟用户遇到何种情况,选择fail或pass,即退出或通过。Execution (执行)本步骤的开始时间:软件测试执行阶段本步骤的输入:场景、交易、虚拟用户等设置信息本步骤的输出:测试报告执行测试包含两个工作:(1)准备测试环境、数据和脚本测试环境:硬件平台和软件平台。测试数据:包括初始测试数据和测试用例数据两部分。表现为SQL脚本、Excel文件等。提示:测试环境直接影响测试效果,所有的测试结果都是在一定软硬件环境约束下的结果, 测试环境不同,测试结果可能会有所不同。需要注意:如果是完全真实的应用运行环境,要 尽可能降低测试对现有业务的影响;如果是建立近似的真实环境,要首先达到服

25、务器、数据 库以及中间件的真实,并且要具备一定的数据量,客户端可以次要考虑。实施负载压力测试时,需要运行系统相关业务,这时需要一些数据支持才可运行业务,这部 分数据即为初始测试数据。有时为了模拟不同的虚拟用户的真实负载,需要将一部分业务数 据参数化,这部分数据为测试用例数据。测试脚本:用性能测试工具生成脚本。(2)运行场景和监控性能运行性能测试场景,并监控设定好的数据指标,最终生成测试报告。按照定义好的场景 pass/fail标准来判断性能测试是否通过。如果未能通过,进入步骤5(Adjust)。Adjust (调整)本步骤的开始时间:第一轮性能测试结束后,而且没有通过的条件下 本步骤的输入:测

26、试报告和测试结果数据 本步骤的输出:性能问题解决方案调整包含两个意思:应用程序修改和中间件调优。中间件调优可考虑如下因素操作系统调优:数据库调优内存升级CPU数量代码调优Cache调优提示:解决一个性能瓶颈,往往又会出现另外的瓶颈或者其他问题,所以性能优化更加切实 的目标是做到在一定范围内使系统的各项资源使用趋向合理和保持一定的平衡。系统运行良好的时候恰恰也是各项资源达到了一个平衡体,任何一项资源的过度使用都会造 成平衡体系破坏,从而造成系统负载极高或者响应迟缓。比如CPU过度使用会造成大量进 程等待CPU资源,系统响应变慢,等待会造成进程数增加,进程增加又会造成内存使用增 加,内存耗尽又会造

27、成虚拟内存使用,使用虚拟内存又会造成磁盘IO增加和CPU开销增加 (用于进程切换、缺页处理的CPU开销)。从以上内容可以看出,目前GAME(A)模型有两个优势:第一,灵活,每个过程都有自己 的关注点,可以根据不同的项目特点增加或删除关注点;第二,通用,不依赖于具体的工具。 目前GAME(A)关注性能测试技术,比较简单,将来可以进行扩展,同样使用GAME(A) 模型关注性能测试的时间、人力等资源问题。性能测试工具的评估和选择性能测试和一般功能测试不同的是,性能测试的执行是基本功能的重复和并发,因此我们在 性能开始之前需要模拟多用户,在性能测试进行时要监控指标参数,同时性能测试的结果不 是那么显而

28、易见,需要对数据进行分析。电子邮件的工作原理电子邮件的工作过程遵循客户-服务器模式。每份电子邮件的发送都要涉及发送方与接收方, 发送方构成客户端,而接收方构成服务器,服务器含有众多用户的电子信箱。发送方通过邮 件客户程序,将编辑好的电子邮件向邮件服务器(SMTP服务器)发送。邮件服务器识别接 收者的地址,并向管理该地址的邮件服务器(IMAP或POP3服务器)发送消息。邮件服务 器将消息存放在接收者的电子信箱内,并告知接收者有新邮件到来。接收者通过邮件客户程 序连接到服务器后,就会看到服务器的通知,进而打开自己的电子信箱来查收邮件。SMTP协议介绍简单邮件传送协议(SMTP)是Internet电

29、子邮件系统首要的应用层协议。它使用由TCP提 供的可靠的数据传输服务把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。 SMTP协议服务的默认端口是25。SMTP协议与人们用于面对面交互的礼仪之间有许多相似之处。首先,运行在发送端邮件服 务器主机上的SMTP客户,发起建立一个到运行在接收端邮件服务器主机上的SMTP服务器 端口号25之间的TCP连接。如果接收邮件服务器当前不在工作,SMTP客户就等待一段时 间后再尝试建立该连接。这个连接建立之后,SMTP客户和服务器先执行一些应用层握手操 作。就像人们在转手东西之前往往先自我介绍那样,SMTP客户和服务器也在传送信息之前 先自我介绍一下。

30、在这个SMTP握手阶段,SMTP客户向服务器分别指出发信人和收信人的 电子邮件地址。彼此自我介绍完毕之后,客户发出邮件消息。SMTP可以指望由TCP提供的 可靠数据传输服务把该消息无错地传送到服务器。如果客户还有其他邮件消息需发送到同一 个服务器,它就在同一个TCP连接上重复上述过程;否则,它就指示TCP关闭该连接。让我们看一个客户(C)和服务器(S)交互的例子。前面标以“C:”的文本行是名为Mike 的客户端发送的请求,Mike想给Rose发送一封T love you”的电子邮件情书,前面标以“S:” 的是服务器的回应。以下传输内容在TCP连接建立之后马上发生。S:220 C:HELOS:2

31、50 Hello Mike,pleased to meet youC:MAIL FROM:MikeS:250Mike. Sender OKC:RCPT TO:roseS:250rose.RecipientOKC:DATAS:354 Enter mail,end with . on a line by its selfC: I love you, RoseC: .S:250 Message accepted for deliveryC:QUITS:221 closing connection觉得难以置信么?这不是在写言情小说,而确确实实是客户端和邮件服务器通过SMTP 协议在网络上交互的内容,网

32、络协议就这么简单。客户总共发出了 5个命令,分别为:HELO、 MAIL FROM、RCPTTO、DATA和QUIT。这些命令又叫做原语,可理解为应用协议层上最原始 最小的命令颗粒。服务器给每个客户端的命令发回应答,其中每个响应都由返回码和一些英 语解释构成。这里需要指出的是,SMTP使用持久连接,也就是说,如果客户端有多个邮件 消息需发送到同一个邮件服务器,那么所有这些消息可以在同一个TCP连接中发送。对于其 中的每一个消息,客户端以一个新的“HELO”命令开始整个消息发送过程,但是QUIT命令 要等到所有消息都发送完之后才发出。POP3协议POP的全称是Post Office Protoc

33、ol,即邮局协议,用于电子邮件的接收,它使用TCP的110 端口。现在常用的是第三版,所以简称为POP3。POP3仍采用Client/Server工作模式,Client 被称为客户端,一般我们日常使用电脑都是作为客户端,而Server (服务器)则是POP3的 邮件服务器。举个形象的例子:Server (服务器)是许多小信箱的集合,就像我们所居住楼 房的信箱结构,而客户端就好比是一个人拿着钥匙去信箱开锁取信,一样的道理。邮件操作只针对本地,不针对邮件服务器。IMAP协议IMAP协议也是邮件接收协议,但是IMAP却比POP3复杂得多,因为IMAP提供的特性比POP3 多出不少。IMAP被设计成允

34、许用户像对待本地邮箱那样操纵远程邮箱。具体地说,IMAP使 得收信人能够在自己的邮件服务器主机中创建并维护多个存放邮件的文件夹。他们可以把邮 件存入文件夹,也可以将邮件从一个文件夹转移到另一个文件夹,还可以在这些远程邮件夹 中搜索匹配特定准则的邮件消息。图灵实验图灵试验由计算机、被测试的人和主持试验的人组成。计算机、被测试的人和测试主持人分 别在三个不同的房间内。测试过程是由主持人提出问题,由计算机和被测试人分别回答。被 测试人回答问题是尽可能地表明他是“真正的”人,计算机也尽可能逼真地模仿人的思维方 式和思维过程。如果试验主持人听取对问题的回答后,分不清哪个是人回答的,哪个是计算 机回答的,

35、则可以认为被测试计算机是有人的智能的。在软件系统运行时,一个真实的用户通过操作软件客户端来发起和服务器的会话请求,同时, 一个VU开始运行它的脚本,也发起了同样的请求。被测服务器在处理各个交谈”请求并与 之分别会话的时候,并不知道哪些请求是来自真实的用户,哪些是来自VU。VU是模拟者,用户是被模拟者,观察者其实就是性能测试中被测服务器。LoadRunner模拟揭秘VU是基于网络协议的,被测服务器是通过各种各样的网络协议与客户端打交道的VU要骗 过”被测服务器,当然就要遵守这些协议,按规矩、按步骤来动作,否则就会吃闭门羹”, 毫不留情地被服务器拒绝。实际上,如果我们留心的话,可以发现VU每个协议

36、相关的函数 都是紧紧围绕其网络协议的实现的。基于网络协议的脚本的一个好处是,我们可以使用相对 少的硬件资源,来生成大量的虚拟用户负载。相比之下,WinRunner和皿的脚本是基于 界面事件(GUI)的,它在一台主机上同时只能运行一个虚拟用户的脚本,因为一个虚拟用 户会占用整个主机的资源。推论一:VU不关心用户在界面上发生的事情。脚本录制录制设置1、在录制之前,我们需要设置录制选项,;HTML tM5Ml5Up 常规选项- 显示,勾选回放期间显示运行时查看器关联产生的背景和原理,其通用的解决模式是:“服务器返回给客户端一些动态变化的值, 客户端使用这些值去访问服务器的时候,不能把这些值写死(ha

37、rd-code)在脚本里面,而 应该存放在一个变量里面。”这就是关联的概念。5.5关联1、自动关联(1) 录制前关联录制前关联:在录制脚本时,点击录制选项-HTTP属性-关联,勾选Enable correlation during recording”,以启用自动关联。自动关联分两种,一种是系统自定义的关联规则进行关联,另外一种是使用者自订关联规则。 关联对应的脚本如下:*L = i; h1nr七凸r,一 i ptureyk i扫描脚本中的关联。web_reg_save_param(userid,LB=rows:id:,RB=,LAST);2、手动关联自动关联无法解决问题时,需要手动找出哪些变

38、量是需要关联的,然后用LoadRunner提供 的 web_reg_save_param 来实现关联。手动关联的执行过程大致如下:(1) 使用相同的业务流程与数据,录制两份脚本。一定要保证两次录制的步骤和输入都完全一样,理论上,如果两次客户端的请求完全一样, 服务器的返回结果就应该是一样的。根据结果大致推断两次服务器返回结果的不一致处极有 可能就是需要关联的变量。最常见的就是Java Web应用的jsessionid等数据。(2) 使用WinDiff工具协助找出需要关联的数据WinDiff是内嵌在VU中的一个文件比较工具,用于比较两个文件的内容。这里用它来比较两 个脚本的不同之处,从而找到需要

39、被关联的数据。在“Tools”菜单下选择“Compare with Vuser” 选项,WinDiff要比较的是两个脚本,那么当前脚本就是第一个脚本,而在上面的浏览对话 框里,我们选择的是第二个脚本路径。(3) 确定被关联数据的左、右边界。注意要确定关联数据的左、右边界,必须打开扩展日志,至少要勾选“服务器返回的数据” 一项。确定方法:1、录制脚本,将两个一样的脚本比较后,找到可能应用与关联的字段和值。2、将脚本用“树”打开,用HTTP视图查看所有Submit Data的响应正文(Response body), 将其中的内容全部拷贝到UE中(一定是全选拷贝),然后查找步骤1中对应的值,找到其

40、前后的边界。(通过前后边界能唯一确定此值,双引号号前需加转义字符,如下:左边界为 rows:id:右边界为,将关联的函数放到产生对应数据的提交(Submit Data)操作前,服务器段将返回的值放到对 应参数中。web_reg_save_param(userid,LB=rows:id:,RB=,LAST);再回放脚本,回放日志里记录的就是一个完整的客户端到服务器的交互内容,在回放日志里 查找此关联数据,注意Response body (响应正文)字样的数据段,这标明它后面的内容是 从Server返回的。运行时设置运行逻辑=止: -曰志思考时间 i【其他属性 .一.其他 如网络速度模权A浏览器:

41、匚浏览器模拽、:-Internet 协议 I 代理跚务署 M首宣页 :卜下载篇选器 s 内容检查日志迭项r仅在出错肘发法消息始终度送消息山)按以下详细级别记录消息标准日志,扩展曰志CO1委数替换)r高编跟踪(4)使用web_reg_save_param函数手动建立关联。列表中选择vMethcci=l-USrJJKeezrer-http : /lyu. 1. 17. 10 : aUOO/edp/ucerAction/lictjEnapshot-tll. inf,ModcITML,ITEMDATA,Nqjilc-IlI. 私 luuL END ITEM.#Nam 已=r 已 alnam 已七 Va

42、luel 用户名。END I TEN,NaTHFilPF-rr-nrlF 吁?( 1 i 】= /?!工号 , END I TEN,vN?nnF=iiPFrn?imFvJ V?i I hf= 登录者,ENDITEMJWajii&paggwc,rct Vali_ie=illill ENDITEM,WmEg、Wium-叶,ENDITEM,Name-valid Valuc-l ENDITEN,JJValuc= END ITEM,Nnmc:=c:miii/, Valuc= END ITEM,NaJlLCUlsialiizc. id.Value- i 所在机构】#. ENDITEM.NameIds, V

43、alu 己=#, END ITEM, WngHaEFFii nnTHr, “gli护二气 ENDITEM, LAST);e b_r e g_ c aTe_p ar a m ( uc er 1 j * L 上一 r 染: id、* :“RE、*, 3 LAST)WcL suLjil! L da La LLis L *.AActlon=http : 7/192. 1. 17. 103: BOOO/已如/us已TActlon/球已tLlst, ,vMpThr.r1=FriST,YJRecCcnt entTypeappl1 cat 1on/J s en, Kefezrerhttp : /ly:. 1. 17. l1.1 : BLnjj/eclp/LigerAction/list Snapchot-tlL:. infj Modc-HTML ITEMDATA, Namc:=fEc::r_L:Kn:口 uscrnamc Falul, ENDITEM, ANaJlLC11 Lcl_LIKE3 IcalliaJlic. ValucEND ITEM. ANHiur-ri 1 I rr _F

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号