B/S架构应用软件性能测试问题研究
作者:熊军军 发布时间:[ 2012/3/2 11:08:35 ] 推荐标签:
软件测试包括功能测试和非功能测试,性能测试作为非功能测试的一种,其重要性往往被低估。但是,对于企业级应用软件,忽略性能测试的重要性将带来严重的后果,因为企业级应用软件用户数量多,一旦性能不能满足要求,轻则造成用户长时间等待服务器响应,重则导致服务器资源耗尽,服务不可用。因此,在企业级应用软件推广之前,必须经过严格的性能测试。当前企业级应用软件多采用B/S架构,即浏览器和服务器结构。
它是随着Internet技术的兴起,由C/S结构变化或者改进而来的结构。在这种结构下,用户工作界面是通过Web浏览器来展现,较少部分事务逻辑在前端(Browser)实现,主要事务逻辑在服务器端(Server)实现,这样大大减轻了客户端计算机载荷,降低了系统维护与升级的成本。
本文以一个这样的三层B/S架构的应用系统为性能测试对象,通过对测试结果的分析,确定导致该结果的原因,并提供解决方法。
1 性能测试场景
1.1 测试内容
该应用系统主要功能是根据用户输入数据,判断业务类型,并计算该业务的输出,类似于某些网站上的“贷款计算器”,只是业务处理逻辑相对复杂。因此,测试内容主要包括2个功能:用户登录和数据计算。
1.2 测试目的
测试目的有2点:一是测试被测系统所能承载的大并发用户数量,在超过200用户并发情况下,系统是否可以稳定运行;二是测试被测系统在不同数量并发用户数的情况下,系统主要功能(用户登录和数据计算)的平均响应时间是否在15 s以内。
1.3 测试方案
根据测试目的,相应的设计测试方案如下:
①压力测试:分别模拟150、200、250用户同时执行用户登录和数据计算操作,检测系统是否可以正常运转并记录操作的平均响应时间。
②负载测试:分别模拟150、200、250用户逐步加压,并执行用户登录和数据计算操作,检测系统是否可以正常运转并记录操作的平均响应时间。
1.4 测试工具测试工具采用HP公司的LoadRunner,本文的测试报告均由该工具生成2 性能测试问题分析
2.1 服务器网络性能问题
首次测试结果表明,压力测试中,不同用户并发数情况下用户登录和数据计算均能正常进行;负载测试中,200用户情况下用户登录和数据计算操作平均响应时间分别为58s和46s。
分析性能测试报告中的Web Page Dianostics。
“数据计算”操作响应时间的主要因素,因此解决问题的重点在于查找服务器网络性能缺陷。通过分析测试环境,发现应用服务器是虚拟机。通常一个高配置的实体机的资源会分配给其上安装的多个虚拟机,这种情况下,每个虚拟机的CPU和内存基本能按要求分配,
但是网络资源却不一定能按要求分配,在多个虚拟机争用实体机网络硬件资源时,应用服务器的网络性能是比较差的。
解决这个问题有2种方法:一种是优化应用服务器网络性能,另一种是将应用服务器更换为实体机。考虑到测试进度,我们更换了相同CPU和内存配置的实体机进行测试,测试结果表明,200用户情况下用户登录和数据计算操作平均响应时间分别为9.6 s和10.3 s。
可见,虚拟机较差的网络性能对性能测试影响较大,在性能测试中要注意优化服务器网络性能。
2.2 数据库调优能力问题
上一节中,解决应用服务器网络问题后,用户登录和数据计算操作平均响应时间大幅降低,但分析服务器资源使用情况发现,性能测试执行25 min后,数据库服务器CPU使用率超过80%,在30 min后甚至升高到90%以上,这显然是不利于系统稳定运行的,
需要解决数据库服务器资源消耗过大问题。跟踪数据库进程情况,发现随着时间的增长,数据库内的进程阻塞越来越严重,由于进程阻塞,导致页面响应时间越来越长,响应时间曲线呈线性上升。系统内进程只是阻塞,并没有出现死锁情况。
由于没有出现死锁,可以判断造成数据库内进程阻塞的原因,不是软件设计问题,而应当是数据库性能优化能力问题,也是说,数据库在高负载情况下自身性能调优能力不足。
为了解决这个问题,将数据库软件从SQL Server2000升级到SQL Server2005,测试结果表明,200用户情况下用户登录和数据计算操作平均响应时间分别为7.4 s和8.1 s。
可见,SQL Server2005的负载处理能力远远强于SQL Server2000。
2.3 应用服务器参数设置问题
从上一节的测试结果可以看出,“数据计算”操作的平均响应时间(8.1s)比“用户登录”的响应时间(7.4s)长,但是从程序逻辑看,应该是“用户登录”的响应时间较长,因为“用户登录”要加载页面元素,还要加载默认计算参数。
经过分析,发现这个问题是应用服务器和数据库服务器之间负载不够均衡所致。具体而言,是应用服务器的连接缓冲池中大数据库连接数值设置过小,这样应用服务器中与数据库进行交互的资源较少,导致系统数据处理能力下降。
将大数据库连接池数增大后,“数据计算”操作的平均响应时间明显降低。测试结果表明,200用户情况下用户登录和数据计算操作平均响应时间分别为7.5 s和4.9 s。另外,应用服务器的接受预备连接数、JDBC语句缓存大小、非活动连接超时时间也是Weblogic性能优化的重要参数。
2.4 应用软件设计问题
应用软件自身设计问题无疑是影响性能测试结果的决定性因素。在性能优化的过程中,可以采用以下方法优化代码。
①修改程序结构,去掉不必要的框架文件。
②将用户登录的默认数据加载到内存,加快访问速度。
③修改代码,减少数据库访问次数,优化查询逻辑。
④在数据库上建立索引,加快数据访问速度。
⑤从需求方面,将复杂操作分解执行,提高系统可用性。
2.5 其他问题
除了上述影响B/S架构应用软件性能的问题外,以下因素对软件性能影响也比较大。
2.5.1 服务器硬件性能
服务器的CPU、内存、存储都可能成为性能瓶颈。实践经验表明,从软件角度充分优化系统后,后仍可能要提高系统硬件配置以改善系统性能。例如:对于数据库服务器,本地磁盘相对于外部高速存储而言,磁盘I/O(Input/Output,输入/输出)能力明显较低,
这个问题通常不太容易引起注意,但对系统性能确实影响较大。
2.5.2 其他应用软件干扰问题
在某次性能测试过程中,发现随着用户数的增长,应用服务器的CPU使用率不升反降,如图4所示。分析这一异常现象的原因,是由于应用服务上部署了2个应用程序,受另一个应用程序对应用服务器的压力逐步下降影响,测试结果中应用服务器CPU使用率呈下降趋势。
所以,我们在进行性能测试时,要保证服务器不被其他应用软件、服务器上其他用户干扰。
3 总 结
通过一个B/S架构应用软件的性能测试实例,全面介绍了影响应用软件性能测试的主要问题,并根据Loadrunner生成的各种报告、以及服务器监控信息分
析了解决这些问题的具体方法。
用户身份认证的实现过程一个登录请求;
1.WEB服务器响应后,根据用户请求的UID判断是否需要由浏览器下载ActiveX控件,该控件含有由CA签发的PKCS#12格式的单证书,同时将WEB服务器的证书下载到客户端;
2.客户端得到了控件和证书后,再访问LDAP以得到新的CRL的数据;
3.客户端浏览器根据以上两步的结果,通过
ActiveX调用PKI动态连接库来验证WEB服务器证书是否合法;
4.如验证通过后,客户端将用户证书通过HTTP方式向WEB服务器发送;
5.WEB服务器得到了用户证书后,再访问LDAP以得到新的CRL数据,同时将转交由应用服务器对证书进行验证的结果。
4.1.3 数据签名、加密的应用实现
①用户通过浏览器访问WEB服务器,并填写WEB应用表单;
②当用户在浏览器中提交数据时,系统根据事前的约定将需要进行加密和签名的数据组成一个数据包,并通过ActiveX控件调用PKI动态连接库进行数据的加密和签名;
③浏览器中加密的密文和无须加密的明文通过HTTP方式向WEB服务器发送;
④WEB服务器收到数据后,判断是否已建立了安全会话,否则将需重新登录;
⑤WEB服务器将解密、验证过的数据交由应用服务器进行继续处理;
⑥WEB服务器回馈成功与否。
4.2 安全策略
系统主要采取如下安全策略:通报系统访问次数、双向认证并核对登录密码、密码加密、设置会话密钥(Session Secret)和审计。
5 结束语
本系统独立开发了一套系统处理平台,该平台是一个SERVLET,它的功能是:接收前台的请求,生成通用处理类的一个实例,调用通用处理类中的方法,完成对用户的请求的处理;在处理完成以后,生成输出处理类的实例,把通用处理类的输出参数传给输出处理类,调用输出处理类中的方法,生成输出页面;
把输出页面返回给前台。该平台的设计,不仅提高了业务处理效率,而且缩短了系统开发时间,增强了系统的可维护性和系统的可扩展性。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11