(计算机应用技术专业论文)基于系统建模的web性能测试框架的研究与实现.pdf_第1页
(计算机应用技术专业论文)基于系统建模的web性能测试框架的研究与实现.pdf_第2页
(计算机应用技术专业论文)基于系统建模的web性能测试框架的研究与实现.pdf_第3页
(计算机应用技术专业论文)基于系统建模的web性能测试框架的研究与实现.pdf_第4页
(计算机应用技术专业论文)基于系统建模的web性能测试框架的研究与实现.pdf_第5页
已阅读5页,还剩85页未读 继续免费阅读

(计算机应用技术专业论文)基于系统建模的web性能测试框架的研究与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于系统建模的w e b 性能测试框架的研究和实现 基于系统建模的w e b 性能测试 框架的研究与实现 摘要 w e b 系统是一种特殊的c s 应用软件系统,随着因特网的飞速发 展,w e b 系统的应用越来越普及和深入,而保证系统能在预期工作负载下 正常工作的性能测试也越发显现其重要性来。 本文在研究现有多种商业的和开源的性能测试工具的基础上,总结 现有的主流w e b 系统性能测试的总体框架和实现思路,参考统计测试中 w e b 系统的马尔可夫链模型,提出了一种基于系统建模的w e b 性能测试 框架,并使用该框架的初步实现对一个典型的w e b 系统进行了性能测试。 本文主要的工作是:设计和实现反向工程模块来获得待测w 曲系统 的w e b 导航图,使用u m l 图形建模工具对系统模型进行系统参数的设 置,设计和实现代码生成器来生成不同性能测试工具所使用的测试用例 脚本和根据系统模型的性能特征分析性能数据。 本框架改进了w e b 系统性能测试中测试用例脚本的生成方法,实现 的反向工程模块具有独立的实用性,提出了对现有性能测试王具的新的 改进途径,并给出了采用系统模型对性能数据进行分析的实际思路,对 w e b 系统性能测试的发展具有一定的推动作用。 关键词:w e b 系统、性能测试、系统建模、反向工程 作者:郑杰 指导教师:杨季文 t h er e s e a r c ha n di m p l e m e n t a t i o no fw e b p e r f o r m a n c e t e s t i n gb a s e do ns y s t e mm o d e l i n g a b i s t r a c t w e bs y s t e mi sas p e c i a lk i n do fc sa p p l i c a t i o ns y s t e m a l o n gw i t ht h er a p i d d e v e l o p m e n to fi n t e m e t , w e bs y s t e mi sa p p l i e dm o r ew i d e l ya n dd e 印l y t o g u a r a n t e 宅t h ep e r f o r m a n c eo f t h ew e bs y s t e mu n d e rt e s t i n gi sb e c o m i n gv e r y i m p o r t a n t n o w , a f t e rs t u d y i n gm a n yc o m m e r c i a la n do p e ns o u r c ew e bp e r f o r m a n c e t e s t i n gt o o l s ,s u m m a r i z i n gt h ep o p u l a rf r a m e w o r ka n di m p l e m e n t i o nm e t h o d s o fw e bp e r f o r m a n c et e s t i n g ,r e f e r e n c i n gt h em a r k o vc h a i nm o d e lo fw e b s y s t e mi n s t a t i s t i c a lt e s t i n g t h i sp a p e rp r o p o s e sap e r f o r m a n c et e s t i n g f r a m e w o r ko fw e b s y s t e mb a s e do ns y s t e mm o d e l i n ga n du s e s t h ep r o t o t y p e i m p l e m e n t a t i o no ft h ef r a m e w o r kt om a k eap e r f o r m a n c et e s to nat y p i c a l w e bs y s t e m t h ec o n t e n to ft h ew o r kd e s c r i b e di nt h i sp a p e ri sa sf o l l o w s :d e s i g na n d i m p l e m e n tt h er i 孙,e f s ee n g i n e e r i n gm o d u l et og e tt h ew e bn a v i g a t i o nm a p o f t h ew e bs y s t e mu n d e rt e s t i n g u s eau i v l lg r a p h i c a lm o d e l i n gt o o lt os e t s y s t e mp a r a m e t e r so ft h es y s t e mm o d e l d e s i g na n di m p l e m e n tt h ec o d e g e n e r a t o rt og e n e r a t e t e s t c a s es c r i p t su s e db yt a r g e tp e r f o r m a n c et e s t i n g t o o l s ,a n da n a l y s et h ep e r f o r m a n c ed a ma c c o r d i n g t ot h ep e r f o r m a n c e c h a r a c t e r i s t i co f t h es y s t e mm o d e l t h er e s u l t so f t h ew o r kd e s c r i b e di nt h i sp a p e ri sa sf o l l o w s :i m p r o v et h e g e n e r a t i n gm e t h o do ft h et e s t c a s es c r i p tu s e di nw e bp e r f o r m a n c et e s t s , d e s i g na n di m p l e m e n tt h er e v e r s ee n g i n e e r i n gm o d u l ew i t hi n d e p e n d e n t a p p l i c a b i l i t y , p r o v i d ean e ws o l u t i o nf o ri m p r o v i n gt h ec u r r e n tp e r f o r m a n c e t e s t i n gt o o la n dp r e s e n tp r a c t i c a lm i n d s e t f o ra n a l y z i n gd a t ap e r f o r m a n c ef t o m t h es y s t e mm o d e lp o i n to f v i e w k e y w o r d s :w e bs y s t e m , p e r f o r m a n c et e s t i n g ,s y s t e mm o d e l i n g w r i t t e nb yz h e n gj i e s u p e r v i s e db yy a n gj i w 髓 苏州大学学位论文独创性声明及使用授权声明 学位论文独创性声明 本人郑重声明:所提交的学位论文是本人在导师的指导下,独立进 行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含 其他个人或集体已经发表或撰写过的研究成果,也不含为获得苏州大学 或其它教育机构的学位证书而使用过的材料。对本文的研究做出重要贡 献的个人和集体,均已在文中以明确方式标明。本人承担本声明的法律 责任。 研究生签名:遏态 日 学位论文使用授权声明 苏州大学、中国科学技术信息研究所、国家图书馆、清华大学论文 合作部、中国社科院文献信息情报中心有权保留本人所送交学位论文的 复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本 人电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文 外,允许论文被查阅和借阅,可以公布( 包括千u 登) 论文的全部或部分 内容。论文的公布( 包括刊登) 授权苏州大学学位办办理。 研究生签名:蛰盎1日期: 导师签名”粉日期: 2 q 丑:主:2 基于系统建模的w e b 性能澍试框架的研究与实现第一章引言 1 1 课题背景 第一章引言 w e b 系统的广泛普及使因特网从科学家专用网络转变为无处不在的 社会信息网络。由于w e b 系统的高度开放性特点,可能出现成千上万的 用户在同一时刻并发访问同一个w e b 系统的情况。这种情况下的工作负 载极有可能对该w e b 系统的性能造成巨大影响,导致不可忍受的响应延 迟或系统崩溃,最终使用户失望而归。因此在发布一个w e b 系统前,必 须对其进行性能测试和优化,以确保系统在正式运行后能够达到预期的 的性能目标。 下面这个真实案例充分说明了一个w e b 系统如果没有经过精确的性 能测试会导致怎样的后果:2 0 0 1 年9 月1 1 日,美国世贸中心遭遇恐怖袭 击后,想知道最新情况的用户大量涌向微软公司网站的新闻栏目。该网 站的工作负载比平时高出3 倍。在这种工作负载下,网站的某些页面的 响应时间慢到让人无法忍受,同时网站服务器也出现内存耗尽的情况, 不得不每隔几个小时就重启服务器。事后才发现该w e b 系统本身就存在 内存泄漏的情况。在这种工作负载下,这个问题立刻显现出来,结果导 致整个系统不能正常工作【l l 。 如何才能对待测w e b 系统进行精确的性能测试? 这个问题没有固定 的答案。对任何类型的测试而言,如何生成优秀的测试用例是其最主要 和最核心的问题。性能测试的测试用例的特征是应该能够较好地模拟待 测系统正式运行时候的工作负载。如何生成这样的测试用例进行性能测 试的方法一直在改进。现在进行w e b 性能测试的主流方法是虚拟用户方 法,现有很多优秀的w e b 系统性能测试工具,如m e r c u r yi n t e r a c t i v e 公司 的l o a d r u n n e r 、m i c r o s o f t 公司的w a s 、开源的o p e n s t a 、j m e t e r 等都 采用虚拟用户方法为实现基础。该方法的主要特点是录制典型的真实用 户的访问行为生成测试用例脚本,然后生成多个虚拟用户进程运行脚本 第一章引言 基于系统建模的w e b 性能测试框架的研究与实现 对w e b 服务器进行加压测试。该方法在大量的实践中已经被证明是相当 有效的。但其仍然存在一些不足,主要表现如下【2 】1 3 】: ( 1 ) 难以录制待测系统全部的重要使用场景。进行录制时,测试人员 需要根据专有的技能和特有的领域知识,首先判断哪些用户访问行为是 重要的体现系统性能特征的使用场景,然后挑选最重要的场景去录制生 成测试用例脚本。因此,如果没有选择好体现系统性能特征的使用场景, 就不能较好地模拟预期的工作负载,从而得不到准确的钡4 试结果。例如, 假设一个网站的新闻栏目的首页有5 个不同类型的新闻链接和5 个不同 类型的广告链接,并且这l o 个链接所指向的页面中又有1 0 个不同类型 的新闻或广告链接。用户对该网站的访问方式就至少有1 0 0 种之多 ( 1 0 1 0 ) ,对这些访问行为进行全部录制基本上是不现实的。 ( 2 ) 录制生成的测试用例脚本的可读性较差,难以修改。录制生成的 工作机制是:根据一定规则,解析客户端和w e b 服务器之间的通信包, 分析其中的h t r p 协议内容后生成相应脚本。由于反向解析通信包的复 杂性,生成的脚本可读性较差,难以修改。而且有时解析得到的脚本并 非一定能够正常使用,而需要做相应的修改才能用于测试。例如,用户 登录待测w e b 服务器进行业务操作,w e b 服务器随机返回给用户一个随 机s e s s i o n i d 为0 0 1 ,然后用户使用这个s e s s i o n i d 向服务器发出其它操作 的请求。录制这种访问行为而生成的脚本会把这个随机返回的s e s s i o n i d 硬编码,该脚本在运行的时候会仍然使用值为0 0 1 的s e s s i o n i d 进行操作, 而不使用运行时随机取得的新s e s s i o n i d ,结果导致待测的w e b 服务器会 把其当作非法用户而拒绝服务。由于代码的可读性问题,直接手工修改 测试用例脚本的难度较大。为了解决这个问题,大多数工具引入了脚本 自动关联分析等技术,但是效果并不是很理想。此外,当w e b 系统因为 性能问题调整了部分页面结构后,由于测试用例代码的难以修改,往往 需要重新录制生成大部分的测试用例脚本,不能很好地重用以前的工作 成果。 因此,研究如何改进虚拟用户方法中生成测试用例的这两方面的不 足,是很有意义的工作。本文引入系统建模的方法来生成性能测试用例 2 基于系统建模的w e b 性能测试框架的研究与实现 第一章引言 脚本,该方法一方面可以自动生成能够模拟待测系统绝大部分重要使用 场景的测试用例脚本;另一方面可以图形化地对系统模型进行修改,重 新自动产生相关测试用例脚本,重用以前的工作成果。 系统建模生成测试用例脚本方法的工作机制是:建立待测w e b 系统 的系统模型,设置系统页面之间的转移概率、浏览时间等系统参数,使 用代码生成工具解析相应的系统模型,自动生成能够模拟真实用户访问 行为的测试用例脚本。 1 2 课题内容 本文在研究现有多种商业的和开源的性能测试工具的基础上,总结 现有的主流w e b 系统性能测试的总体框架和实现思路,参考统计测试中 w e b 系统的马尔可夫链模型,提出了一种基于系统建模的w e b 系统性能 测试框架。并使用该框架的初步实现对一个典型的w e b 系统进行了性能 测试,得到了预期结果。 整体框架的实现原则基本遵守u n i x 的开发哲学:不开发一个庞大的 软件系统,而是针对不同的功能设计实现不同的工具模块,然后采用x m l 文档作为数据交换的中介,把各个工具整合起来进行性能测试,从而使 不同的商业的和开源的性能测试工具结合起来,更好地完成性能测试。 主要的工作可以简述为如下几个方面: ( 1 ) 设计和实现反向工程模块:现在大多数的w e b 系统性能测试都是 黑盒测试,不能直接得到待测系统的系统模型静态结构,即w e b 导航图。 因此设计和实现反向工程模块,对待测w e b 系统进行逻辑分解,建立系 统的w e b 导航图,并使用已经被广泛采用的u m l 活动图表示该导航图。 w e b 导航图使用活动图的x m i 文件标准格式保存,以便导入到任何支持 x m i 标准的u m l 图形建模工具中使用。 ( 2 ) 图形化设置系统动态参数:使用u m l 图形建模工具对系统模型 的活动图表示进行系统参数的设置。由于待测系统的系统模型的形式语 义使用马尔可夫链模型表示,因此这一步工作实际是设置相应的马尔可 夫链模型的语义信息。 第一章引言 基于系统建模的w e b 性能铡试框架的研究与实现 ( 3 ) 设计和实现测试用例脚本代码生成器:代码生成器读取设置好系 统参数的待测w e b 系统的模型信息文件,并根据不同目标代码选项生成 不同的商业的或开源的性能测试工具所使用的测试用例脚本。 ( 4 ) 根据系统模型的性能特征分析性能数据:由于生成的测试用例脚 本记录了待测w e b 系统的浏览静态页面、浏览动态页面和表单提交三种 基本事务的平均响应时间,因此可根据这些性能特征初步分析性能数据, 判断性能瓶颈。 1 3 课题意义 , 随着w e b 系统的广泛普及和应用的日益深入,确保系统能够在预期 工作负载下正常工作的w e b 系统性能测试已经成为当前软件领域研究的 热点。而在w e b 系统性能测试中,需要解决的核心问题是如何生成测试 用例脚本来较好地模拟预期工作负载。 本课题主要关注该问题的解决方法,并做了一些有益的探索。其意 义可以简述如下: ( 1 ) 改进了w e b 性f l g 澳j 试的测试用例脚本生成方法:针对现在流行的 虚拟用户方法中录制生成脚本法的不足,提出系统建模生成测试用例脚 本方法。该方法可以根据建立好的系统模型自动生成绝大部分重要的测 试用例脚本,并在系统调整后,可以较好地重用以前的工作成果。 ( 2 ) 设计和实现的反向工程模块具有独立的实用性:为了对待测w e b 系统进行系统建模,设计和实现了对系统进行反向工程的工具,该工具 使用流行的u m l 的活动图表示系统模型,并采用活动图的x m i 标准文 件格式保存模型信息,确保了系统模型信息可以很好地传递给支持相应 标准的第三方工具处理。 ( 3 ) 框架的设计和实现给出了改进现有性能测试工具的新方法:为了 在主流的性能测试工具中,无缝地集成系统建模生成测试用例脚本方法, 设计和实现了一套工具箱。该工具箱可以使测试人员使用自身熟悉的测 试工具,应用系统建模方法生成测试用例脚本,从而降低了学习和使用 该方法的难度和成本。 基于系统建模的w e b 性能测试框架的研究与实现 第一章引言 ( 4 ) 给出了采用系统模型的角度分析性能数据的实际思路:由于性能 测试用例脚本是根据系统模型生成的,因此可以直观记录待测系统的反 映系统性能特征的性能数据。测试人员可以考察这些指定的系统特征, 给出预期性能指标数值,分析相应的测试结果数据,判断和定位系统性 能瓶颈。 1 4 章节安排 本文随后的章节按如下顺序组织: 第二章概述现有的w e b 系统性能测试的理论和技术的现状。 第三章系统地从理论和技术上阐述了本文提出的w e b 系统性能测试 框架的总体设计,其中包括反向工程、图形化系统参数设置、测试用例 脚本生成等模块。 第四章描述如何使用具体的编程工具实现该性能测试框架,其中包 :括反向工程模块的实现、图形化建模工具的选择和测试用例代码生成工 具的实现。 第五章简单介绍了使用本框架工具箱对一个典型的w e b 系统进行性 能测试的过程。 。 第六章对本课题进行总结,并对下一步工作进行了展望。 第二章w e b 系统性能测试概述 基于系统建模的w e b 性能测试框架的研究与实现 第二章w e b 系统性能测试概述 本章首先概述软件性能测试相关概念和技术,然后详细描述作为软 件性能测试的一个重要分支的w e b 系统性能测试的现状。主要阐述了 w e b 性能测试的难点和相应的解决方法,并介绍了主流的测试工具 l o a d r m m e r 和开源的测试工具o p e n s t a 。 2 1 软件性能测试 2 1 1 软件性能 软件性能是指软件系统对于其及时性目标的符合程度,是软件系统 最重要的质量属性之一。性能的定义还包括其它一些特征,如:资源使 用效率,本文主要考虑及时性问题 4 1 。性能一般用响应时间和吞吐量指标 进行衡量。响应时间是软件系统对相应请求做出响应所需的时间,而吞 吐量是软件系统在单位时间交换的信息量。下面给出这两种指标的具体 解释【5 】: 响应时间 响应时间作为用户视角的软件性能指标的主要体现,一般可以分为 “显示时间”和“系统响应时问”两个部分。其中“显示时问”是指响 应数据在客户端得到显示所消耗的时间,而“系统响应时间”是指客户 端发出请求到最后接收到最后一个字节所消耗的时间。在一般的性能测 试中,可以忽略“显示时间”,因为这个时间取决于客户端的机器性能, 并不能说明软件整体性能。 吞吐量 可以具体的定义为“单位时间内系统处理的客户请求的数量”,它直 基于系统建模的w e b 性能测试框架的研究与实现 第二章w e b 系统性能测试概述 接体现了软件系统的信息处理的能力。一般来说,常用请求数j 眇或字节 数,秒来衡量。吞吐量指标可用于协助判断设计及衡量性能测试场景是否 达到预期的设计目标,并可用于协助分析性能瓶颈。 不同类型的软件系统对性能关注点是不同的。对用户交互式的软件 系统,响应时间是其性能的主要目标,即在用户发出一个请求后多少时 间有响应结果。而对于非用户交互式软件系统,关注的主要性能指标是 吞吐量,如电话交换机软件系统,其性能的关注点是其每小时能处理多 少呼叫。此外,即使同样是用户交互式类型的软件系统,它们对响应时 间的要求也可能是不同的。例如:实时性软件系统对响应时间的要求非 常严格,有可能在一秒之内;而大部分的数据分析软件的响应时间目标 则可能是几分钟。 性能是每个软件系统的基本质量属性。但是还是有许多软件系绕,一 由于在最初实现时没有很好地考虑到性能目标,而导致系统最终无法使 用。 为了避免由于性能原因导致软件失败,必须在软件系统部署给用户 使用之前就对其进行仔细和精确的性能测试。 2 1 2 软件性能测试 软件性能测试是指通过模拟生产运行的工作负载,测试待测的软件 系统的性能是否符合生产环境下使用的性能目标。般来说主要包括如 下测试类型例: ( 1 ) 负载测试:主要用于描述常规的性能测试,通过模拟生产运行的 业务压力和使用场景组合来测试系统的性能是否满足生产要求。通俗的 说,这种测试方法就是要在特定的运行条件下验证系统的能力状况。 ( 2 ) 压力测试:对系统不断施加压力的测试,是通过确定一个系统的 瓶颈或者不能接收用户请求的性能点,来获得系统能提供的最大的服务 级别的测试。通俗的讲,压力测试是为了发现在什么条件下应用程序的 性能会变得不可接受。 第二章w e b 系统性能测试概述基于系统建模的w e b 性能测试框架的研究与实现 ( 3 ) 疲劳强度测试:通常采用系统稳定运行情况下能够支持的最大并 发用户数,持续模拟执行一段时间业务处理。它通过综合分析性能指标 来确定系统处理最大工作量强度性能的过程。 一般来说,可以使用不同的方式进行上述类型的性能测试鸭 ( 1 ) 手工方式:通过大规模的真实用户同时使用待测软件系统来测试 系统正式运行时的性能。这种方式能够很好地模拟待测系统业务运行的 情况,因此测试结果相当准确。但是由于其耗费巨大,而且测试结果难 以重现,因此一般不被采用。 ( 2 ) 自动方式:使用性能测试软件模拟大规模的真实用户同时使用待 测系统的场景,检测待测系统的性能。这种方式不仅非常经济,而且能 够重现性能问题,以检验修改后的软件是否解决了相应的性能瓶颈,因 此现在所有的性能测试几乎都采用这种方式进行。它的缺点主要是难以 准确地模拟待测系统真实的使用情况,因此测试结果未必准确。 ( 3 ) 混合方式:使用性能测试软件对易于模拟的软件业务操作行为进 行模拟,而采用一定规模的真实用户处理复杂的难以模拟的业务操作行 为,从而达到较为准确的测试结果。这种方式虽然结合了手工方式和自 动方式的各自优点,但是由于进行相应测试的复杂性提高,因此一般不 被采用。 此外,根据测试用例设计方式的不同j 性能测试可以分为自盒方式 和黑盒方式两种: ( 1 ) 白盒方式:在软件系统开发过程中,使用其本身的设计模型和代 码设计测试用例,判断其是否能够达到预期的性能目标。例如:在读取 数据库代码前后加上计时代码,判断其读取时间。这种测试用例设计方 式因为要求严格,因此难度较高,一般作为软件开发过程的一部分进行。 ( 2 ) 黑盒方式:通过模拟软件系统的使用方式来设计测试用例,主要 关注待测系统的功能是否达到指定的性能目标。因为其难度相对较低, 而且适应面广,因此通常所说的性能测试一般都采用这种方式 基于系统建模的w e b 性能测试框架的研究与实现 第二章w e b 系统性能澍试概述 2 2w e b 系统性能测试 一般软件的性能测试的方法当然也适用于w e b 系统性能测试,但是 由于w e b 系统自身的特点,可以采用更有效和针对性更强的方法对其进 行性能测试。此外,w e b 系统性能测试一般都使用性能测试自动化工具, 基本上不采用手工方式。 2 2 1 w e b 系统 w e b 系统是一种基于唧协议进行信息交换的特殊的客户机,服务 器应用软件系统【6 】【刀。w e b 系统是因特网的主要构成部分,也是因特网从 科学家网络转变为无所不在的信息网络的主要动力。用户可以通过使用 w e b 浏览器连接远程的w e b 服务器,使用w e b 系统进行信息浏览和业务 处理。 图2 1 一个w e b 系统的组成 第二章w v b 系统性能测试概述基于系统建模的w e b 性能测试框架的研究与实现 图2 1 给出了一个典型的w e b 系统的组成。w e b 系统主要包括w e b 服务器、应用服务器( 中间件) 、数据库服务器、使用浏览器的客户端以 及网络环境。用户通过浏览器访问w e b 服务器,并且将网络请求发送给 w e b 服务器;w e b 服务器接收到网络请求后将其转发给应用服务器,应 用服务器与数据库服务器完成请求处理后将结果返回w 曲服务器;最后 w e b 服务器通过网络环境将w e b 应用系统的响应返回浏览器,完成一次 h t r p 协议的通信。与传统的应用软件相比,w e b 系统有其独特的地方嘲: ( 1 ) 网络性:w e b 系统运行在网络上,服务不同的客户群体的需求。 它可以部署在局域网实现组织范围内的通信,也可以部署在因特网,实 现全球通信。 ( 2 ) 并发性:在同一时间可能有大量的用户同时使用w e b 系统。很多 情况下,最终用户的使用模式存在很大的差异。 ( 3 ) 轻客户端:w e b 系统的客户端都是基本符合标准的w e b 浏览器, 而不是基于不同w e b 系统的特殊客户端软件。理论上,用户可以使用任 一符合标准的浏览器使用任何w e b 系统。 作为一个复杂的具有高度开放性架构的软件系统,w e b 系统的用户 可以是任何可以访问该系统的浏览器客户端,其并发访问数有可能非常 巨大,因此要求其拥有很强的并发事务处理能力。由于现在w e b 系统的 广泛使用,其性能问题导致整个系统失败的案例已经屡见不鲜了。如果 浏览一个w e b 系统的内容需要好几分钟,而浏览竞争对手的w e b 系统相 似内容只需要几秒钟,不言而喻,用户会选择哪个系统进行业务处理。 这些事件每天都在因特网上发生,而这些问题大都与w e b 系统性能有关。 因此,在正式部署w e b 系统前,通过性能测试来尽早发现性能问题 是非常重要的。 2 2 2w e b 系统的性能指标 w e b 系统的运行拥有其自身的特点,因此其具体的性能指标也与其 工作方式有关,是一般软件性能指标在其工作方式下的具体化。 基于系统建模的w e b 性能测试框架的研究与实现第二章w e b 系统性能测试概述 w e b 系统使用h t t p 协议并采用请求应答方式进行工作。其基本通 信方式是:客户端首先发出h t f p 请求,然后w e b 服务器发出h t r p 响 应。w e b 系统的常用性能指标就是基于请求,应答这一基本概念的【l o 】: ( 1 ) 应答延迟( r e s p o n s ed e l a y ) :一个请求从建立网络连接到应答结 束拆除连接之间的时间。在不同的时刻对不同的请求一般不相同。 ( 2 ) 平均应答延迟( m e a nr e s p o n s ed e l a y ) :大量请求( 通常指一个测 试过程中的所有请求) 的应答延迟的平均值。侧重于评价w 曲系统的平 均性能。 ( 3 ) 吞吐率( r e s p o n s ep e rs e c o n d ) :非空闲状态下,系统在单位时间 内响应的请求个数。所谓非空闲状态,就是指在计算吞吐率时只考虑系 统负载不为零的时间段。 “) 系统容量( s y s t e mc a p a c i t y ) :非空闲状态下,系统单位时间内能 够响应的最大请求数,即为上述吞吐率的最大值。这是评价w 曲系统性 能的一个重要指标。对特定的w e b 系统而言,其系统容量一般是一食固 定值,由服务器的软、硬件配置和运转情况所决定。 ( 5 ) 系统带宽( s y s t e mb a n d w i d t h ) :系统在单位时间内传输的字节数, 通常也称为吞吐量。它侧重于描述系统中与传输有关的组成部分的性能。 ( 6 ) 最大稳定连接数( m a x i m u ms t a b l ec o n n e c t i o n ) :在性能比较稳定、 没有明显下降的前提下,系统能够支持的最大并发连接数。 影响这些性能指标的因素很多,从w e b 系统的性能指标看,用户数、 用户类型、用户行为、浏览器提交的速度、公共网络延迟等都是影响系 统性能的重要因素。因此w e b 系统的性能不仅仅是由w e b 系统本身所决 定的,其性能与用户使用该系统的方式也有很大的关系。不过w e b 服务 器作为处理用户请求的主要子系统,是w e b 系统性能的主要影响因素, 其系统容量的大小一般决定了整个系统的性能。因此w e b 系统性能测试 主要是模拟预期的系统使用方式对待测的w e b 服务器进行测试,来判断 性能问题。 第二章w e b 系统性能测试概述基于系统建模的w e b 性能测试框架的研究与实现 2 2 3w e b 系统性能测试 实施性能测试可以发现如下w e b 系统的性能问题:服务器端资源缺 乏、不合适的网络带宽、不适当的数据库容量、不完善的操作系统能力 和设计糟糕的业务系统等。由于w e b 系统用户的使用环境不尽相同,网 络连接、操作系统,浏览器、用户角色等都有可能不同,因此需要模拟 现实生活中不同的使用方式才能较为准确地测试w e b 系统性甜1 1 】【1 2 1 。 模拟现实世界的工作负载情形对待测的w e b 系统进行性能测试将帮 助回答以下问题: ( 1 ) 服务器的响应时间是否降到了不可接受的程度。 ( 2 ) 哪些子系统应对性能下降负责。 ( 3 ) 当工作负载上升时,w e b 系统的业务处理是否正常。 ( 4 ) 性能下降是否影响了系统的安全性。 ( 5 ) 当工作负载大于服务器容量的最大值时,会发生什么情况。 为了回答上述问题,需要进行两种不同类型的性能测试:一类是负 载测试:使用常规工作负载条件下的性能测量。常规工作负载是指所有 的网络请求全部是正确的、安全的,目的是测试w e b 系统在正常工作环 境下的性能。另一类是压力测试:将工作负载增加到强度极限,来重点 测试w e b 系统对错误的、不安全的网络请求的处理能力以及w e b 系统在 错误环境下的自恢复能力。 本文所讨论的性能测试一般是指w e b 系统的负载测试。因为性能测 试中的压力测试主要是针对一般底层w e b 子系统的测试,比如a p a c h e 服务器、数据库服务器等,而不是关注在其上运行的业务系统的性能。 在同一台w e b 服务器上,功能相同的不同的软件业务系统会使整个w e b 系统的性能出现巨大的差异,而绝大多数时候进行的性能测试,就是想 知道待测业务系统的性能是否达到了开发的预期目标,以便调整业务系 统的架构和代码,进行性能调优。 概括而言,w e b 系统性能测试的目标就是模拟不同类型用户,通过 网络向系统发送预期数量的h t r p 请求,测试w e b 系统在真实负载情况 基于系统建模的w e b 性能测试框架的研究与实现第二章w e b 系统性能测试概述 下的效率状况和系统可以承受的负载情况,然后分析w e b 系统的性能指 标,找到影响系统性能的瓶颈后对w e b 系统进行优化和调整。 2 3w e b 系统性能测试的难点 w e b 系统的性能与w e b 服务器的软硬件平台、网络带宽和用户使用 系统的方式等诸多因素有关。因此,w e b 的性能测试存在以下难点【1 1 】: 工作负载的难以确定 工作负载是指一个系统处理的过程量和信息量。在w e b 系统性能测 试中,确定工作负载是一个非常关键的步骤,它决定了测试结果的准确 性和可信性。传统客户端朋恨务器应用基于局域网广域网环境,用户群是 相对熟悉、可预知的,他们的访问时间和访问方式也是相对可预知的。1 而w e b 系统一般运行在开放的因特网环境中,用户群是高度不可预知、 分布广泛、类型各异的,他们的访阎时间和访问方式也是不可预知的。 因此,确定w e b 系统的工作负载是一项具有挑战性的工作。 测试场景的难以设计 简单地说,测试场景就是指性能测试中的测试用例,它的可执行形 式是测试用例脚本。测试场景的设计不当会造成测试结果的偏差。例如, 在测试电子商务网站时,如果没有很好地设计浏览商品、向购物车添加 产品、结账等测试场景,并且没有准确地分配各种场景在生产环境下的 比例,就可能错误地模拟预期工作负载,从而导致不正确的测试结果。 测试环境和真实环境的差异 w e b 系统的运行环境一般是基于开放的因特网,而性能测试通常是 基于局域网环境,因特网运行的特点往往被忽略了,例如公共网络骨干 上的通信延迟。在这种情况下,测试的结果会与真实用户的实际体验不 同。因此测试时需要使测试环境模拟真实使用环境。例如考虑测试环境 第二章w e b 系统性能测试概述基于系统建模的w e b 性能测试框架的研究与实现 中是否需要模拟不同的因特网网络连接、不同类型的浏览器以及不同的 客户端i p 地址等。 2 4w e b 系统性能测试方法 为了很好地解决上述w e b 系统性能测试的难点,目前已经出现了多 种w e b 性能测试方法。具有代表性的主要方法有:虚拟用户方法、w u s 方法和s p e 方法【4 】【1 1 1 。 2 4 1 虚拟用户方法 通过模拟真实用户的行为来对待测系统施加预期工作负载,以测量 待测系统的性能,如事务的响应时间、服务器的吞吐量等。它以真实用 户平时生产环境下的“事务处理”( 用户为完成一个商业业务而执行的一 系列操作) 作为负载的基本组成单位,用“虚拟用户”( 模拟用户行为的 测试脚本) 来模拟真实用户。工作负载的信息( 例如并发虚拟用户数、 商务处理的执行频率等) 通过人工收集和分析系统的特征来获得。 支持该方法的性能测试工具可用较少的硬件资源模拟出成百上千个 虚拟用户同时访问待测系统,并可模拟来自不同地址、不同浏览器类 型以及不同网络连接方式的请求,同时可实时监控系统性能指标,帮助 测试人员分析测试结果。该方法易于实现和便于操作,已经为绝大多数 主流的w e b 系统性能测试工具所采用,在实践中被证明是相当有效的。 这种方法最大的不足在于需要测试人员有相当高的专业技能,需要 根据预期工作负载设计准确的测试场景,以较好地模拟工作负载进行测 试。 2 4 - 2 w u s 方法 基于“网站使用签名( w e b s i t eu s a g es i g n a t u r e ,w u s ) ”的概念来设 计测试场景,强调建立真实的负载。w u s 的提出是为了衡量测试负载和 真实负载之间的接近程度,它是一系列能全面刻画负载的参数和测量指 基于系统建模的w e b 性能测试框架的研究与实现第二章w e b 系统性能测试概述 标的集合,包括每小时浏览的页面、平均访闯持续时间、每次访闯平均 浏览的页面以及页面请求分布等。这些参数值可以从日志文件中得到。 参数同时也包括一些影响负载的客户端变量,如用户对网站的熟悉程度、 对延迟的忍耐程度和客户端连接速度等。经常被访问的路径作为负载的 组成单位。w - u s 方法需要w e b 系统的运行日志,也就是说w e b 系统正 常运作一段时间后才能进行测试。虽然它可以更好地模拟正常运行的工 作负载,但它违背了在系统正常运行之前就需要充分测试的原则,因此 基本上没有主流的实用性能工具采用这种方法。不过它强调模拟工作负 载的重要性是现在所有性能测试方法都认同的。此外,采用类似的w e b 系统的日志信息来模拟待测的w e b 系统工作负载方法,理论上也是可行 的,只不过这个条件在现实测试环境中是非常苛刻的,基本上难以实现。 2 4 3 s p e 方法 s p e ( s o r w a r ep e r f o r m a n c ee n g i n e e r i n g ,软件性能工程) 方法是_ 三种 控制性能的综合方法,是由美国学者c o n n i eu s m i t h 等人提出的面向软 件开发的一种性能测试方法1 4 。它是一种系统的、定量的方法,用于构建 能够符合预期性能目标的软件系统。它基于一般软件基础,也可以应用 于w e b 系统的性能评估和测试。它是关于性能的一种工程方法,避免了 性能驱动的开发和“以后修正”方法的两种极端。s p e 方法通过模型来预测 和评估软件功能、硬件规模、质量结果和资源需求之间的平衡点。它的 核心内容是建模,以系统模型为基础,通过建立抽象而准确的软件处理 过程模型,判定目标软件是否能够满足性能目标。随着软件开发过程的 推进,对模型进行持续的细化,使其更加精确地反映正在开发的软件的 系统特征,并重新进行性能测试和评估。s p e 方法可以说是白盒方式的 w e b 系统性能测试论的代表,它把性能测试纳入了工程的范畴,侧重于 在软件开发的时候就进行相应的系统性能检测和评估,避免在软件系统 开发完成后,由于性能问题重新设计和开发。 第二章w e b 系统性能测试概述基于系统建模的w e b 性能测试框架的研究与实现 2 5w e b 系统性能测试方法的实现 如前所述,w u s 方法由于在正常的情况下难以满足测试条件,因此 实现的实践意义不是很大。本文研究的w e b 系统性能测试框架主要是在 虚拟用户法的基础上结合s p e 方法有关建模的思想进行相应的工作。所 以下面主要介绍虚拟用户法的工具实现和s p e 方法在系统建模上工作。 2 5 1 虚拟用户方法的实现 由于对w e b 系统进行性能测试是保证w e b 系统未来正常运行的非常 关键的手段之一,因此已经出现了很多优秀的w e b 系统性能测试工具, 比如m e r c u r yi n t e r a c t i v e 公司的l o a d r m m e r 、m i c r o s o f t 公司的w a s 、开 源的o p e n s t a 、j m e t e r 等。这些工具的主要架构大致相似,都采用虚拟 用户方法为实现的理论基础【1 3 】【1 4 1 1 5 】【嘲。图2 2 给出了该方法实现的主要 架构。 该方法实现的组成部分如下: 虚拟用户生成器 通过虚拟用户生成器录制真实用户的业务操作行为生成测试用例脚 本,录制的技术主要是通过p r o x y 的方式实现,如图2 3 所示。其实质是 通过截获客户端和w e b 服务器之间的通讯包,分析其中的h t l v 协议, 反向解析生成具有相同功能的目标脚本,然后再把通信包转发给目标 w r e b 服务器。因为通信包解析的复杂性,有时解析得到的脚本并不一定 能够正常使用,需要做一定的修改后才能用于测试。 具体而言,客户端和服务器之间的通讯,有一部分数据是动态的, 每次通讯都不一样。虚拟用户生成器在录制的时候无法区分静态信息和 动态信息,所有的信息都以硬编码的方式记录下来。但是在回放的时候, 如果有些信息不改变,脚本是不能执行成功的。 基于系统建模的w e b 性能测试框架的研究与实现 第二章w e b 系统性能测试概述 图2 2 虚拟用户方法的整体架构 例如,用户s u d a 登录待测w e b 服务器进行业务操作,由虚拟用户生 成器录制操作的全部通讯包。首先w e b 服务器返回给用户一个s e s s i o n i d 为0 0 1 ,然后用户使用这个s e s s i o n i d 向服务器发出其它操作的请求,当 服务器判断该s e s s i o n i d 合法后会向用户返回相应的结果数据。由于w e b 服务器给用户分配的s e s s i o n i d 是动态的,也就是说,用户每次登录时这 个s e s s i o n i d 是发生变化的。执行测试用例脚本的时候,在用户登录后, 其它操作仍然使用硬编码的数值为0 0 1 的s e s s i o n i d 向w e b 服务器发出请 求,w e b 服务器会认为其非法并应答一个出错信息,这样会导致测试用 例脚本不能成功运行。由于录制生成的脚本可读性不好,对其进行修改 的难度相当高。为了解决这个问题,大多数工具引入了脚本自动关联分 第二章w e b 系统性能测试概述基于系统建模的w e b 性能测试框架的研究与实现 析等技术,但是效果并不是很理想,常常需要耗费大量人力进行手工修 改。 此外,为了减少录制的工作量,录制生成的测试用例脚本可以进行 参数化操作。这一操作使同一个脚本能利用多套不同的业务数据测试待 测系统,从而更加准确地测试系统的负载能力。以一个订单输入过程为 例,参数化操作可将记录中的固定数据,如订单号和客户名称,由变量 来代替。在这些变量内随意输入可能的订单号和客户名,来匹配多个实 际的用户操作行为。 使用浏览嚣的真实用户虚拟用户生成器w e b 服务器 田2 3 虚拟用户生成器生成测试用例脚本的机制 控制器 。 建立起测试用例脚本后,通过控制器设定测试的负载模拟方案( 包 括业务流程如何组合和虚拟用户数量等) ,并通过控制负载生成器,来实 现这个方案。在测试的过程中,监控相应的性能指标,并记录在相应日 志文件中,以供性能结果分析器分析。通过控制负载工作器执行测试用 例脚本的方式基本上有两种:r a m p u p 方式和f l a t 方式。 ( 1 ) r a m p - u p 方式:该执行方式是测试人员指定在一定的启动时间 ( r a m p - u pp e r i o d ) 内依照一定的规律生成指定数量的用户。这种方式能 够大致地模拟现实生活中用户群开始使用系统的场景,测试得到的性能 结果能够比较真实地反映系统的性能。不过这种方式的使用需要测试人 基于系统建模的w e b 性能测试框架的研究与实现第二章w e b 系统性能测试概述 员在启动时间依照待测的w e b 系统的实际情况,按照一定的规律生成用 户,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论