[发明专利]一种测试用的压力生成方法及装置有效
申请号: | 201110235266.0 | 申请日: | 2011-08-16 |
公开(公告)号: | CN102955721A | 公开(公告)日: | 2013-03-06 |
发明(设计)人: | 崔峥 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F11/22 | 分类号: | G06F11/22;G06F11/36 |
代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 苏培华;赵娟 |
地址: | 英属开曼群岛大开*** | 国省代码: | 开曼群岛;KY |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 测试 压力 生成 方法 装置 | ||
技术领域
本申请涉及服务端性能测试的技术领域,特别是涉及一种测试用的压力生成方法,以及,一种测试用的压力生成装置。
背景技术
性能测试是指,通过生成大量并发和高频率的请求,发送给服务端处理,以使服务器的系统资源处于高压、高饱和状态,从而判断该系统的稳定性和处理能力,并产生数据以供分析。服务端是一种以接口或协议的形式对外提供服务的系统或装置,比如,HTTP服务器HTTPD,Nginx,或如,数据库服务器Oracle,Couchdb,Redis等。
服务端的性能测试是指,通过压力生成装置产生大量高并发高频率的访问请求对服务端进行访问,让服务端在长时间高负载情况下运行,检查系统运行正确性、稳定性以及系统资源消耗的测试方法。其区别于UI性能测试、客户端性能测试等。
服务端的性能测试一个重要的纬度就是被测试服务器能够支持最高的并发访问数,即在同一个时间点上,大量的请求同时到达,此时服务端处理这些请求的能力,具体可以表现为处理速度,响应时间以及出错率。
假设被测试服务端比较慢,但足够稳定,那么理论上的测试结果应该是,处理速度不够快导致高并发请求没有马上都得到反馈,而是每个请求陆续收到应答包,并且导致每个请求的响应时间长短不一,但出错率很低或者为零。以上结果是通过一个性能测试系统来执行测试所得到的结果,因此这个性能测试系统必须能够在理论上同一时间点发出大量请求,以形成高并发的压力。
然而现有技术中的性能测试系统存在如下问题:
第一,现有的性能测试通常采用单进程单线程方式,或单进程多线程方式,生成的并发要么不是真正的并发,要么效率很低无法生成很高的并发,比如:
1、单进程单线程:这种压力生成模型都是通过在一个线程中,通过循环多次建立起多个测试系统和被测试服务端的socket连接,把这些连接放到一个数组中,再遍历这个数组,每次得到一个socket后,对这个socket发送业务请求。这种模型产生的压力在一个时间点上其实只有一个并发,因为它的socket建立以及请求的发送都是顺序的,所以不是真正意义上的高并发压力生成模型。
2、单进程多线程:这种压力生成模型是在一个进程中生成多个子线程,每个子线程执行建立socket然后发送业务请求,理论上这些子线程是并发生成的请求,但由于压力的生成是在一个进程内完成的,所以无法生成很高的并发。
因此,目前需要本领域技术人员解决的一个技术问题就是,如何创造性地提出一种测试用的压力生成机制,用以形成真正的高并发的压力,为服务端性能测试提供高并发高频率的访问请求。
发明内容
本申请所要解决的技术问题是提供一种测试用的压力生成方法,用以形成真正的高并发的压力,为服务端性能测试提供高并发高频率的访问请求。
本申请还提供了一种测试用的压力生成装置,用以保证上述方法在实际中的应用及实现。
为了解决上述问题,本申请公开了一种测试用的压力生成方法,包括:
获取测试参数信息,所述测试参数信息包括测试需求信息和测试业务逻辑;
主进程根据所述测试需求信息产生相应数量的子进程;
各子进程分别生成指定数量的子线程;
各子线程同时执行所述测试业务逻辑。
优选的,所述测试需求信息包括:预设的并发数NUM和预先配置的子进程所含子线程数m,所述主进程根据所述测试需求信息产生相应数量的子进程的步骤包括:
主进程根据所述预设的并发数NUM和预配置的子进程所含子线程数m,通过以下公式计算需要产生的子进程数量n:
n=NUM/m;
判断n是否为整数,若是,则确定所述子进程数量为n;若否,则确定所述子进程数量为n+1,并配置所述新增子进程中所含子线程数为NUM/m的余数;
主进程依据所述确定的子进程数量,生成相应数量的子进程。
优选的,所述各子进程分别生成指定数量的子线程的步骤为:
各子进程依据所述预先配置的子线程数或主进程配置的子线程数,对应生成相应数量的子线程。
优选的,所述测试业务逻辑中包括测试业务逻辑函数,所述测试业务逻辑函数包括初始化init函数,执行act函数和结束end函数;所述子线程通过以下子步骤执行所述测试业务逻辑:
执行init函数,完成当前子线程的初始化操作;
执行act函数,由当前子线程循环产生业务请求;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110235266.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:建立至少二装置间连接及身份关系的方法及控制装置
- 下一篇:页面推荐装置及方法