性能测试分析目标函数法浅谈

发表于:2011-4-26 11:15

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:潘杰    来源:51Testing软件测试网原创

  随着现代工业信息化需求的日渐增加,基于这些需求诞生的软件产品或者系统,也因此应运而生。而由于需求的不确定性和复杂性,现代软件系统也变得越来越庞杂,对这些软件系统进行性能测试和分析,无疑也变得越来越困难。

  笔者在本篇文章所要讲的便是一种如何进行性能测试和快速定位性能测试过程中出现问题的方法。主要的思路就是将性能测试所涉及的各方面进行一定程度的建模,利用数学的方法对软件系统的性能测试进行分析。

  一般来讲,根据软件系统的架构,可以把这些软件系统分成两类,即B/S和C/S两种类型,B/S,即Browser/Server,也就是用户通过浏览器访问服务器端程序,C/S,也就是用户通过客户端程序来访问服务器端程序,从某种程度上讲,B/S结构也是C/S的一种特例,只不过B/S结构,在我们进行测试的时候,并不需要特别地对浏览器本身进行测试和分析, 而C/S结构,则需要我们特别地对客户端也进行一定程度的测试和分析。

  下图是两个简单的基于B/S系统和C/S系统的拓扑图:图1是基于B/S结构的在线购物网站示意图,图2是基于C/S结构的股票交易系统。

  图1:

  图2:

  图1所示的在线购物系统中,用户通过浏览器访问譬如www.taobao.comwww.dangdang.com等在线购物网站,其请求先通过对应网站的web服务器转发到中间件层,执行购物等操作的时候,具体操作便由中间层和服务器端代码进行控制,访问后台数据库,从数据库取得结果后便又将数据传回给web服务器,再显示在用户页面。

  在图2所示的股票交易系统中,用户通过股票交易客户端程序,譬如同花顺,大智慧等客户端登录时,便由客户端将用户的操作传送给服务器端程序进行解析,根据用户帐号权限和操作的不同类型譬如买入/卖出/查询行情等,通过一系列中间层服务器,最后访问后台数据库,查询出结果后,又依层逐次返回给客户端。

  ……………………

  查看全文请点击下载:http://www.51testing.com/html/39/n-234539.html

  而为了快速分析和定位影响性能测试结果的因子,我们可以把所有涉及到性能的各个环节进行分解,即分成下面四类子函数;1,硬件H(x),2,软件环境S(x),3,待测软件包及版本V(x),4,测试策略方法M(x)。

  则逻辑上: P(x)=H(x)+S(x)+V(x)+M(x);

  若带上相应权值,则P(x)=aH(x)+bS(x)+cV(x)+dM(x);因为不同的环境和不同的人员配备下,

  各个环节出现问题的权值并不相同,具体如何定义a,b,c,d的值,需要参考具体的情况,下面主要是详细介绍下各个函数的含义。

  第一类:H(x)

  导致性能问题的一大因素是硬件资源不足或兼容性有问题,如内存,CPU,网卡,网络延迟,硬盘上下文切换,虚拟机等;

  即H(x)=MM(x)+Cpu(x)+Net(x)+Vir(x)+........

  表示一旦发生硬件瓶颈,我们只用从H(x)的因子中找出原因,在日常实践过程中,出现问题比较多的是由于硬件资源不足,虚拟机的性能在高负载下受到虚拟机上运行的其他程序干扰比较严重。

  第二类:S(x)

  Software Enviroment,在前面的图形演示中,软件环境影响性能,主要是指系统架构和环境软件以及环境软件的配置,所谓环境主要是指操作系统,web服务器,应用程序服务器,数据库等,

  S(x)=aFro(x)+bMed(x)+cDat(x)+dPla(x)+….;其中a,b,c,d表示需要配置的数量,

  aFro(x),表示有a台前端web服务器,bMed(x),表示b个中间层服务器需要配置,cDat(x),表示c个数据库需要配置,dPla(x),表示d个操作系统需要配置……

  如果令各个节点的取值都是1,即Fro(x)=1,Med(x)=1,Dat(x)=1….也能够粗略算出系统所需配置的节点数,便可以粗步评估系统复杂度,如果带上相应的权值,那么便能根据具体配置的难度评估出软件系统的准确复杂度,如apache的复杂度定义为1,Linux服务器复杂度定义为2,windows为0.5,oracle定义为3等……具体如何使用这个函数来评估系统的复杂度,可以参考具体实际需要。但是毫无疑问,软件环境的不同,对于系统性能的影响也是非常不同。

  第三类:V(x)

  也就是软件包本身,实际上对于B/S结构的程序而言,主要是指服务器端的软件程序本身,对于C/S结构的程序而言,还包括客户端代码,简单来讲,可以定义为

  V(x)=Vcus(x)+Vser(x);只是B/S情况下Vcus(x)=0?;

  也就是说影响性能测试的结果还有一个重要因素便是我们开发的软件本身有问题,而具体是什么问题,也许是代码编写的问题,也许是安装配置的原因,也许是使用不当,也许是版本

  不正确,具体的V(x)=Code(x)+Configure(x)+Use(x)+Ver(x)?;在这里也只是使用逻辑加,具体情况可能需要加上相应权值。

  ……

  查看全文请点击下载:http://www.51testing.com/html/39/n-234539.html

  版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号