性能测试指标

来源:互联网 发布:网络社交 人肉搜索 编辑:程序博客网 时间:2024/05/16 08:26

性能测试主要的目标是,发现性能问题,进而定位问题,然后协助开发解决问题。
性能测试需要做的前期工作:产品功能书,性能需求说明书。
明确性能测试指标:
1,通用指标(指Web应用服务器,数据库服务器必须测试项):
ProcessorTime:服务器CPU占用率,一般平均达到70%,服务就接近饱和
Memory Available Mbyte:可用内存数,如果测试时发现内存有变化情况也要注意,如果是内存泄露泽比较严重PhysissdiskTime:物理磁盘读写时间情况;

2,Web服务指标:
avg rps:平均每秒钟响应次数=总请求时间/秒数;
avg time to last byte per terstion(mstes):平均每秒业务脚本的迭代次数
Successful rounds:成功的请求
failed rounds:失败的请求
successful hits:成功的点击次数
failed hits:失败的点击次数
hits per second:每秒点击数
successful hits per second:每秒成功的点击数
failed hits persecond:每秒失败的点击数量
attempted connections:尝试链接数
3,数据库服务指标:
user connections:用户连接数,数据库的连接数量;
number of deadlocks:数据库死锁
butter cache hit:数据库cache的命中情况
这些都是通用指标,对于不同的应用你还必须作相应的调整
流行的定性测试工具有
loadrunner:全面,多协议
WAS:微软技术支持较好,支持分布式机集群测试
ACT:微软技术支持较好,与.net集成比较好,支持viewstate(.net控件下缓存的支持)


注意:
测试要不断根据系数的测试目标进行变化,一开始系统很大,就要分成几个子系统,明确子系统性能目标,主要是并发指标的一个最高值。同时要设定与系统相关测试参数,应用服务器,数据库服务器都要有,对达不到最高值的与一些通用参数有问题的子系统进行深入分析,比如他们的并发达不到你的要求,证明子系统性能有问题,或者说数据库库用户连接过高,程序没有释放用户等。这个我们要对子系统进行详细测试,由于b/s结构下,图片的请求对性能的影响比较大,所以我们要分2个部分进行性能测试:
1,非程序部分,也就是图片
2,应用程序本身。
通过事物或者函数分离,可以把这2块单独测试,具体做法参数各个工具手册。
对于子系统的测试参数的设置要求则更高,它有助于你后面精确定位问题。
比如死锁,异常,网络流量等,也要注意测试参数的收集对系统性能影响比较大。测试参数不要超过10个
数据库数据量会很大程度影响性能,所以要根据性能需求说明书向数据库中
模拟相应的数据量,进行测试。这样提高可信度。

分析
要求比较高,一般要求测试人员与程序员配合完成,
问题一般分为几种:
性能达不到指标;
性能达到指标,但是有其他问题,异常,缓存命中率低,网络流量较大
服务器稳定性问题,比如内存泄露。
要发现这些问题,必须借助性能分析工具和优化工具,微软的有自己研发。
笔者推荐rose下的purify和quantify(支持JAVA,C++,.NET),它很专业。


性能优化
原则:时间比例最大优化,原来30秒,现在3秒,提升27秒。
性能优化过程:先数据库,后程序,因为风险小,借助quantify一路分析,
数据库分析原则,是先索引,后存储过程,最后表结构视图优化。
分析工具推荐:SQLProfile,SQL查询分析器。

测试人员要做的是分析函数的执行时间是否过长,函数执行过多。异常过多。某个循环过多。
内存分析是长期过程,要做好不容易,内存分析最好是放在
单元测试之中同步进行。这种问题一般是服务器运行很长时间才暴露。
分析原则采用子系统互相独立运行,找到问题最小系统集。
或者借助内存分析工具观察内存对象情况,初步定位问题。再用Purify进行运行时分析,通常是C++比较多,JAVA和.net比较少,一般是由GC不合理引起的。
C++内存错误比较多,主要常见有
1,array bounds read(ABD):数据越界读
2,array bounds write(abw):数组越界写
3,beyond stack read(bsd):堆栈越界读
4,free memory read(fmr):空闲内存读
5,invalid pointer read:非法指针阅读
6,null pointer read: 空指针阅读
7,uninitialized memory read:未初始化阅读
8,memory leak:内存泄露

为什么单元测试做内存分析好:
单元测试是单一功能,这时候结合测试用例做内存分析可以更快的定位问题。 

原创粉丝点击