CN106201853A - 测试方法及装置 - Google Patents

测试方法及装置 Download PDF

Info

Publication number
CN106201853A
CN106201853A CN201510219973.9A CN201510219973A CN106201853A CN 106201853 A CN106201853 A CN 106201853A CN 201510219973 A CN201510219973 A CN 201510219973A CN 106201853 A CN106201853 A CN 106201853A
Authority
CN
China
Prior art keywords
thread
task
synchronizing
thread pool
pool
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
CN201510219973.9A
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 CN201510219973.9A priority Critical patent/CN106201853A/zh
Publication of CN106201853A publication Critical patent/CN106201853A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本申请提供了一种测试方法及装置,所述方法包括:将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程;所述线程池中预先配置了多个同步线程;触发所述线程池在主线程中同步调度所述多个同步线程执行所述多个任务;在所述多个任务执行完毕之后,对所述执行的过程进行测试断言。在本申请实施例中,可以提高测试断言的准确率。

Description

测试方法及装置
技术领域
本申请涉及测试技术领域,特别涉及一种测试方法及装置。
背景技术
目前,应用系统为了提高系统吞吐量,常常使用多线程技术将待执行的任务通过线程池技术异步化执行,使得处理线程不阻塞主线程的执行。其中,线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动队列中的任务。而线程是程序执行流的最小单元,它是进程中的一个实体,是被系统独立调度和分派的基本单位。
发明内容
但是发明人在研究过程中发现,现有的多线程技术对于线下的测试将是非常困难的。因为测试需要在任务都执行完毕之后再进行,但是由于任务执行的过程中采用了异步化执行的方式,执行任务的线程不在主线程内,因此就无法准确得知执行任务的线程何时执行完毕,就使得测试结果不够准确。
由此,本申请所要解决的技术问题是提供一种测试方法,用以尽量避免现有技术中由于采用线程异步化执行任务的方式而导致的测试结果不够准确的问题,提高测试断言的准确率。
本申请还提供了一种测试装置,用以保证上述方法在实际中的实现及应用。
为了解决上述问题,本申请公开了一种测试方法,包括:
将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程;所述线程池中预先配置了多个同步线程;
触发所述线程池在主线程中同步调度所述多个同步线程执行所述多个任务;
在所述多个任务执行完毕之后,对所述执行的过程进行测试断言。
本申请公开了一种测试装置,包括:
分配模块,用于将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程;所述线程池中预先配置了多个同步线程;
触发模块,用于触发所述线程池在主线程中同步调度所述多个同步线程执行所述多个任务;
测试模块,用于在所述多个任务执行完毕之后,对所述执行的过程进行测试断言。
与现有技术相比,本申请包括以下优点:
在本申请实施例中,由于设计了新的线程池,在该线程池中的所有线程都是采用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
用户 任务id
A 1
A 2
A 3
B 4
B 5
C 6
D 7
那么任务队列中可以先添加用户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方法调用即可保证它们都在调用它们的主线程中执行,从而使得测试断言可以在多个同步线程都执行任务完毕之后进行,提高了测试断言的准确率。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的测试方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种测试方法,其特征在于,该方法包括:
将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程;所述线程池中预先配置了多个同步线程;
触发所述线程池在主线程中同步调度所述多个同步线程执行所述多个任务;
在所述多个任务执行完毕之后,对所述执行的过程进行测试断言。
2.根据权利要求1所述的方法,其特征在于,所述将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程,包括:
为所述线程池建立任务队列;
按照触发所述多个任务的各个用户来将多个任务分别添加至所述任务队列中;
将所述任务队列中的任务分别分配给线程池中的多个同步线程,其中,每一个用户对应一个同步线程。
3.根据权利要求1或2所述的方法,其特征在于,所述线程池中的同步线程为:需要调用run方法执行的线程。
4.根据权利要求3所述的方法,其特征在于,所述触发所述线程池在主线程中同步调度所述多个同步线程执行所述多个任务,包括:
触发所述线程池在主线程中以调用run方法的方式触发所述多个同步线程依次执行多个任务。
5.根据权利要求1所述的方法,其特征在于,所述在所述多个任务执行完毕之后,对所述执行的过程进行测试断言,包括:
在所述多个任务执行完毕之后,验证所述多个任务的执行结果。
6.一种测试装置,其特征在于,包括:
分配模块,用于将待处理的多个任务按照预设分配规则分配给线程池中的多个同步线程;所述线程池中预先配置了多个同步线程;
触发模块,用于触发所述线程池在主线程中同步调度所述多个同步线程执行所述多个任务;
测试模块,用于在所述多个任务执行完毕之后,对所述执行的过程进行测试断言。
7.根据权利要求6所述的装置,其特征在于,所述分配模块包括:
建立子模块,用于为所述线程池建立任务队列;
添加子模块,用于按照触发所述多个任务的各个用户来将多个任务分别添加至所述任务队列中;
分配子模块,用于将所述任务队列中的任务分别分配给线程池中的多个同步线程,其中,每一个用户对应一个同步线程。
8.根据权利要求6或7所述的装置,其特征在于,所述线程池中的同步线程为:需要调用run方法执行的线程。
9.根据权利要求8所述的装置,其特征在于,所述触发模块具体用于:触发所述线程池在主线程中以调用run方法的方式触发所述多个同步线程依次执行多个任务。
10.根据权利要求6所述的装置,其特征在于,所述测试模块具体用于:
在所述多个任务执行完毕之后,验证所述多个任务的执行结果。
CN201510219973.9A 2015-04-30 2015-04-30 测试方法及装置 Pending CN106201853A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510219973.9A CN106201853A (zh) 2015-04-30 2015-04-30 测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510219973.9A CN106201853A (zh) 2015-04-30 2015-04-30 测试方法及装置

Publications (1)

Publication Number Publication Date
CN106201853A true CN106201853A (zh) 2016-12-07

Family

ID=57457808

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510219973.9A Pending CN106201853A (zh) 2015-04-30 2015-04-30 测试方法及装置

Country Status (1)

Country Link
CN (1) CN106201853A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107784579A (zh) * 2017-08-30 2018-03-09 平安科技(深圳)有限公司 制证方法、装置、存储介质和计算机设备
CN108595331A (zh) * 2018-04-24 2018-09-28 杭州朗和科技有限公司 异步接口的测试方法、介质、装置和计算设备
CN108958894A (zh) * 2018-06-14 2018-12-07 阿里巴巴集团控股有限公司 一种分布式事务处理方法、系统、事务管理器及终端设备
CN111262923A (zh) * 2020-01-14 2020-06-09 深圳壹账通智能科技有限公司 数据同步方法、装置、计算机设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071841A1 (en) * 2003-09-30 2005-03-31 Hoflehner Gerolf F. Methods and apparatuses for thread management of mult-threading
CN1953401A (zh) * 2005-10-20 2007-04-25 英业达股份有限公司 一种多线程的网络压力测试方法
CN103605498A (zh) * 2013-12-05 2014-02-26 用友软件股份有限公司 单线程任务的多线程执行方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071841A1 (en) * 2003-09-30 2005-03-31 Hoflehner Gerolf F. Methods and apparatuses for thread management of mult-threading
CN1953401A (zh) * 2005-10-20 2007-04-25 英业达股份有限公司 一种多线程的网络压力测试方法
CN103605498A (zh) * 2013-12-05 2014-02-26 用友软件股份有限公司 单线程任务的多线程执行方法及系统

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107784579A (zh) * 2017-08-30 2018-03-09 平安科技(深圳)有限公司 制证方法、装置、存储介质和计算机设备
CN108595331A (zh) * 2018-04-24 2018-09-28 杭州朗和科技有限公司 异步接口的测试方法、介质、装置和计算设备
CN108595331B (zh) * 2018-04-24 2021-11-02 杭州网易智企科技有限公司 异步接口的测试方法、介质、装置和计算设备
CN108958894A (zh) * 2018-06-14 2018-12-07 阿里巴巴集团控股有限公司 一种分布式事务处理方法、系统、事务管理器及终端设备
CN108958894B (zh) * 2018-06-14 2022-05-10 创新先进技术有限公司 一种分布式事务处理方法、系统、事务管理器及终端设备
CN111262923A (zh) * 2020-01-14 2020-06-09 深圳壹账通智能科技有限公司 数据同步方法、装置、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
US20190102228A1 (en) Unified work backlog
Palach Parallel programming with Python
US8819683B2 (en) Scalable distributed compute based on business rules
CN106201853A (zh) 测试方法及装置
CN104391918B (zh) 基于对等部署的分布式数据库查询优先级管理的实现方法
CN107515786A (zh) 资源分配方法、主装置、从装置和分布式计算系统
TWI735531B (zh) 藉動態負載平衡之處理器功率監控及控制的技術
Mościcki et al. Processing moldable tasks on the grid: Late job binding with lightweight user-level overlay
Dubey et al. A priority based job scheduling algorithm using IBA and EASY algorithm for cloud metaschedular
JP2014191594A (ja) 分散処理システム
JP2016004384A5 (ja) タスク管理システムおよびタスク管理方法
Rustogi et al. Parallel machine scheduling: Impact of adding extra machines
Glatard et al. Software architectures to integrate workflow engines in science gateways
CN105607956B (zh) 一种计算机中的任务分配方法及系统
Jiang et al. Scheduling with job rejection and nonsimultaneous machine available time on unrelated parallel machines
CN112363913A (zh) 一种并行测试任务调度寻优的方法、装置和计算设备
KR20170109185A (ko) 매니코어 시스템에서 쓰레드를 스케줄링 하는 방법 및 그 장치
Wang et al. Colored petri net model with automatic parallelization on real-time multicore architectures
Berkowitz Metaq: Bundle supercomputing tasks
CN108874520A (zh) 计算方法及装置
Chou et al. On the asymptotic optimality of a simple on-line algorithm for the stochastic single-machine weighted completion time problem and its extensions
CN106062738B (zh) 管理作业状态
CN103778005A (zh) 自动化任务分配方法和装置
Srinivasan et al. A cleanup algorithm for implementing storage constraints in scientific workflow executions
CN112363914A (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: 20161207