文章来源:名易软件 3.性能测试是软件测试专业化的核心所在从华友实践看,软件测试对于产品经理、开发经理和市场经理都有所认识,他们大部分人会认为功能测试工作他们能够很好的完成,产品经理是公司对于业务最熟悉的一批人,他们对于测试工程师最急切的需求是你帮我实施产品的性能测试工作,他们听说过性能测试,我们的产品投入在线运行后碰到的最大故障是大用户量访问业务是机器凼机,或停止正常的服务,每次故障,几乎给公司的收入都造成很大损失。如果测试部门能有一套有效的性能测试手段,就确立了测试部门在项目开发过程中关键地位。性能测试在华友软件的质量保证中起着非常重要的作用,将性能测试概括为四个方面:Wap无线应用服务在手机用户端性能测试、WebWap应用服务在客户端性能的测试、应用在网络上性能的测试和应用在服务器端性能的测试。通常情况下,四方面有效、合理的结合,可以达到对系统性能全面的分析和瓶颈的预测。3.1Wap无线应用服务在手机用户端性能测试如今人人用手机都追求时尚,时尚体现在款式,品牌和功能。手机产品功能的日新月异,移动增值业务功能层出不穷,从最初的短信、彩信、铃声到GPRS,CDMA,K-Java,Brew手机,功能的多样性带来手机用户端软件系统测试的复杂性。众所周知,Java手机吸引人之处是能提供智能的,个人化的互动服务,例如:动态产生个人化的股市服务,显示图形,动画,实时路况,气象报告,数字照像,玩游戏等,部分服务能直接于用户端执行。
为了提供如此生动的服务,移动通信系统要能给终端用户在无线装置上提供接入互联网的功能,要能储存、提取、管理、计算、结帐、服务,并使内容提供商能提供丰富的声像多媒体内容,形成广大的个人化交互式服务环境。而作为移动用户,可将手机视作虚拟机,能随时、随地在适当的装置上存取应用,享受服务。这确是一种时尚。
当前,对于不同品牌的手机,它们所用的平台(指CPU和操作系统)各不相同,由于采用不同的设计方案,各设计之间缺乏兼容性,操作系统和二进制代码都不兼容。当手机运行需要大量内存时,特别是随着接入互联网,手机用户要求能使用个性化的交互式应用软件,应用程序运行在虚拟运行环境下时,问题显得尤为突出。所以,有必要建立一种标准的通用运行平台,达到在合适的成本下提供统一的交互式应用软件运行环境。但是,除非该平台是基于完全标准的器件,否则是难以达到要求的。 标准的通用的运行平台是满足运营商,软件开发商,和终端用户三者综合要求的解决办法。理想的环境必须具备以下性质:(1)、平台应提供二进制兼容性。可执行软件是二进制目标码,需要在处理器和应用软件目标码之间建立沟通; (2)、平台必须包括微处理器,或一个与微处理器机器代码相离的通用机器码仿真器; (3)、平台应包括带有应用程序接口API及支持一致性图形用户界面GUI相应功能的操作系统。API是执行典型操作功能的软件功能库,例如打开文件,读写数据,配置和管理内存,处理事件,显示文档和图形等。为使应用软件真正做到可移植,装置上必须有公共功能集,并让软件开发者能通过一致性API扩展功能; (4)、平台不应要求过多的系统资源,可移植性设备不应使成本上升太多; (5)、平台应对功率有高效率,尤其考虑用电池供电的设备; (6)、由于要在互联网上应用,安全性也是重要因素。以Java手机软件测试为例潜在的测试问题和解决办法Java有移植性好和其它很多优势,但用在手机上,速率和功耗仍是个瓶颈。Java带来的新问题是执行速度慢,消耗功率大。与PC不同的是,手机资源有限,一般流行的手机中CPU的速率为26MHz,或52MHz,带128M闪存,8Mb,16M或64Mb内存,没有硬盘,由电池供电,体积小,空间窄。系统慢的原因是:(1)系统必须同时运行两套软件:Java应用和虚拟机JVM; (2)Java软件需要被翻译成自然CPU指令; (3)Java平台是基于栈(相对于寄存器)结构的,导致更多的内存存取。因而,如何对执行Java加速成为关键。加速处理数据和图形,这对手机上互联网和多媒体的应用具有重要意义。要克服这些问题,提高Java软件性能,可能的方法有四种:(1)提高微处理器速率。然而Java软件性能与时钟频率并不成线性关系,微处理器运行一般比内存存取时间高2-10倍,增加时钟频率只会增加等待周期。 (2)对JVM软件进行优化。这可能涉及到要用汇编语言对字节码翻译环路进行编程,而这会导致JRE变得与微处理器类别有关。而与可移植相抵触; (3)编译。将软件直接编译到微处理器的自然机器语言。但是这会增加内存的开销,也不节省能量的消耗。 (4)采用基于硬件的加速器。这可以做到提高性能,保障能量和成本的有效性。被手机设计厂商认为是较理想的措施。通用型Java加速芯片于今年年初问世。3.2分析WebWap应用服务在客户端性能的测试WebWap应用服务在客户端性能测试的目的是考察客户端应用的性能,测试的入口是客户端。它主要包括并发性能测试、大数据量测试和速度测试等,其中并发性能测试是重点。 并发性能测试的过程是一个负载测试和压力测试的过程,即逐渐增加负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标和资源监控指标来确定系统并发性能的过程。负载测试(LoadTesting)是确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用等来决定系统的性能。负载测试是一个分析软件应用程序和支撑架构、模拟真实环境的使用,从而来确定能够接收的性能过程。压力测试(StressTesting)是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。并发性能测试的目的主要体现在三个方面:以真实的业务为依据,选择有代表性的、关键的业务操作设计测试案例,以评价系统的当前性能;当扩展应用程序的功能或者新的应用程序将要被部署时,负载测试会帮助确定系统是否还能够处理期望的用户负载,以预测系统的未来性能;通过模拟成百上千个用户,重复执行和运行测试,可以确认性能瓶颈并优化和调整应用,目的在于寻找到瓶颈问题。我们公司自己组织力量同时委托第三方软件HG公司开发Hawa网站的一套应用Avatar形象系统的时候,Avatar形象在网站业务中占有着重要的位置,网站上的很多业务都是围绕Avatar开展。这套系统能不能承受大量的并发用户同时访问?成为这个网站能否成功的关键,也是这次两个公司合做开发能否顺利完成的关键。这类问题最常见于采用联机事务处理(OLTP)方式数据库应用、Web浏览和视频点播等系统。这种问题的解决要借助于科学的软件测试手段和先进的测试工具。Web软件测试实例说明:哈哇网站Avatar形象系统软件。Avatar形象系统在上线试运行三个月后,所有的功能测试顺利完成,软件功能缺陷也修改完毕。但是,性能问题越来越成为项目经理关心的焦点,我们测试部门借助比较熟悉的压力测试工具WebStress实施客户端性能测试进行100,500,1000等并发用户访问。每次测试主要在基于URL:的基础上,与HG公司实时交互地进行多种情况下的测试。按照HG公司要求主要针对并发数为1000和500的情况下,尽量准确的对Avatar系统的性能压力进行模拟测试;并排除所有不是从web服务器(即avatar.hawa.cn)上得到的URL,即只对index.jsp等页面进行测试。三次结果后,尽管程序优化、运行服务器配置多次修改,仍然存在用户量并发数达到1000,服务质量下降,页面方面时间超过正常显示时间。这里有最后一次测试结果与前几次大致相同。但是本次测试,是用多客户端测试,按原理是应该比以前的单机测试准确度要高,但其结果是比用单机测试的时间还要长,当并发数达到1000时,其页面的最长响应时间在80多秒(而单机测试时时59秒多)!第三次又发现ISP网络100MB带宽实际上不到20MB,也是影响用户服务的关键因素之一。这个性能问题经过HG公司开发人员近三个月改进,index.jsp页面的1000个用户并发响应时间10秒左右。对于我方采用的WebStress性能测试工具HG公司也认同其测试结果的客观性,公司因为该软件性能问题推迟支付对方经费200万圆三个月,更重要的是软件的性能问题得到很好解决,并与HG公司的关系很好保持。另外一个更大的收获是测试部门在Web产品部门有个很好的形象,他们每次新软件产品需求提出、产品上线都主动要求测试部门参与并实施严格测试。如何模拟实际情况呢?找若干台电脑和同样数目的操作人员在同一时刻进行操作,然后拿秒表记录下反应时间?这样的手工作坊式的测试方法不切实际,且无法捕捉程序内部变化情况,这样就需要压力测试工具的辅助。测试的基本策略是自动负载测试,通过在一台或几台PC机上模拟成百或上千的虚拟用户同时执行业务的情景,对应用程序进行测试,同时记录下每一事务处理的时间、中间件服务器峰值数据、数据库状态等。通过可重复的、真实的测试能够彻底地度量应用的可扩展性和性能,确定问题所在以及优化系统性能。预先知道了系统的承受力,就为最终用户规划整个运行环境的配置提供了有力的依据。并发性能测试前的准备工作 测试环境:配置测试环境是测试实施的一个重要阶段,测试环境的适合与否会严重影响测试结果的真实性和正确性。测试环境包括硬件环境和软件环境,硬件环境指测试必需的服务器、客户端、网络连接设备以及打印机扫描仪等辅助硬件设备所构成的环境;软件环境指被测软件运行时的操作系统、数据库及其他应用软件构成的环境。 一个充分准备好的测试环境有三个优点:一个稳定、可重复的测试环境,能够保证测试结果的正确;保证达到测试执行的技术需求;保证得到正确的、可重复的以及易理解的测试结果。 测试工具:成熟的并发性能测试工具有很多,选择的依据主要是测试需求和性能价格比。著名的并发性能测试工具有QALoad、LoadRunner、BenchmarkFactory、Webstress和AB-Apache等。这些测试工具都是自动化负载测试工具,通过可重复的、真实的测试,能够彻底地度量应用的可扩展性和性能,可以在整个开发生命周期、跨越多种平台、自动执行测试任务,可以模拟成百上千的用户并发执行关键业务而完成对应用程序的测试。 测试数据:在初始的测试环境中需要输入一些适当的测试数据,目的是识别数据状态并且验证用于测试的测试案例,在正式的测试开始以前对测试案例进行调试,将正式测试开始时的错误降到最低。在测试进行到关键过程环节时,非常有必要进行数据状态的备份。制造初始数据意味着将合适的数据存储下来,需要的时候恢复它,初始数据提供了一个基线用来评估测试执行的结果。 在测试正式执行时,还需要准备业务测试数据,比如测试并发查询业务,那么要求对应的数据库和表中有相当的数据量以及数据的种类应能覆盖全部业务。模拟真实环境测试,有些软件,特别是面向大众的商品化软件,在测试时常常需要考察在真实环境中的表现。如测试杀毒软件的扫描速度时,硬盘上布置的不同类型文件的比例要尽量接近真实环境,这样测试出来的数据才有实际意义。 并发性能测试的关键的是测试过程中对监控对象的灵活应用,例如目前三层结构的运行模式广泛使用,对中间件的并发性能测试作为问题被提到议事日程上来,许多系统都采用了国产中间件,选择JavaScript监控对象,手工编写脚本,可以达到测试目的。 采用自动化负载测试工具执行的并发性能测试,基本遵循的测试过程有:测试需求与测试内容,测试案例制定,测试环境准备,测试脚本录制、编写与调试,脚本分配、回放配置与加载策略,测试执行跟踪,结果分析与定位问题所在,测试报告与测试评估。 3.3应用在网络上性能的测试应用在网络上性能的测试重点是利用成熟先进的自动化技术进行网络应用性能监控、网络应用性能分析和网络预测。 网络应用性能分析 网络应用性能分析的目的是准确展示网络带宽、延迟、负载和TCP端口的变化是如何影响用户的响应时间的。利用网络应用性能分析工具,例如ApplicationExpert,能够发现应用的瓶颈,我们可知应用在网络上运行时在每个阶段发生的应用行为,在应用线程级分析应用的问题。可以解决多种问题:客户端是否对数据库服务器运行了不必要的请求?当服务器从客户端接受了一个查询,应用服务器是否花费了不可接受的时间联系数据库服务器?在投产前预测应用的响应时间;利用ApplicationExpert调整应用在广域网上的性能;ApplicationExpert能够让你快速、容易地仿真应用性能,根据最终用户在不同网络配置环境下的响应时间,用户可以根据自己的条件决定应用投产的网络环境。 网络应用性能监控 在系统试运行之后,需要及时准确地了解网络上正在发生什么事情;什么应用在运行,如何运行;多少PC正在访问LAN或WAN;哪些应用程序导致系统瓶颈或资源竞争,这时网络应用性能监控以及网络资源管理对系统的正常稳定运行是非常关键的。利用网络应用性能监控工具,可以达到事半功倍的效果,在这方面我们可以提供的工具是NetworkVantage。通俗地讲,它主要用来分析关键应用程序的性能,定位问题的根源是在客户端、服务器、应用程序还是网络。在大多数情况下用户较关心的问题还有哪些应用程序占用大量带宽,哪些用户产生了最大的网络流量,这个工具同样能满足要求。 网络预测 考虑到系统未来发展的扩展性,预测网络流量的变化、网络结构的变化对用户系统的影响非常重要。根据规划数据进行预测并及时提供网络性能预测数据。我们利用网络预测分析容量规划工具PREDICTOR可以作到:设置服务水平、完成日网络容量规划、离线测试网络、网络失效和容量分析、完成日常故障诊断、预测网络设备迁移和网络设备升级对整个网络的影响。 从网络管理软件获取网络拓扑结构、从现有的流量监控软件获取流量信息(若没有这类软件可人工生成流量数据),这样可以得到现有网络的基本结构。在基本结构的基础上,可根据网络结构的变化、网络流量的变化生成报告和图表,说明这些变化是如何影响网络性能的。PREDICTOR提供如下信息:根据预测的结果帮助用户及时升级网络,避免因关键设备超过利用阀值导致系统性能下降;哪个网络设备需要升级,这样可减少网络延迟、避免网络瓶颈;根据预测的结果避免不必要的网络升级。3.4应用在服务器上性能的测试 首先分析服务器的类型,服务器的划分起码可以依据四大部分进行。一是根据整个架构,可分为IA服务器和RISC服务器;二是按照硬件配置的差别可分为工作组级、部门级、企业级;三是按照具体安装的应用软件可分为Web服务器、文件服务器、FTP服务器、E-mail服务器、数据库服务器等等;四是根据操作系统分为WINDOWS阵营、UNIX阵营。这四大分类有所关联,但其中按应用分类是最能给用户清晰概念的。因为用户在采购选型时,总是先想好了拿它做什么用的。Intel最近所提出的前端(用于接入等)、中端(用于各种应用和中间件)和后端(用于数据库、在线分析等)的分类办法,这也是从应用角度考虑的。
分析服务器性能指标莫不聚焦于三大指标:CPU、IO及Web。如果大家还记得图灵机的话,应该对计算单元和输入输出的重要不会抱什么怀疑的态度。至于选择Web作为衡量服务器性能的要点,只能说是网络的力量。Internet的大行其道让我们很难想象有服务器孤岛出现。工程师往往通过给与被测服务器不断增加的并发式文件读写、数据库操作以及HTTP访问来取得其最大的潜值。
以Web测试为例,衡量Web性能一般有下列几个重要指标:HTTP每秒交易数(TransactionPerSecond);每秒会话数(SessionsPerSecond);当前用户数(Concurrentusers);吞吐量(Throughput)。HTTPTPS通常也叫做每秒的点击数;每秒会话数是每秒到达Web服务器的用户数;当前用户数是特定时间在Web站点上的用户数;吞吐量是在特定时间由Web站点发出的数据流量带宽,它与服务器提供服务的内容和交易数相关。以上将是我们对测试结果进行评述与点评的重要技术基础。谈项目管理和软件测试过程(二)谈项目管理和软件测试过程(一)来源:CCW
信息发布:广州名易软件有限公司 http://www.myidp.net
|