CN102768637A - 一种控制测试执行的方法及装置 - Google Patents
一种控制测试执行的方法及装置 Download PDFInfo
- Publication number
- CN102768637A CN102768637A CN2011101159717A CN201110115971A CN102768637A CN 102768637 A CN102768637 A CN 102768637A CN 2011101159717 A CN2011101159717 A CN 2011101159717A CN 201110115971 A CN201110115971 A CN 201110115971A CN 102768637 A CN102768637 A CN 102768637A
- Authority
- CN
- China
- Prior art keywords
- thread
- global
- timer
- execution
- concurrent
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种控制测试执行的方法及装置,能够按照指定时长执行测试。所述方法包括:启动测试后,设定用于控制定时执行的全局定时器;当运行并发操作时生成多进程,每个进程又生成多线程;每个线程在并发执行过程中根据所述全局定时器循环判断并发执行是否结束,如果是,则结束该线程的执行。本申请基于多进程多线程,通过设置定时器,每个进程及其子线程在执行到一定时间后可以自动停止,从而让测试工作几天、几周的长期执行,而不用考虑需要设置一个多大的执行次数才能持续测试几天、几周。
Description
技术领域
本申请涉及测试技术,特别是涉及在性能测试过程中,一种控制测试执行的方法及装置。
背景技术
软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。
软件测试中的性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。在性能测试中,包括并发性能测试、疲劳强度测试、大数据量测试和速度测试等,其中并发性能测试是重点。
并发性能测试的执行策略一般分为两种,一种是按照指定次数执行,另外一种是按照指定时长执行。
在性能测试工作中,测试被测系统的健壮性需要长时间运行并发请求生成工具,如果按照指定执行次数的策略来操作,并且如果被测系统运行速度足够快,则被测系统很快就将该请求执行完毕,这就无法达到长期测试某一系统健壮性的目的。
例如,测试某系统,期望执行一天来测试该系统的性能,如果设定执行次数,但该系统很快运行完所设定的执行次数,则未达到执行一天的测试要求。如果设定的执行次数过多,又可能超过一天的执行要求。
综上所述,如果按照指定执行次数的策略,就很难把握测试的时间要求,尤其是对于测试时间要求比较长的系统健壮性等测试,无法按时完成测试。
发明内容
本申请提供了一种控制测试执行的方法及装置,能够按照指定时长执行测试。
为了解决上述问题,本申请公开了一种控制测试执行的方法,包括:
启动测试后,设定用于控制定时执行的全局定时器;
当运行并发操作时生成多进程,每个进程又生成多线程;
每个线程在并发执行过程中根据所述全局定时器循环判断并发执行是否结束,如果是,则结束该线程的执行。
优选的,所述每个线程在并发执行过程中根据所述全局定时器循环判断并发执行是否结束,包括:启动测试后,设定用于控制每个线程循环的全局条件变量,并在所述全局定时器的计时结束后修改所述全局条件变量;每个线程在并发执行过程中循环判断所述全局条件变量是否被修改,如果被修改,则结束该线程的执行。
优选的,所述设定用于控制每个线程循环的全局条件变量包括:启动父进程,在所述父进程初始化的过程中,生成进程共享的内存区域,并在该区域中声明一个全局条件变量,设定该全局条件变量的初始值为true;其中,所述父进程用于生成多个子进程,每个子进程又生成多个子线程;所述方法还包括:每个子线程在并发执行过程中从所述共享的内存区域读取该全局条件变量。
优选的,所述设定用于控制定时执行的全局定时器包括:父进程生成一个定时器线程;在所述全局定时器的计时结束后修改所述全局条件变量包括:在所述定时器线程计时结束后,发送信号通知父进程将所述全局条件变量的值修改为false。
优选的,所述每个线程在并发执行过程中循环判断所述全局条件变量是否被修改,包括:每个子线程在并发执行过程中循环判断所述全局条件变量的值,如果为false,则已被修改。
优选的,每个子线程单独运行一套测试代码。
本申请还提供了一种控制测试执行的装置,包括:
定时器设置单元,用于启动测试后,设定用于控制定时执行的全局定时器;
并发执行单元,用于当运行并发操作时生成多进程,每个进程又生成多线程;
定时控制单元,用于每个线程在并发执行过程中根据所述全局定时器循环判断并发执行是否结束,如果是,则结束该线程的执行。
优选的,所述装置还包括:变量设置单元,用于启动测试后,设定用于控制每个线程循环的全局条件变量,并在所述全局定时器的计时结束后修改所述全局条件变量;则每个线程在并发执行过程中循环判断所述全局条件变量是否被修改,如果被修改,则结束该线程的执行。
优选的,所述变量设置单元包括:共享内存生成子单元,用于启动父进程,在所述父进程初始化的过程中,生成进程共享的内存区域;其中,所述父进程用于生成多个子进程,每个子进程又生成多个子线程;变量声明子单元,用于在所述内存区域中声明一个全局条件变量,设定该全局条件变量的初始值为true。
优选的,所述定时器设置单元包括:定时器生成子单元,用于由父进程生成一个定时器线程;消息通知子单元,用于在所述定时器线程计时结束后,发送信号通知父进程将所述全局条件变量的值修改为false。
优选的,每个子线程在并发执行过程中循环判断所述全局条件变量的值,如果为false,则已被修改。
优选的,每个子线程单独运行一套测试代码。
与现有技术相比,本申请包括以下优点:
首先,本申请提出一种基于多进程多线程的定时测试控制方法,通过设置定时器,每个进程及其子线程在执行到一定时间后可以自动停止,从而让测试工作几天、几周的长期执行,而不用考虑需要设置一个多大的执行次数才能持续测试几天、几周。
其次,所述用于定时控制的定时器是一个全局定时器,每个进程及其子线程都是根据该全局定时器判断是否停止执行,这样就可以保证所有的并发线程同时开始执行、同时结束,实现最大并发量。而且,通过一个定时器更方便全局的管理,提高测试效率。
再次,本申请基于所述全局定时器,通过一个全局的条件变量来控制测试的定时执行。具体的,在所述定时器在计时结束后会改变所述条件变量的值,而每个进程及其子线程循环判断所述全局的条件变量的值是否改变,如果改变则停止执行。这种进行条件控制的方式能够减轻执行负担,提高执行效率。
最后,本申请中每个子线程都单独运行一套测试代码,这样通过每个子线程发出的请求都是独立的、并行的,从而保证了最大并发量。
当然,实施本申请的任一产品不一定需要同时达到以上所述的所有优点。
附图说明
图1是本申请实施例所述一种控制测试执行的方法流程图;
图2是本申请优选实施例所述一种控制压力测试执行的模型示意图;
图3是图2所示模型控制压力测试定时执行的方法流程图;
图4是本申请实施例所述一种控制测试执行的装置结构图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
为了按照指定时长执行测试,本申请提出一种基于多进程多线程的定时测试控制方法及装置,可以使每个进程及其子线程在执行到一定时间后自动停止。本申请主要适用于各种并发性能测试中。
下面通过实施例对本申请所述方法的实现流程进行详细说明。
参照图1,是本申请实施例所述一种控制测试执行的方法流程图。
所述方法主要用于控制并发性能测试的定时执行,包括以下步骤:
步骤101,启动测试后,设定用于控制定时执行的全局定时器;
其中,所述定时器是一个全局定时器,所述“全局”是指该定时器的作用域为整个程序,而不是某个函数内部。
全局定时器的作用是控制并发测试的定时执行,当全局定时器开始计时后,并发操作开始执行;当全局定时器结束计时后,并发操作停止执行。根据测试需要,可设定全局定时器的时间为几小时、一天、更长或更短的时间。
步骤102,当运行并发操作时生成多进程,每个进程又生成多线程;
即所述并发性能测试运行的是一个多进程多线程的模型,多个进程同时执行,每个进程生成的多个线程也在同时执行,因此总的并发数量为进程数量乘以每个进程生成的线程数量。由此可见,这种多进程多线程的模型能够最大程度地提高并发能力。
步骤103,每个线程在并发执行过程中根据所述全局定时器循环判断并发执行是否结束,如果是,则结束该线程的执行。
如上所述,全局定时器的作用就是控制并发测试的定时执行,其中每个线程都是根据所述全局定时器进行判断,这样就可以保证所有并发执行的线程都可以同时执行、同时停止,从而保证并发量。
根据所述全局定时器判断并发执行是否结束的方法可以有多种,本申请实施例提供了以下两种实现方法:
一种方法是在启动测试后,设定用于控制每个线程循环的全局条件变量,并在所述全局定时器的计时结束后修改所述全局条件变量;每个线程在并发执行过程中循环判断所述全局条件变量是否被修改,如果被修改,则结束该线程的执行;如果一直未被修改,则继续循环执行。
还有一种方法是每个线程在每次循环时都将当前系统时间与所述全局定时器中设定的时间进行比较,看是否已达到全局定时器中设定的时间。如果达到,则退出循环,结束该线程的执行;如果一直未达到,则继续循环执行。
对比上述两种实现方法可以看出,第二种方法由于每次多出一个获取当前系统时间的操作,因此加重了运行的负担;而且,如果负担很重导致执行速度很慢,每个线程可能会执行不同步,导致大量并发无法统一结束。
但是,上述两种方法都可以根据所述全局定时器判断定时是否结束,并且实际应用中也可以有其他的判断方法,本申请实施例对此不做限定。
综上所述,图1所示实施例所述的方法在多进程多线程执行过程中,通过设置定时器,每个进程及其子线程在执行到一定时间后可以自动停止,从而让测试工作几天、几周的长期执行,而不用考虑需要设置一个多大的执行次数才能持续测试几天、几周。而且,所述用于定时控制的定时器是一个全局定时器,每个进程及其子线程都是根据该全局定时器判断是否停止执行,这样就可以保证所有的并发线程同时开始执行、同时结束,实现最大并发量。
在实际应用中,性能测试在软件的质量保证中起着重要的作用,它包括的测试内容丰富多样。性能测试包括三个方面:应用在客户端性能的测试、应用在网络上性能的测试和应用在服务器端性能的测试。通常情况下,三方面有效、合理的结合,可以达到对系统性能全面的分析和瓶颈的预测。
其中,服务端性能测试区别于UI性能测试、客户端性能测试等,通过产生大量高请求频率高并发的访问请求对服务端进行访问,让服务端在长时间高负载情况下运行,检查系统运行正确性、稳定性的测试方法。
在服务端性能测试中,负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
为了使本领域技术人员进一步了解本申请的内容,下面以服务端的压力测试为例进行更加详细的说明。
参照图2,是本申请优选实施例所述一种控制压力测试执行的模型示意图。
在所述压力测试过程中,由压力端产生压力来测试服务端的性能。压力端是一种在性能测试时,模拟用户的某种业务操作,并将该操作或请求通过压力生成方法变成高并发高频率的请求,以达到让服务端受压的目的。并且本实施例中,压力端生成的压力是可控的,比如主控程序可以让每个压力执行指定时间,暂停、恢复、停止、退出等。在性能测试中,被测系统承受的压力大小取决于两个主要因素:1)单个请求的请求频率;2)并发请求的请求数量。这种并发请求产生的压力叫做并发压力,本实施例通过压力端产生并发压力来测试服务端的性能。
从图2可以看出:
首先,本实施例是基于多进程多线程的性能测试。压力端产生压力的入口进程称为父进程,当启动父进程后,在执行到压力生成函数时,父进程会生成很多的子进程,如图2所示的子进程1到子进程N。而每个子进程主要的任务就是再生成很多的子线程,如图2所示的子线程1.1到子线程1.M。并且,负责生成压力的代码运行于每个子线程中。这样,从应用级看,通过每个子线程的压力生成代码发出的请求都是独立的、并行的,所以在运行时理论上的最大并发数应该遵循以下公式:
最大并发数=子进程数N×子线程M。
以上是性能最高的高并发性能测试压力端压力生成模型。
其次,压力生成代码运行在子线程的一个循环语句中,这样可以让每个子线程可控的循环执行压力测试,产生源源不断的请求。而每个子线程中循环语句的执行过程都由一个全局统一的循环条件变量控制,从而解决定时控制执行的问题。上述的循环条件变量被一个全局的定时器线程所控制,正常执行时该循环条件变量为真(TRUE),当定时器计时结束后,定时器线程改变该循环条件变量为假(FALSE),从而达到中断循环的目的。
下面通过图3的步骤详细说明图2所示模型中压力端定时产生压力的过程。
参照图3,是图2所示模型控制压力测试定时执行的方法流程图。
以Xnix系统(Unix及Linux系统,并包括他们的衍生版本)为例,当然所述方法同样适用于Windows等其他操作系统。
步骤301,启动压力测试后,启动父进程;
步骤302,在所述父进程初始化的过程中,生成进程共享的内存区域,并在该区域中声明一个全局条件变量,设定该全局条件变量的初始值为true;
在Xnix系统中,可以通过mmap方法生成一块进程共享的内存区域。在压力生成过程中,子进程不改变该全局条件变量,该全局条件变量将作为模型中每个子线程循环结构的控制条件,由于该变量在进程共享的内存区内,所以不需要为每一个进程都分配一个条件变量,这便使得父进程可以统一管理各个子进程的执行状态,同时节约了内存资源。
步骤303,父进程生成一个定时器线程;
所述定时器线程用于控制测试执行的时间,可以设为一天、一小时等等。
步骤304,当模型运行压力生成函数时,所述父进程生成多个子进程,每个子进程又生成多个子线程;
在Xnix系统中,父进程可通过fork()方法生成子进程,子进程可继承父进程共享内存的访问权限。
步骤305,所述定时器线程开始计时,每个子线程循环产生压力请求;
步骤306,所述定时器线程计时结束后,发送信号通知父进程将所述全局条件变量的值修改为false;
步骤307,每个子线程在每次循环中从所述共享的内存区域读取该全局条件变量,判断所述全局条件变量的值,如果为true,则不断产生压力请求;如果为false,则退出循环,结束压力的产生。
需要说明的是,对于图3所示实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。
通过以上流程,父进程通过定时器线程和设在共享内存的全局条件变量,就可以统一管理所有并发的子线程的执行。
在Xnix系统中,父进程通过以下方式实现图3所示流程:
父进程在步骤302分配完全局条件变量后,具体还包括以下处理:
1、先实现一个信号控制函数叫做cb_trap,该函数的作用是当执行该函数时,父进程改变处于进程共享空间中的全局条件变量,使其值为false;
2、再通过signal(SIGINT,cb_trap)方法,将cb_trap注册为一个信号处理函数,信号量可以任意选择,本实施例采用SIGINT作为中断信号,当父进程接收到SIGINT信号时,便执行cb_trap函数;
3、最后再生成一个定时器线程,该定时器线程执行过程如下:
a)先接受一个回调函数及回调参数(本实施例中回调函数是cb_kill,它的作用是向父进程发送回调参数这个信号量,回调参数是所采用的信号量SIGINT);
b)定时器线程执行过程中通过select(0,0,0,0,time)进入阻塞状态;
其中,所述time就是压力端的各子线程定时执行的时间。在定时器线程的阻塞状态下,子线程源源不断的产生压力请求,当时间到达time时所述定时器线程被唤醒;
c)计时结束后执行回调函数并传入回调参数;
d)回调函数向父进程发送SIGINT信号;
e)父进程执行信号处理函数cb_trap;
f)cb_trap执行后改变处于共享内存区域的条件变量为false;
g)这时当每个子进程中的每个子线程所在的循环体进行下一次条件判断时,发现条件已变为false,于是退出循环执行,压力端的压力生成过程在该时间执行完毕。
由上可知,父进程通过函数cb_trap改变全局条件变量的值,定时器线程通过回调函数及回调参数的方式通知父进程修改变量值,而子线程根据所述全局条件变量的值定时执行。
在实际应用中,上述方法可以由C语言实现,可以达到很好的效果。而且,所述方法不依赖于特定的操作系统或硬件,还可跨平台执行。
上述实施例是以压力测试为例进行说明,但具体应用中也可以应用到其他的性能测试中,其实施原理与上述实施例相似,故不再赘述。
基于上述图1至图3的内容,为了突出本申请实施例所述方法的优点,下面将本申请与实际应用中可能采用的其他定时控制方法进行比较:
1、与可能采用的单进程多线程模型相比
对于单进程多线程模型,可采用与本申请类似的定时控制方法。由于是单进程,所以控制定时执行的策略可以很简单,即每个进程都启动一个专门计时的线程,每个进程中有一个全局变量作为是否继续执行的判断条件,当时间到达后该计时线程改变该进程的全局变量,从而使得循环结构跳出,终止执行。
这种单进程多线程模型也可以解决定时执行的问题,但是与本申请相比:
第一,所述单进程多线程模型需要在每个单进程中都生成一个计时线程,因此浪费了一个宝贵的线程资源,影响了执行效率;
第二,所述单进程多线程模型生成的并发压力不如多进程多线程模型强大。
2、与另一种可能采用的多进程多线程模型相比
对于多进程多线程模型,其定时执行策略与单进程多线程模型类似,每个线程启动一个线程用作定时。与本申请相比,这种多进程多线程模型存在以下两个缺点:
(1)效率低。
由于该模型是多进程,而每个进程的每个线程都要再生成一个线程去做计时,因此浪费了一个宝贵的线程资源。假设有一台压力测试服务器,它最高可以以500个进程每个进程100个线程,总共50000个线程并发去执行该模型,但由于每个线程都需要一个单独的线程做计时,其中就有50000个线程用作计时,而无法当做压力生成线程来用,而这些资源本可以让这台服务器的并发压力生成能力达到100000个并发。
(2)不能统一管理。
由于每个进程每个线程的定时器都是独立的,当一个定时器线程收到一个阻塞信号后,该线程的实际执行时间便和其他线程无法同步了。或者由于定时器线程实现的问题(比如通过获得当前系统时间和期望执行时间比较的方法实现定时),当大量的线程同时执行获取系统时间操作时,系统无法及时返回,导致该线程计时不准确,和其他线程出现较大误差。
与上述的多进程多线程模型相比,本申请同样能够以多进程多线程模型运行,但是可以产生单台计算机最大的并发压力,同时由于本申请只需要一个定时器线程,所以还可以解决定时器效率低和不能统一管理的问题,不会浪费计算机的计算能力,也不会让各个线程执行时间不同步。
基于上述方法实施例的说明,本申请还提供了相应的控制测试执行的装置实施例,来实现上述方法实施例所述的内容。
参照图4,是本申请实施例所述一种控制测试执行的装置结构图。
所述装置可以包括定时器设置单元41、并发执行单元42和定时控制单元43,其中,
定时器设置单元41,用于启动测试后,设定用于控制定时执行的全局定时器;
并发执行单元42,用于当运行并发操作时生成多进程,每个进程又生成多线程;
定时控制单元43,用于每个线程在并发执行过程中根据所述全局定时器循环判断并发执行是否结束,如果是,则结束该线程的执行。
其中,所述定时控制单元43可采用两种策略进行判断:
第一种策略是是在启动测试后,设定用于控制每个线程循环的全局条件变量,并在所述全局定时器的计时结束后修改所述全局条件变量;每个线程在并发执行过程中循环判断所述全局条件变量是否被修改,如果被修改,则结束该线程的执行;如果一直未被修改,则继续循环执行。
第二种策略是每个线程在每次循环时都将当前系统时间与所述全局定时器中设定的时间进行比较,看是否已达到全局定时器中设定的时间。如果达到,则退出循环,结束该线程的执行;如果一直未达到,则继续循环执行。这种策略由于每次多出一个获取当前系统时间的操作,因此加重了运行的负担;而且,如果负担很重导致执行速度很慢,每个线程可能会执行不同步,导致大量并发无法统一结束。
因此,上述第一种策略更加优选,基于上述第一种策略,所述装置还可以包括:
变量设置单元44,用于启动测试后,设定用于控制每个线程循环的全局条件变量,并在所述全局定时器的计时结束后修改所述全局条件变量;
则每个线程在并发执行过程中循环判断所述全局条件变量是否被修改,如果被修改,则结束该线程的执行。
进一步,所述变量设置单元44具体包括:
共享内存生成子单元441,用于启动父进程,在所述父进程初始化的过程中,生成进程共享的内存区域;其中,所述父进程用于生成多个子进程,每个子进程又生成多个子线程;
变量声明子单元442,用于在所述内存区域中声明一个全局条件变量,设定该全局条件变量的初始值为true。
进一步,所述定时器设置单元41具体包括:
定时器生成子单元411,用于由父进程生成一个定时器线程;
消息通知子单元412,用于在所述定时器线程计时结束后,发送信号通知父进程将所述全局条件变量的值修改为false。
基于所述变量声明子单元442和消息通知子单元412,每个子线程在并发执行过程中循环判断所述全局条件变量的值,如果为false,则已被修改,结束该线程的执行。
优选的,本实施例中每个子线程还可以单独运行一套测试代码,这样可以让每个子线程可控的循环执行测试,产生源源不断的请求。
上述控制测试执行的装置可用于多进程多线程的并发测试中,每个进程及其子线程在执行到一定时间后可以自动停止,从而让测试工作几天、几周的长期执行,而不用考虑需要设置一个多大的执行次数才能持续测试几天、几周。而且,通过一个定时器更方便全局的管理,提高了测试效率,还可以实现最大并发量。
对于上述控制测试执行的装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见图1至图3所示方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上对本申请所提供的一种控制测试执行的方法及装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (12)
1.一种控制测试执行的方法,其特征在于,包括:
启动测试后,设定用于控制定时执行的全局定时器;
当运行并发操作时生成多进程,每个进程又生成多线程;
每个线程在并发执行过程中根据所述全局定时器循环判断并发执行是否结束,如果是,则结束该线程的执行。
2.根据权利要求1所述的方法,其特征在于,所述每个线程在并发执行过程中根据所述全局定时器循环判断并发执行是否结束,包括:
启动测试后,设定用于控制每个线程循环的全局条件变量,并在所述全局定时器的计时结束后修改所述全局条件变量;
每个线程在并发执行过程中循环判断所述全局条件变量是否被修改,如果被修改,则结束该线程的执行。
3.根据权利要求2所述的方法,其特征在于,
所述设定用于控制每个线程循环的全局条件变量包括:启动父进程,在所述父进程初始化的过程中,生成进程共享的内存区域,并在该区域中声明一个全局条件变量,设定该全局条件变量的初始值为true;其中,所述父进程用于生成多个子进程,每个子进程又生成多个子线程;
所述方法还包括:每个子线程在并发执行过程中从所述共享的内存区域读取该全局条件变量。
4.根据权利要求3所述的方法,其特征在于,
所述设定用于控制定时执行的全局定时器包括:父进程生成一个定时器线程;
在所述全局定时器的计时结束后修改所述全局条件变量包括:在所述定时器线程计时结束后,发送信号通知父进程将所述全局条件变量的值修改为false。
5.根据权利要求4所述的方法,其特征在于,所述每个线程在并发执行过程中循环判断所述全局条件变量是否被修改,包括:
每个子线程在并发执行过程中循环判断所述全局条件变量的值,如果为false,则已被修改。
6.根据权利要求1至5任一所述的方法,其特征在于:
每个子线程单独运行一套测试代码。
7.一种控制测试执行的装置,其特征在于,包括:
定时器设置单元,用于启动测试后,设定用于控制定时执行的全局定时器;
并发执行单元,用于当运行并发操作时生成多进程,每个进程又生成多线程;
定时控制单元,用于每个线程在并发执行过程中根据所述全局定时器循环判断并发执行是否结束,如果是,则结束该线程的执行。
8.根据权利要求7所述的装置,其特征在于,还包括:
变量设置单元,用于启动测试后,设定用于控制每个线程循环的全局条件变量,并在所述全局定时器的计时结束后修改所述全局条件变量;
则每个线程在并发执行过程中循环判断所述全局条件变量是否被修改,如果被修改,则结束该线程的执行。
9.根据权利要求8所述的装置,其特征在于,所述变量设置单元包括:
共享内存生成子单元,用于启动父进程,在所述父进程初始化的过程中,生成进程共享的内存区域;其中,所述父进程用于生成多个子进程,每个子进程又生成多个子线程;
变量声明子单元,用于在所述内存区域中声明一个全局条件变量,设定该全局条件变量的初始值为true。
10.根据权利要求9所述的装置,其特征在于,所述定时器设置单元包括:
定时器生成子单元,用于由父进程生成一个定时器线程;
消息通知子单元,用于在所述定时器线程计时结束后,发送信号通知父进程将所述全局条件变量的值修改为false。
11.根据权利要求10所述的装置,其特征在于:
每个子线程在并发执行过程中循环判断所述全局条件变量的值,如果为false,则已被修改。
12.根据权利要求7至11任一所述的装置,其特征在于:
每个子线程单独运行一套测试代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101159717A CN102768637A (zh) | 2011-05-05 | 2011-05-05 | 一种控制测试执行的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101159717A CN102768637A (zh) | 2011-05-05 | 2011-05-05 | 一种控制测试执行的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102768637A true CN102768637A (zh) | 2012-11-07 |
Family
ID=47096044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011101159717A Pending CN102768637A (zh) | 2011-05-05 | 2011-05-05 | 一种控制测试执行的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102768637A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294541A (zh) * | 2013-05-24 | 2013-09-11 | 福建联迪商用设备有限公司 | 一种星型结构的多进程间的通信方法和装置 |
CN104090817A (zh) * | 2014-07-15 | 2014-10-08 | 浪潮电子信息产业股份有限公司 | 一种linux shell脚本并行执行与超时自动退出的处理方法 |
WO2015027403A1 (en) * | 2013-08-28 | 2015-03-05 | Hewlett-Packard Development Company, L.P. | Testing multi-threaded applications |
CN105843735A (zh) * | 2016-03-18 | 2016-08-10 | 广东欧珀移动通信有限公司 | 一种终端内存的消耗方法及装置 |
CN106649106A (zh) * | 2016-12-09 | 2017-05-10 | 北京锐安科技有限公司 | 一种测试用例的生成方法及装置 |
CN106961600A (zh) * | 2017-03-31 | 2017-07-18 | 深圳市九洲电器有限公司 | 机顶盒解复用器压力测试方法及系统 |
CN109375998A (zh) * | 2018-10-11 | 2019-02-22 | 上海瀚银信息技术有限公司 | 一种高并发请求环境中的处理方法 |
CN109474492A (zh) * | 2018-11-26 | 2019-03-15 | 许继集团有限公司 | 一种报文捕获及定位方法 |
CN110968499A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 机器学习中并行测试的优化方法及装置 |
CN111176801A (zh) * | 2019-07-17 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 一种多进程管理方法、装置、设备及存储介质 |
CN112653599A (zh) * | 2020-12-21 | 2021-04-13 | 广州爱浦路网络技术有限公司 | 接口错误信息报告方法、系统、装置和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567205A (zh) * | 2003-06-25 | 2005-01-19 | 英业达股份有限公司 | 多执行线程同时停止的方法 |
CN101111045A (zh) * | 2007-09-05 | 2008-01-23 | 中兴通讯股份有限公司 | WiMAX基站的负载测试方法及系统 |
US20110004883A1 (en) * | 2009-06-30 | 2011-01-06 | International Business Machines Corporation | Method and System for Job Scheduling |
-
2011
- 2011-05-05 CN CN2011101159717A patent/CN102768637A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567205A (zh) * | 2003-06-25 | 2005-01-19 | 英业达股份有限公司 | 多执行线程同时停止的方法 |
CN101111045A (zh) * | 2007-09-05 | 2008-01-23 | 中兴通讯股份有限公司 | WiMAX基站的负载测试方法及系统 |
US20110004883A1 (en) * | 2009-06-30 | 2011-01-06 | International Business Machines Corporation | Method and System for Job Scheduling |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294541A (zh) * | 2013-05-24 | 2013-09-11 | 福建联迪商用设备有限公司 | 一种星型结构的多进程间的通信方法和装置 |
WO2014187166A1 (zh) * | 2013-05-24 | 2014-11-27 | 福建联迪商用设备有限公司 | 一种星型结构的多进程间的通信方法和装置 |
CN103294541B (zh) * | 2013-05-24 | 2017-04-26 | 福建联迪商用设备有限公司 | 一种星型结构的多进程间的通信方法和装置 |
WO2015027403A1 (en) * | 2013-08-28 | 2015-03-05 | Hewlett-Packard Development Company, L.P. | Testing multi-threaded applications |
US10725889B2 (en) | 2013-08-28 | 2020-07-28 | Micro Focus Llc | Testing multi-threaded applications |
CN104090817A (zh) * | 2014-07-15 | 2014-10-08 | 浪潮电子信息产业股份有限公司 | 一种linux shell脚本并行执行与超时自动退出的处理方法 |
CN105843735B (zh) * | 2016-03-18 | 2018-12-11 | 广东欧珀移动通信有限公司 | 一种终端内存的消耗方法及装置 |
CN105843735A (zh) * | 2016-03-18 | 2016-08-10 | 广东欧珀移动通信有限公司 | 一种终端内存的消耗方法及装置 |
CN106649106A (zh) * | 2016-12-09 | 2017-05-10 | 北京锐安科技有限公司 | 一种测试用例的生成方法及装置 |
CN106961600A (zh) * | 2017-03-31 | 2017-07-18 | 深圳市九洲电器有限公司 | 机顶盒解复用器压力测试方法及系统 |
CN110968499A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 机器学习中并行测试的优化方法及装置 |
CN109375998A (zh) * | 2018-10-11 | 2019-02-22 | 上海瀚银信息技术有限公司 | 一种高并发请求环境中的处理方法 |
CN109375998B (zh) * | 2018-10-11 | 2022-07-22 | 上海瀚银信息技术有限公司 | 一种高并发请求环境中的处理方法 |
CN109474492A (zh) * | 2018-11-26 | 2019-03-15 | 许继集团有限公司 | 一种报文捕获及定位方法 |
CN111176801A (zh) * | 2019-07-17 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 一种多进程管理方法、装置、设备及存储介质 |
CN111176801B (zh) * | 2019-07-17 | 2024-04-12 | 腾讯科技(深圳)有限公司 | 一种多进程管理方法、装置、设备及存储介质 |
CN112653599A (zh) * | 2020-12-21 | 2021-04-13 | 广州爱浦路网络技术有限公司 | 接口错误信息报告方法、系统、装置和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102768637A (zh) | 一种控制测试执行的方法及装置 | |
CN109670199B (zh) | 一种高效的电网拓扑分析方法及装置 | |
CN111708627B (zh) | 基于分布式调度框架的任务调度方法以及装置 | |
US20060268967A1 (en) | Supplying instruction to operational stations | |
CN101834890A (zh) | 一种分布式系统的智能化管理系统及方法 | |
CN107992367B (zh) | 一种Modbus串口数据处理方法 | |
CN105159769A (zh) | 一种适用于计算能力异构集群的分布式作业调度方法 | |
CN101556545A (zh) | 一种实现进程支持的方法、装置和多线程系统 | |
CN103699432A (zh) | 一种异构环境下的多任务运行时协同调度系统 | |
CN104536835A (zh) | 一种热备份实时控制系统中自适应任务调度方法 | |
CN106528065B (zh) | 一种线程获取方法及设备 | |
Guo et al. | The concurrent consideration of uncertainty in WCETs and processor speeds in mixed-criticality systems | |
CN103399787A (zh) | 一种基于Hadoop云计算平台的MapReduce作业流式调度方法及调度系统 | |
Wang et al. | A Smart Semipartitioned Real‐Time Scheduling Strategy for Mixed‐Criticality Systems in 6G‐Based Edge Computing | |
CN105446812A (zh) | 一种多任务调度配置方法 | |
CN108509257B (zh) | 一种基于多线程的消息处理方法及装置 | |
CN109032779A (zh) | 任务处理方法、装置、计算机设备及可读存储介质 | |
Jacques-Silva et al. | Towards autonomic fault recovery in system-s | |
CN101529353B (zh) | 用于对自动化系统进行在线程序修改的方法 | |
CN111722917A (zh) | 性能测试任务的资源调度方法、装置和设备 | |
CN114579280B (zh) | 一种准实时调度方法及系统 | |
Zabolotnyi et al. | Profiling-based task scheduling for factory-worker applications in infrastructure-as-a-service clouds | |
Yingchi et al. | Delay-aware associate tasks scheduling in the cloud computing | |
CN108121605A (zh) | 一种基于yarn的cgroup内存控制优化方法及系统 | |
CN103777593A (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 | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20121107 |
|
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1172703 Country of ref document: HK |