CN105607991A - 一种基于异步线程的测试方法和装置 - Google Patents

一种基于异步线程的测试方法和装置 Download PDF

Info

Publication number
CN105607991A
CN105607991A CN201410670716.2A CN201410670716A CN105607991A CN 105607991 A CN105607991 A CN 105607991A CN 201410670716 A CN201410670716 A CN 201410670716A CN 105607991 A CN105607991 A CN 105607991A
Authority
CN
China
Prior art keywords
thread
threads
tested object
subject
subject thread
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.)
Pending
Application number
CN201410670716.2A
Other languages
English (en)
Inventor
倪军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201410670716.2A priority Critical patent/CN105607991A/zh
Publication of CN105607991A publication Critical patent/CN105607991A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本申请实施例提供了一种基于异步线程的测试方法和装置,所述的方法包括:检测目标线程的第一数量;所述目标线程为线程池类中执行测试对象的异步线程;调用所述目标线程执行所述测试对象;检测所述目标线程的第二数量;当所述第一数量与所述第二数量相等时,对所述目标线程执行测试对象获得的执行结果进行校验。本申请实施例一方面不会浪费多余的时间进行等待,减少测试耗时,另一方面避免因为目标线程还没执行完就校验结果导致测试校验失败,提高了测试用例的成功率,进而提高了测试效率。

Description

一种基于异步线程的测试方法和装置
技术领域
本申请涉及测试技术领域,特别是涉及一种基于异步线程的测试方法和一种基于异步线程的测试装置。
背景技术
程序测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试***,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。
Java(一种可以撰写跨平台应用软件的面向对象的程序设计语言)的多线程/异步线程是在***实现过程中使用的非常多的一种实现手段,常用的servlet(服务端程序)或者C/S(Client/Server或客户/服务器模式)结构的窗体工作于与后台处理是多线程的,以减少用户在前台等待的时间;再比如为了提高***或应用程序的性能,可以采用多线程提高***或应用程序的并发处理能力等。
这种异步多线程的实现方式给***实现和性能提升上面带来了很大的好处,但是也给***的测试上面增加了难度。
目前涉及到异步线程的测试,尤其是UI(UserInterface,用户界面)自动化和接口测试,都是调用某接口测试脚本,而该接口内部使用了异步线程的实现方式,脚本功能是否正确需要对接口内部的处理结果进行校验。
但因为处理逻辑是异步线程执行的,如果在异步线程处理结束之前,调用的接口就返回结果,这个时候就去校验结果,会因为内部异步线程还没有处理结果使得校验结果出错。所以现在一般在调用接口之后使用sleep(n)函数等待时间n,待内部异步线程处理结束后,再进行结果校验。
由于异步线程需要耗费多长时间不固定,受环境等因为影响较大,所以等待的时间n,一般都是基于经验值,设置为所有环境下该异步线程执行需要的最大时间,用以提高测试用例的成功率。
但正是由于等待的时间n是基于经验值,并不能保证在等待了时间n后,对应的异步线程一定执行结束了,测试用例的成功率低。
并且,在大部分场景下可能不需要等待时间n那么久,就造成了虽然异步线程已经处理结束了,但是***还在等待,造成测试耗时过长,降低了测试执行效率,尤其在自动化执行过程中,当涉及的测试用例数量比较多的时候,尤其明显。
如果这里不采用等待时间n的方式,一般就需要手工断点(debug模式),等异步线程执行完再执行测试脚本校验逻辑。这种方式只能进行手工测试覆盖,成本很高,效率很低。
因此,目前需要本领域技术人员迫切解决的一个技术问题就是:如何提出一种基于异步线程的测试机制,用以提高测试用例的成功率,减少测试耗时,提高测试效率。
发明内容
本申请实施例所要解决的技术问题是提供一种基于异步线程的测试方法,用以提高测试用例的成功率,减少测试耗时,提高测试效率。
相应的,本申请实施例还提供了一种基于异步线程的测试装置,用以保证上述方法的实现及应用。
为了解决上述问题,本申请实施例公开了一种基于异步线程的测试方法,包括:
检测目标线程的第一数量;所述目标线程为线程池类中执行测试对象的异步线程;
调用所述目标线程执行所述测试对象;
检测所述目标线程的第二数量;
当所述第一数量与所述第二数量相等时,对所述目标线程执行测试对象获得的执行结果进行校验。
优选地,所述线程池类具有获取活跃线程数量的方法;所述检测目标线程的第一数量的步骤包括:
调用所述获取活跃线程数量的方法,获得目标线程的第一数量。
优选地,所述调用所述目标线程执行所述测试对象的步骤包括:
传入执行所述测试对象所需的参数;
在所述目标线程中按照所述参数执行所述测试对象。
优选地,所述检测所述目标线程的第二数量的步骤包括:
调用所述获取活跃线程数量的方法,获得所述目标线程的第二数量。
优选地,还包括:
当所述第一数量与所述第二数量相异时,返回执行所述检测所述目标线程的第二数量的步骤。
优选地,所述线程池类包括ThreadPoolExecutor,所述获取活跃线程数量的方法包括getActiveCount。
本申请实施例还公开了一种基于异步线程的测试装置,包括:
第一检测模块,用于检测目标线程的第一数量;所述目标线程为线程池类中执行测试对象的异步线程;
测试模块,用于调用所述目标线程执行所述测试对象;
第二检测模块,用于检测所述目标线程的第二数量;
校验模块,用于在所述第一数量与所述第二数量相等时,对所述目标线程执行测试对象获得的执行结果进行校验。
优选地,所述线程池类具有获取活跃线程数量的方法;所述第一检测模块包括:
第一调用子模块,用于调用所述获取活跃线程数量的方法,获得目标线程的第一数量。
优选地,所述测试模块包括:
传入子模块,用于传入执行所述测试对象所需的参数;
执行子模块,用于在所述目标线程中按照所述参数执行所述测试对象。
优选地,所述第二检测模块包括:
第二调用子模块,用于调用所述获取活跃线程数量的方法,获得所述目标线程的第二数量。
优选地,还包括:
循环模块,用于在所述第一数量与所述第二数量相异时,返回调用第二检测模块。
优选地,所述线程池类包括ThreadPoolExecutor,所述获取活跃线程数量的方法包括getActiveCount。
与背景技术相比,本申请实施例包括以下优点:
本申请实施例在执行测试对象之前,检测目标线程的第一数量,在执行测试对象之后,检测目标线程的第二数量,在第一数量与第二数量相等时,对目标线程执行测试对象获得的执行结果进行校验,准确地判断目标线程是否执行结束,在目标线程结束后进行结果校验,一方面不会浪费多余的时间进行等待,减少测试耗时,另一方面避免因为目标线程还没执行完就校验结果导致测试校验失败,提高了测试用例的成功率,进而提高了测试效率。
附图说明
图1是一种基于sleep函数进行结果校验的示例图;
图2是本申请的一种基于异步线程的测试方法实施例的步骤流程图;
图3是本申请的一种获取活跃线程数量的方法的执行示例图;
图4是本申请的一种测试方法的示例图;
图5是本申请的一种基于异步线程的测试装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
对于多线程并发时,多个线程同时请求同一个资源,必然会导致资源的数据存在安全性,当多个线程要操作的数据是单点时,那么这些线程就不能并发执行,而需要等待串行执行,被称之为同步线程;但当这些多线程操作的资源数据不是单点,各自分离,或者多个线程之间要操作的内容没有依赖性,相互独立,就不需要串行等待了,而可以并发执行,以此来加快执行效率,这类被称之为异步线程。
在程序、***设计实现时,经常会用到这个异步线程技术。比如,在一次程序处理里面,线程A需要执行三个任务,因为线程A是单例,那么一般的处理方式是,先处理任务1,再处理任务2,最后处理任务3。但在处理完任务1后,发现任务2和任务3之间并没有依赖关系,也就是说执行没有先后顺序,可以并行处理。这个时候可以获取另一个线程B,让线程B去执行任务2,然后线程A并发执行任务3,可以极大的提高处理效率。
在异步线程并发处理时,有个缺点,就是从线程A中不知道线程B什么时候执行结束。
因此,如图1所示,现在一般在使用测试脚本调用接口之后,使用sleep(n)函数等待时间n,再进行结果校验。导致即使在被测对象调用结束后,无法判断当前内部处理是否已经全部结束,如果这时候去校验结果数据,不管是否正确都无法确定该结果是不是本次处理产生的。
但是这样测试用例成功率低,并且测试耗时过长,降低了测试效率。
基于此,提出了本申请实施例的核心构思之一,通过异步线程的属性得知内部异步线程是否已经执行完成,在等待异步线程执行完成后再进行结果校验,确保本次校验的结果数据是内部异步线程执行完产生的。
参照图2,示出了本申请的一种基于异步线程的测试方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101,检测目标线程的第一数量;
需要说明的是,本申请实施例可以应用于Java语言的环境中,Java可以提供一个线程池类,线程池类可以是指一个线程的容器,在这个容器中管理额定数量的线程。例如,该线程池类可以包括ThreadPoolExecutor等等。
在线程池中的每个线程可以被用来初始化执行各个异步操作,因此,线程池中的线程可以称为异步线程。
在本申请实施例中,所述目标线程可以为线程池类中执行测试对象的异步线程。
所述线程池类可以具有获取活跃线程数量的方法,例如,所述获取活跃线程数量的方法可以包括getActiveCount等等,该获取活跃线程数量的方法可以返回主动执行任务的近似线程数,即返回当前活跃有效(active)的线程数量。
如图3所示,调用同步接口,在状态301中,当前已有活跃线程为n个;触发了一次异步线程就会增加一个活跃(active)线程数量,在状态302中,活跃线程数为n+1;当前已当该异步线程内的内容执行完成后,当前异步线程生命周期终结,就会变成非活跃线程,活跃线程数量减一,在状态303中,活跃线程数为n。
测试对象可以为进行测试的对象,具体可以包括Java程序等等。
在本申请的一种优选实施例中,步骤101可以包括如下子步骤:
子步骤S11,调用所述获取活跃线程数量的方法,获得目标线程的第一数量。
本申请实施例中,调用所述获取活跃线程数量的方法返回的线程数量可以是被指定去处理特定任务(例如执行测试对象)的线程的数量。
而这类处理特定任务的线程一般会被标示上特殊的属性,比如线程名,定义特殊的线程变量。
通常所有的线程都是在线程池类里的,使用线程的时候可以给使用中的线程标示上特殊的属性,这样就可以知道整个线程池类中哪些线程是正在执行特定任务的线程。
一个线程如果被激活执行某程序,则可以认为是活跃的,执行结束后就会被释放回线程池类中。
本申请实施例中获得的不是所有活跃线程数,而是执行特定任务的活跃线程数,Java中提供了获取活跃线程数量的方法(例如getActionCount)来返回当前属性的活跃线程数,通过调用Java中提供的获取活跃线程数量的方法(例如getActionCount)则可以获得执行特定任务的活跃线程数。
例如,所有执行任务C的线程名为taskCexecutor,执行任务D的线程名为taskDexecutor,那么调用taskCexecutor.getActiveCount,返回的就是所有正在执行任务C的线程数量,调用taskDexecutor.getActiveCount,返回的就是所有正在执行任务D的线程数量。
在实际应用中,可以在调用目标线程执行测试对象前,调用获取活跃线程数量的方法,获得目标线程的第一数量,由于目标线程还未执行测试对象,因此,第一数量一般为0。
步骤102,调用所述目标线程执行所述测试对象;
在具体实现中,可以对测试对象中的全部或部分功能进行测试,以确保该测试对象在正式运行前能按预定的方式正确地运行。
在本申请的一种优选实施例中,步骤102可以包括如下子步骤:
子步骤S21,传入执行所述测试对象所需的参数;
子步骤S22,在所述目标线程中按照所述参数执行所述测试对象。
在本申请实施例中,可以通过测试脚本实现测试对象的执行。
具体而言,测试脚本可以指测试代码,通过运行测试代码来调用应用或者***的接口方法,提供是触发执行测试对象的执行入口。
举例,一个***通过webservice服务的方式对外提供服务,而测试脚本的逻辑可以是通过调用这个webservice服务,传入参数,让测试对象按照内部的逻辑执行处理,而目标线程可以是测试对象内部相关逻辑的实现方式。
步骤103,检测所述目标线程的第二数量;
在实际应用中,可以在调用目标线程执行测试对象后,调用获取活跃线程数量的方法,获得目标线程的第二数量。
在本申请的一种优选实施例中,步骤103可以包括如下子步骤:
子步骤S31,调用所述获取活跃线程数量的方法,获得所述目标线程的第二数量。
本申请实施例中通过调用Java中提供的获取活跃线程数量的方法(例如getActionCount)则可以获得执行特定任务(例如执行测试对象)的活跃线程数,以监控内部的目标线程是否已经执行完成。
步骤104,当所述第一数量与所述第二数量相等时,对所述目标线程执行测试对象获得的执行结果进行校验。
在执行测试对象之前,假设特定的活跃线程数(即第一数量)是n,调用测试对象后,因为测试对象内部处理需要开启新的线程处理相关逻辑,所以特定的活跃线程数(即第二数量)会变成n+m(m为测试对象内部处理相关逻辑需要开启的线程数,m>0),这样当测试对象内部相关逻辑被处理完成后,这些开启的线程就会被释放掉,特定的活跃线程数(即第二数量)又会变成开始之前的n。
所以,当第一数量与第二数量相等时,则可以表示内部的目标线程执行完成,内部处理结束了,可以对输出结果进行校验了。
在具体实现中,可以采用测试脚本校验输出值验证应用或者***逻辑是否正确。
在本申请的一种优选实施例中,所述的方法还可以包括如下步骤:
步骤105,当所述第一数量与所述第二数量相异时,返回执行步骤103。
在本申请实施例中,当第一数量与第二数量相异(即不相等)时,则可以表示内部的目标线程未执行完成,内部未处理结束了,需要继续等待目标线程执行完成再进行结果校验。
本申请实施例在执行测试对象之前,检测目标线程的第一数量,在执行测试对象之后,检测目标线程的第二数量,在第一数量与第二数量相等时,对目标线程执行测试对象获得的执行结果进行校验,准确地判断目标线程是否执行结束,在目标线程结束后进行结果校验,一方面不会浪费多余的时间进行等待,减少测试耗时,另一方面避免因为目标线程还没执行完就校验结果导致测试校验失败,提高了测试用例的成功率,进而提高了测试效率。
为使本领域技术人员更好地理解本申请实施例,在本申请实施例中,将存钱逻辑作为测试对象的一种示例进行说明。
一段存钱逻辑代码示例如下:
这个测试对象的功能是将钱存进账户,其中存钱的具体执行是通过异步线程saveMoneyProcessor去执行的,什么时候存钱结束无法从接口方法得知。
传统基于sleep()函数的测试方式如下:
从上面示例可以看出,由于不明确存钱的异步线程什么时候执行完,所以必须等待,而这个时间又不确定,一般只能依靠经验值选择一个比较大的时间,造成效率上的低下和测试通过率不高。
如图4所示,应用本申请实施例的方式如下:
当判断目标线程结束后,可以判断钱已经存入了账户,保证了测试用例的陈功率,以及,可以立即执行校验,不会有任何的多余等待时间,减少了测试耗时,进而提高了测试效率。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图5,示出了本申请一种基于异步线程的测试装置实施例的结构框图,具体可以包括如下模块:
第一检测模块501,用于检测目标线程的第一数量;所述目标线程为线程池类中执行测试对象的异步线程;
测试模块502,用于调用所述目标线程执行所述测试对象;
第二检测模块503,用于检测所述目标线程的第二数量;
校验模块504,用于在所述第一数量与所述第二数量相等时,对所述目标线程执行测试对象获得的执行结果进行校验。
在本申请的一种优选实施例中,所述线程池类可以具有获取活跃线程数量的方法;所述第一检测模块501可以包括如下子模块:
第一调用子模块,用于调用所述获取活跃线程数量的方法,获得目标线程的第一数量。
在本申请的一种优选实施例中,所述测试模块502可以包括如下子模块:
传入子模块,用于传入执行所述测试对象所需的参数;
执行子模块,用于在所述目标线程中按照所述参数执行所述测试对象。
在本申请的一种优选实施例中,所述第二检测模块503可以包括如下子模块:
第二调用子模块,用于调用所述获取活跃线程数量的方法,获得所述目标线程的第二数量。
在本申请的一种优选实施例中,还可以包括如下模块:
循环模块,用于在所述第一数量与所述第二数量相异时,返回调用第二检测模块503。
在具体实现中,所述线程池类可以包括ThreadPoolExecutor,所述获取活跃线程数量的方法可以包括getActiveCount。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitorymedia),如调制的数据信号和载波。
本申请实施例是参照根据本申请实施例的方法、终端设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种基于异步线程的测试方法和一种基于异步线程的测试装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (12)

1.一种基于异步线程的测试方法,其特征在于,包括:
检测目标线程的第一数量;所述目标线程为线程池类中执行测试对象的异步线程;
调用所述目标线程执行所述测试对象;
检测所述目标线程的第二数量;
当所述第一数量与所述第二数量相等时,对所述目标线程执行测试对象获得的执行结果进行校验。
2.根据权利要求1所述的方法,其特征在于,所述线程池类具有获取活跃线程数量的方法;所述检测目标线程的第一数量的步骤包括:
调用所述获取活跃线程数量的方法,获得目标线程的第一数量。
3.根据权利要求1所述的方法,其特征在于,所述调用所述目标线程执行所述测试对象的步骤包括:
传入执行所述测试对象所需的参数;
在所述目标线程中按照所述参数执行所述测试对象。
4.根据权利要求2所述的方法,其特征在于,所述检测所述目标线程的第二数量的步骤包括:
调用所述获取活跃线程数量的方法,获得所述目标线程的第二数量。
5.根据权利要求1或2或3或4所述的方法,其特征在于,还包括:
当所述第一数量与所述第二数量相异时,返回执行所述检测所述目标线程的第二数量的步骤。
6.根据权利要求5所述的方法,其特征在于,所述线程池类包括ThreadPoolExecutor,所述获取活跃线程数量的方法包括getActiveCount。
7.一种基于异步线程的测试装置,其特征在于,包括:
第一检测模块,用于检测目标线程的第一数量;所述目标线程为线程池类中执行测试对象的异步线程;
测试模块,用于调用所述目标线程执行所述测试对象;
第二检测模块,用于检测所述目标线程的第二数量;
校验模块,用于在所述第一数量与所述第二数量相等时,对所述目标线程执行测试对象获得的执行结果进行校验。
8.根据权利要求7所述的装置,其特征在于,所述线程池类具有获取活跃线程数量的方法;所述第一检测模块包括:
第一调用子模块,用于调用所述获取活跃线程数量的方法,获得目标线程的第一数量。
9.根据权利要求7所述的装置,其特征在于,所述测试模块包括:
传入子模块,用于传入执行所述测试对象所需的参数;
执行子模块,用于在所述目标线程中按照所述参数执行所述测试对象。
10.根据权利要求8所述的装置,其特征在于,所述第二检测模块包括:
第二调用子模块,用于调用所述获取活跃线程数量的方法,获得所述目标线程的第二数量。
11.根据权利要求7或8或9或10所述的装置,其特征在于,还包括:
循环模块,用于在所述第一数量与所述第二数量相异时,返回调用第二检测模块。
12.根据权利要求11所述的方法,其特征在于,所述线程池类包括ThreadPoolExecutor,所述获取活跃线程数量的方法包括getActiveCount。
CN201410670716.2A 2014-11-20 2014-11-20 一种基于异步线程的测试方法和装置 Pending CN105607991A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410670716.2A CN105607991A (zh) 2014-11-20 2014-11-20 一种基于异步线程的测试方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410670716.2A CN105607991A (zh) 2014-11-20 2014-11-20 一种基于异步线程的测试方法和装置

Publications (1)

Publication Number Publication Date
CN105607991A true CN105607991A (zh) 2016-05-25

Family

ID=55987943

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410670716.2A Pending CN105607991A (zh) 2014-11-20 2014-11-20 一种基于异步线程的测试方法和装置

Country Status (1)

Country Link
CN (1) CN105607991A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108595331A (zh) * 2018-04-24 2018-09-28 杭州朗和科技有限公司 异步接口的测试方法、介质、装置和计算设备
CN116166566A (zh) * 2023-04-23 2023-05-26 成都华兴汇明科技有限公司 一种测试用例多线程调度方法、***及测试管理装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1567205A (zh) * 2003-06-25 2005-01-19 英业达股份有限公司 多执行线程同时停止的方法
CN102831053A (zh) * 2011-06-17 2012-12-19 阿里巴巴集团控股有限公司 一种测试执行的调度方法及装置
CN103544103A (zh) * 2013-09-02 2014-01-29 烟台中科网络技术研究所 一种软件性能测试模拟并发方法及***
CN103838654A (zh) * 2012-11-27 2014-06-04 重庆新媒农信科技有限公司 一种多线程和并发测试模拟器及其测试方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1567205A (zh) * 2003-06-25 2005-01-19 英业达股份有限公司 多执行线程同时停止的方法
CN102831053A (zh) * 2011-06-17 2012-12-19 阿里巴巴集团控股有限公司 一种测试执行的调度方法及装置
CN103838654A (zh) * 2012-11-27 2014-06-04 重庆新媒农信科技有限公司 一种多线程和并发测试模拟器及其测试方法
CN103544103A (zh) * 2013-09-02 2014-01-29 烟台中科网络技术研究所 一种软件性能测试模拟并发方法及***

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
杨志茹,温尚书著: "《JAVA入门与实战教程》", 31 March 2010 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108595331A (zh) * 2018-04-24 2018-09-28 杭州朗和科技有限公司 异步接口的测试方法、介质、装置和计算设备
CN116166566A (zh) * 2023-04-23 2023-05-26 成都华兴汇明科技有限公司 一种测试用例多线程调度方法、***及测试管理装置

Similar Documents

Publication Publication Date Title
US9846637B2 (en) Machine learning based software program repair
US8756460B2 (en) Test selection based on an N-wise combinations coverage
US11861394B2 (en) Automated semantic tagging
CN105183564A (zh) 基于云测试平台的设备调度方法、装置及***
CN105279017A (zh) 基于云测试平台的任务分配方法、装置及***
CN103425572A (zh) 代码分析方法及代码分析***
CN109635568B (zh) 一种基于静态分析和模糊测试相结合的并发漏洞检测方法
EP2972878B1 (en) Mechanism for facilitating dynamic and efficient management of instruction atomicity violations in software programs at computing systems
CN108021507B (zh) 符号执行的并行路径搜索方法及装置
CN106528065B (zh) 一种线程获取方法及设备
WO2017021269A1 (en) Vector processing using loops of dynamic vector length
CN104978272A (zh) 一种用于数据竞争检测的程序调度方法
CN103995778A (zh) 一种基于事件和动作的脚本文件生成方法及其装置
CN105279092A (zh) 一种软件测试的方法及装置
CN106528281A (zh) 卫星遥测数据离线统一快速处理***
CN107479866A (zh) 基于重构技术实现开放终端应用数据与功能的方法
CN111198754A (zh) 一种任务调度方法及装置
CN109885489B (zh) 驱动程序中数据竞争检测方法及装置
CN105607991A (zh) 一种基于异步线程的测试方法和装置
CN115202662B (zh) 一种弱内存序架构下的代码检查方法及相应设备
CN110289043B (zh) 存储设备测试方法、装置、电子设备
EP2972880B1 (en) Kernel functionality checker
EP3268859A1 (en) Scheduling heterogenous processors
US9436575B2 (en) Selective profiling of applications
CN106250298B (zh) 一种测试方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20160525