测试方法及装置制造方法及图纸

技术编号:14158986 阅读:70 留言:0更新日期:2016-12-12 01:45
本申请提供了一种测试方法及装置,所述方法包括:将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程;所述线程池中预先配置了多个同步线程;触发所述线程池在主线程中同步调度所述多个同步线程执行所述多个任务;在所述多个任务执行完毕之后,对所述执行的过程进行测试断言。在本申请实施例中,可以提高测试断言的准确率。

【技术实现步骤摘要】

本申请涉及测试
,特别涉及一种测试方法及装置
技术介绍
目前,应用系统为了提高系统吞吐量,常常使用多线程技术将待执行的任务通过线程池技术异步化执行,使得处理线程不阻塞主线程的执行。其中,线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动队列中的任务。而线程是程序执行流的最小单元,它是进程中的一个实体,是被系统独立调度和分派的基本单位。
技术实现思路
但是专利技术人在研究过程中发现,现有的多线程技术对于线下的测试将是非常困难的。因为测试需要在任务都执行完毕之后再进行,但是由于任务执行的过程中采用了异步化执行的方式,执行任务的线程不在主线程内,因此就无法准确得知执行任务的线程何时执行完毕,就使得测试结果不够准确。由此,本申请所要解决的技术问题是提供一种测试方法,用以尽量避免现有技术中由于采用线程异步化执行任务的方式而导致的测试结果不够准确的问题,提高测试断言的准确率。本申请还提供了一种测试装置,用以保证上述方法在实际中的实现及应用。为了解决上述问题,本申请公开了一种测试方法,包括:将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程;所述线程池中预先配置了多个同步线程;触发所述线程池在主线程中同步调度所述多个同步线程执行所述多
个任务;在所述多个任务执行完毕之后,对所述执行的过程进行测试断言。本申请公开了一种测试装置,包括:分配模块,用于将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程;所述线程池中预先配置了多个同步线程;触发模块,用于触发所述线程池在主线程中同步调度所述多个同步线程执行所述多个任务;测试模块,用于在所述多个任务执行完毕之后,对所述执行的过程进行测试断言。与现有技术相比,本申请包括以下优点:在本申请实施例中,由于设计了新的线程池,在该线程池中的所有线程都是采用run方法调用的同步线程,因此,在为线程池中的线程分配任务之后,各个同步线程采用run方法调用即可保证它们都在调用它们的主线程中执行,从而使得测试断言可以在多个同步线程都执行任务完毕之后进行,提高了测试断言的准确率。当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本申请的测试方法实施例的流程图;图2是本申请的测试装置实施例的结构框图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术
人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。参考图1,示出了本申请一种测试方法实施例的流程图,本实施例可以包括以下步骤:步骤101:将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程;所述线程池中预先配置了多个同步线程。在本申请中,也需要预先建立线程池,在本实施例中线程池中的同步线程可以为:需要调用run方法执行的线程。例如,在线程池中预先配置了10个同步线程,这10个线程同步都需要采用run方法执行,而采用run方法执行的这10个同步线程在执行时就可以在主线程中进行,从而使得同步线程执行任务的结束时间是可以被主线程感知的。其中,线程池可以直接或间接扩展自JDK(Java Development Kit,Java语言的软件开发工具包)提供的ThreadPoolExecutor。本实施例中的线程池(DoImmediatelyThreadPoolTaskExecutor)与现有技术中的线程池不同,本实施例中的线程池的同步线程都是调用run方法执行的,以便同步线程可以在调用的主线程中同步执行。其中,步骤101在具体执行时可以包括:步骤A1:为所述线程池建立任务队列。首先,为已经创建的线程池建立一个任务队列,该任务队列可以按照
先后顺序存放分配给线程池中的同步线程的任务。步骤A2:按照触发所述多个任务的各个用户来将多个任务分别添加至所述任务队列中。在本实施例中,可以按照触发任务的用户的不同,来将多个任务分别添加至任务队列中。例如,对于实际应用中的缓冲补账业务,有四个用户触发了缓冲补账的7个任务。具体如表1所示:表1用户任务idA1A2A3B4B5C6D7那么任务队列中可以先添加用户A的三个任务,再添加用户B的两个任务,再依次添加用户C和用户D的任务。步骤A3:将所述任务队列中的任务分别分配给线程池中的多个同步线程,其中,每一个用户对应一个同步线程。然后再将任务队列中的任务分别分配给线程池中的多个同步线程,例如,每个用户的任务对应分配给一个同步线程。那么,参考表1所示,用户A的三个任务可以分配给线程池中的第一个同步线程,而用户B的两个任务可以分配给线程池中的第二个同步线程,以此类推。当然,在实际应用中,不仅仅限于以用户为维度来为任务分配线程,还可以以任务为维度,为每一个任务对应分配一个同步线程,当然还可以采用其他分配方式。接着返回图1,进入步骤102:触发所述线程池在主线程中同步调度所述多个同步线程执行所述多个任务。将任务分配完成之后,可以定时触发线程池同步调度多个同步线程,来在主线程中执行分别为同步线程分配的任务。具体的,则是触发线程池以调用run方法的方式来调度同步线程,从而触发同步线程能依次同步执行为其分配的多个任务。步骤103:在所述多个任务执行完毕之后,对所述执行的过程进行测试断言。因为采用run方法调用的同步线程在主线程中执行,因此主线程就可以获取到各个同步线程的执行过程以及同步线程在什么时候将任务执行完毕,一旦,主线程确定同步线程将多个任务执行完毕之后,就主线程就触发对执行的过程进行测试断言,测试断言具体可以是在所述多个任务执行完毕之后,验证所述多个任务的执行结果。例如,对于缓冲补账任务来讲,可以验证补账结果是否满足预期,用户的余额有没有到账等。当然,测试断言还可以检查数据有没有处理完毕,任务处理逻辑是不是正确,等等。可见,在本申请实施例中,由于设计了新的线程池,在该线程池中的所有线程都是采用run方法调用的同步线程,因此,在为线程池中的线程分配任务之后,各个同步线程被触发时都可以采用run方法调用,这样即可保证同步线程都在调用它们的主线程中执行,从而使得测试断言可以在多个同步本文档来自技高网
...
测试方法及装置

【技术保护点】
一种测试方法,其特征在于,该方法包括:将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程;所述线程池中预先配置了多个同步线程;触发所述线程池在主线程中同步调度所述多个同步线程执行所述多个任务;在所述多个任务执行完毕之后,对所述执行的过程进行测试断言。

【技术特征摘要】
1.一种测试方法,其特征在于,该方法包括:将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程;所述线程池中预先配置了多个同步线程;触发所述线程池在主线程中同步调度所述多个同步线程执行所述多个任务;在所述多个任务执行完毕之后,对所述执行的过程进行测试断言。2.根据权利要求1所述的方法,其特征在于,所述将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程,包括:为所述线程池建立任务队列;按照触发所述多个任务的各个用户来将多个任务分别添加至所述任务队列中;将所述任务队列中的任务分别分配给线程池中的多个同步线程,其中,每一个用户对应一个同步线程。3.根据权利要求1或2所述的方法,其特征在于,所述线程池中的同步线程为:需要调用run方法执行的线程。4.根据权利要求3所述的方法,其特征在于,所述触发所述线程池在主线程中同步调度所述多个同步线程执行所述多个任务,包括:触发所述线程池在主线程中以调用run方法的方式触发所述多个同步线程依次执行多个任务。5.根据权利要求1所述的方法,其特征在于,所述在所述多个任务执行完毕之后,对所述执行的过程进行测试断言,包括:在所述多个任务执行完...

【专利技术属性】
技术研发人员:朱春茂林耿
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1