CN115543824A - 一种软件测试装置、系统及方法 - Google Patents
一种软件测试装置、系统及方法 Download PDFInfo
- Publication number
- CN115543824A CN115543824A CN202211260894.9A CN202211260894A CN115543824A CN 115543824 A CN115543824 A CN 115543824A CN 202211260894 A CN202211260894 A CN 202211260894A CN 115543824 A CN115543824 A CN 115543824A
- Authority
- CN
- China
- Prior art keywords
- test
- software
- container
- test case
- cluster
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
Abstract
本申请公开了一种软件测试装置、系统及方法,涉及软件测试技术领域,主要目的在于通过事务管理系统实现自动化软件测试;软件测试装置包括:构建模块,用于在确定事务管理系统发生构建软件测试项目的动作时,构建针对所述动作的软件测试项目;调度模块,用于为所述软件测试项目分配容器集群中的集群节点;测试模块,用于从目标数据库提取适用于所述软件测试项目的测试用例,并通过所述集群节点执行所述测试用例。
Description
技术领域
本申请涉及软件测试技术领域,特别是涉及一种软件测试装置、系统及方法。
背景技术
JIRA等事务管理系统作为管理和事务跟踪工具,被广泛应用于缺陷跟踪、需求收集、任务跟踪、项目跟踪和敏捷管理等工作。随着自动化技术在软件测试领域的兴起,软件测试对事务管理系统支持自动化软件测试的需求越来越强烈。
目前,事务管理系统本身支持带有Groovy等脚本的工作流,虽然这些脚本能够实现一些简单的软件测试操作,但是软件测试过程中需要人工介入,无法实现自动化软件测试。另外,当软件测试需求场景变得复杂、软件测试对象变得多样化、灵活度要求更高时,这些脚本便难以满足自动化软件测试需求。可见,目前事务管理系统无法实现自动化软件测试。
发明内容
有鉴于此,本申请提出了一种软件测试装置、系统及方法,主要目的在于通过事务管理系统实现自动化软件测试。
为了达到上述目的,本申请主要提供了如下技术方案:
第一方面,本申请提供了一种软件测试装置,该软件测试装置包括:
构建模块,用于在确定事务管理系统发生构建软件测试项目的动作时,构建针对所述动作的软件测试项目;
调度模块,用于为所述软件测试项目分配容器集群中的集群节点;
测试模块,用于从目标数据库提取适用于所述软件测试项目的测试用例,并通过所述集群节点执行所述测试用例。
在一些实施例中,所述构建模块包括:检测单元,用于检测所述事务管理系统是否发布软件测试项目的工作流;若发布,则确定所述事务管理系统发生构建软件测试项目的动作。
在一些实施例中,所述构建模块包括:第一发送单元,用于确定对应于所述软件测试项目的测试用例信息;调用目标请求函数将携带所述测试用例信息的第一请求发送至所述调度模块;所述调度模块,用于在监听到所述第一请求时,基于所述第一请求携带的测试用例信息为所述软件测试项目分配容器集群中的集群节点。
在一些实施例中,所述调度模块包括:监听单元,用于在第一接口监听到所述第一请求时,调用所述第一接口对应的数据库解析所述第一请求,得到所述第一请求携带的测试用例信息。
在一些实施例中,所述调度模块包括:分配单元,用于检测所述容器集群中是否存在目标节点;若存在,从所述目标节点中选取第一节点,将所述第一节点分配为所述软件测试项目的集群节点;若不存在,则向所述事务管理系统反馈容器集群繁忙的信息;其中,所述目标节点能够部署执行所述软件测试项目所需的容器。
在一些实施例中,所述测试模块包括:确定单元,用于确定所述集群节点中执行所述测试用例的容器;测试单元,用于调用测试接口在所确定的容器内执行所述测试用例。
在一些实施例中,所述测试单元,还用于在所述测试用例需要目标设备配合的情况下,当调用测试接口在所确定的容器内执行所述测试用例时,控制所述目标设备执行所述测试用例要求的动作。
在一些实施例中,所述确定单元,具体用于判断所述集群节点所包括的容器中是否存在空闲,且存储空间满足所述测试用例需求的第一容器;若存在,从所述第一容器中选取目标容器,将所述目标容器确定为执行所述测试用例的容器;若不存在,则将镜像第二容器所得的新容器确定为执行所述测试用例的容器;其中,所述第二容器为所述集群节点中存储空间满足所述测试用例需求的容器。
在一些实施例中,所述测试模块包括:转换单元,用于在通过所述集群节点执行所述测试用例之前,将所述测试用例转换为满足所述软件测试项目的数据格式。
在一些实施例中,所述测试模块,还用于在执行所述测试用例之后,将测试结果反馈至所述事务管理系统。
第二方面,本申请提供了一种软件测试系统,该软件测试系统包括:事务管理系统以及第一方面所述的软件测试装置。
第三方面,本申请提供了一种软件测试方法,该软件测试方法包括:
在确定事务管理系统发生构建软件测试项目的动作时,构建针对所述动作的软件测试项目;
为所述软件测试项目分配容器集群中的集群节点;
从目标数据库提取适用于所述软件测试项目的测试用例,并通过所述集群节点执行所述测试用例。
在一些实施例中,确定事务管理系统发生构建软件测试项目的动作,包括:检测所述事务管理系统是否发布软件测试项目的工作流;若发布,则确定所述事务管理系统发生构建软件测试项目的动作。
在一些实施例中,为所述软件测试项目分配容器集群中的集群节点,包括:检测所述容器集群中是否存在目标节点;若存在,从所述目标节点中选取第一节点,将所述第一节点分配为所述软件测试项目的集群节点;若不存在,则向所述事务管理系统反馈容器集群繁忙的信息;其中,所述目标节点能够部署执行所述软件测试项目所需的容器。
在一些实施例中,通过所述集群节点执行所述测试用例,包括:确定所述集群节点中执行所述测试用例的容器;调用测试接口在所确定的容器内执行所述测试用例。
在一些实施例中,所述方法还包括:在所述测试用例需要目标设备配合的情况下,当调用测试接口在所确定的容器内执行所述测试用例时,控制所述目标设备执行所述测试用例要求的动作。
在一些实施例中,确定所述集群节点中执行所述测试用例的容器,包括:判断所述集群节点所包括的容器中是否存在空闲,且存储空间满足所述测试用例需求的第一容器;若存在,从所述第一容器中选取目标容器,将所述目标容器确定为执行所述测试用例的容器;若不存在,则将镜像第二容器所得的新容器确定为执行所述测试用例的容器;其中,所述第二容器为所述集群节点中存储空间满足所述测试用例需求的容器。
在一些实施例中,在通过所述集群节点执行所述测试用例之前,所述方法还包括:将所述测试用例转换为满足所述软件测试项目的数据格式。
在一些实施例中,在通过所述集群节点执行所述测试用例之后,所述方法还包括:将测试结果反馈至所述事务管理系统。
第四方面,本申请提供了一种计算机可读存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行第三方面的软件测试方法。
本申请提供的软件测试装置、系统及方法,软件测试装置中的构建模块在确定事务管理系统发生构建软件测试项目的动作时,构建针对动作的软件测试项目。调度模块为软件测试项目分配容器集群中的集群节点。测试模块从目标数据库提取适用于软件测试项目的测试用例,并通过集群节点执行测试用例。可见,本申请提供的方案中事务管理系统发生构建软件测试项目的动作时,构建模块便可构建针对动作的软件测试项目,后续调度模块和测试模块通过交互便可完成针对软件测试项目的测试。因此本申请扩展了事务管理系统的自动化软件测试能力,能够通过事务管理系统实现自动化软件测试。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一个实施例提供的一种软件测试装置的结构示意图;
图2示出了本申请另一个实施例提供的一种软件测试装置的结构示意图;
图3示出了本申请一个实施例提供的一种软件测试项目的状态变化示意图;
图4示出了本申请一个实施例提供的一种软件测试装置的工作过程的示意图;
图5示出了本申请一个实施例提供的一种软件测试系统的结构示意图;
图6示出了本申请一个实施例提供的一种软件测试方法的流程图。
具体实施方式
下面将参照附图更加详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
随着自动化技术在软件测试领域的兴起,软件测试对事务管理系统支持自动化软件测试的需求越来越强烈。目前,事务管理系统本身支持带有Groovy等脚本的工作流,虽然这些脚本能够实现一些简单的软件测试操作,但是软件测试过程中需要人工介入,无法实现自动化软件测试。另外,当软件测试需求场景变得复杂、软件测试对象变得多样化、灵活度要求更高时,这些脚本便难以满足自动化软件测试需求。
为了通过事务管理系统实现自动化软件测试,目前通常采用如下两种方法:一是,使用支持自动化软件测试的插件,但是这种插件不仅需要定制购买费用较高,且配合较为繁琐。二是,借助第三方工具实现自动化软件测试,但是由于事务管理系统通信权限管控,使用第三方工具很难实现自动化软件测试。
本申请实施例提供了一种软件测试装置、系统及方法,以期在事务管理系统中扩展自动化软件测试功能,通过事务管理系统实现自动化软件测试。本申请实施例提供的软件测试装置、系统及方法,能够在不能自主修改事务管理系统后端的前提下,利用事务管理系统基本工作流配置和问题创建,结合构建模块、调度模块以及测试模块的交互来实现事务管理系统前后端交互,弥补事务管理系统扩展构建复杂应用能力上的不足,从而实现事务管理系统的测试计划、测试用例、自动化测试的一体化。
本申请实施例提供的软件测试装置、系统及方法能够克服前述两种方法的技术方案的缺陷,且能够适用于任意一个需要实现自动化软件测试的事务管理系统。本实施例对事务管理系统的具体类型不作限定。示例性的,事务管理系统为JIRA事务管理系统。
下面对本申请实施例提供的软件测试装置、系统及方法进行具体说明。
如图1所示,本申请实施例提供了一种软件测试装置,该软件测试装置主要包括构建模块11、调度模块12和测试模块13。
构建模块11,用于在确定事务管理系统发生构建软件测试项目的动作时,构建针对动作的软件测试项目。
调度模块12,用于为软件测试项目分配容器集群中的集群节点。
测试模块13,用于从目标数据库提取适用于软件测试项目的测试用例,并通过集群节点执行测试用例。
下面对软件测试装置所涉及到的各组成的具体结构和交互关系进行具体说明:
构建模块11:
构建模块11主要用于在确定事务管理系统发生构建软件测试项目的动作时,构建针对动作的软件测试项目。事务管理系统发生构建软件测试项目的动作时,说明用户存在软件测试需求,为了满足用户的软件测试需求,构建模块11建立针对构建软件测试项目的动作的软件测试项目。
下面对构建模块11如何确定事务管理系统发生构建软件测试项目的动作的技术方案进行说明。如图2所示,构建模块11包括检测单元111。检测单元111,用于检测事务管理系统是否发布软件测试项目的工作流;若发布,则确定事务管理系统发生构建软件测试项目的动作。检测单元111所检测的工作流是在事务管理系统将工作流对应的工作流脚本添加至对应的线程后发布的。
检测单元111在检测到事务管理系统发布软件测试项目的工作流时,说明用户存在执行工作流对应的软件测试项目的需求,因此确定事务管理系统发生构建软件测试项目的动作。检测单元111在未检测到事务管理系统发布软件测试的工作流时,说明用户不存在软件测试需求,因此确定事务管理系统未发生构建软件测试项目的动作,此时为了保证能够在工作流发布时及时执行对应于工作流的软件测试项目,则检测单元111继续检测事务管理系统是否发布软件测试项目的工作流。
事务管理系统被用户登录后,显示工作流菜单,其中,工作流菜单中包括有至少一个工作流,其中,每一个工作流均有其对应的软件测试项目和工作流脚本。当工作流菜单中的一个工作流被选中时,说明用户需要执行被选中的工作流对应的软件测试项目,则为被选中的工作流分配一个线程。事务管理系统将被选中的工作流添加至为其分配的线程。被选中的工作流被添加至为其分配的线程后,即表示对应于软件测试项目的工作流被设置完成,即发布该工作流,以使构建模块11获取到,并构建出关联该工作流的软件测试项目。
在检测单元111确定事务管理系统发生构建软件测试项目的动作时,构建模块11构建针对构建软件测试项目的动作的软件测试项目。构建软件测试项目的动作的软件测试项目的技术方案为:构建模块11构建事务管理系统发布的工作流对应的软件测试项目。
进一步的,为了明确所构建出的软件测试项目是由何人发起的,因此所构建出的软件测试项目所对应的账户信息为在事务管理系统发生构建软件测试项目的动作的用户的账户信息。
软件测试项目构建出来之后,其状态会随着测试的进行发生变动。示例性的,如图3所示,图3示出了软件测试项目的状态变化示意图。构建模块11在构建出软件测试项目后,软件测试项目进入初始状态。开始测试时,改变软件测试项目的状态为测试中。待测试结束后,改变软件测试项目的状态为测试结束状态,并重置测试所用的测试用例的状态,以对测试用例进行管理。
调度模块12:
调度模块12主要用于为软件测试项目分配容器集群中的集群节点,以使在所分配的集群节点内执行软件测试项目。
为了实现多个软件测试项目能够同时执行,以及降低资源成本和开销,故设置有容器集群。容器集群包括多个集群节点,每一个集群节点用于运行容器。容器用于执行对应于软件测试项目的测试用例,以使软件测试项目实现。采用容器集群执行软件测试项目还存在如下效果:在容器集群内的集群节点数量不能满足软件测试需求时,能够快速便捷的建立新的集群节点并为新的集群节点部署环境,供软件测试项目所用。在对新的节点进行环境部署时,可使用SSH打通新节点通信,使用Python脚本实现环境参数配合和镜像下载。
如图2所示,调度模块12包括分配单元121。分配单元121,用于检测容器集群中是否存在目标节点;若存在,从目标节点中选取第一节点,将第一节点分配为软件测试项目的集群节点;若不存在,则向事务管理系统反馈容器集群繁忙的信息;其中,目标节点能够部署执行软件测试项目所需的容器。
分配单元121在检测出容器集群中存在目标节点,则说明容器集群中存在能够执行软件测试项目的集群节点,因此从目标节点中选取第一节点,将第一节点分配为软件测试项目的集群节点,以使软件测试项目在所分配的集群节点中执行。第一节点的选取原则可以为:选取剩余空间最大的目标节点为第一节点。分配单元121在检测出容器集群中不存在目标节点,则说明容器集群中的所有集群节点当前均处于繁忙状态,就是所有集群节点的剩余空间均不满足软件测试项目的执行,没有能够执行软件测试项目的集群节点,因此向事务管理系统反馈容器集群繁忙的信息,以使业务人员基于该信息作出如下任意一种决定:一是,基于该信息等待有空闲的集群节点出现;二是,终止软件测试项目。
测试模块13:
测试模块13主要用于从目标数据库提取适用于软件测试项目的测试用例,并通过调度模块12为软件测试项目分配的集群节点执行测试用例,从而完成软件测试项目。
目标数据库为测试用例数据库,其存储有大量的测试用例,且存储的测试用例均有其适用的软件测试项目。目标数据库的具体类型本实施例不作具体限定。示例性的,目标数据库为Sqlite3数据库,Sqlite3数据库是体积小、易迁移、跨平台跨语言的关系数据库。
测试模块13在执行软件测试项目之前需要从目标数据库提取适用于软件测试项目的测试用例。在测试模块13提取到软件测试项目的测试用例之后,需要使用测试用例完成软件测试项目。如图2所示,测试模块13包括:确定单元131,用于确定集群节点中执行测试用例的容器;测试单元132,用于调用测试接口在所确定的容器内执行测试用例。
集群节点中包括有容器,容器是实际完成软件测试项目的主体,因此在使用测试用例执行软件测试项目时,确定单元131需要确定集群节点中执行测试用例的容器。具体为,确定单元131,用于判断集群节点所包括的容器中是否存在空闲,且存储空间满足测试用例需求的第一容器;若存在,从第一容器中选取目标容器,将目标容器确定为执行测试用例的容器;若不存在,则将镜像第二容器所得的新容器确定为执行所述测试用例的容器;其中,所述第二容器为所述集群节点中存储空间满足测试用例需求的容器。
确定单元131在判断出为软件测试项目分配的集群节点中存在空闲,且存储空间满足测试用例需求的第一容器时,说明集群节点中已有容器可以满足执行测试用例的需求,因此从第一容器中选取目标容器,将目标容器确定为执行测试用例的容器。在选取一个目标容器时,所有的测试用例均在这一个目标容器中执行。在选取两个或两个以上目标容器时,说明一个目标容器不能满足测试用例的空间要求,因此选取两个或两个以上目标容器,以将测试用例分散在所选取的目标容器中,由所选取的目标容器共同完成测试用例的执行。
确定单元131在判断出不存在空闲,且存储空间满足测试用例需求的第一容器时,说明集群节点的已有容器当前均被占用,当前无容器供软件测试项目使用。因此为了保证软件测试项目可以快速执行,从为软件测试项目分配的集群节点中选取第二容器,第二容器为集群节点中存储空间满足测试用例需求的容器,然后镜像第二容器,将镜像而得的新容器确定为执行测试用例的容器。需要说明的是,在新容器完成执行完测试用例并得到相应的测试结果后,新容器的保留或删除由实际业务确定,本实施例不做具体限定。示例性的,为了保证集群节点中存蓄有足够的存储空间供后续新建容器使用,则在得到测试结果后,新容器被删除。
在确定单元131确定执行测试用例的容器之后,测试单元132调用测试接口在所确定的容器内执行测试用例。为了实现软件测试的测试接口和数据分离,测试用例从单独的数据库中提取,在测试用例提取后,调用专用的测试接口在确定的容器内执行测试用例。测试接口和数据分离摒弃传统的订单方式的缺点,大大降低了代码量,也方便了测试用例的导入导出。测试接口是实现测试用例执行的接口,其包含有支持执行测试用例的函数,在其被调用时,其包含的函数负责测试用例的执行。上述函数可以包括如下中的一种或多种:用例解析函数、用例导入导出函数、用例执行函数、测试接口函数。其中,用例解析函数,用于解析数据库中提取测试用例,转换测试用例的数据格式,比如,将测试用例转换为WebDriver协议所支持的数据格式。用例导入导出函数,用于将Excel格式的用例导入用例数据库,以便数据的更新和迁移。用例执行函数,用于执行用例解析函数解析的自动化代码。测试接口函数,用于将测试结果反馈给事务管理系统。测试接口的具体类型本实施例不做具体限定,可以基于业务需求确定。示例性的,测试接口为python自动化接口。
进一步的,测试单元132,还用于在测试用例需要目标设备配合的情况下,当调用测试接口在所确定的容器内执行所述测试用例时,控制目标设备执行所述测试用例要求的动作。在实际应用中,一些测试用例不仅需要在容器运行测试代码,而且也需要将容器中测试代码的运行与外接的目标设备相配合才能完成测试。因此为了保证测试的完整性,测试单元132,还用于在测试用例的执行需要目标设备配合的情况下,在调用测试接口在所确定的容器内执行所述测试用例时,控制目标设备执行测试用例要求的动作。
示例性,测试用例1需要与部署安卓系统的目标设备配合使用,配合方案为目标设备播放测试用例1涉及的音频1,则在调用测试接口在容器内执行测试用例1时,控制目标设备播放音频1。示例性的,测试单元132通过Appium控制目标设备的动作。Appium是跨平台跨语言的移动端测试框架,支持WebDriver协议。
进一步的,为了保证软件测试项目可以顺利执行,如图2所示,测试模块13包括:转换单元133,用于在通过集群节点执行测试用例之前,将测试用例转换为满足软件测试项目的数据格式。
考虑到目标数据库中的测试用例的数据格式可能不满足测试需求,因此转换单元133将测试用例转换为满足软件测试项目的数据格式。示例性的,测试模块13测试操作所涉及的协议为WebDriver协议,则转换单元133将测试用例对应的数据转换为WebDriver协议所支持的格式。
进一步的,为了使得事务管理系统能够获取到软件测试项目的测试结构,则测试模块13,还用于在执行测试用例之后,将测试结果反馈至事务管理系统。
本申请实施例提供的软件测试装置,软件测试装置中的构建模块在确定事务管理系统发生构建软件测试项目的动作时,构建针对动作的软件测试项目。调度模块为软件测试项目分配容器集群中的集群节点。测试模块从目标数据库提取适用于软件测试项目的测试用例,并通过集群节点执行测试用例。可见,本申请实施例提供的方案中事务管理系统发生构建软件测试项目的动作时,构建模块便可构建针对动作的软件测试项目,后续调度模块和测试模块通过交互便可完成针对软件测试项目的测试。因此本申请实施例扩展了事务管理系统的自动化软件测试能力,能够通过事务管理系统实现自动化软件测试。
在本申请一些实施例中,如图2所示,构建模块11包括:第一发送单元112,用于确定对应于软件测试项目的测试用例信息;调用目标请求函数将携带测试用例信息的第一请求发送至调度模块。调度模块12,用于在监听到第一请求时,基于第一请求携带的测试用例信息为软件测试项目分配容器集群中的集群节点。
构建模块11在构建出软件测试项目之后,可利用事务管理系统中的测试脚本,比如Groovy脚本,调用测试接口获取到测试用例信息。测试用例信息用于限定软件测试项目需要何种测试用例。第一发送单元112在确定出测试用例信息之后,调用目标请求函数将携带测试用例信息的第一请求发送至调度模块12,以通知调度模块12有软件测试项目需要执行。调用目标请求函数将将携带测试用例信息的第一请求发送至调度模块12的目的是为了规避事务管理系统的权限管控问题。另外,为了提高第一请求传输的安全性,则目标请求函数为套接字函数即Socket请求函数。为了实现构建模块11和调度模块之12间距离的解耦,则调度模块12可以为远程调度模块12,可远程监听构建模块11传输的第一请求。
如图2所示,调度模块12包括:监听单元122,用于在第一接口监听到第一请求时,调用第一接口对应的数据库解析第一请求,得到第一请求携带的测试用例信息。
调度模块12设置有第一接口,第一接口为用于监听第一请求的接口。第一请求存在对应的数据库,其数据库中包括有用于解析第一请求的方法。示例性的,在目标请求函数为套接字函数时,第一接口对应的数据库为套接字数据库,第一接口为套接字监听接口。
调度模块12在解析出测试用例信息之后,需要将测试用例信息提供给测试模块13。调度模块在为软件测试项目分配容器集群中的集群节点之后,向测试模块13发送携带测试用例信息、集群节点标识的请求。测试模块13在接收到该请求时,基于测试用例信息从目标数据库提取适用于软件测试项目的测试用例,并通过对应于集群节点标识的集群节点执行测试用例。
测试用例信息是测试模块12从目标数据库中提取适用于软件测试项目的测试用例的依据。集群节点标识是测试模块12确定执行测试用例的集群节点的依据。为了实现调度模块12和测试模块13之间距离的解耦,则测试模块13可以为远程测试模块13,可远程监听调度模块12传输的第二请求。
下面以图4为例来说明软件测试装置的构建模块11、调度模块12和测试模块13的工作过程,图4为软件测试装置的工作过程的示意图。由于每一个工作流均有其对应的软件测试项目,因此如图4所示,在事务管理系统发布软件测试项目的工作流之后,构建模块11即可获取该工作流对应的测试项目信息,并基于该测试项目信息构建软件测试项目。这里的测试项目信息包括的具体内容可以基于业务需求确定,比如,测试项目名称、测试项目是针对软件的何种功能进行的、测试项目所需的测试用例信息等。构建模块11构建出软件测试项目之后,确定对应于软件测试项目的测试用例信息。构建模块11在确定出测试用例信息之后,调用目标请求函数(比如,Socket请求函数)将携带测试用例信息的第一请求发送至调度模块12,以通知调度模块12有软件测试项目需要执行。
调度模块12设置有用于监听的第一接口(比如,Socket监听接口),调度模块12在通过第一接口监听到第一请求时,调用第一接口对应的数据库(比如,python-Socket库)解析第一请求,得到第一请求携带的测试用例信息。且调度模块12还去执行资源调度,从容器集群中为软件测试项目分配集群节点。调度模块12获取测试用例信息以及所分配的集群节点对应的节点标识,将携带测试用例信息和节点标识的请求发送给测试模块13。
测试模块13具有自动化测试框架,其在接收到携带测试用例信息和节点标识的请求后,测试模块13基于测试用例信息从目标数据库提取适用于软件测试项目的测试用例,并在对应于节点标识的集群节点中为测试用例分配容器,在所分配的容器中执行测试用例。具体为:在对应于节点标识的集群节点包括的容器中存在空闲,且存储空间满足测试用例需求的第一容器,则从第一容器中选取目标容器,将目标容器确定为执行测试用例的容器。对应于节点标识的集群节点包括的容器中不存在空闲,且存储空间满足测试用例需求的第一容器,则将镜像第二容器所得的新容器确定为执行测试用例的容器,这里所述的第二容器为对应于节点标识的集群节点中存储空间满足测试用例需求的容器。
测试模块13在执行测试用例之后,通过事务管理系统接口(比如,JIRA RestAPI),将测试结果反馈至构建模块11,以使构建模块11将测试结果反馈至事务管理系统,以便用户通过事务管理系统查看其发布的工作流对应的测试结果。
进一步的,本申请的另一个实施例还提供了一种软件测试系统,如图5所示,该软件测试系统主要包括:事务管理系统21以及上述的软件测试装置22。
本申请实施例提供的软件测试系统的有益效果与上述的软件测试装置的有益效果基本相同,因此这里将不再赘述。
进一步的,本申请的另一个实施例还提供了一种软件测试方法,如图6所示,该方法主要包括步骤301至303:
301、在确定事务管理系统发生构建软件测试项目的动作时,构建针对所述动作的软件测试项目。
302、为所述软件测试项目分配容器集群中的集群节点。
303、从目标数据库提取适用于所述软件测试项目的测试用例,并通过所述集群节点执行所述测试用例。
本申请实施例提供的软件测试方法,在确定事务管理系统发生构建软件测试项目的动作时,构建针对动作的软件测试项目。为软件测试项目分配容器集群中的集群节点。从目标数据库提取适用于软件测试项目的测试用例,并通过集群节点执行测试用例。可见,本申请实施例提供的方案中事务管理系统发生构建软件测试项目的动作时,便可构建针对动作的软件测试项目,后续调度集群节点和测试用例,便可完成针对软件测试项目的测试。因此本申请实施例扩展了事务管理系统的自动化软件测试能力,能够通过事务管理系统实现自动化软件测试。
在本申请一些实施例中,上述步骤301所涉及的确定事务管理系统发生构建软件测试项目的动作的具体执行过程包括:
检测所述事务管理系统是否发布软件测试项目的工作流;
若发布,则确定所述事务管理系统发生构建软件测试项目的动作。
在本申请一些实施例中,所述工作流是在所述事务管理系统将所述工作流对应的工作流脚本添加至对应的线程后发布的。
在本申请一些实施例中,上述步骤302为所述软件测试项目分配容器集群中的集群节点的具体执行过程包括:
检测所述容器集群中是否存在目标节点;
若存在,从所述目标节点中选取第一节点,将所述第一节点分配为所述软件测试项目的集群节点;
若不存在,则向所述事务管理系统反馈容器集群繁忙的信息;
其中,所述目标节点能够部署执行所述软件测试项目所需的容器。
在本申请一些实施例中,上述步骤302所涉及的通过所述集群节点执行所述测试用例的具体执行过程包括:
确定所述集群节点中执行所述测试用例的容器;
调用测试接口在所确定的容器内执行所述测试用例。
在本申请一些实施例中,所述方法还包括如下步骤:在所述测试用例需要目标设备配合的情况下,当调用测试接口在所确定的容器内执行所述测试用例时,控制所述目标设备执行所述测试用例要求的动作。
在本申请一些实施例中,确定所述集群节点中执行所述测试用例的容器,包括:判断所述集群节点所包括的容器中是否存在空闲,且存储空间满足所述测试用例需求的第一容器;若存在,从所述第一容器中选取目标容器,将所述目标容器确定为执行所述测试用例的容器;若不存在,则将镜像第二容器所得的新容器确定为执行所述测试用例的容器;其中,所述第二容器为所述集群节点中存储空间满足所述测试用例需求的容器。
在本申请一些实施例中,在通过所述集群节点执行所述测试用例之前,所述方法还包括:将所述测试用例转换为满足所述软件测试项目的数据格式。
在本申请一些实施例中,在通过所述集群节点执行所述测试用例之后,所述方法还包括:将测试结果反馈至所述事务管理系统。
本申请实施例提供的软件测试方法中,各步骤所采用的详解可以参见上述软件测试装置实施例的对应详解,在此不再赘述。
进一步的,本申请的另一个实施例还提供了一种计算机可读存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述的软件测试方法。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本申请也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本申请的内容,并且上面对特定语言所做的描述是为了披露本申请的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本申请的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本申请的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本申请实施例的软件测试装置、系统及方法中的一些或者全部部件的一些或者全部功能。本申请还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本申请的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本申请进行说明而不是对本申请进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本申请可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (12)
1.一种软件测试装置,其特征在于,所述软件测试装置包括:
构建模块,用于在确定事务管理系统发生构建软件测试项目的动作时,构建针对所述动作的软件测试项目;
调度模块,用于为所述软件测试项目分配容器集群中的集群节点;
测试模块,用于从目标数据库提取适用于所述软件测试项目的测试用例,并通过所述集群节点执行所述测试用例。
2.根据权利要求1所述的软件测试装置,其特征在于,所述构建模块包括:
检测单元,用于检测所述事务管理系统是否发布软件测试项目的工作流;若发布,则确定所述事务管理系统发生构建软件测试项目的动作。
3.根据权利要求1所述的软件测试装置,其特征在于,所述构建模块包括:第一发送单元,用于确定对应于所述软件测试项目的测试用例信息;调用目标请求函数将携带所述测试用例信息的第一请求发送至所述调度模块;
所述调度模块,用于在监听到所述第一请求时,基于所述第一请求携带的测试用例信息为所述软件测试项目分配容器集群中的集群节点。
4.根据权利要求3所述的软件测试装置,其特征在于,所述调度模块包括:
监听单元,用于在第一接口监听到所述第一请求时,调用所述第一接口对应的数据库解析所述第一请求,得到所述第一请求携带的测试用例信息。
5.根据权利要求1所述的软件测试装置,其特征在于,所述调度模块包括:
分配单元,用于检测所述容器集群中是否存在目标节点;若存在,从所述目标节点中选取第一节点,将所述第一节点分配为所述软件测试项目的集群节点;若不存在,则向所述事务管理系统反馈容器集群繁忙的信息;其中,所述目标节点能够部署执行所述软件测试项目所需的容器。
6.根据权利要求1所述的软件测试装置,其特征在于,所述测试模块包括:
确定单元,用于确定所述集群节点中执行所述测试用例的容器;
测试单元,用于调用测试接口在所确定的容器内执行所述测试用例。
7.根据权利要求6所述的软件测试装置,其特征在于,所述测试单元,还用于在所述测试用例需要目标设备配合的情况下,当调用测试接口在所确定的容器内执行所述测试用例时,控制所述目标设备执行所述测试用例要求的动作。
8.根据权利要求6所述的软件测试装置,其特征在于,所述确定单元,具体用于判断所述集群节点包括的容器中是否存在空闲,且存储空间满足所述测试用例需求的第一容器;若存在,从所述第一容器中选取目标容器,将所述目标容器确定为执行所述测试用例的容器;若不存在,则将镜像第二容器所得的新容器确定为执行所述测试用例的容器;其中,所述第二容器为所述集群节点中存储空间满足所述测试用例需求的容器。
9.根据权利要求1-8中任一项所述的软件测试装置,其特征在于,所述测试模块包括:转换单元,用于在通过所述集群节点执行所述测试用例之前,将所述测试用例转换为满足所述软件测试项目的数据格式;
和/或,
所述测试模块,还用于在执行所述测试用例之后,将测试结果反馈至所述事务管理系统。
10.一种软件测试系统,其特征在于,所述软件测试系统包括:事务管理系统以及权利要求1-9中任一项所述的软件测试装置。
11.一种软件测试方法,其特征在于,所述方法包括:
在确定事务管理系统发生构建软件测试项目的动作时,构建针对所述动作的软件测试项目;
为所述软件测试项目分配容器集群中的集群节点;
从目标数据库提取适用于所述软件测试项目的测试用例,并通过所述集群节点执行所述测试用例。
12.一种计算机可读存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行11所述的软件测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211260894.9A CN115543824A (zh) | 2022-10-14 | 2022-10-14 | 一种软件测试装置、系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211260894.9A CN115543824A (zh) | 2022-10-14 | 2022-10-14 | 一种软件测试装置、系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115543824A true CN115543824A (zh) | 2022-12-30 |
Family
ID=84736372
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211260894.9A Pending CN115543824A (zh) | 2022-10-14 | 2022-10-14 | 一种软件测试装置、系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115543824A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115840714A (zh) * | 2023-02-24 | 2023-03-24 | 吉林中科方德软件有限公司 | 一种测试数据处理方法、装置、电子设备及介质 |
-
2022
- 2022-10-14 CN CN202211260894.9A patent/CN115543824A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115840714A (zh) * | 2023-02-24 | 2023-03-24 | 吉林中科方德软件有限公司 | 一种测试数据处理方法、装置、电子设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105373428B (zh) | 一种任务调度方法和系统 | |
CN103634592A (zh) | 智能电视自动化测试方法及系统 | |
CN108833223B (zh) | 家电设备控制方法、装置、遥控器、终端、服务器及介质 | |
CN104657212A (zh) | 一种任务调度的方法及系统 | |
CN112269640B (zh) | 一种实现容器云组件的生命周期管理的方法 | |
CN111027921A (zh) | 一种业务处理方法、装置及电子设备和存储介质 | |
CN115543824A (zh) | 一种软件测试装置、系统及方法 | |
CN112332997A (zh) | 终端设备的配网方法、终端设备及计算机可读存储介质 | |
CN111399764A (zh) | 数据存储方法、读取方法、装置、设备及存储介质 | |
CN113742033A (zh) | 一种kubernetes集群联邦系统及其实现方法 | |
CN113778486A (zh) | 一种代码流水线的容器化处理方法、装置、介质及设备 | |
CN113672441A (zh) | 对智能设备的测试方法及装置 | |
CN115242752A (zh) | 电池管理系统的地址分配方法、装置、设备及介质 | |
CN108023905B (zh) | 物联网应用系统及方法 | |
CN111435329A (zh) | 一种自动化测试方法和装置 | |
CN113658351A (zh) | 一种产品生产的方法、装置、电子设备及存储介质 | |
CN114968032A (zh) | 业务处理方法、装置、设备及计算机可读存储介质 | |
CN107025126B (zh) | 一种资源调度方法、nfvo和系统 | |
CN1327656C (zh) | 升级系统设备的方法 | |
CN111368720A (zh) | 一种自动搬运取货系统及方法 | |
CN115268951A (zh) | 一种操作系统的安装方法、装置、设备及存储介质 | |
CN116257423A (zh) | 一种任务处理方法及装置 | |
CN114490000A (zh) | 任务处理方法、装置、设备及存储介质 | |
CN104283958A (zh) | 一种系统任务调度方法 | |
CN114070889A (zh) | 配置方法、流量转发方法、设备、存储介质及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |