案例三:产品性能测试
上一篇 / 下一篇 2007-05-30 11:00:34 / 个人分类:项目案例分析
题目:产品性能测试51Testing软件测试网(|nfg:m
所属主题:测试技术
3f0^{tE ~"`#Vh0作者:51Testing软件测试网-g#i R&vx \K
项目的行业背景:政府、企业
F+n{-y2Njm2Q0项目的情况简介:51Testing软件测试网.zB|&kC,P
项目属于客户端/服务端模式产品,要求每个服务端能支持连接500个客户端51Testing软件测试网#G@On6k!p-tkL
测试环境简介:
:Nkt(f+b0 服务端支持三级连接模式,每个服务端能支持连接500个客户端,总要求支持大约5000个客户端。
&G9K E!UI)s0测试的过程描述:51Testing软件测试网 t3tx^0{!y3sg
在测试实验室中,只能搭建10个客户端的环境以及三级连接的环境。服务端初次连接客户端后,客户端会保留服务端的IP地址。下次客户端机器启动时,会自己连接服务端。每次连接属于短连接。在产生事件时,客户端会自己上报给服务端。
H9O.m!_k0测试过程遇到的问题:51Testing软件测试网2\Q4Y!qS?:J5s.j\
在实验室中测试系统稳定可用,但在用户那里遇到服务端异常退出。
"?*F h5n/D0问题分析:
L:@qo-W4H1Se0 客户端同时大量上报事件时,服务端处理出问题,导致系统异常退出。
v8[J7E n0希望寻求的帮助:
6bb#{ j9]4n!H0 如何模拟多客户端问题?如何进行产品的性能测试?如何保证产品的稳定性?
eT@\0Uy!t,X9t[0相关分析
_ }'[HCv q+x:`6fz0 51Testing软件测试网$sBd"X;Tv3Yv
分析一:51Testing软件测试网*y[(?$qC\
作者:多瑙河
lQ&[6DX'KZf]0 分析内容:
I$yNH)U0 很简单,这种情况,用loadrunner最合适了,用loadrunner这种压力测试工具,模拟多用户环境,不知道你们是用什么语言开发,如果是java的甚至可以利用loadrunner的Tunning组件,达到代码级的调优。如果是 C#.net,那很要等啦,Mercury同意支持C#.net,但支持版本还没有出来。我在给你个建议,找个系统整合专家,看看是不是他们的网络有问题,或者是服务器没有调试好。有时候,机子CPU多,没有调试好,可能大量的CPU资源用于频繁的调度,而造成系统异常。有时候,还要改进算法。这种系统调试最麻烦了!
f;xW{(_ W Zr8[h0分析二:51Testing软件测试网o0zx x^UqC#E
作者:关河51Testing软件测试网0D3k$zE?hc
分析内容:51Testing软件测试网 cQ)C9E|8d[ A/d1qU
个人意见:对这个问题的分析应该考虑两个层次:51Testing软件测试网c:x8U I;D)u'O
1、解决现有问题的层次;
.?R5KTe*g#sVL02、探讨测试不充分问题产生的根源并从根源上避免此类问题的发生。
'k)q.L^C&u0这个问题本身是比较好解决的,在现场出现问题后,我们要做的是利用实验室的环境(或者现场的环境)确定问题产生的原因,从例子的描述来看,应该是在客户端大量建立连接时服务端无法支持,产生异常退出。对该问题的定位可以用LR等性能测试工具(或是自己编写的工具)模拟进行大并发量的突发连接测试,并据此给出改进的方法。51Testing软件测试网{}!LK jXq3Pq
其次我们还应该探讨测试不充分问题产生的根源。在这个例子中,由于设备不足够,可能根本就没有进行压力和负载测试,这本身就留下了隐患。其次,作为测试负责人,对这种项目的经验不足,一般来说,基于短连接方式的C/S结构应用最大的可能出问题的地方就是大量用户同时进行连接操作,即使没有环境在实验室中进行测试,也必须把这个作为一个大的项目风险列出,要求在交付最终用户使用前进行这类测试。
V7f0Vt*y8uq0测试时代工作室分析51Testing软件测试网T}%Z/TW a
N;hJ"H'f`E0 本案中,作者的描述有些歧义:51Testing软件测试网VQ"v&y8r"F*o q
1、“三级连接模式”,不知道是不是有服务器,有端站,有客户端的模式,还是采用了服务器集群,多台服务器分三级级连51Testing软件测试网EVdXny7D
2、“每个服务端能支持连接500个客户端,总要求支持大约5000个客户端。”51Testing软件测试网)aJ yn7hjU
3、“服务端初次连接客户端,”这个不知道是不是应该是“客户端初次连接服务端”,而书写的当时,思维太快了,手没跟上,请教开发工程师都说“一般都是客户端去连接服务端的“拉”模式,而极少服务端向客户端“推”的模式。”51Testing软件测试网8pUS b@Y
4、“在产生事件时,客户端会自己上报给服务端”,不知道是不是以发送日志文件的形式上报。
W0GxB v'[05、“在实验室中测试系统稳定可用”,实验室中测试是不是只有10个端站的情况下,而并没有采用任何的测试工具来做模拟端站和用户,已达到实际需要的量级。
$~.Ie l\\lf2U06、“下次客户端机器启动时,会自己连接服务端。”这个连接,是指自动登录还是会同步数据或者仅是网络连接?
V*x#P3aw,C lv_io0 所以,对于本案编者只能按照性能测试的一般做法做一个介绍,不能详细的分析本案为什么会出现了不稳定运行的状况了,希望能对本案作者及遇到相同问题,或者准备做性能测试的同行们有所启发。51Testing软件测试网g{V4Y+G [%]
首先,我们为什么做性能测试呢?51Testing软件测试网YuC9l$L!Eu
51Testing软件测试网Ok(}+aR1zeN
性能测试的目的:
,qvC(`9b-w4Ce0一、评估系统的能力,测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的数据处理能力,并帮助作出决策。51Testing软件测试网f`t'p0pKx
二、识别体系中的弱点:受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。51Testing软件测试网xXY)e+h\H5p
三、系统调优:重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中的隐含的问题或冲突。51Testing软件测试网s-~Ed wu|
四、验证稳定性(resilience)可靠性(reliability):在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。51Testing软件测试网%pvL@N[:EG9`.]j
r?%I*z)[3@m0性能测试类型包括:
s dSzb0负载测试:负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担。
X,K| r2{kF4D:y0强度测试: 强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况。51Testing软件测试网+D'H(M9Q"I%id K
容量测试:确定系统可处理同时在线的最大用户数51Testing软件测试网t.fw\[,Y0l0|
51Testing软件测试网z4e)c/R*?}y
性能测试观察指标:
g'nZ0w)e!~3i0性能测试主要是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
6nL9R(D ~E`(D0在实际中作中我们经常会对两种类型软件进行测试:bs和cs,这两方面的性能指标一般需要哪些内容呢?Bs结构程序一般会关注的通用指标如下(简):51Testing软件测试网\"W5Wsq%H2r,PM
KhK2[};U0Web服务器指标指标:
F*t#a.AOfZ?8E7{A01、Avg Rps: 平均每秒钟响应次数=总请求时间 / 秒数;51Testing软件测试网i3du l6|
2、Avg time to last byte per terstion (mstes):平均每秒业务角本的迭代次数 ,有人会把这两者混淆;
:hk-BW!\03、Successful Rounds:成功的请求;51Testing软件测试网2r3e/I*PYxY3iPs
4、Failed Rounds :失败的请求;
jm1t~(Y$Nf;a4K05、Successful Hits :成功的点击次数;
v-@'o"X0`06、Failed Hits :失败的点击次数;
2NLYIgS07、Hits Per Second :每秒点击次数;
+XVh$Wr iXMB08、Successful Hits Per Second :每秒成功的点击次数;51Testing软件测试网2n)v}t+E ^
9、Failed Hits Per Second :每秒失败的点击次数;
M I2Vji$~$[010、Attempted Connections :尝试链接数;
3idcs/[3z B/f0hx\011、CS结构程序,由于一般软件后台通常为数据库,所以我们更注重数据库的测试指标:51Testing软件测试网a}q t0R&^
12、User 0 Connections :用户连接数,也就是数据库的连接数量;51Testing软件测试网w0t.E8_4m k{
13、Number of deadlocks:数据库死锁;
`w(j\&ebC'OGG014、Butter Cache hit :数据库Cache的命中情况51Testing软件测试网X6kH*Z1T4EN8j fj h
51Testing软件测试网h:nn7@b!SEL
当然,在实际中我们还会察看多用户测试情况下的内存,CPU,系统资源调用情况。这些指标其实是引申出来性能测试中的一种:竞争测试。什么是竞争测试,软件竞争使用各种资源(数据纪录,内存等),看他与其他相关系统对资源的争夺能力。
AR@`Uq0性能测试的流程步骤
-Ou.}*su$t;YLPu0和做其他的测试没有什么区别,做性能测试也要如下步骤来做:51Testing软件测试网y \#fGj;^*sw[
1、测试需求分析
'A N(w5L-d)tN)SYkK02、测试设计51Testing软件测试网)w?}I#^^!ll:_C
3、测试脚本开发
m_aY5op/Suz04、测试实施
:aO ls R%tm05、测试结果分析
yYjv W;d.yG0 测试需求分析,性能测试(或者其他的测试)做的好与坏完全取决于测试分析做得好不好。软件最终始要被应用的,要在应用的实践中考验,所以,任何类型的测试分析都要以实际业务的要求为依据。那么,性能测试的测试需求分析都需要分析哪些内容呢?
,o8Em$lk%f9tH01、性能测试的需求来源。客户需求和期望,实际业务需求,系统需求。
所属主题:测试技术
3f0^{tE ~"`#Vh0作者:51Testing软件测试网-g#i R&vx \K
项目的行业背景:政府、企业
F+n{-y2Njm2Q0项目的情况简介:51Testing软件测试网.zB|&kC,P
项目属于客户端/服务端模式产品,要求每个服务端能支持连接500个客户端51Testing软件测试网#G@On6k!p-tkL
测试环境简介:
:Nkt(f+b0 服务端支持三级连接模式,每个服务端能支持连接500个客户端,总要求支持大约5000个客户端。
&G9K E!UI)s0测试的过程描述:51Testing软件测试网 t3tx^0{!y3sg
在测试实验室中,只能搭建10个客户端的环境以及三级连接的环境。服务端初次连接客户端后,客户端会保留服务端的IP地址。下次客户端机器启动时,会自己连接服务端。每次连接属于短连接。在产生事件时,客户端会自己上报给服务端。
H9O.m!_k0测试过程遇到的问题:51Testing软件测试网2\Q4Y!qS?:J5s.j\
在实验室中测试系统稳定可用,但在用户那里遇到服务端异常退出。
"?*F h5n/D0问题分析:
L:@qo-W4H1Se0 客户端同时大量上报事件时,服务端处理出问题,导致系统异常退出。
v8[J7E n0希望寻求的帮助:
6bb#{ j9]4n!H0 如何模拟多客户端问题?如何进行产品的性能测试?如何保证产品的稳定性?
eT@\0Uy!t,X9t[0相关分析
_ }'[HCv q+x:`6fz0 51Testing软件测试网$sBd"X;Tv3Yv
分析一:51Testing软件测试网*y[(?$qC\
作者:多瑙河
lQ&[6DX'KZf]0 分析内容:
I$yNH)U0 很简单,这种情况,用loadrunner最合适了,用loadrunner这种压力测试工具,模拟多用户环境,不知道你们是用什么语言开发,如果是java的甚至可以利用loadrunner的Tunning组件,达到代码级的调优。如果是 C#.net,那很要等啦,Mercury同意支持C#.net,但支持版本还没有出来。我在给你个建议,找个系统整合专家,看看是不是他们的网络有问题,或者是服务器没有调试好。有时候,机子CPU多,没有调试好,可能大量的CPU资源用于频繁的调度,而造成系统异常。有时候,还要改进算法。这种系统调试最麻烦了!
f;xW{(_ W Zr8[h0分析二:51Testing软件测试网o0zx x^UqC#E
作者:关河51Testing软件测试网0D3k$zE?hc
分析内容:51Testing软件测试网 cQ)C9E|8d[ A/d1qU
个人意见:对这个问题的分析应该考虑两个层次:51Testing软件测试网c:x8U I;D)u'O
1、解决现有问题的层次;
.?R5KTe*g#sVL02、探讨测试不充分问题产生的根源并从根源上避免此类问题的发生。
'k)q.L^C&u0这个问题本身是比较好解决的,在现场出现问题后,我们要做的是利用实验室的环境(或者现场的环境)确定问题产生的原因,从例子的描述来看,应该是在客户端大量建立连接时服务端无法支持,产生异常退出。对该问题的定位可以用LR等性能测试工具(或是自己编写的工具)模拟进行大并发量的突发连接测试,并据此给出改进的方法。51Testing软件测试网{}!LK jXq3Pq
其次我们还应该探讨测试不充分问题产生的根源。在这个例子中,由于设备不足够,可能根本就没有进行压力和负载测试,这本身就留下了隐患。其次,作为测试负责人,对这种项目的经验不足,一般来说,基于短连接方式的C/S结构应用最大的可能出问题的地方就是大量用户同时进行连接操作,即使没有环境在实验室中进行测试,也必须把这个作为一个大的项目风险列出,要求在交付最终用户使用前进行这类测试。
V7f0Vt*y8uq0测试时代工作室分析51Testing软件测试网T}%Z/TW a
N;hJ"H'f`E0 本案中,作者的描述有些歧义:51Testing软件测试网VQ"v&y8r"F*o q
1、“三级连接模式”,不知道是不是有服务器,有端站,有客户端的模式,还是采用了服务器集群,多台服务器分三级级连51Testing软件测试网EVdXny7D
2、“每个服务端能支持连接500个客户端,总要求支持大约5000个客户端。”51Testing软件测试网)aJ yn7hjU
3、“服务端初次连接客户端,”这个不知道是不是应该是“客户端初次连接服务端”,而书写的当时,思维太快了,手没跟上,请教开发工程师都说“一般都是客户端去连接服务端的“拉”模式,而极少服务端向客户端“推”的模式。”51Testing软件测试网8pUS b@Y
4、“在产生事件时,客户端会自己上报给服务端”,不知道是不是以发送日志文件的形式上报。
W0GxB v'[05、“在实验室中测试系统稳定可用”,实验室中测试是不是只有10个端站的情况下,而并没有采用任何的测试工具来做模拟端站和用户,已达到实际需要的量级。
$~.Ie l\\lf2U06、“下次客户端机器启动时,会自己连接服务端。”这个连接,是指自动登录还是会同步数据或者仅是网络连接?
V*x#P3aw,C lv_io0 所以,对于本案编者只能按照性能测试的一般做法做一个介绍,不能详细的分析本案为什么会出现了不稳定运行的状况了,希望能对本案作者及遇到相同问题,或者准备做性能测试的同行们有所启发。51Testing软件测试网g{V4Y+G [%]
首先,我们为什么做性能测试呢?51Testing软件测试网YuC9l$L!Eu
51Testing软件测试网Ok(}+aR1zeN
性能测试的目的:
,qvC(`9b-w4Ce0一、评估系统的能力,测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的数据处理能力,并帮助作出决策。51Testing软件测试网f`t'p0pKx
二、识别体系中的弱点:受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。51Testing软件测试网xXY)e+h\H5p
三、系统调优:重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中的隐含的问题或冲突。51Testing软件测试网s-~Ed wu|
四、验证稳定性(resilience)可靠性(reliability):在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。51Testing软件测试网%pvL@N[:EG9`.]j
r?%I*z)[3@m0性能测试类型包括:
s dSzb0负载测试:负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担。
X,K| r2{kF4D:y0强度测试: 强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况。51Testing软件测试网+D'H(M9Q"I%id K
容量测试:确定系统可处理同时在线的最大用户数51Testing软件测试网t.fw\[,Y0l0|
51Testing软件测试网z4e)c/R*?}y
性能测试观察指标:
g'nZ0w)e!~3i0性能测试主要是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
6nL9R(D ~E`(D0在实际中作中我们经常会对两种类型软件进行测试:bs和cs,这两方面的性能指标一般需要哪些内容呢?Bs结构程序一般会关注的通用指标如下(简):51Testing软件测试网\"W5Wsq%H2r,PM
KhK2[};U0Web服务器指标指标:
F*t#a.AOfZ?8E7{A01、Avg Rps: 平均每秒钟响应次数=总请求时间 / 秒数;51Testing软件测试网i3du l6|
2、Avg time to last byte per terstion (mstes):平均每秒业务角本的迭代次数 ,有人会把这两者混淆;
:hk-BW!\03、Successful Rounds:成功的请求;51Testing软件测试网2r3e/I*PYxY3iPs
4、Failed Rounds :失败的请求;
jm1t~(Y$Nf;a4K05、Successful Hits :成功的点击次数;
v-@'o"X0`06、Failed Hits :失败的点击次数;
2NLYIgS07、Hits Per Second :每秒点击次数;
+XVh$Wr iXMB08、Successful Hits Per Second :每秒成功的点击次数;51Testing软件测试网2n)v}t+E ^
9、Failed Hits Per Second :每秒失败的点击次数;
M I2Vji$~$[010、Attempted Connections :尝试链接数;
3idcs/[3z B/f0hx\011、CS结构程序,由于一般软件后台通常为数据库,所以我们更注重数据库的测试指标:51Testing软件测试网a}q t0R&^
12、User 0 Connections :用户连接数,也就是数据库的连接数量;51Testing软件测试网w0t.E8_4m k{
13、Number of deadlocks:数据库死锁;
`w(j\&ebC'OGG014、Butter Cache hit :数据库Cache的命中情况51Testing软件测试网X6kH*Z1T4EN8j fj h
51Testing软件测试网h:nn7@b!SEL
当然,在实际中我们还会察看多用户测试情况下的内存,CPU,系统资源调用情况。这些指标其实是引申出来性能测试中的一种:竞争测试。什么是竞争测试,软件竞争使用各种资源(数据纪录,内存等),看他与其他相关系统对资源的争夺能力。
AR@`Uq0性能测试的流程步骤
-Ou.}*su$t;YLPu0和做其他的测试没有什么区别,做性能测试也要如下步骤来做:51Testing软件测试网y \#fGj;^*sw[
1、测试需求分析
'A N(w5L-d)tN)SYkK02、测试设计51Testing软件测试网)w?}I#^^!ll:_C
3、测试脚本开发
m_aY5op/Suz04、测试实施
:aO ls R%tm05、测试结果分析
yYjv W;d.yG0 测试需求分析,性能测试(或者其他的测试)做的好与坏完全取决于测试分析做得好不好。软件最终始要被应用的,要在应用的实践中考验,所以,任何类型的测试分析都要以实际业务的要求为依据。那么,性能测试的测试需求分析都需要分析哪些内容呢?
,o8Em$lk%f9tH01、性能测试的需求来源。客户需求和期望,实际业务需求,系统需求。