测试方法及装置与流程

文档序号:11949980阅读:153来源:国知局
测试方法及装置与流程
本申请涉及测试
技术领域
,特别涉及一种测试方法及装置。
背景技术
:目前,应用系统为了提高系统吞吐量,常常使用多线程技术将待执行的任务通过线程池技术异步化执行,使得处理线程不阻塞主线程的执行。其中,线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动队列中的任务。而线程是程序执行流的最小单元,它是进程中的一个实体,是被系统独立调度和分派的基本单位。技术实现要素:但是发明人在研究过程中发现,现有的多线程技术对于线下的测试将是非常困难的。因为测试需要在任务都执行完毕之后再进行,但是由于任务执行的过程中采用了异步化执行的方式,执行任务的线程不在主线程内,因此就无法准确得知执行任务的线程何时执行完毕,就使得测试结果不够准确。由此,本申请所要解决的技术问题是提供一种测试方法,用以尽量避免现有技术中由于采用线程异步化执行任务的方式而导致的测试结果不够准确的问题,提高测试断言的准确率。本申请还提供了一种测试装置,用以保证上述方法在实际中的实现及应用。为了解决上述问题,本申请公开了一种测试方法,包括:将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程;所述线程池中预先配置了多个同步线程;触发所述线程池在主线程中同步调度所述多个同步线程执行所述多 个任务;在所述多个任务执行完毕之后,对所述执行的过程进行测试断言。本申请公开了一种测试装置,包括:分配模块,用于将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程;所述线程池中预先配置了多个同步线程;触发模块,用于触发所述线程池在主线程中同步调度所述多个同步线程执行所述多个任务;测试模块,用于在所述多个任务执行完毕之后,对所述执行的过程进行测试断言。与现有技术相比,本申请包括以下优点:在本申请实施例中,由于设计了新的线程池,在该线程池中的所有线程都是采用run方法调用的同步线程,因此,在为线程池中的线程分配任务之后,各个同步线程采用run方法调用即可保证它们都在调用它们的主线程中执行,从而使得测试断言可以在多个同步线程都执行任务完毕之后进行,提高了测试断言的准确率。当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本申请的测试方法实施例的流程图;图2是本申请的测试装置实施例的结构框图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术 人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。参考图1,示出了本申请一种测试方法实施例的流程图,本实施例可以包括以下步骤:步骤101:将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程;所述线程池中预先配置了多个同步线程。在本申请中,也需要预先建立线程池,在本实施例中线程池中的同步线程可以为:需要调用run方法执行的线程。例如,在线程池中预先配置了10个同步线程,这10个线程同步都需要采用run方法执行,而采用run方法执行的这10个同步线程在执行时就可以在主线程中进行,从而使得同步线程执行任务的结束时间是可以被主线程感知的。其中,线程池可以直接或间接扩展自JDK(JavaDevelopmentKit,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方法调用,这样即可保证同步线程都在调用它们的主线程中执行,从而使得测试断言可以在多个同步线程都执行任务完毕之后进行,提高了测试断言的准确率。对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。与上述本申请一种测试方法实施例所提供的方法相对应,参见图2, 本申请还提供了一种测试装置实施例,在本实施例中,该装置可以包括:分配模块201,用于将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程;所述线程池中预先配置了多个同步线程。其中,所述线程池中的同步线程为:需要调用run方法执行的线程。其中,所述分配模块201具体可以包括:建立子模块,用于为所述线程池建立任务队列;添加子模块,用于按照触发所述多个任务的各个用户来将多个任务分别添加至所述任务队列中;和,分配子模块,用于将所述任务队列中的任务分别分配给线程池中的多个同步线程,其中,每一个用户对应一个同步线程。触发模块202,用于触发所述线程池在主线程中同步调度所述多个同步线程执行所述多个任务。其中,所述触发模块202具体可以用于:触发所述线程池在主线程中以调用run方法的方式调度所述多个同步线程依次执行多个任务。测试模块203,用于在所述多个任务执行完毕之后,对所述执行的过程进行测试断言。其中,所述测试模块203具体用于:在所述多个任务执行完毕之后,验证所述多个任务的执行结果。在本申请实施例中,由于设计了新的线程池,在该线程池中的所有线程都是采用run方法调用的同步线程,因此,在为线程池中的线程分配任务之后,各个同步线程采用run方法调用即可保证它们都在调用它们的主线程中执行,从而使得测试断言可以在多个同步线程都执行任务完毕之后进行,提高了测试断言的准确率。需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。最后,还需要说明的是,术语“包括”、“包含”或者其任何其他变 体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。以上对本申请所提供的测试方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1