CN112685281A - 测试方法、装置、电子设备及计算机可读存储介质 - Google Patents

测试方法、装置、电子设备及计算机可读存储介质 Download PDF

Info

Publication number
CN112685281A
CN112685281A CN201910989858.8A CN201910989858A CN112685281A CN 112685281 A CN112685281 A CN 112685281A CN 201910989858 A CN201910989858 A CN 201910989858A CN 112685281 A CN112685281 A CN 112685281A
Authority
CN
China
Prior art keywords
state
state node
node
feasible
transfer
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
CN201910989858.8A
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.)
Rajax Network Technology Co Ltd
Original Assignee
Rajax Network Technology Co 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 Rajax Network Technology Co Ltd filed Critical Rajax Network Technology Co Ltd
Priority to CN201910989858.8A priority Critical patent/CN112685281A/zh
Publication of CN112685281A publication Critical patent/CN112685281A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本公开实施例公开了一种测试方法、装置、电子设备及计算机可读存储介质,所述测试方法包括:确定状态机模型,其中,所述状态机模型包括一个或多个状态节点及状态节点之间的转移函数;根据所述状态机模型获取可行状态节点转移路径集合;获取所述可行状态节点转移路径集合中可行状态节点转移路径对应的测试指令集合,基于所述测试指令集合进行测试。该技术方案借助状态机模型来自动完成测试工作,从而大大节省了测试人员的测试工作量,提高了测试工作的执行效率,同时还能够有效保障测试准确率。

Description

测试方法、装置、电子设备及计算机可读存储介质
技术领域
本公开涉及测试技术领域,具体涉及一种测试方法、装置、电子设备及计算机可读存储介质。
背景技术
随着互联网技术的发展,越来越多的商家或者服务提供商通过互联网应用来为用户提供服务,为了提高服务质量,需要经常对于互联网应用所提供的服务内容进行测试,以及时发现互联网应用中可能存在的问题,进而及时解决,保障互联网应用的正常运转。现有技术中,测试人员通常是根据服务任务所处的各种状态确定有可能出现的状态路径,然后对于每一状态路径编写相应的测试代码进行测试,但每个服务任务,都有可能存在多个任务状态,比如对于服务订单,存在订单新生成、订单处理中、订单已打印、订单已拣货、订单已出库、订单配送中、订单已完成等多种订单状态。若使测试人员人工生成所有可能出现的状态路径,再对于每一状态路径编写相应的测试代码进行测试,无疑需要耗费巨大的人力成本,进而大大降低测试效率,同时还无法保障测试准确率。
发明内容
本公开实施例提供一种测试方法、装置、电子设备及计算机可读存储介质。
第一方面,本公开实施例中提供了一种测试方法。
具体的,所述测试方法,包括:
确定状态机模型,其中,所述状态机模型包括一个或多个状态节点及状态节点之间的转移函数;
根据所述状态机模型获取可行状态节点转移路径集合;
获取所述可行状态节点转移路径集合中可行状态节点转移路径对应的测试指令集合,基于所述测试指令集合进行测试。
结合第一方面,本公开在第一方面的第一种实现方式中,所述确定状态机模型,包括:
确定一个或多个状态节点;
确定状态节点之间的转移函数,其中,所述转移函数包括状态转移触发事件以及状态转移规则;
根据所述状态节点以及状态节点之间的转移关系生成所述状态机模型。
结合第一方面和第一方面的第一种实现方式,本公开在第一方面的第二种实现方式中,所述根据所述状态机模型获取可行状态节点转移路径集合,包括:
确定起始状态节点和终止状态节点;
遍历从所述起始状态节点至所述终止状态节点的状态节点转移路径,得到所述可行状态节点转移路径集合。
结合第一方面、第一方面的第一种实现方式和第一方面的第二种实现方式,本公开在第一方面的第三种实现方式中,所述遍历从所述起始状态节点至所述终止状态节点的状态节点转移路径,得到所述可行状态节点转移路径集合,被实施为:
响应于检测到状态转移触发事件,从所述起始状态节点出发,根据状态转移规则确定下一可转移中间状态节点,直至到达所述终止状态节点;
连接所述起始状态节点、中间状态节点以及终止状态节点,得到可行状态节点转移路径;
组合所述可行状态节点转移路径,得到所述可行状态节点转移路径集合。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式和第一方面的第三种实现方式,本公开在第一方面的第四种实现方式中,所述获取所述可行状态节点转移路径集合中可行状态节点转移路径对应的测试指令集合,基于所述测试指令集合进行测试,包括:
确定所述可行状态节点转移路径集合中待测试可行状态节点转移路径;
确定所述待测试可行状态节点转移路径中的状态节点集合;
获取所述状态节点集合中每一状态节点对应的测试指令,其中,所述测试指令在确定所述状态机模型时生成;
将所述测试指令按照所述状态节点在所述待测试可行状态节点转移路径中的出现顺序组合起来,得到所述测试指令集合;
执行所述测试指令集合,得到测试结果。
第二方面,本公开实施例中提供了一种测试装置。
具体的,所述测试装置,包括:
确定模块,被配置为确定状态机模型,其中,所述状态机模型包括一个或多个状态节点及状态节点之间的转移函数;
获取模块,被配置为根据所述状态机模型获取可行状态节点转移路径集合;
测试模块,被配置为获取所述可行状态节点转移路径集合中可行状态节点转移路径对应的测试指令集合,基于所述测试指令集合进行测试。
结合第二方面,本公开在第二方面的第一种实现方式中,所述确定模块包括:
第一确定子模块,被配置为确定一个或多个状态节点;
第二确定子模块,被配置为确定状态节点之间的转移函数,其中,所述转移函数包括状态转移触发事件以及状态转移规则;
生成子模块,被配置为根据所述状态节点以及状态节点之间的转移关系生成所述状态机模型。
结合第二方面和第二方面的第一种实现方式,本公开在第二方面的第二种实现方式中,所述获取模块包括:
第三确定子模块,被配置为确定起始状态节点和终止状态节点;
遍历子模块,被配置为遍历从所述起始状态节点至所述终止状态节点的状态节点转移路径,得到所述可行状态节点转移路径集合。
结合第二方面、第二方面的第一种实现方式和第二方面的第二种实现方式,本公开在第二方面的第三种实现方式中,所述遍历子模块被配置为:
响应于检测到状态转移触发事件,从所述起始状态节点出发,根据状态转移规则确定下一可转移中间状态节点,直至到达所述终止状态节点;
连接所述起始状态节点、中间状态节点以及终止状态节点,得到可行状态节点转移路径;
组合所述可行状态节点转移路径,得到所述可行状态节点转移路径集合。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式和第二方面的第三种实现方式,本公开在第二方面的第四种实现方式中,所述测试模块包括:
第四确定子模块,被配置为确定所述可行状态节点转移路径集合中待测试可行状态节点转移路径;
第五确定子模块,被配置为确定所述待测试可行状态节点转移路径中的状态节点集合;
获取子模块,被配置为获取所述状态节点集合中每一状态节点对应的测试指令,其中,所述测试指令在确定所述状态机模型时生成;
组合子模块,被配置为将所述测试指令按照所述状态节点在所述待测试可行状态节点转移路径中的出现顺序组合起来,得到所述测试指令集合;
执行子模块,被配置为执行所述测试指令集合,得到测试结果。
第三方面,本公开实施例提供了一种电子设备,包括存储器和至少一个处理器,其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述至少一个处理器执行以实现上述第一方面中测试方法的方法步骤。
第四方面,本公开实施例提供了一种计算机可读存储介质,用于存储测试装置所用的计算机指令,其包含用于执行上述第一方面中测试方法为测试装置所涉及的计算机指令。
本公开实施例提供的技术方案可以包括以下有益效果:
上述技术方案通过构建状态机模型来自动获取所有可行状态节点转移路径组成的路径集合,进而根据与所述可行状态节点转移路径对应的测试指令进行测试。该技术方案借助状态机模型来自动完成测试工作,从而大大节省了测试人员的测试工作量,提高了测试工作的执行效率,同时还能够有效保障测试准确率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中:
图1示出根据本公开一实施方式的测试方法的流程图;
图2示出根据图1所示实施方式的测试方法的步骤S101的流程图;
图3示出根据图1所示实施方式的测试方法的步骤S102的流程图;
图4示出根据图1所示实施方式的测试方法的步骤S103的流程图;
图5示出根据本公开一实施方式的测试装置的结构框图;
图6示出根据图5所示实施方式的测试装置的确定模块501的结构框图;
图7示出根据图5所示实施方式的测试装置的获取模块502的结构框图;
图8示出根据图5所示实施方式的测试装置的测试模块503的结构框图;
图9示出根据本公开一实施方式的电子设备的结构框图;
图10是适于用来实现根据本公开一实施方式的测试方法的计算机系统的结构示意图。
具体实施方式
下文中,将参考附图详细描述本公开的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
本公开实施例提供的技术方案通过构建状态机模型来自动获取所有可行状态节点转移路径组成的路径集合,进而根据与所述可行状态节点转移路径对应的测试指令进行测试。该技术方案借助状态机模型来自动完成测试工作,从而大大节省了测试人员的测试工作量,提高了测试工作的执行效率,同时还能够有效保障测试准确率。
图1示出根据本公开一实施方式的测试方法的流程图,可适用于服务器端。如图1所示,所述测试方法包括以下步骤S101-S103:
在步骤S101中,确定状态机模型,其中,所述状态机模型包括一个或多个状态节点及状态节点之间的转移函数;
在步骤S102中,根据所述状态机模型获取可行状态节点转移路径集合;
在步骤S103中,获取所述可行状态节点转移路径集合中可行状态节点转移路径对应的测试指令,基于所述测试指令进行测试。
上文提及,随着互联网技术的发展,越来越多的商家或者服务提供商通过互联网应用来为用户提供服务,为了提高服务质量,需要经常对于互联网应用所提供的服务内容进行测试,以及时发现互联网应用中可能存在的问题,进而及时解决,保障互联网应用的正常运转。现有技术中,测试人员通常是根据服务任务所处的各种状态确定有可能出现的状态路径,然后对于每一状态路径编写相应的测试代码进行测试,但每个服务任务,都有可能存在多个任务状态,比如对于服务订单,存在订单新生成、订单处理中、订单已打印、订单已拣货、订单已出库、订单配送中、订单已完成等多种订单状态。若使测试人员人工生成所有可能出现的状态路径,再对于每一状态路径编写相应的测试代码进行测试,无疑需要耗费巨大的人力成本,进而大大降低测试效率,同时还无法保障测试准确率。
考虑到上述缺陷,在该实施方式中,提出一种测试方法,该方法通过构建状态机模型来自动获取所有可行状态节点转移路径组成的路径集合,进而根据与所述可行状态节点转移路径对应的测试指令进行测试。该技术方案借助状态机模型来自动完成测试工作,从而大大节省了测试人员的测试工作量,提高了测试工作的执行效率,同时还能够有效保障测试准确率。
在本实施例的一个可选实现方式中,所述状态机模型可为有限状态机模型也可为无线状态机模型,所述状态机由状态寄存器和组合逻辑电路构成,其能够根据控制信号或者状态转移触发事件按照预先设定的状态进行状态转移,进而生成一个或多个可行的状态节点转移路径。从实现角度上来说,所述状态机可表现为一个有向图形,该有向图形由一组节点和一组相应的转移函数组成。在该实现方式中,所述状态机模型包括一个或多个状态节点及状态节点之间的转移函数,当所述状态机模型为有限状态机模型时,所述状态机模型中的状态节点均对应设置有相应的状态信息,当所述状态机模型为无限状态机模型时,所述状态机模型中的某些状态节点有可能未设置有相应的状态信息,但至少这些未设置有相应的状态信息的状态节点与其他状态节点之间存在一定的转移关系,对应设置有相应的转移函数。
在本实施例的一个可选实现方式中,所述状态节点用于表征某一待测试对象所处的状态,所述待测试对象比如可以为待测试的应用程序、待测试的服务对象等等。比如,若所述待测试对象为订单这一服务对象,则所述状态节点所表征的状态可以包括订单已生成、订单处理中、订单打印中、订单已打印、订单拣货中、订单已拣货、订单出库中、订单已出库、订单已交付配送、订单等待配送、订单配送中、订单等待派送、订单已投递、订单等待取货、订单已完成、订单售后处理中、订单等待取消、订单已取消、订单等待评价等多种订单状态。
在本实施例的一个可选实现方式中,所述测试指令指的是能够被执行或运行,并在执行和运行后能够得到一定的测试结果的指令,比如,所述测试指令可以为测试代码。
在本实施例的一个可选实现方式中,如图2所示,所述步骤S101,即确定状态机模型,包括以下步骤S201-S203:
在步骤S201中,确定一个或多个状态节点;
在步骤S202中,确定状态节点之间的转移函数,其中,所述转移函数包括状态转移触发事件以及状态转移规则;
在步骤S203中,根据所述状态节点以及状态节点之间的转移关系生成所述状态机模型。
为了自动获取所有可行状态转移信息,进而自动获取对应的测试指令实现自动测试,节省测试工作量,提高测试效率,在该实现方式中,首先确定一个完备的状态机模型。具体地,首先确定一个或多个状态节点;然后确定状态节点之间的转移函数;确定了状态节点和状态节点之间的转移函数之后,就可以根据所述状态节点以及状态节点之间的转移关系生成所述状态机模型。
在本实施例的一个可选实现方式中,所述转移函数包括状态转移触发事件以及状态转移规则,其中,所述状态转移触发事件指的是被触发后能够使得状态发生转移的事件,比如,状态转移触发事件可以为用户发送订单取消请求,假设在该触发事件发生之前,订单处于已出库状态,那么在检测到用户发送订单取消请求这一状态转移触发事件之后,所述订单的状态就会由已出库状态转移至订单等待取消状态,若此时又发生一状态转移触发事件,用户取消订单请求被核准,那么所述订单的状态就会由订单等待取消状态转移至订单已取消状态。其中,所述状态转移规则指的是当检测到状态转移触发事件后当前状态接下来应当转移至哪个状态,仍然以上文示例为例,当检测到用户发送订单取消请求这一状态转移触发事件发生后,按照所述状态转移规则,所述订单的状态就应当由已出库状态转移至订单等待取消状态,而当检测到用户取消订单请求被核准,这一状态转移触发事件发生后,那么按照所述状态转移规则,所述订单的状态就应当由订单等待取消状态转移至订单已取消状态。
在本实施例的一个可选实现方式中,如图3所示,所述步骤S102,即根据所述状态机模型获取可行状态节点转移路径集合,包括以下步骤S301-S302:
在步骤S301中,确定起始状态节点和终止状态节点;
在步骤S302中,遍历从所述起始状态节点至所述终止状态节点的状态节点转移路径,得到所述可行状态节点转移路径集合。
在该实施方式中,在根据所述状态机模型获取可行状态节点转移路径集合时,首先确定起始状态节点和终止状态节点,然后遍历从所述起始状态节点至所述终止状态节点的所有可行的状态节点转移路径,即获取所有从起始状态节点出发到终止状态节点终止的、可能发生的状态节点转移路径,得到所述可行状态节点转移路径集合。
在本实施例的一个可选实现方式中,所述起始状态节点和终止状态节点可以预先人为确定,也可随机在所述状态机模型中的所有状态节点中进行选择。例如,对于订单这一待测试对象,其所对应的状态有很多,而且对于不同的测试场景,测试要求也有可能不同,比如若测试要求为测试订单发货前的处理流程,那么所述起始状态节点就可以设置为订单已生成,所述终止状态节点可以设置为订单已出库;但若测试要求为测试订单的取消流程,那么所述起始状态节点就可以设置为处于订单已完成状态之前的所有状态节点,比如订单已生成、订单处理中、订单打印中、订单已打印、订单拣货中、订单已拣货、订单出库中、订单已出库、订单已交付配送、订单等待配送、订单配送中、订单等待派送、订单已投递、订单等待取货等等。也就是说,所述起始状态节点和终止状态节点的确定根据实际应用的需要、状态节点的数据特点以及状态转移规则来综合选择,本公开对其不作具体限定。
在本实施例的一个可选实现方式中,所述步骤S302,即遍历从所述起始状态节点至所述终止状态节点的状态节点转移路径,得到所述可行状态节点转移路径集合的步骤,被实施为:
响应于检测到状态转移触发事件,从所述起始状态节点出发,根据状态转移规则确定下一可转移中间状态节点,直至到达所述终止状态节点;
连接所述起始状态节点、中间状态节点以及终止状态节点,得到可行状态节点转移路径;
组合所述可行状态节点转移路径,得到所述可行状态节点转移路径集合。
为了获取所有从起始状态节点出发到终止状态节点终止的、可能发生的状态节点转移路径,保障测试完备性,在该实现方式中,首先从所述起始状态节点出发,响应于检测到状态转移触发事件,根据状态转移规则确定下一可转移中间状态节点,然后再从当前状态节点出发,响应于检测到状态转移触发事件,根据状态转移规则确定下一可转移状态节点,依次类推,直至最后到达所述终止状态节点,最后连接所述起始状态节点、中间状态节点以及终止状态节点,得到一个可行状态节点转移路径。使用上述类似的方法,触发所有可行的状态跳转,遍历所有的状态跳转情况,即可得到所有可行的状态节点转移路径,将得到的所有可行状态节点转移路径组合起来,即可得到所述可行状态节点转移路径集合。
在本实施例的一个可选实现方式中,如图4所示,所述步骤S103,即获取所述可行状态节点转移路径集合中可行状态节点转移路径对应的测试指令集合,基于所述测试指令集合进行测试,包括以下步骤S401-S405:
在步骤S401中,确定所述可行状态节点转移路径集合中待测试可行状态节点转移路径;
在步骤S402中,确定所述待测试可行状态节点转移路径中的状态节点集合;
在步骤S403中,获取所述状态节点集合中每一状态节点对应的测试指令,其中,所述测试指令在确定所述状态机模型时生成;
在步骤S404中,将所述测试指令按照所述状态节点在所述待测试可行状态节点转移路径中的出现顺序组合起来,得到所述测试指令集合;
在步骤S405中,执行所述测试指令集合,得到测试结果。
在获取可行状态节点转移路径集合后,为了自动获取对应的测试指令集合,实现自动测试,在该实现方式中,首先确定所述可行状态节点转移路径集合中待测试的可行状态节点转移路径;然后确定所述待测试可行状态节点转移路径中的状态节点集合,即组成所述待测试可行状态节点转移路径的所有的状态节点形成的集合;然后获取所述状态节点集合中每一状态节点对应的测试指令;然后将所获得的测试指令按照所述状态节点在所述待测试可行状态节点转移路径中的出现顺序组合起来,即可得到与所述待测试可行状态节点转移路径对应的测试指令集合;最后执行所述测试指令集合,即可得到与所述待测试可行状态节点转移路径对应的测试结果。对于每一待测试可行状态节点转移路径,均可按照上述方式获取、执行相应的测试指令集合,最终完成待测试对象的自动完备测试。
在本实施例的一个可选实现方式中,所述待测试的可行状态节点转移路径可根据实际应用的需要进行选择,比如,可将所述可行状态节点转移路径集合中所有的可行状态节点转移路径依次作为待测试可行状态节点转移路径,也可选择其中的一条或多条可行状态节点转移路径作为所述待测试可行状态节点转移路径。
在本实施例的一个可选实现方式中,所述状态节点对应的测试指令可在确定所述状态机模型时就生成,其中,所述测试指令用于表征当状态跳转至该状态节点时所应该执行的操作。
下述为本公开装置实施例,可以用于执行本公开方法实施例。
图5示出根据本公开一实施方式的测试装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部,可实现为服务器端。如图5所示,所述测试装置包括:
确定模块501,被配置为确定状态机模型,其中,所述状态机模型包括一个或多个状态节点及状态节点之间的转移函数;
获取模块502,被配置为根据所述状态机模型获取可行状态节点转移路径集合;
测试模块503,被配置为获取所述可行状态节点转移路径集合中可行状态节点转移路径对应的测试指令集合,基于所述测试指令集合进行测试。
上文提及,随着互联网技术的发展,越来越多的商家或者服务提供商通过互联网应用来为用户提供服务,为了提高服务质量,需要经常对于互联网应用所提供的服务内容进行测试,以及时发现互联网应用中可能存在的问题,进而及时解决,保障互联网应用的正常运转。现有技术中,测试人员通常是根据服务任务所处的各种状态确定有可能出现的状态路径,然后对于每一状态路径编写相应的测试代码进行测试,但每个服务任务,都有可能存在多个任务状态,比如对于服务订单,存在订单新生成、订单处理中、订单已打印、订单已拣货、订单已出库、订单配送中、订单已完成等多种订单状态。若使测试人员人工生成所有可能出现的状态路径,再对于每一状态路径编写相应的测试代码进行测试,无疑需要耗费巨大的人力成本,进而大大降低测试效率,同时还无法保障测试准确率。
考虑到上述缺陷,在该实施方式中,提出一种测试装置,该装置通过构建状态机模型来自动获取所有可行状态节点转移路径组成的路径集合,进而根据与所述可行状态节点转移路径对应的测试指令进行测试。该技术方案借助状态机模型来自动完成测试工作,从而大大节省了测试人员的测试工作量,提高了测试工作的执行效率,同时还能够有效保障测试准确率。
在本实施例的一个可选实现方式中,所述状态机模型可为有限状态机模型也可为无线状态机模型,所述状态机由状态寄存器和组合逻辑电路构成,其能够根据控制信号或者状态转移触发事件按照预先设定的状态进行状态转移,进而生成一个或多个可行的状态节点转移路径。从实现角度上来说,所述状态机可表现为一个有向图形,该有向图形由一组节点和一组相应的转移函数组成。在该实现方式中,所述状态机模型包括一个或多个状态节点及状态节点之间的转移函数,当所述状态机模型为有限状态机模型时,所述状态机模型中的状态节点均对应设置有相应的状态信息,当所述状态机模型为无限状态机模型时,所述状态机模型中的某些状态节点有可能未设置有相应的状态信息,但至少这些未设置有相应的状态信息的状态节点与其他状态节点之间存在一定的转移关系,对应设置有相应的转移函数。
在本实施例的一个可选实现方式中,所述状态节点用于表征某一待测试对象所处的状态,所述待测试对象比如可以为待测试的应用程序、待测试的服务对象等等。比如,若所述待测试对象为订单这一服务对象,则所述状态节点所表征的状态可以包括订单已生成、订单处理中、订单打印中、订单已打印、订单拣货中、订单已拣货、订单出库中、订单已出库、订单已交付配送、订单等待配送、订单配送中、订单等待派送、订单已投递、订单等待取货、订单已完成、订单售后处理中、订单等待取消、订单已取消、订单等待评价等多种订单状态。
在本实施例的一个可选实现方式中,所述测试指令指的是能够被执行或运行,并在执行和运行后能够得到一定的测试结果的指令,比如,所述测试指令可以为测试代码。
在本实施例的一个可选实现方式中,如图6所示,所述确定模块501包括:
第一确定子模块601,被配置为确定一个或多个状态节点;
第二确定子模块602,被配置为确定状态节点之间的转移函数,其中,所述转移函数包括状态转移触发事件以及状态转移规则;
生成子模块603,被配置为根据所述状态节点以及状态节点之间的转移关系生成所述状态机模型。
为了自动获取所有可行状态转移信息,进而自动获取对应的测试指令实现自动测试,节省测试工作量,提高测试效率,在该实现方式中,需要首先利用确定模块501确定一个完备的状态机模型。具体地,第一确定子模块601确定一个或多个状态节点;第二确定子模块602确定状态节点之间的转移函数;确定了状态节点和状态节点之间的转移函数之后,生成子模块603就可以根据所述状态节点以及状态节点之间的转移关系生成所述状态机模型。
在本实施例的一个可选实现方式中,所述转移函数包括状态转移触发事件以及状态转移规则,其中,所述状态转移触发事件指的是被触发后能够使得状态发生转移的事件,比如,状态转移触发事件可以为用户发送订单取消请求,假设在该触发事件发生之前,订单处于已出库状态,那么在检测到用户发送订单取消请求这一状态转移触发事件之后,所述订单的状态就会由已出库状态转移至订单等待取消状态,若此时又发生一状态转移触发事件,用户取消订单请求被核准,那么所述订单的状态就会由订单等待取消状态转移至订单已取消状态。其中,所述状态转移规则指的是当检测到状态转移触发事件后当前状态接下来应当转移至哪个状态,仍然以上文示例为例,当检测到用户发送订单取消请求这一状态转移触发事件发生后,按照所述状态转移规则,所述订单的状态就应当由已出库状态转移至订单等待取消状态,而当检测到用户取消订单请求被核准,这一状态转移触发事件发生后,那么按照所述状态转移规则,所述订单的状态就应当由订单等待取消状态转移至订单已取消状态。
在本实施例的一个可选实现方式中,如图7所示,所述获取模块502包括:
第三确定子模块701,被配置为确定起始状态节点和终止状态节点;
遍历子模块702,被配置为遍历从所述起始状态节点至所述终止状态节点的状态节点转移路径,得到所述可行状态节点转移路径集合。
在该实施方式中,在根据所述状态机模型获取可行状态节点转移路径集合时,第三确定子模块701首先确定起始状态节点和终止状态节点,遍历子模块702然后遍历从所述起始状态节点至所述终止状态节点的所有可行的状态节点转移路径,即获取所有从起始状态节点出发到终止状态节点终止的、可能发生的状态节点转移路径,得到所述可行状态节点转移路径集合。
在本实施例的一个可选实现方式中,所述起始状态节点和终止状态节点可以预先人为确定,也可随机在所述状态机模型中的所有状态节点中进行选择。例如,对于订单这一待测试对象,其所对应的状态有很多,而且对于不同的测试场景,测试要求也有可能不同,比如若测试要求为测试订单发货前的处理流程,那么所述起始状态节点就可以设置为订单已生成,所述终止状态节点可以设置为订单已出库;但若测试要求为测试订单的取消流程,那么所述起始状态节点就可以设置为处于订单已完成状态之前的所有状态节点,比如订单已生成、订单处理中、订单打印中、订单已打印、订单拣货中、订单已拣货、订单出库中、订单已出库、订单已交付配送、订单等待配送、订单配送中、订单等待派送、订单已投递、订单等待取货等等。也就是说,所述起始状态节点和终止状态节点的确定根据实际应用的需要、状态节点的数据特点以及状态转移规则来综合选择,本公开对其不作具体限定。
在本实施例的一个可选实现方式中,所述遍历子模块702可被配置为:
响应于检测到状态转移触发事件,从所述起始状态节点出发,根据状态转移规则确定下一可转移中间状态节点,直至到达所述终止状态节点;
连接所述起始状态节点、中间状态节点以及终止状态节点,得到可行状态节点转移路径;
组合所述可行状态节点转移路径,得到所述可行状态节点转移路径集合。
为了获取所有从起始状态节点出发到终止状态节点终止的、可能发生的状态节点转移路径,保障测试完备性,在该实现方式中,首先从所述起始状态节点出发,响应于检测到状态转移触发事件,根据状态转移规则确定下一可转移中间状态节点,然后再从当前状态节点出发,响应于检测到状态转移触发事件,根据状态转移规则确定下一可转移状态节点,依次类推,直至最后到达所述终止状态节点,最后连接所述起始状态节点、中间状态节点以及终止状态节点,得到一个可行状态节点转移路径。使用上述类似的方法,触发所有可行的状态跳转,遍历所有的状态跳转情况,即可得到所有可行的状态节点转移路径,将得到的所有可行状态节点转移路径组合起来,即可得到所述可行状态节点转移路径集合。
在本实施例的一个可选实现方式中,如图8所示,所述测试模块503包括:
第四确定子模块801,被配置为确定所述可行状态节点转移路径集合中待测试可行状态节点转移路径;
第五确定子模块802,被配置为确定所述待测试可行状态节点转移路径中的状态节点集合;
获取子模块803,被配置为获取所述状态节点集合中每一状态节点对应的测试指令,其中,所述测试指令在确定所述状态机模型时生成;
组合子模块804,被配置为将所述测试指令按照所述状态节点在所述待测试可行状态节点转移路径中的出现顺序组合起来,得到所述测试指令集合;
执行子模块805,被配置为执行所述测试指令集合,得到测试结果。
在获取可行状态节点转移路径集合后,为了自动获取对应的测试指令集合,实现自动测试,在该实现方式中,第四确定子模块801确定所述可行状态节点转移路径集合中待测试的可行状态节点转移路径;第五确定子模块802确定所述待测试可行状态节点转移路径中的状态节点集合,即组成所述待测试可行状态节点转移路径的所有的状态节点形成的集合;获取子模块803获取所述状态节点集合中每一状态节点对应的测试指令;组合子模块804将所获得的测试指令按照所述状态节点在所述待测试可行状态节点转移路径中的出现顺序组合起来,即可得到与所述待测试可行状态节点转移路径对应的测试指令集合;执行子模块805执行所述测试指令集合,即可得到与所述待测试可行状态节点转移路径对应的测试结果。对于每一待测试可行状态节点转移路径,均可按照上述方式获取、执行相应的测试指令集合,最终完成待测试对象的自动完备测试。
在本实施例的一个可选实现方式中,所述待测试的可行状态节点转移路径可根据实际应用的需要进行选择,比如,可将所述可行状态节点转移路径集合中所有的可行状态节点转移路径依次作为待测试可行状态节点转移路径,也可选择其中的一条或多条可行状态节点转移路径作为所述待测试可行状态节点转移路径。
在本实施例的一个可选实现方式中,所述状态节点对应的测试指令可在确定所述状态机模型时就生成,其中,所述测试指令用于表征当状态跳转至该状态节点时所应该执行的操作。
本公开还公开了一种电子设备,图9示出根据本公开一实施方式的电子设备的结构框图,如图9所示,所述电子设备900包括存储器901和至少一个处理器902;其中,
所述存储器901用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述至少一个处理器902执行以实现上述方法步骤。
图10适于用来实现根据本公开实施方式的测试方法的计算机系统的结构示意图。
如图10所示,计算机系统1000包括中央处理单元(CPU)1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序而执行上述实施方式中的各种处理。在RAM1003中,还存储有系统1000操作所需的各种程序和数据。CPU1001、ROM1002以及RAM1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
以下部件连接至I/O接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
特别地,根据本公开的实施方式,上文描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行上述测试方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。
附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (10)

1.一种测试方法,其特征在于,包括:
确定状态机模型,其中,所述状态机模型包括一个或多个状态节点及状态节点之间的转移函数;
根据所述状态机模型获取可行状态节点转移路径集合;
获取所述可行状态节点转移路径集合中可行状态节点转移路径对应的测试指令集合,基于所述测试指令集合进行测试。
2.根据权利要求1所述的测试方法,其特征在于,所述确定状态机模型,包括:
确定一个或多个状态节点;
确定状态节点之间的转移函数,其中,所述转移函数包括状态转移触发事件以及状态转移规则;
根据所述状态节点以及状态节点之间的转移关系生成所述状态机模型。
3.根据权利要求1或2所述的测试方法,其特征在于,所述根据所述状态机模型获取可行状态节点转移路径集合,包括:
确定起始状态节点和终止状态节点;
遍历从所述起始状态节点至所述终止状态节点的状态节点转移路径,得到所述可行状态节点转移路径集合。
4.根据权利要求3所述的测试方法,其特征在于,所述遍历从所述起始状态节点至所述终止状态节点的状态节点转移路径,得到所述可行状态节点转移路径集合,被实施为:
响应于检测到状态转移触发事件,从所述起始状态节点出发,根据状态转移规则确定下一可转移中间状态节点,直至到达所述终止状态节点;
连接所述起始状态节点、中间状态节点以及终止状态节点,得到可行状态节点转移路径;
组合所述可行状态节点转移路径,得到所述可行状态节点转移路径集合。
5.一种测试装置,其特征在于,包括:
确定模块,被配置为确定状态机模型,其中,所述状态机模型包括一个或多个状态节点及状态节点之间的转移函数;
获取模块,被配置为根据所述状态机模型获取可行状态节点转移路径集合;
测试模块,被配置为获取所述可行状态节点转移路径集合中可行状态节点转移路径对应的测试指令集合,基于所述测试指令集合进行测试。
6.根据权利要求5所述的测试装置,其特征在于,所述确定模块包括:
第一确定子模块,被配置为确定一个或多个状态节点;
第二确定子模块,被配置为确定状态节点之间的转移函数,其中,所述转移函数包括状态转移触发事件以及状态转移规则;
生成子模块,被配置为根据所述状态节点以及状态节点之间的转移关系生成所述状态机模型。
7.根据权利要求5或6所述的测试装置,其特征在于,所述获取模块包括:
第三确定子模块,被配置为确定起始状态节点和终止状态节点;
遍历子模块,被配置为遍历从所述起始状态节点至所述终止状态节点的状态节点转移路径,得到所述可行状态节点转移路径集合。
8.根据权利要求7所述的测试装置,其特征在于,所述遍历子模块被配置为:
响应于检测到状态转移触发事件,从所述起始状态节点出发,根据状态转移规则确定下一可转移中间状态节点,直至到达所述终止状态节点;
连接所述起始状态节点、中间状态节点以及终止状态节点,得到可行状态节点转移路径;
组合所述可行状态节点转移路径,得到所述可行状态节点转移路径集合。
9.一种电子设备,其特征在于,包括存储器和至少一个处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述至少一个处理器执行以实现权利要求1-4任一项所述的方法步骤。
10.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该计算机指令被处理器执行时实现权利要求1-4任一项所述的方法步骤。
CN201910989858.8A 2019-10-17 2019-10-17 测试方法、装置、电子设备及计算机可读存储介质 Pending CN112685281A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910989858.8A CN112685281A (zh) 2019-10-17 2019-10-17 测试方法、装置、电子设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910989858.8A CN112685281A (zh) 2019-10-17 2019-10-17 测试方法、装置、电子设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN112685281A true CN112685281A (zh) 2021-04-20

Family

ID=75444633

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910989858.8A Pending CN112685281A (zh) 2019-10-17 2019-10-17 测试方法、装置、电子设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN112685281A (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102368226A (zh) * 2011-10-10 2012-03-07 南京大学 一种基于扩展有限状态机可行路径分析的测试用例自动生成方法
US9600401B1 (en) * 2016-01-29 2017-03-21 International Business Machines Corporation Automated GUI testing
CN107273297A (zh) * 2017-06-28 2017-10-20 百度在线网络技术(北京)有限公司 用于生成测试用例的方法和装置
CN107301129A (zh) * 2017-06-28 2017-10-27 百度在线网络技术(北京)有限公司 用于生成测试用例的方法和装置
CN107943685A (zh) * 2017-10-30 2018-04-20 北京奇虎科技有限公司 一种遍历路径生成方法、装置、服务器及存储介质
CN108038060A (zh) * 2017-12-28 2018-05-15 上海璞恒新能源科技有限公司 一种测试方法、装置、终端及计算机可读介质
CN108491238A (zh) * 2018-01-22 2018-09-04 中国电子科技集团公司第十五研究所 一种针对危化品电子交易订单的状态机及设计方法
CN109857668A (zh) * 2019-02-03 2019-06-07 苏州市龙测智能科技有限公司 Ui自动化功能测试方法、测试装置、测试设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102368226A (zh) * 2011-10-10 2012-03-07 南京大学 一种基于扩展有限状态机可行路径分析的测试用例自动生成方法
US9600401B1 (en) * 2016-01-29 2017-03-21 International Business Machines Corporation Automated GUI testing
CN107273297A (zh) * 2017-06-28 2017-10-20 百度在线网络技术(北京)有限公司 用于生成测试用例的方法和装置
CN107301129A (zh) * 2017-06-28 2017-10-27 百度在线网络技术(北京)有限公司 用于生成测试用例的方法和装置
CN107943685A (zh) * 2017-10-30 2018-04-20 北京奇虎科技有限公司 一种遍历路径生成方法、装置、服务器及存储介质
CN108038060A (zh) * 2017-12-28 2018-05-15 上海璞恒新能源科技有限公司 一种测试方法、装置、终端及计算机可读介质
CN108491238A (zh) * 2018-01-22 2018-09-04 中国电子科技集团公司第十五研究所 一种针对危化品电子交易订单的状态机及设计方法
CN109857668A (zh) * 2019-02-03 2019-06-07 苏州市龙测智能科技有限公司 Ui自动化功能测试方法、测试装置、测试设备及存储介质

Similar Documents

Publication Publication Date Title
US20140325480A1 (en) Software Regression Testing That Considers Historical Pass/Fail Events
CN109324977A (zh) 应用程序卡顿的检测方法、装置及电子设备
JP2019500680A (ja) データ処理方法及び装置
CN105577722A (zh) 积分兑换方法和装置
CN110674047B (zh) 软件测试方法、装置及电子设备
CN108270837B (zh) 一种利用闲置资源的分布式任务调度方法及系统
CN110633977A (zh) 支付异常处理方法、装置及终端设备
CN110569194A (zh) 接口测试方法、装置、电子设备及存储介质
CN110007921A (zh) 一种代码发布方法及装置
CN112732499A (zh) 一种基于微服务架构的测试方法、装置及计算机系统
CN111858296A (zh) 接口测试方法、装置、设备和存储介质
CN111221727B (zh) 测试方法、装置、电子设备和计算机可读介质
CN111159023A (zh) 测试方法、装置、电子设备及计算机可读存储介质
CN112685247A (zh) 基于Zabbix监控系统的告警抑制方法及监控系统
US20130159241A1 (en) Template clauses based sat techniques
CN110971478B (zh) 云平台服务性能的压测方法、装置及计算设备
CN112685281A (zh) 测试方法、装置、电子设备及计算机可读存储介质
CN113392002B (zh) 一种测试系统构建方法、装置、设备及存储介质
CN112882921B (zh) 故障模拟方法和装置
CN110866492B (zh) 一种基线分支的识别方法、装置及计算机系统
CN108536604B (zh) 一种测试web页面响应时间的方法及终端
CN110750452B (zh) 自动化测试方法及装置
US11163667B2 (en) Method and apparatus for error ticket management
CN110311833A (zh) 供应商服务的检测方法及装置
CN107818048B (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