CN103379000B - 一种并发测试方法及测试服务器 - Google Patents
一种并发测试方法及测试服务器 Download PDFInfo
- Publication number
- CN103379000B CN103379000B CN201210132234.2A CN201210132234A CN103379000B CN 103379000 B CN103379000 B CN 103379000B CN 201210132234 A CN201210132234 A CN 201210132234A CN 103379000 B CN103379000 B CN 103379000B
- Authority
- CN
- China
- Prior art keywords
- time
- interface
- testing
- concurrent
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种并发测试方法及测试服务器,所述的方法包括:根据预先设定的测试服务器的访问接口种类和访问所述访问接口种类所对应的接口的单位时间,设置访问接口种类所对应的接口的测试单位时间;将测试单位时间划分为多个测试时间单元;选择至少一个所述测试时间单元,作为访问接口种类所对应的接口的并发测试用时间子单元;在选择的并发测试用时间子单元内,根据预先设定的测试服务器的在单位时间内访问所述访问接口种类所对应的接口的次数,访问访问接口种类所对应的接口。采用本申请提供的一种基于开放接口的流量测试方法及其测试服务器,以实现对开放接口进行时间临界点的高并发调用测试,进而提高测试精度,提高被测试平台运行可靠性。
Description
技术领域
本申请涉及互联网领域,具体来说,涉及一种并发测试方法及测试服务器。
背景技术
应用程序编程接口(ApplicationProgrammingInterface,API),也被称之为开放式接口,是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,但是又无需访问源代码或理解内部工作机制的细节。互联网API提供者可以制定自己的系统接口标准,当需要执行系统整合、自定义和程序应用等操作时,互联网API提供者面向的所有成员都可以通过该接口标准调用源代码,该接口标准被称之为开放式API。
开放式API基于互联网的应用正变得越来越普及,在这个过程中,有更多的站点将自身的资源开放给用户、第三方、开发者来调用。例如电子商务网站、服务提供网站等。在大型的互联网平台,由于其提供的服务类型较多,调用其提供的API的数量也会相应具备相当大的规模。这其中不可避免地存在高调用、高并发的情况,也就是说在某一时间段甚至某一时刻,同时有大量用户调用API平台内的同一种应用,这对于提供API的互联网系统是较大的考验。因此,在上线之前,处于安全和可靠性的目的,需要对提供新的API应用进行可靠性和流量控制测试,以实现精确控制访问次数和提高安全性的功能。
现有技术中例如通过加载运行器loadrunner对系统进行测试的方法,具体包括:虚拟用户生成器VuGen,用于捕获最终用户业务流程和创建自动性能测试脚本,也被称为虚拟用户脚本;控制器Controller,用于组织、驱动、管理和监控负载测试;负载生成器LoadGenerator,用于通过运行虚拟用户生成负载;以及分析器Analysis,用以查看、分析和比较性能结果。其原理是设定任意的一段时间,在这段时间之内创建成千上万的虚拟用户,对系统进行访问操作。
但是,实际上此技术复发控制虚拟用户在设定的这一段时间之内,访问系统的具体时间。对于访问过程是分散或者集中,很难判断。特别是在时间阈值临界点变换的状况,例如,设定的时间包含了跨越日期分界点的测试状态,很难确定并发是发生在临界点之前或者之后。此外,假定设定的测试时间是1小时,在这一小时之内对系统进行访问操作,实际上可能在前半小时就已经完成了并发访问,而前半小时是和临界点无关的。因此现有的loadrunner测试工具无法时间对于在时间阈值,也就是说在自然日期变更的临界时间点,或者是临界点并发的情况下,进行模拟测试,也不能准确对访问次数进行计数。
发明内容
本申请的目的是提供一种并发测试方法及测试服务器,以实现对提供开放接口的平台服务器进行时间临界点的高并发调用测试,进而提高测试精度,提高被测试开放平台服务器运行的可靠性。
为实现上述目的,本申请一方面提供了一种并发测试方法,包括:
根据预先设定的测试服务器的访问接口种类和访问所述访问接口种类所对应的接口的单位时间,设置所述访问接口种类所对应的接口的测试单位时间;
将所述测试单位时间划分为多个测试时间单元;
选择至少一个所述测试时间单元,作为所述访问接口种类所对应的接口的并发测试用时间子单元;
在所述选择的所述并发测试用时间子单元内,根据预先设定的所述测试服务器的在所述单位时间内访问所述访问接口种类所对应的接口的次数,访问所述访问接口种类所对应的接口。
本申请另一方面提供一种并发测试服务器,用于测试提供开放接口的被测试服务器,包括:
设置单元,根据预先设定的测试服务器的访问接口种类和访问所述访问接口种类所对应的接口的单位时间,设置所述访问接口种类所对应的接口的测试单位时间;
划分单元,将所述测试单位时间划分为多个测试时间单元;
选择单元,选择至少一个所述测试时间单元,作为所述访问接口种类所对应的接口的并发测试用时间子单元;
访问单元,在所述选择的所述并发测试用时间子单元内,根据预先设定的所述测试服务器的在所述单位时间内访问所述访问接口种类所对应的接口的次数,访问所述访问接口种类所对应的接口。
本申请提供了一种并发控制测试方法,通过将测试单位时间进一步切分为多个测试时间单元,并且从中选定一个作为并发测试用时间子单元,在选定的这一个并发测试用时间子单元并发访问待测试的接口的方法,实现在临界点时间阈值对被测试服务器的API高并发访问,从而避免传统的测试方法中无法对待测系统进行基于时间的精确测试缺陷。
附图说明
图1为依据本申请一实施例的方法流程图;
图2为图1中的S101的详细流程图;
图3为根据本申请一实施例进行时间子单元切割的原理图;
图4为接口并发测试的详细流程图;
图5为依据本申请一实施例的测试系统架构图。
具体实施方式
下面通过附图和实施例,对本申请的技术方案做进一步的详细描述。
本申请提供一种并发控制测试方法,通过将测试单位时间进一步切分为多个测试时间单元,并且在多个测试时间单元选定一个作为并发测试用时间子单元,在选定的这一个并发测试用时间子单元并发访问待测试的接口的方法,实现在临界点时间阈值对被测试服务器的API高并发访问。
下面首先介绍本申请提供的方法所应用的系统架构,具体说包含提供开放接口API服务的被测服务器和在被测服务器正式上线之前对其进行流量测试的测试服务器。所述的被测服务器作为提供API的平台,在上线后提供API调用实体,其通过网络接口接入互联网,供访问该被测服务器的用户调用其提供的各种API开放接口。在上线之后,被测试服务器中的API应用将可能被大量调用,因此,在上线之前,需要对其进行测试,测试其承载能力、可靠性和稳定性。具体地说,本申请就是测试服务器在被测试服务器正式上线之前,根据预先设定的参数来设置所述访问接口种类所对应的接口的测试单位时间;在将所述测试单位时间划分为多个测试时间单元之后,选择其中一个,在这一个选定的时间片段内,根据预先设定次数,访问所述提供接口的开放平台服务器。测试其在产生大量调用的状况下,是否会出现系统崩溃,返回数据错误或者功能失常等问题,特别是在时间界限临界点的情况下。测试服务器则是在被测服务器正式接入互联网提供API之前,模拟大量用户同时调用被测服务器中某一个或者某几个API应用的状况,对其进行测试,之后查看测试结果,是否与预期值相符合,进而判断被测服务器的稳定性和可靠性。通过测试服务器的测试行为返回的结果,发现被测试服务器存在的问题,以进行优化,尽可能使得被测试服务器上线后能够提供稳定可靠的API调用平台服务。
图1是本申请一种实施例的方法流程图。在本例中执行主体为测试服务器,由图可见,该实施例提供的测试方法包括:
步骤S101,根据预先设定的测试服务器的访问接口种类、访问所述访问接口种类所对应的接口的单位时间,设置所述访问接口种类所对应的接口的测试单位时间;
步骤S102,将所述测试单位时间划分为多个测试时间单元;
步骤S103,选择至少一个所述测试时间单元,作为所述访问接口种类所对应的接口的并发测试用时间子单元。
步骤S104:在步骤S103中选择的所述并发测试用时间子单元内,根据预先设定的所述测试服务器的在所述单位时间内访问所述访问接口种类所对应的接口的次数,访问所述访问接口种类所对应的接口。
以下对每个步骤结合应用场景,进行进一步详细描述。
S101:根据预先设定的测试服务器的访问接口种类和访问所述访问接口种类所对应的接口的单位时间,设置所述访问接口种类所对应的接口的测试单位时间;
其中,测试服务器用来模拟用户,被测试服务器则是提供开放接口的网站服务器,例如淘宝、一淘、支付宝等网站的服务器。不同的测试服务器分别模拟不同的用户访问这些提供开放接口的网站服务器;同一测试服务器在不同的时间模拟不同的用户访问所述的网站服务器;或者同一测试服务器同时划分不同的测试模块以模拟不同的用户来访问所述网站服务器。在并发测试之间,需要为模拟不同用户访问所述网站服务器的测试服务器A、B、C等设定参数,例如,以测试服务器A、B、C分别模拟测试用户A、B、C。
这些参数包括不同的测试服务器的访问接口种类、不同测试服务器访问所述访问接口种类所对应的接口的单位时间、以及不同测试服务器的在所述单位时间内访问所述访问接口种类所对应的接口的次数。针对每个测试用户即测试服务器设定此次测试的访问接口种类,也就是被测试服务器允许该测试服务器访问的接口种类,该些接口种类对应一个或者一个以上的接口。不同测试服务器或者同一测试服务器上模拟的不同的测试用户所对应的测试模块来访问所述访问接口种类所对应的接口的单位时间通常具有不同的标准,例如1分,1秒或者1小时等。不同测试服务器的在所述单位时间内访问所述访问接口种类所对应的接口的次数则通常是具体的数字,例如5000、8000、1000等等。
不同的测试用户A、B、C之间设定的单位时间和访问次数,可以不同,也可以相同,例如A、C两个测试用户之间可以具有相同的调用类型,都是5000次/分。
同理,不同的测试用户A、B、C被设定的允许访问的接口,也可以完全不同,也可以部分相同。例如,A、C两个测试用户都被允许访问X接口,而B用户则只被允许访问Y接口。
具体地说,调用时间为每一个API被测试调用的单位时间,例如1秒、1分、1小时或者1天,而访问次数则是指单位时间内允许调用同一API的次数,例如,设定数值为5000次,则单位时间内允许调用此API开放接口5000次。调用类型实际上就是将访问次数和调用时间匹配起来,以分钟计或者以秒计算,例如,5000次/min是以一分钟为单位时间,也就是每分钟允许调用5000次同一API开放接口工具。
优选的,访问接口种类则可以通过请求封装类来体现,在一个请求封装类中包含多个用来确定API接口种类的参数,这些参数确定可调用的API接口,也就是说请求封装类决定了被测试的API接口。具体地,可以通过封装某一接口的入口地址等编程方法实现。
在具体应用中,可以以某购物网站为例,简要说明上述方法的一种应用场景。
该购物网站提供了一种具备批量修改商品价格功能的API接口,在该购物网站的不同商户,遇到节日或者其他的会员客户购买商品时,通常需要修改价格,通常是批量修改。而针对不同的商户,该购物网站给其的权限也不相同。例如,付费商户能够允许其在一分钟内修改10000次商品价格,而对于非付费商户,则只允许访问3000次或者小于付费商户权限的访问次数。在非付费商户访问次数超出其权限时,例如,访问第3001次时,给出提示信息,提醒其不能再访问,并给出相应的处理措施。具体的处理措施例如是一段时间不能执行修改价格的操作等等。那么诸如此类的API工具,在上线之前,需要对在API正式上线之前,对提供API的开放平台的服务器进行测试,提供API的开放平台,就是被测试服务器。测试被测试服务器在临界点阈值产生高并发的情况下,是否会出现期望值的结果,以及统计数值是否准确等。
在此应用场景中,此次设定的测试用户A作为非付费商户,其调用类型就是5000次/分,允许测试用户访问的API接口就是此价格修改工具,可通过请求封装类中设置对应该价格修改工具API的入口参数实现。
而C测试用户作为付费商户,其调用类型为11000次,其被允许访问的接口,同样为价格修改工具,同理,在针对C测试用户的tip请求封装类设置对应该价格修改工具API的入口参数实。
请参考图2,其为依照预先设定的参数,来设置访问所述访问接口种类对应的接口的测试单位时间的详细流程图,具体包括:
在步骤S201中,根据被测试服务器的当前时间所对应的标准时间,将测试服务器的当前时间同步为标准时间;
该步骤的目的是,使被测试服务器和测试服务器之间的时间精确一致,以达到精确控制临界点的目的。测试服务器首先获取到被测试服务器的所述当前时间,然后将测试服务器的当前时间调整到与其一致。
优选的,为确保测试的准确性,将测试服务器的当前时间,与所述被测服务器的所述所在时区的标准时间进行同步,以获得所述测试服务器的标准时间。例如,在中国则将服务器时间转化为东八区的区时,相应在美国纽约则转化为西五区的区时。
在步骤S202中,将所述测试服务器进行所述同步后获得的所述标准时间转换为绝对时间。
由于在服务器获取的时间是一个标准时间,也就是显示的日、时、分。而在测试时,通常采用精确到毫秒的绝对时间,因此需要将标准时间转化为相对于通用标准的绝度时间,且精确到毫秒。具体地,在计算机领域,绝对时间是指从1970年1月1日0时0分0秒到现在的毫秒数。关于绝对时间的概念,为现有技术,不多赘述,所属领域的技术人员应当理解。
如果能够在步骤S201中直接获取到被测试服务器的绝对时间,则可以将绝对时间的转化计算步骤省略。
在步骤S203中,按照预先设定的测试服务器访问所述访问接口种类所对应的接口的单位时间,从所述绝对时间中选取一段时间设置为所述测试单位时间。
具体的说,通常在准备测试的时刻并不一定是一个测试单位时间的起始时间,特别是对于日期变更的临界时刻,例如23点59分,通常是在开放平台API接口调用中,容易出现混乱的时刻。为此,选取一个测试单位时间,就在此准确的单位时间内对时间进行测试。例如单位时间为1分钟,也就是60秒,60000毫秒。从所述绝对时间中选取一段与所述单位时间相同长度的绝对时间,设置为所述访问接口种类所对应的接口的所述测试单位时间。也就是说,在预先设定的单位时间为1分钟的情况下,可以将测试单位时间直接选定为对应23点59分至24点00分的这60000毫秒作为一个测试单位时间。
结合前述的应用场景,测试服务器获取到所述的购物网站服务器的标准时间,然后将测试服务器的时间调整到与其同步,并且将服务器时间转化为东八区的区时。之后将标准时间转化为服务器以毫秒为单位的绝对时间。在此应用中,由于设置的测试用户A的调用类型为5000次/分,C测试用户的调用类型为11000次/分,那么针对测试用户A和测试用户C选定的这一个单位时间,就是从服务器时间中划分出连续的60000毫秒,将这60000毫秒作为测试用户A和C访问价格修改工具的一个单位时间。而这60000毫秒的起始点,则优先选定标准时间为24点59分00秒对应的服务器绝对毫秒时间,在这一个单位时间内模拟两测试用户A和C对价格修改工具进行高并发访问。
S102:将测试单位时间划分为多个测试时间单元;
其中,将所述测试单位时间划分为并发测试休眠时间子单元和所述并发测试用时间子单元,其架构如图3所示。具体的说,将测试单位时间划分为不允许线程调用进程访问待测试接口的并发测试休眠时间子单元和允许线程调用进程访问待测试接口的并发测试用时间子单元。
优选的,每个并发测试用时间子单元的长度相同,两个并发测试用时间子单元之间的间隔也均匀,间隔一个并发测试休眠时间子单元。同理,每个并发测试休眠时间子单元的长度也相同,两个并发测试休眠时间子单元之间间隔一个并发测试用时间子单元。但是并不作为限制,也可以并发测试用时间子单元的长度不平均,两并发测试用时间子单元的间隔也不相同,两者之间可间隔两个或者两个以上的并发测试用时间子单元。
划分的数目可以参照测试精度进行设定,例如,设定一个单位时间为1分钟,那么通常将其划分为10个以上的子单元。但是,划分的时间子单元的个数可以根据需求设定,例如,200个或者更多,但是划分越多,控制则更为复杂。优选地,选择将一个并发测试用单位时间划分为100个子单元,也就是50个并发测试休眠时间子单元和50个并发测试用时间子单元,每个子单元时长为600毫秒。
这些时间子单元也就是时间间隙,在并发测试休眠时间子单元内不能访问开放平台接口,而任意一个并发测试用时间子单元可以作为进行测试并发的时间范围。例如,每个并发测试用时间子单元持续的时间长度就是一个进行并发测试的时间范围。
结合前述的应用场景,将23:59至24:00分这60000毫秒的时间进行时间子单元切割,切割成100个600毫秒的时间子单元,该些时间子单元又彼此间隔地被分成并发测试休眠时间子单元和并发测试用时间子单元。测试服务器模拟A测试用户在并发测试用时间子单元中的一个,依照调用类型对允许访问的接口进行高并发访问的操作,例如,对价格修改工具API在600毫秒的并发测试用时间子单元中进行高并发访问该价格修改工具的测试,在一个600毫秒的时间内访问5000次。
优选地,对一个并发测试用单位时间的时间子单元切割通过以下的代码实现,但此代码仅作为举例,并不作为限制,因为所述领域的技术人员能够依据此段代码的立意,变换为其他机器语言的代码,在此不加赘述。
在步骤S103中,选择至少一个所述测试时间单元,作为所述访问接口种类所对应的接口的并发测试用时间子单元。
在一个测试服务器只模拟一个测试用户访问一个接口时,在前一步骤中划分出的并发测试用时间子单元中选定其中之一,作为进行并发测试的测试用时间子单元。例如选定50个并发测试用时间子单元中的第50个作为测试用时间子单元,在后续的步骤中,在50号并发测试用时间子单元中对接口并发测试。
在这种形态下,最佳的测试过程是在一个单位时间中的最后一个并发测试用时间子单元,也就是第50个并发测试用时间子单元,发起全部的5000次访问接口操作。但是,也可以将这5000次访问,分为几组访问,例如分成3组。一组1000次、一组2500次,一组1500次,分别在一个单位时间内的几个不同的并发测试用时间子单元内,执行访问操作,这样最终的结果也是在一个单位时间内完成5000次并发访问。
而对于测试用户C,则可以选定与测试用户A相同的或者不同的并发测试用时间子单元,执行11000次的并发访问操作。与测试用户A类此,较佳地,在一个并发测试用时间子单元内,执行全部11000次并发访问。也可以将11000次访问,分为几组,在不同的线程时间子单元执行访问价格修改工具的操作,不多赘述。
在同一测试服务器划分为模拟不同测试用户的若干个测试模块的情况下,不同的测试模块可以在一个测试单位时间内的不同并发测试用时间子单元进行并发访问,也可以在同一个并发测试用时间子单元执行访问。
最后,在步骤S104中,选择的所述并发测试用时间子单元内,按照预先设定的测试服务器在所述单位时间内访问所述访问接口种类所对应的接口的次数访问所述访问接口种类所对应的接口。
具体地,请参考图4,接口并发测试通过以下的步骤实现:
在步骤S401中,注册线程池。
首先对线程池做简单的描述。线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。
应用程序可以有多个线程,这些线程在休眠状态中需要耗费大量时间来等待事件发生。其他线程可能进入睡眠状态,并且仅定期被唤醒以轮循更改或更新状态信息,然后再次进入休眠状态。为了简化对这些线程的管理,.NET框架为每个进程提供了一个线程池,一个线程池有若干个等待操作状态,当一个等待操作完成时,线程池中的辅助线程会执行回调函数。线程池中的线程由系统管理,程序员不需要费力于线程管理,可以集中精力处理应用程序任务。
通常每个线程池包含的线程数和系统处理器的内核数有关,例如4核的处理器则注册5个线程。线程可以不断被开启,开启后的线程可以调用进程访问API开放接口。
在注册线程池之后,透传封装数据传送协议。具体地,也就是建立被测试服务器和测试系统之间的网络传输过程。优选的,传入封装的httpclient访问协议。
在步骤S402中,设置线程来访问所述访问接口种类所对应的接口时的并发点,所述并发点对应于所述测试服务器在所述单位时间内访问所述访问接口种类所对应的接口的次数。
为了达到高并发访问API的结构,通常设置并发点,也就是说当线程数目达到一定的数值以后才将其释放调用进程,进程访问API开放接口开放平台。而线程是不断开启的,那么就需要等待,开启的线程数达到并发点之后,在进行并发调用进程的操作。并发点的数目与设定的访问次数有关,也就是说和设置的单位时间访问次数相关,例如对于测试用户A设置5000次/min,那么并发点就选择5000;对于测试用户C设置11000次/min,那么并发点就是11000。
而在前述的,将一次测试访问次数分为几组测试的情况下,则可以分别设置几组并发点,在分别选定的并发测试用时间子单元计数。例如,将测试用户A的一次测试,分为3组的情况,则由三个并发点1000、2500和1500。
在步骤S403中,所述线程池持续开启所述线程,直至所述开启的线程的数量达到测试服务器在所述单位时间内被允许访问所述访问接口种类所对应的接口的次数。线程池不断开启新的线程,达到并发点设置的数值之后,全部的线程并发调用进程。
之后在步骤S404中,所述线程调用进程在选定的所述并发测试用时间子单元内,以所述次数来访问所述访问接口种类所对应的接口,达到并发的效果。
结合上述的应用场景,在此步骤中,在被测的购物网站平台服务器和测试服务器之间传输httpclient访问协议,设定的线程所调用的进程访问的API就是该购物网站提供的价格修改工具API,对于测试用户A,并发点为5000,在开启的线程数目达到5000的时候,启动全部线程调用进程在选定的50号并发测试用时间子单元持续的600毫秒的时间内访问价格修改工具API,测试该购物网站服务器的承受力。
对于测试用户C,并发点为11000,在开启的线程数目达到11000的时候,启动全部线程调用进程在选定的49或者50号并发测试用时间子单元持续的600毫秒的时间内访问价格修改工具API,测试该购物网站服务器的承受力,不加赘述。
在并发访问之后,通常需要关注并发测试的结果。
高并发访问API的测试结果可能包括以下的结果,例如,需要获取某个商户的名称,执行此高并发访问是否符合其权限,如果符合,那么临界点条件下调用功能是否正常;如果不符合其权限,是否给出了提示信息,并执行惩罚措施。具体地,在价格修改工具API上线之前,网站运营者设定的C付费商户允许每分钟访问10000次该价格修改工具API,A非付费商户允许每分钟访问3000次该价格修改工具API,在A商户超过3000的访问次数再次访问时,其不能成功访问,且系统报错,并对其进行处罚。此次测试就以A商户的权限进行测试,若以5000次/分调用时,观察是否出现报错信息,以及相应的惩罚措施,若是则证明是可靠的,特别是在日期转换的临界点,进行可靠性测试。
同理,对于C测试用户,以11000次/分调用时,观察是否出现报错信息,以及相应的惩罚措施,若是则证明是可靠的,特别是在日期转换的临界点,进行可靠性测试。
通常在测试之前都会设定期望值,如果测试结果与期望值相符,则证明该购物网站平台的价格修改工具是可靠的,如果与测试期望值不相符,则需要对平台进一步优化,以实现可靠性测试。优化后,再进行测试,直至满足测试期望值。
假定对于A测试用户的此次并发测试,其结果是获得的测试反馈,与预期值相符,那么可以判断针对A测试用户所属的权限类型是可靠的。而C测试用户的此次并发测试,其结果是获得的测试反馈,与预期值不相符,那么可以判断针对C测试用户所属的权限类型是不可靠的,需要对开放平台进行进一步优化。
上述的方法,应用在在提供开放接口API的开放平台服务器上线之前,可以实现对提供开放接口的服务器,进行临界点精确流量测试,解决了现有的loadrunner测试工具不能在时间阈值,也就是临界点并发的情况,提高了对提供开放接口的开放平台的测试精确度,有助于更精确地优化开放平台服务器,提供更可靠的服务。
需要指出的是,当有多个测试服务器时分别模拟不同的用户进行测试时,假定这些不同的测试服务器预先设定的访问所述访问接口种类对应的接口的单位时间相同,例如,测试服务器A和测试服务器M的单位时间都是1分钟。那么不必要每个测试服务器都执行一次测试时间单元选定的设定和划分步骤。在其中一个测试服务器选定了测试单位时间之后,通知其它的测试服务器。其余的测试服务器就可以共享着一段测试单位时间。例如,如果某个服务器已经通过步骤S101和S102选定了选定的一个测试单位时间为60000毫秒,那么在选定的测试单位时间60000毫秒内,A和M两测试服务器都能够进行测试。
相应的,本申请还提供一种并发测试服务器20,用于测试提供开放接口的被测服务器10,其一个实施例的架构如图5所示。
所述流量控制测试服务器,包括:
设置单元,根据预先设定的测试服务器的访问接口种类和访问所述访问接口种类所对应的接口的单位时间,设置所述访问接口种类所对应的接口的测试单位时间;
划分单元,将所述测试单位时间划分为多个测试时间单元;
选择单元,选择至少一个所述测试时间单元,作为所述访问接口种类所对应的接口的并发测试用时间子单元;
访问单元,在所述选择的所述并发测试用时间子单元内,根据预先设定的所述测试服务器的在所述单位时间内访问所述访问接口种类所对应的接口的次数,访问所述访问接口种类所对应的接口。
在服务器的初始参数设定时,对进行此次接口进行测试的用户A、B、C等设定调用参数,也就是针对每个测试用户设定访问接口种类和访问访问接口种类对应的接口的单位时间以及单位时间内访问所述接口的次数。通过调用类型来体现,调用类型是用于限定测试用户单位时间内访问接口的次数。该调用类型是由调用时间和访问次数来决定的,具体为应用可参考前述,不加赘述。
之后,通过设置单元,设置访问所述访问接口种类对应的接口的测试单位时间中。
具体地,设置单元包括:
服务器时间获取单元,用于获取被测试服务器的系统时间;
时间轮转计算单元,用于设定需要访问开放平台的下一个单位时间。
优选的,所述设置单元还可以包括一时区转换单元,用以将获取到的被测试开放平台的系统时间转化为所在时区的标准时间。
同步测试服务器和被测试服务器的时间,目的是使得被测试服务器和测试服务器之间的时间精确同步,才能够达到精确控制临界点的目的。测试服务器首先通过服务器时间获取单元获取到被测试服务器的时间,然后将测试服务器的时间调整到与其同步。此外,为确保测试的准确性,通常需要通过时区转换单元将服务器时间转化为所在时区标准时间。例如,在中国则将服务器时间转化为东八区的区时,相应在美国纽约则转化为西五区的区时。
将标准时间转化为绝对时间。由于在服务器获取的时间是一个标准时间,也就是显示的日、时、分。而在测试时,通常采用精确到毫秒的绝对时间,因此需要将标准时间转化为相对于通用标准的绝度时间,且精确到毫秒。当然,如果能够在直接获取到被测试服务器的绝对时间,则无需在进行此转化步骤。
之后,通过时间轮转计算单元在绝对时间设定一个允许访问接口的测试单位时间,以在此测试单位时间内,对访问接口种类对应的接口进行测试。
划分单元包括:
单位时间分割单元,用以将一个单位时间分割为多个时间子单元。
具体地,将所述测试单位时间划分为并发测试休眠时间子单元和所述并发测试用时间子单元,其架构如图3所示。具体的说,将测试单位时间划分为不允许线程调用进程访问待测试接口的并发测试休眠时间子单元和允许线程调用进程访问待测试接口的并发测试用时间子单元。划分的数目可以依照测试精度进行设定,这些时间子单元也就是时间间隙,在并发测试休眠时间子单元内不能访问开放平台提供的接口,而任意一个并发测试用时间子单元可以作为进行测试并发的时间范围。例如每个并发测试用时间子单元持续的时间长度就是一个进行并发测试的时间范围。
具体时间子单元切割可通过前述的代码实现,但此代码仅作为举例,并不作为限制,因为所述领域的技术人员能够依据此段代码的立意,变换为其他机器语言的代码。
所述访问单元进一步包括:
线程池,其包含若干个等待操作状态的线程;
线程池管理器,其控制所述线程池中的线程开启,并在到达设定的数目时调用进程访问开放平台的API;
计数器,其计算线程开启的数目。
在前一步骤中划分出的并发测试用时间子单元中选定其中之一,作为进行并发测试的测试用时间子单元。例如选定50个并发测试用时间子单元中的第47个作为测试用时间子单元,在后续的步骤中,在47号并发测试用时间子单元中对接口并发测试。
通常每个线程池包含的线程数和系统处理器的内核数有关,例如4核的处理器则注册5个线程。线程可以不断被开启,开启后的线程可以调用进程访问API开放接口。
在注册线程池之后,透传封装数据传送协议。具体地,也就是建立被测试服务器和测试系统之间的网络传输过程。通常为传入封装的httpclient访问协议。
设置线程来访问所述访问接口种类所对应的接口时的对应的所述测试服务器在所述单位时间内访问所述访问接口种类所对应的接口的次数并发点。为了达到高并发访问API的结果,通常设置并发点,也就是说当线程数目达到一定的数值以后才将其释放调用进程,进程访问API开放接口开放平台。而线程是不断开启的,那么就需要等待,开启的线程数达到并发点之后,在进行并发调用进程的操作。并发点的数目与设定的调用类型有关,也就是说和设置的单位时间访问次数相关,例如设置5000次/min,那么并发点就选择5000。
线程池持续开启线程,计数器进行计时,直至线程数达到并发点对应的数值。线程池不断开启新的线程,达到并发点设置的数值5000之后,全部的线程并发调用进程。
之后在进程访问API,达到并发的效果。
优选的,所述的测试服务器还包括:
输出单元,用于将接收到的被测试服务器返回的测试结果输出。
最后,通过测试结果输出单元将接收到的开放平台返回的测试结果输出。
通过上述实施例提供的测试方法和测试服务器,其通过对时间片轮转的临界点时刻,产生高并发访问API的方案,能够实现在临界点时间阈值对待测系统的API高并发访问,对待测API开放平台的稳定性和可靠性进行测试,避免传统的测试方法中无法对待测系统进行基于时间的精确测试缺陷。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种并发测试方法,其特征在于,所述方法用于测试提供开放接口的被测试服务器,包括:
根据预先设定的测试服务器的访问接口种类和访问所述访问接口种类所对应的接口的单位时间,设置所述访问接口种类所对应的接口的测试单位时间;
将所述测试单位时间划分为多个测试时间单元;
选择至少一个所述测试时间单元,作为所述访问接口种类所对应的接口的并发测试用时间子单元;
在所述选择的所述并发测试用时间子单元内,根据预先设定的所述测试服务器的在所述单位时间内访问所述访问接口种类所对应的接口的次数,访问所述访问接口种类所对应的接口。
2.如权利要求1所述的并发测试方法,其特征在于,所述根据预先设定的测试服务器的访问接口种类和访问所述访问接口种类所对应的接口的单位时间,设置所述访问接口种类所对应的接口的测试单位时间进一步包括:
根据所述被测试服务器的当前时间所对应的标准时间,将所述测试服务器的当前时间同步为标准时间;
将所述测试服务器进行所述同步后获得的所述标准时间转换为绝对时间;
根据所述预先设定的所述测试服务器访问所述访问接口种类所对应的接口的单位时间,从所述绝对时间中选取一段与所述单位时间相同长度的绝对时间,设置为所述访问接口种类所对应的接口的所述测试单位时间。
3.如权利要求2所述的并发测试方法,其特征在于,所述根据被测试服务器的当前时间所对应的标准时间,将测试服务器的当前时间同步为标准时间进一步包括:
获取所述被测试服务器的所述当前时间;
将所述被测试服务器的所述当前时间转化为所在时区的标准时间;
将所述测试服务器的当前时间,与所述被测服务器的所述所在时区的标准时间进行同步,以获得所述测试服务器的标准时间。
4.如权利要求1所述的并发测试方法,其特征在于,所述测试单位时间划分为多个测试时间单元进一步包括:
将所述测试单位时间划分为并发测试休眠时间子单元和所述并发测试用时间子单元。
5.如权利要求4所述的并发测试方法,其特征在于,所述并发测试休眠时间子单元和所述并发测试用时间子单元依序一一间隔排列。
6.如权利要求4所述的并发测试方法,其特征在于,两个所述并发测试用时间子单元之间间隔两个或两个以上所述并发测试休眠时间子单元。
7.如权利要求4至6任一项所述的并发测试方法,其特征在于,所述并发测试用时间子单元的长度相同或者不同。
8.如权利要求1所述的并发测试方法,其特征在于,所述在所述选择的所述并发测试用时间子单元内,根据预先设定的所述测试服务器的在所述单位时间内访问所述访问接口种类所对应的接口的次数,访问所述访问接口种类所对应的接口进一步包括:
注册线程池;
设置线程来访问所述访问接口种类所对应的接口时的并发点,所述并发点对应于所述单位时间内访问所述访问接口种类所对应的接口的次数;
所述线程池持续开启所述线程,直至所述开启的线程的数量达到所述并发点对应的所述测试服务器在所述单位时间内被允许访问所述访问接口种类所对应的接口的次数;
所述线程调用进程在选定的所述并发测试用时间子单元内,以所述次数来访问所述访问接口种类所对应的接口。
9.一种并发测试服务器,用于测试提供开放接口的被测试服务器,其特征在于,包括:
设置单元,根据预先设定的测试服务器的访问接口种类和访问所述访问接口种类所对应的接口的单位时间,设置所述访问接口种类所对应的接口的测试单位时间;
划分单元,将所述测试单位时间划分为多个测试时间单元;
选择单元,选择至少一个所述测试时间单元,作为所述访问接口种类所对应的接口的并发测试用时间子单元;
访问单元,在所述选择的所述并发测试用时间子单元内,根据预先设定的所述测试服务器的在所述单位时间内访问所述访问接口种类所对应的接口的次数,访问所述访问接口种类所对应的接口。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210132234.2A CN103379000B (zh) | 2012-04-28 | 2012-04-28 | 一种并发测试方法及测试服务器 |
HK13114233.3A HK1186877A1 (zh) | 2012-04-28 | 2013-12-24 | 種併發測試方法及測試服務器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210132234.2A CN103379000B (zh) | 2012-04-28 | 2012-04-28 | 一种并发测试方法及测试服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103379000A CN103379000A (zh) | 2013-10-30 |
CN103379000B true CN103379000B (zh) | 2016-06-22 |
Family
ID=49463581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210132234.2A Active CN103379000B (zh) | 2012-04-28 | 2012-04-28 | 一种并发测试方法及测试服务器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103379000B (zh) |
HK (1) | HK1186877A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105279061A (zh) * | 2014-06-26 | 2016-01-27 | 西安Tcl软件开发有限公司 | 服务器接口并发测试的方法和装置 |
CN105224450B (zh) * | 2014-07-02 | 2018-06-05 | 阿里巴巴集团控股有限公司 | 并发测试方法及装置 |
CN104699498B (zh) * | 2014-12-10 | 2017-11-03 | 上海斐讯数据通信技术有限公司 | 基于Android平台的通过列表控件异步加载图片的优化方法 |
CN109818992A (zh) * | 2017-11-20 | 2019-05-28 | 创盛视联数码科技(北京)有限公司 | 视频云平台api访问频次控制方法 |
CN110650031B (zh) * | 2018-06-27 | 2022-09-20 | 视联动力信息技术股份有限公司 | 级联数据处理方法和装置 |
CN109728975B (zh) * | 2018-12-29 | 2021-03-12 | 广东电网有限责任公司 | 一种网络协议攻击测试方法、装置、设备和可读存储介质 |
CN110247906A (zh) * | 2019-06-10 | 2019-09-17 | 平安科技(深圳)有限公司 | 一种网络监控方法及装置、设备、存储介质 |
CN110673876B (zh) * | 2019-09-30 | 2020-11-20 | 北京三快在线科技有限公司 | 设置线程池参数的方法、装置、计算机设备和存储介质 |
TWI791929B (zh) * | 2019-11-28 | 2023-02-11 | 瑞昱半導體股份有限公司 | 通用分析裝置與方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622298A (zh) * | 2012-03-02 | 2012-08-01 | 奇智软件(北京)有限公司 | 一种软件测试系统及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7317915B2 (en) * | 2004-07-12 | 2008-01-08 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for testing a radio network |
US8407337B2 (en) * | 2009-07-14 | 2013-03-26 | Compuware Corporation | Multiple instance commercial browser website test agent |
-
2012
- 2012-04-28 CN CN201210132234.2A patent/CN103379000B/zh active Active
-
2013
- 2013-12-24 HK HK13114233.3A patent/HK1186877A1/zh unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622298A (zh) * | 2012-03-02 | 2012-08-01 | 奇智软件(北京)有限公司 | 一种软件测试系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
HK1186877A1 (zh) | 2014-03-21 |
CN103379000A (zh) | 2013-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103379000B (zh) | 一种并发测试方法及测试服务器 | |
CN102402481B (zh) | 异步程序代码的模糊测试 | |
EP2572294B1 (en) | System and method for sql performance assurance services | |
CN108388515A (zh) | 测试数据生成方法、装置、设备以及计算机可读存储介质 | |
CN109460223A (zh) | 一种api网关管理系统及其方法 | |
US10452522B1 (en) | Synthetic data generation from a service description language model | |
CN107423223A (zh) | 测试管理系统 | |
CN107992519A (zh) | 一种面向智能电网大数据的多源异构数据校验系统及方法 | |
CN112559525B (zh) | 数据检查系统、方法、装置和服务器 | |
Sundas et al. | An introduction of CloudSim simulation tool for modelling and scheduling | |
Liu | Research of performance test technology for big data applications | |
CN112632527A (zh) | 一种用于服务开放平台的api测试方法及系统 | |
Lei et al. | Performance and scalability testing strategy based on kubemark | |
CN109471791A (zh) | 一种需求响应通信一致性测试系统与方法 | |
CN103294482B (zh) | 用于PWscf并行计算系统的Web服务封装方法以及系统 | |
CN113094406A (zh) | 一种电力营销数据治理方法以及系统 | |
CN105095070B (zh) | 基于浏览器测试组件的qq群数据获取方法与系统 | |
CN107911252A (zh) | 一种非结构化分布式存储系统性能分析方法、系统及设备 | |
CN112016256A (zh) | 一种集成电路开发平台、方法、存储介质及设备 | |
Moltchanov et al. | Statistical traffic properties and model inference for shared cache interface in multi-core CPUs | |
CN109669829A (zh) | 一种基于bmc的诊断调试方法、装置及服务器 | |
Herzog et al. | Performance validation tools for software/hardware systems | |
CN109885472A (zh) | 测试管理方法及系统和计算机可读存储介质 | |
CN105930260B (zh) | 一种系统可用性测试方法及装置 | |
Antonescu et al. | Modeling and simulation of concurrent workload processing in cloud-distributed enterprise information systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1186877 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1186877 Country of ref document: HK |