技术开发 频道

产品性能测试

【IT168 技术文章】

    项目的情况简介:

    项目属于客户端/服务端模式产品,要求每个服务端能支持连接500个客户端

    测试环境简介:

    服务端支持三级连接模式,每个服务端能支持连接500个客户端,总要求支持大约5000个客户端。

    测试的过程描述:
   
    在测试实验室中,只能搭建10个客户端的环境以及三级连接的环境。服务端初次连接客户端后,客户端会保留服务端的IP地址。下次客户端机器启动时,会自己连接服务端。每次连接属于短连接。在产生事件时,客户端会自己上报给服务端。

    测试过程遇到的问题:

    在实验室中测试系统稳定可用,但在用户那里遇到服务端异常退出。

    问题分析:

    客户端同时大量上报事件时,服务端处理出问题,导致系统异常退出。

    希望寻求的帮助:
   
    如何模拟多客户端问题?如何进行产品的性能测试?如何保证产品的稳定性?

    相关分析

    分析一:

    分析内容:
   
    很简单,这种情况,用loadrunner最合适了,用loadrunner这种压力测试工具,模拟多用户环境,不知道你们是用什么语言开发,如果是java的甚至可以利用loadrunner的Tunning组件,达到代码级的调优。如果是C#.net,那很要等啦,Mercury同意支持C#.net,但支持版本还没有出来。我在给你个建议,找个系统整合专家,看看是不是他们的网络有问题,或者是服务器没有调试好。有时候,机子CPU多,没有调试好,可能大量的CPU资源用于频繁的调度,而造成系统异常。有时候,还要改进算法。这种系统调试最麻烦了!

    分析二:

    分析内容:

    个人意见:对这个问题的分析应该考虑两个层次:

    1、解决现有问题的层次;

    2、探讨测试不充分问题产生的根源并从根源上避免此类问题的发生。

    这个问题本身是比较好解决的,在现场出现问题后,我们要做的是利用实验室的环境(或者现场的环境)确定问题产生的原因,从例子的描述来看,应该是在客户端大量建立连接时服务端无法支持,产生异常退出。对该问题的定位可以用LR等性能测试工具(或是自己编写的工具)模拟进行大并发量的突发连接测试,并据此给出改进的方法。

    其次我们还应该探讨测试不充分问题产生的根源。在这个例子中,由于设备不足够,可能根本就没有进行压力和负载测试,这本身就留下了隐患。其次,作为测试负责人,对这种项目的经验不足,一般来说,基于短连接方式的C/S结构应用最大的可能出问题的地方就是大量用户同时进行连接操作,即使没有环境在实验室中进行测试,也必须把这个作为一个大的项目风险列出,要求在交付最终用户使用前进行这类测试。

    主要分析

    本案中,作者的描述有些歧义:

    1、“三级连接模式”,不知道是不是有服务器,有端站,有客户端的模式,还是采用了服务器集群,多台服务器分三级级连。

    2、“每个服务端能支持连接500个客户端,总要求支持大约5000个客户端。”

    3、“服务端初次连接客户端,”这个不知道是不是应该是“客户端初次连接服务端”,而书写的当时,思维太快了,手没跟上,请教开发工程师都说“一般都是客户端去连接服务端的“拉”模式,而极少服务端向客户端“推”的模式。”

    4、“在产生事件时,客户端会自己上报给服务端”,不知道是不是以发送日志文件的形式上报。

    5、“在实验室中测试系统稳定可用”,实验室中测试是不是只有10个端站的情况下,而并没有采用任何的测试工具来做模拟端站和用户,已达到实际需要的量级。

    6、“下次客户端机器启动时,会自己连接服务端。”这个连接,是指自动登录还是会同步数据或者仅是网络连接?

    所以,对于本案编者只能按照性能测试的一般做法做一个介绍,不能详细的分析本案为什么会出现了不稳定运行的状况了,希望能对本案作者及遇到相同问题,或者准备做性能测试的同行们有所启发。

    首先,我们为什么做性能测试呢?
    性能测试的目的:

    一、评估系统的能力,测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的数据处理能力,并帮助作出决策。

    二、识别体系中的弱点:受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。

    三、系统调优:重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中的隐含的问题或冲突。

    四、验证稳定性(resilience)可靠性(reliability):在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。

    性能测试类型包括:

    负载测试:负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担。
   
    强度测试: 强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况。
   
    容量测试:确定系统可处理同时在线的最大用户数

0
相关文章