CN100498735C - 自动测试过程中资源使用的方法 - Google Patents
自动测试过程中资源使用的方法 Download PDFInfo
- Publication number
- CN100498735C CN100498735C CNB2006100766124A CN200610076612A CN100498735C CN 100498735 C CN100498735 C CN 100498735C CN B2006100766124 A CNB2006100766124 A CN B2006100766124A CN 200610076612 A CN200610076612 A CN 200610076612A CN 100498735 C CN100498735 C CN 100498735C
- Authority
- CN
- China
- Prior art keywords
- resource
- resource pool
- resources
- case
- 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.)
- Active
Links
Images
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种自动测试过程中资源使用的方法,该方法包括如下步骤:步骤1、在自动测试的过程中,多个测试用例组成一并发过程,向资源池申请资源;步骤2、资源池将其存储的资源向多个测试用例进行分配,并根据资源池中存储资源的数量,将所述多个测试用例重新组合成多个并发过程;步骤3、执行所述多个并发过程。通过本发明提供的方法,从根本上解决了用例并发执行时的资源冲突问题;并使得用户执行序列和测试用例彻底分离,用户在编写测试用例时,不用关心这些用例以后是按什么序列执行的,用户执行时如果改变了执行序列,也不用对测试用例本身产生任何影响;并且提高了用例执行的速度和效率。
Description
技术领域
本发明涉及一种自动测试过程中的资源使用方法,尤其是一种在自动测试过程中,利用资源池分配向测试用例脚本分配资源的资源使用方法。
背景技术
在自动化测试中,用例通常由用例预处理、后处理和一个或多个执行脚本三种脚本构成的,其中用例预处理脚本和后处理脚本是可有可无的,根据需要而定,但至少要包含一个执行脚本,执行用例时,先执行用例预处理脚本,再并发执行一个或多个执行脚本,最后执行后处理脚本。图1表示了用例执行的过程。
用户可以自由选定一些用例,按任意的执行序列(串行和并行)来执行,这种执行序列称之为规程,规程是按一定规则执行的用例集合。规程是由多个步骤组成,每个步骤由多个用例组成,步骤之间是顺序执行的,步骤内的用例可以并行执行也可以顺序执行。图2表示了规程执行的过程。
但不幸的是,常常有一些资源是排他的,一个用例使用了,其他用例便不能使用,例如200业务中的卡号资源,以图2中的步骤2为例,如果用例1使用了一个卡号,用例2、用例3就不能使用同一卡号。而且这些资源也是有限的,不可能为每一个用例分配一个不同的资源,仍然以图2中的步骤2为例,假定这个并行步骤中有100个用例,可能我们只有有限的10个卡号资源。在这种情况下就会造成资源使用的冲突。
现有技术解决用例并行时资源冲突问题常常使用三种方法:第一种是让每个用例都使用不同的资源,允许用户随意改变执行序列(串行和并行),第二种是每个用例都使用同一个资源,不允许用户改变执行序列,第三种是不对资源冲突负责,全部由用户自己想办法解决。
这几种方法的缺陷是显而易见的,第一种方法需要大量的资源,这在实际过程中几乎是不可能的,第二种方法用例只能串行,执行效率非常低下,第三种方法则把难题转嫁给了用户,根本不能称之为方法,用户在实际使用过程中往往为这些问题困惑,经常束手无策。
发明内容
本发明的目的是提供一种自动测试过程中的资源使用方法,通过自动测试的过程中,利用资源池进行资源的管理和分配,解决现有技术中用例并行时资源冲突问题,提高用例执行的速度和效率。
为了实现上述的发明目的,本发明提供了一种自动测试过程中的资源使用方法,包括如下步骤:
步骤1、在自动测试的过程中,多个测试用例组成一并发过程,向资源池申请资源;
步骤2、资源池将其存储的资源向多个测试用例进行分配,并根据资源池中存储资源的数量,将所述多个测试用例重新组合成多个并发过程;
步骤3、通过串行执行的方式执行所述多个并发过程。
所述步骤2具体为:
步骤21、资源池将其存储的资源逐一向申请资源的并发过程中的测试用例分配;
步骤22、判断是否所有的测试用例都分配到了资源,如果是,则执行步骤3,否则执行步骤23;步骤23、判断是否分配完资源池中所有资源,如果是,则执行步骤24,否则,执行步骤21;
步骤24、将资源池的资源进行复位;
步骤25、创建新的并发过程,将未申请到资源的测试用例移至该新的并发过程中,并向资源池进行资源申请,然后执行步骤21。
本发明具有如下有益效果:
1)通过本发明的方法,将常常变化的数据和经常不变的脚本彻底分离,从根本上解决了用例并发执行时的资源冲突问题。如果数据发生了变化,只需要简单更改一下资源池中的资源,大量的测试脚本则不需要进行任何改动。
2)使得用户执行序列和测试用例彻底分离,用户在编写测试用例时,不用关心这些用例以后是按什么序列执行的;用户执行时如果改变了执行序列,也不用对测试用例本身产生任何影响。
3)提高了用例执行的速度和效率。
4)使用户可以将全部注意力集中在用例的设计和编写上,而不用考虑用例的执行序列和资源冲突问题。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为现有技术中用例脚本的执行流程;
图2为现有技术中规程示意图;
图3为本发明的自动测试过程中的资源使用方法的具体实施例的流程图;
图4为本发明的经资源池调整后的测试用脚本执行序列示意图。
具体实施方式
在自动化测试中,常常有一些资源是排他的,一个用例使用了,其他用例便不能使用。举个例子,在200电话卡业务中,卡号就是这样一个资源,如果有一个人正在用这个卡打电话,另外一个人再使用这张卡,系统则会提示:此卡正在使用中。如果不能有效地管理这种资源,每个用例单独执行可能都是正确的,但组合在一起批量执行时,如果执行序列发生变化,例如由串行变成并行,则会出现上述资源冲突的问题。这种会引起冲突的资源其实有很多,除了卡号,还有缩位帐号、主叫号码、被叫号码等等。
为了解决资源冲突问题,本发明使用了一种独特的资源分配机制-资源池技术,资源池用来存储和管理测试用例使用的资源。在自动测试的过程中,多个测试用例向资源池申请资源;资源池将其存储的资源向多个测试用例进行分配,并根据资源池中存储资源的数量,将所述多个测试用例重新组合成多个并发过程;并执行各个并发过程,上述资源的分配完全是由资源池来完成的,不需要人为的干预。
参见图3,其为本发明的自动测试过程中的资源使用方法的具体实施例的流程图,包括如下步骤:
步骤101、在自动测试的过程中,多个测试用例组成一并发过程,向资源池申请资源;
步骤102、资源池将其存储的资源逐一向申请资源的并发过程中的测试用例分配;
步骤103、判断是否所有的测试用例都分配到了资源,如果是,则执行步骤107,否则执行步骤104;
步骤104、判断是否分配完资源池中所有资源,如果是,则执行步骤105,否则,执行步骤102;
步骤105、将资源池的资源进行复位;
步骤106、创建新的并发过程,将未申请到资源的测试用例移至该并发过程中,并向资源池进行资源申请,然后执行步骤102。
步骤107、执行所述多个并发过程。该步骤可进一步具体为:所述多个并发过程按其生成顺序逐一获取资源,当一并发过程获取到资源后,便执行,该并发过程执行完成后,释放资源,下一并发过程获取资源并执行,直到所有并发过程执行完毕。
资源池可以根据资源的使用策略设定资源分配顺序;相应的在所述步骤102中,资源池将其存储的资源按照设定的资源分配顺序逐一分配给测试用例。所述的资源使用策略是由测试者设定,例如资源为多个电话卡的号码,则可以按照电话号码的顺序来分配资源;另外用户也可以通过设定资源池的资源使用策略,随意组织测试用例、随意更改用例执行的串行和并行特性。在所述步骤102中,资源池也可以采用随机的方式将资源池的资源逐一分配给测试用例。
在所述步骤101中,资源池可以根据测试用例的执行策略(例如,多个测试用例要按照一定优先级别来执行,优先级高的要先申请到资源),设定测试用例的资源申请顺序,用户可以通过设定测试用例的执行策略来安排测试用例申请资源的顺序。
下面从具体程序的实现上,对资源池使用过程进行详细的介绍(为清晰起见,各步骤除了用文字进行说明外,还用类TCL(Tool CommandLanguage,工具命令语言)的代码段来描述,行首#表示此行是注释):
1、资源池定义:资源池可以在整个用例工程的预处理脚本中定义。
#定义卡号资源
resource_pool CardA 67557123450-67557123459
定义了一个名为CardA的资源池,池子中有10个连续的资源,从67557123450到67557123459。
2、资源申请:可以在用例的预处理脚本中申请资源。
#申请卡号资源
resource_apply CardA CardCl
表示从资源池CardA中申请一个空闲的资源,存放在变量CardCl中。如果前面没有用例从这个资源池中申请资源,则本次申请到资源池中第一个资源,即67557123450;如果前面的用例申请到了第一个资源,则本次申请到资源池中第二个资源,即67557123451;如果前面的用例把10个资源都申请去了,则本次无法申请到合法的资源。按资源池的机制,应该自动将用例的执行序列调整为:前10个用例形成一个并行过程,并执行;后面的用例调整到下一个并行过程中(当前一个并行过程执行完后,资源池会自动复位,因此未获取到资源的用例又会从第一个资源开始重新申请资源)。
3、使用资源:在脚本中使用资源。
InputAccount $CardC1
CardCl是一个变量,$CardCl表示取此变量的值。由第2步可以得知,此时变量的值已经是资源池中某个确定的资源了。
下面再具体描述一下资源池机制解决资源使用过程中排他和冲突问题的方法和算法:
用例或规程在运行前先要进行编译。系统实际是在编译时申请资源,按资源池定义的申请顺序一个个地申请的。并发过程中的第1个用例申请到资源池中的第1个资源,并发过程中的第2个用例申请到资源池中的第2个资源,如果资源池中的资源都被占用了,则后续的用例无法申请到合法的资源,按资源池机制,此时应自动对用例的执行序列进行调整。
调整的方法为:已经申请到资源的用例保留在原来的并发过程中,没有申请到资源的用例则被调整到下一个并发过程中(当完成一个并发过程的资源分配后,资源池会自动复位,因此,后面的测试用例又会从第1个资源开始重新申请资源),新的并发过程是等原来的并发过程执行完后才启动的。整个调整是自动进行的,不需要用户进行任何干预。如上例,资源池CardA中有10个资源,假设在规程中有100个用例并行,由于只有10个卡号资源,因此第11个用例就申请不到空闲资源了,因此系统将第11个用例起的10个用例自动调整到了下一个并发过程中,在新的并发过程中,用例又可以从头开始申请资源了。经资源池调整后的用例序列如图4所示。
作个比方:资源池中的资源就好像是一批令牌,并行过程中的用例则是一大群抢着过关的人。只有那些拿到了令牌的人才可以出闸过关,出闸之后令牌传回来重新分发。没有拿到令牌的人则必须在下一个过程中才能过关。
要强调的是,整个调整过程都是由资源池自动完成的,用户不必花费精力去关心数据冲突这些问题,而是可以把精力更多地放在用例设计上了。
在上述例子中,资源池中包括10个连续的资源,实际上,资源池还支持离散的资源,离散资源和连续资源也可以混合使用,例如:
resource_pool channel1 aa,bb,10-19
资源池名称为channel1,里面有12个资源,2个离散的资源,10个连续的资源。下面在一个预处理脚本中申请四个资源:
resource_apply channel1 var1
resource_apply channel1 var2
resource_apply channel1 var3
resource_apply channel1 var4
再把结果打印出来:
puts var1=$var1
puts var2=$var2
puts var2=$var3
puts var2=$var4
puts是一个打印命令。最终输出结果为:
var1=aa
var2=bb
var3=10
var2=11
另外,资源池机制还支持一种绑定型的资源。一个最常见的应用就是手机,手机包括号码和IMSI号,这两个号码必须成对出现,不可分割。绑定式资源的定义方法为:
resource_pool{IMSIH1 MSISDNH1}{{460070360010200-460070360010209}{13900100200-13900100209}}
定义了10个表示手机的资源,IMSIH1表示IMSI号,MSISDNH1表示手机号码,这两个资源是绑定在一起的,号码为13900100200的手机,其IMS1号为460070360010200,同理,号码为13900100201的手机,其IMSI号为460070360010201,依次类推。
按以下方法申请资源:
resource_apply{IMSIH1 MSISDNH1}{imsi1 msisdn1}
resource_apply{IMSIH1 MSISDNH1}{imsi2 msisdn2}
打印结果:
puts"imsil=$imsi1 msisdn1=$msisdn1"
puts"imsi2=$imsi2 msisdn2=$msisdn2"
输出为:
imsi1=460070360010200 msisdn1=13900100200
imsi2=460070360010201 msisdn2=13900100201
离散型资源池和绑定型资源池对执行序列的影响和连续型资源池类似,遵守同一个原则:如果用例申请不到空闲的资源,则被自动调整到下一个并发过程中。在此不赘述。
从上面的例子可以清楚地看出,通过使用资源池,我们将数据和逻辑已经明显地分离出来了:数据体现在资源池定义中,而资源池可以在整个用例工程的预处理脚本中定义,逻辑体现在测试用例中。数据和逻辑是严格分离的,一旦数据发生了变化,我们只需要更改一下预处理脚本中的资源池定义,成千上万的测试用例不需要进行任何变化,也就是说,使用资源池后,测试用例时可重用、可移植的。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。
Claims (6)
1、一种自动测试过程中资源使用的方法,其特征在于包括如下步骤:
步骤1、在自动测试的过程中,多个测试用例组成一并发过程,向资源池申请资源;
步骤2、资源池将其存储的资源向多个测试用例进行分配,并根据资源池中存储资源的数量,将所述多个测试用例重新组合成多个并发过程;
步骤3、通过串行执行的方式执行所述多个并发过程。
2、根据权利要求1所述的方法,其特征在于所述步骤2具体为:
步骤21、资源池将其存储的资源逐一向申请资源的并发过程中的测试用例分配;
步骤22、判断是否所有的测试用例都分配到了资源,如果是,则执行步骤3,否则执行步骤23;
步骤23、判断是否分配完资源池中所有资源,如果是,则执行步骤24,否则,执行步骤21;
步骤24、将资源池的资源进行复位;
步骤25、创建新的并发过程,将未申请到资源的测试用例移至该新的并发过程中,并向资源池进行资源申请,然后执行步骤21。
3、根据权利要求1或2所述的方法,其特征在于所述步骤3具体为:
所述多个并发过程按其生成顺序逐一获取资源,当一并发过程获取到资源后,便执行,该并发过程执行完成后,释放资源,下一并发过程获取资源并执行,直到所有并发过程执行完毕。
4、根据权利要求2所述的方法,其特征在于在所述步骤21中,资源池将其存储的资源按照设定的资源分配顺序逐一分配给测试用例。
5、根据权利要求2所述的方法,其特征在于在所述步骤21中,资源池采用随机的方式将资源池的资源逐一分配给测试用例。
6、根据权利要求2所述的方法,其特征在于在所述步骤1中,资源池根据测试用例的执行策略,设定测试用例的资源申请顺序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100766124A CN100498735C (zh) | 2006-04-19 | 2006-04-19 | 自动测试过程中资源使用的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100766124A CN100498735C (zh) | 2006-04-19 | 2006-04-19 | 自动测试过程中资源使用的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1967500A CN1967500A (zh) | 2007-05-23 |
CN100498735C true CN100498735C (zh) | 2009-06-10 |
Family
ID=38076283
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100766124A Active CN100498735C (zh) | 2006-04-19 | 2006-04-19 | 自动测试过程中资源使用的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100498735C (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101694634B (zh) * | 2009-10-30 | 2013-06-26 | 迈普通信技术股份有限公司 | 自动化测试系统中设备分配方法 |
CN102110050A (zh) * | 2010-12-16 | 2011-06-29 | 上海泰捷通信技术有限公司 | 通讯终端模块自动化测试方法 |
CN102012845B (zh) * | 2010-12-16 | 2012-08-08 | 迈普通信技术股份有限公司 | 一种提高自动化测试资源利用率的方法 |
CN102609352B (zh) * | 2011-01-19 | 2014-11-19 | 阿里巴巴集团控股有限公司 | 一种并行测试方法及并行测试服务器 |
CN104915288A (zh) * | 2014-03-13 | 2015-09-16 | 阿里巴巴集团控股有限公司 | 测试方法及装置 |
CN106547654A (zh) * | 2015-09-21 | 2017-03-29 | 中兴通讯股份有限公司 | 一种自动化测试方法及装置 |
CN110502422A (zh) * | 2018-05-18 | 2019-11-26 | 海能达通信股份有限公司 | 一种自动测试方法、测试装置和具有存储功能的装置 |
CN112988558B (zh) * | 2019-12-16 | 2024-09-17 | 迈普通信技术股份有限公司 | 测试执行方法、装置、电子设备及存储介质 |
CN114791876A (zh) * | 2021-01-26 | 2022-07-26 | 中国电信股份有限公司 | 测试资源动态管理系统、方法和存储介质 |
-
2006
- 2006-04-19 CN CNB2006100766124A patent/CN100498735C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN1967500A (zh) | 2007-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100498735C (zh) | 自动测试过程中资源使用的方法 | |
CN110502340A (zh) | 一种资源动态调整方法、装置、设备及存储介质 | |
CN108132833A (zh) | 一种基于zookeeper技术的分布式定时任务调度方法和装置 | |
CN112463211A (zh) | 一种兼容多种开发架构的系统架构改造方法及系统架构 | |
CN111563820B (zh) | 智能合约并行执行方法及装置 | |
CN112288423A (zh) | 一种分布式框架的聚合支付方法和系统 | |
CN109447253A (zh) | 显存分配的方法、装置、计算设备及计算机存储介质 | |
CN106776395A (zh) | 一种共享集群的任务调度方法及装置 | |
CN106528065A (zh) | 一种线程获取方法及设备 | |
CN116112507A (zh) | 基于分层区块链多任务异步执行方法及装置 | |
CN110381150B (zh) | 区块链上的数据处理方法、装置、电子设备及存储介质 | |
CN111158800A (zh) | 基于映射关系构建任务dag的方法及装置 | |
CN113347249B (zh) | 一种作业加载方法、装置及设备 | |
CN109800074A (zh) | 任务数据并发执行方法、装置以及电子设备 | |
CN110308914A (zh) | 升级处理方法、装置、设备、系统及计算机可读存储介质 | |
CN112463340A (zh) | 基于tensorflow的多任务弹性调度方法及系统 | |
CN105262702B (zh) | 基于最小时延抖动的tdma通信网络时隙均匀分配方法 | |
CN106993008A (zh) | 一种资源调度方法及装置 | |
Kotthoff et al. | Distributed solving through model splitting | |
US20220291958A1 (en) | Mobile phone operating system for minors and its architecture and ecological development method | |
CN112600945B (zh) | 分布式区块链服务系统及其构建方法、存储介质 | |
CN106980463A (zh) | 存储系统的服务质量控制方法和装置 | |
CN115866059A (zh) | 一种区块链节点调度方法和装置 | |
CN108322537A (zh) | 云服务器节点资源池化的方法、装置、设备及存储介质 | |
CN110046141B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190308 Address after: 518057 Desai Science and Technology Building, 9789 Shennan Avenue, Yuehai Street, Nanshan District, Shenzhen City, Guangdong Province, 17th Floor (15th Floor of Natural Floor) 1702-1703 Patentee after: Shenzhen acoustic Cmi Holdings Ltd Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: Huawei Technologies Co., Ltd. |
|
TR01 | Transfer of patent right |