本申请提供了一种测试用的压力生成方法及装置,其中,所述方法包括:获取测试参数信息,所述测试参数信息包括测试需求信息和测试业务逻辑;主进程根据所述测试需求信息产生相应数量的子进程;各子进程分别生成指定数量的子线程;各子线程同时执行所述测试业务逻辑。本申请可以形成真正的高并发的压力,为服务端性能测试提供高并发高频率的访问请求。
【技术实现步骤摘要】
本申请涉及服务端性能测试的
,特别是涉及一种测试用的压力生成方法,以及,一种测试用的压力生成装置。
技术介绍
性能测试是指,通过生成大量并发和高频率的请求,发送给服务端处理,以使服务器的系统资源处于高压、高饱和状态,从而判断该系统的稳定性和处理能力,并产生数据以供分析。服务端是一种以接口或协议的形式对外提供服务的系统或装置,比如,HTTP服务器 HTTPD, Nginx,或如,数据库服务器 Oracle, Couchdb, Redis 等。服务端的性能测试是指,通过压力生成装置产生大量高并发高频率的访问请求对服务端进行访问,让服务端在长时间高负载情况下运行,检查系统运行正确性、稳定性以及系统资源消耗的测试方法。其区别于UI性能测试、客户端性能测试等。服务端的性能测试一个重要的纬度就是被测试服务器能够支持最高的并发访问数,即在同一个时间点上,大量的请求同时到达,此时服务端处理这些请求的能力,具体可以表现为处理速度,响应时间以及出错率。假设被测试服务端比较慢,但足够稳定,那么理论上的测试结果应该是,处理速度不够快导致高并发请求没有马上都得到反馈,而是每个请求陆续收到应答包,并且导致每个请求的响应时间长短不一,但出错率很低或者为零。以上结果是通过一个性能测试系统来执行测试所得到的结果,因此这个性能测试系统必须能够在理论上同一时间点发出大量请求,以形成高并发的压力。然而现有技术中的性能测试系统存在如下问题第一,现有的性能测试通常采用单进程单线程方式,或单进程多线程方式,生成的并发要么不是真正的并发,要么效率很低无法生成很高的并发,比如I、单进程单线程这种压力生成模型都是通过在一个线程中,通过循环多次建立起多个测试系统和被测试服务端的socket连接,把这些连接放到一个数组中,再遍历这个数组,每次得到一个socket后,对这个socket发送业务请求。这种模型产生的压力在一个时间点上其实只有一个并发,因为它的socket建立以及请求的发送都是顺序的,所以不是真正意义上的高并发压力生成模型。2、单进程多线程这种压力生成模型是在一个进程中生成多个子线程,每个子线程执行建立socket然后发送业务请求,理论上这些子线程是并发生成的请求,但由于压力的生成是在一个进程内完成的,所以无法生成很高的并发。因此,目前需要本领域技术人员解决的一个技术问题就是,如何创造性地提出一种测试用的压力生成机制,用以形成真正的高并发的压力,为服务端性能测试提供高并发高频率的访问请求
技术实现思路
本申请所要解决的技术问题是提供一种测试用的压力生成方法,用以形成真正的高并发的压力,为服务端性能测试提供高并发高频率的访问请求。本申请还提供了一种测试用的压力生成装置,用以保证上述方法在实际中的应用及实现。为了解决上述问题,本申请公开了一种测试用的压力生成方法,包括获取测试参数信息,所述测试参数信息包括测试需求信息和测试业务逻辑;主进程根据所述测试需求信息产生相应数量的子进程;各子进程分别生成指定数量的子线程;各子线程同时执行所述测试业务逻辑。优选的,所述测试需求信息包括预设的并发数NUM和预先配置的子进程所含子线程数m,所述主进程根据所述测试需求信息产生相应数量的子进程的步骤包括主进程根据所述预设的并发数NUM和预配置的子进程所含子线程数m,通过以下公式计算需要产生的子进程数量η :n = NUM/m ; 判断η是否为整数,若是,则确定所述子进程数量为η ;若否,则确定所述子进程数量为η+1,并配置所述新增子进程中所含子线程数为NUM/m的余数;主进程依据所述确定的子进程数量,生成相应数量的子进程。优选的,所述各子进程分别生成指定数量的子线程的步骤为各子进程依据所述预先配置的子线程数或主进程配置的子线程数,对应生成相应数量的子线程。优选的,所述测试业务逻辑中包括测试业务逻辑函数,所述测试业务逻辑函数包括初始化init函数,执行act函数和结束end函数;所述子线程通过以下子步骤执行所述测试业务逻辑执行init函数,完成当前子线程的初始化操作;执行act函数,由当前子线程循环产生业务请求;在当前产生业务请求的时间达到了预置的业务执行时长,或者,当前产生的业务请求达到了预置的请求次数时,则执行end函数结束当前子线程,并通知相应的子进程当前子线程执行完毕。优选的,所述的方法,还包括主进程等待其所产生的每个子进程结束后,根据所述子进程的运行结果数据生成测试报告。优选的,所述的方法,还包括各子进程等待其所生成的每个子线程结束后,获取各子线程的测试业务逻辑的执行状态,并依据所述执行状态生成子进程的运行结果数据。优选的,所述主进程和子进程共享同一内存空间,并通过所述共享内存空间进行通信。优选的,所述子线程位于其所属子进程的私有内存空间,子线程之间通过其所属子进程的私有内存空间进行通信。本申请实施例还公开了一种测试用的压力生成装置,包括测试参数获取模块,用于获取测试参数信息,所述测试参数信息包括测试需求信息和测试业务逻辑; 主进程处理模块,用于由主进程根据所述测试需求信息产生相应数量的子进程;子进程处理模块,用于由各子进程分别生成指定数量的子线程;子线程处理模块,用于由各子线程同时执行所述测试业务逻辑。优选的,所述的装置,还包括测试报告生成模块,用于由主进程等待其所产生的每个子进程结束后,根据所述子进程的运行结果数据生成测试报告。与现有技术相比,本申请具有以下优点首先,本申请在测试时使用多进程多线程的压力生成机制,可以利用多个进程的资源,在每个进程内部再生成大量的线程,从而能为服务端性能测试提供高并发高频率的访问请求,实现真正的高并发策略。其次,现有的性能测试机制将并发的生成和压力业务逻辑的实现绑定在一起,导致用户必须要负责实现高并发的代码,也要实现业务逻辑的代码,增加了工作量和学习成本。而本申请将高并发生成的代码抽象出来,成为一个独立的模型。用户仅需通过几个函数指针,将实现的业务逻辑提交至本模型,本模型就可以将这些业务逻辑代码变成高并发的请求,实现压力的生成。在实际应用中,本申请可以使用户不必关注并发压力的生成逻辑,而只需关注如何实现业务逻辑,大大简化了用户的使用成本。最后,基于本申请可以实现一种通用的服务端性能测试机制,该机制无需关心业务的实现细节,可以将测试系统与被测试业务解藕,使得用户不必每次做一个性能测试就要实现一套性能测试系统,而仅需关注于业务的实现和场景的设计,并发压力的生成则由这套通用的测试机制来完成,从而提高了代码重利用率。附图说明图I是本申请的一种测试用的压力生成方法实施例一的流程图;图2是本申请中所指主进程、子进程和子线程的关系示意图;图3是本申请中所指进程内存空间的示意4是本申请的一种测试用的压力生成方法实施例二的流程图;图5是本申请的一种测试用的压力生成装置实施例的结构框图。具体实施例方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。本申请的主要思想包括使用多进程多线程的机制,利用多个进程的资源,在每个进程内部生成大量的线程,从而实现真正的高并发。参考图1,其示出了本申请的一种测试用的压力生成方法实施例一的步骤流程图,具体可以包括如下步骤步骤101、获取测试参本文档来自技高网...
【技术保护点】
一种测试用的压力生成方法,其特征在于,包括:获取测试参数信息,所述测试参数信息包括测试需求信息和测试业务逻辑;主进程根据所述测试需求信息产生相应数量的子进程;各子进程分别生成指定数量的子线程;各子线程同时执行所述测试业务逻辑。
【技术特征摘要】
【专利技术属性】
技术研发人员:崔峥,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。