本发明涉及软件自动化测试领域,尤其涉及适用于一种适用于分布式测试系统的测试用例调度与分发方法。
背景技术:
现有的通用分布式自动化测试框架,如staf(softwaretestautomationframework),在多用户、多任务场景下,会遇到资源冲突问题。例如,用户1发起的任务1和用户2发起的任务2依赖同一台分布式测试机上的同一个资源,两个任务同时运行时便会出现资源冲突,导致不可预料的结果。
技术实现要素:
针对以上缺陷,本发明目的在于如何解决现有自动化测试框架中多任务同时运行中出现的资源冲突问题。
为了实现上述目的,本发明提供了一种适用于分布式测试系统的测试用例调度与分发方法,其特征在于将测试机和测试用例分别抽象为资源供给方和资源需求方,并为每个测试用例设置优先级,通过资源供需比对来调度测试用例,按照优先级来分发测试用例。
所述的适用于分布式测试系统的测试用例调度与分发方法,其特征在于按照如下步骤调度测试用例,生成测试用例分发列表:
步骤2.1解析测试任务;
步骤2.2读取一条测试用例,并从测试用例资源列表中查询满足该测试用例资源需求的测试机;
步骤2.3将测试用例与测试机的匹配关系追加到测试用例分发列表中;
步骤2.4判断该测试任务全部测试用例是否处理完毕,如果完成则进入测试用例分发程序;如果没有则返回继续执行步骤2.2。
所述的适用于分布式测试系统的测试用例调度与分发方法,其特征在于按照如下步骤分发测试用例:
步骤3.1启动测试用例分发程序;
步骤3.2判读测试用例分发列表是否为空,如果为空跳转执行步骤3.7;不为空继续执行;
步骤3.3从测试机状态列表中获取空闲测试机列表,判断如果空闲测试机列表为空或者全部空闲测试机处理完毕则跳转执行步骤3.2;否则继续执行;
步骤3.4从空闲测试机列表中读取一台测试机,从测试用例分发列表中查询与该测试机相匹配的优先级最高的测试用例;
步骤3.5判断结果是否为空,如果是则跳转执行步骤3.3;否则继续执行;
步骤3.6分发将该测试用例至测试机,将该测试机状态置为忙,将该测试用例从测试用例分发列表中删除,并跳转执行步骤3.3;
步骤3.7结束本次测试用例分发例程。
本发明通过提出一种适用于分布式自动化测试系统的测试用例调度与分发策略,可解决分布式自动化测试系统在并发任务时的资源冲突问题,提高自动化程度和执行效率。
附图说明
图1是测试用例调度流程图;
图2是测试用例分发流程图;
图3是测试用例的调度与分发策略示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是测试用例调度流程图;图2是测试用例分发流程图;该策略将测试机和测试用例分别抽象为资源供给方和资源需求方,在数据库中建立测试机资源列表和测试用例资源需求列表。用户在定义测试任务时,可将测试系统作为黑盒看待,只需了解测试系统的总体能力,不必关心测试机的具体情况,不必人工指定测试用例在哪些测试机上执行。
在调度测试任务时,对于任务中包含的每个测试用例,测试用例调度例程会通过查询测试用例资源需求列表得到其资源需求,然后通过查询测试机资源列表得到满足该资源需求的测试机,在数据库中建立测试用例分发列表,从而实现自动调度,具体的调度流程下:
步骤2.1解析测试任务;
步骤2.2读取一条测试用例,并从测试用例资源列表中查询满足该测试用例资源需求的测试机;
步骤2.3将测试用例与测试机的匹配关系追加到测试用例分发列表中;
步骤2.4判断该测试任务全部测试用例是否处理完毕,如果完成则进入测试用例分发程序;如果没有则返回继续执行步骤2.2。
测试用例调度例程在完成测试用例调度之后,会调用测试用例分发例程,只要测试用例分发列表不为空,该例程会持续从数据库中的测试机状态列表中查询空闲的测试机,然后从测试用例分发列表中查询能够在空闲测试机上运行的优先级最高的测试用例,将其分发至相应的空闲测试机,并从测试用例分发列表中删除;如果当前系统中无空闲测试机,该例程会持续等待、查询,测试用例分发列表中保留尚未分发的测试用例,并允许追加新增测试用例;对尚未分发的测试用例,可动态调整其优先级,保证高优先级测试用例优先执行。具体的分发流程如下:
步骤3.1启动测试用例分发程序;
步骤3.2判读测试用例分发列表是否为空,如果为空跳转执行步骤3.7;不为空继续执行;
步骤3.3从测试机状态列表中获取空闲测试机列表,判断如果空闲测试机列表为空或者全部空闲测试机处理完毕则跳转执行步骤3.2;否则继续执行;
步骤3.4从空闲测试机列表中读取一台测试机,从测试用例分发列表中查询与该测试机相匹配的优先级最高的测试用例;
步骤3.5判断结果是否为空,如果是则跳转执行步骤3.3;否则继续执行;
步骤3.6分发将该测试用例至测试机,将该测试机状态置为忙,将该测试用例从测试用例分发列表中删除,并跳转执行步骤3.3;
步骤3.7结束本次测试用例分发例程。
图3是测试用例的调度与分发策略示意图,测试系统并发执行括多个测试任务,例如包括测试任务1、测试任务2和测试任务3,每个测试任务又包括多个测试用例,每个测试用例设定了一个优先级;测试机资源列表记录了所有分布式测试机的资源供给信息,测试用例资源需求列表记录了所有测试用例的资源需求信息。测试用例调度进程根据分析测试任务中各个测试用例的需求生成测试用例分发列表;测试用例分发例程根据测试机的状态和测试用例分发列表中测试用例的优先级将测试用例分发至对应的测试机。
上述策略中,多用户共享同一数据库资源和测试执行引擎,既可保证并发性,又可避免多用户、多任务时的资源冲突,提高测试的自动化程度和执行效率。
以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。