CN109101410B - 一种风险驱动测试方法和装置以及计算机可读存储介质 - Google Patents

一种风险驱动测试方法和装置以及计算机可读存储介质 Download PDF

Info

Publication number
CN109101410B
CN109101410B CN201710469821.3A CN201710469821A CN109101410B CN 109101410 B CN109101410 B CN 109101410B CN 201710469821 A CN201710469821 A CN 201710469821A CN 109101410 B CN109101410 B CN 109101410B
Authority
CN
China
Prior art keywords
node
function
code
knowledge graph
nodes
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
Application number
CN201710469821.3A
Other languages
English (en)
Other versions
CN109101410A (zh
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.)
Beijing Mininglamp Software System Co ltd
Original Assignee
Beijing Mininglamp Software System 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 Beijing Mininglamp Software System Co ltd filed Critical Beijing Mininglamp Software System Co ltd
Priority to CN201710469821.3A priority Critical patent/CN109101410B/zh
Publication of CN109101410A publication Critical patent/CN109101410A/zh
Application granted granted Critical
Publication of CN109101410B publication Critical patent/CN109101410B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/368Test management for test version control, e.g. updating test cases to a new software version
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了一种风险驱动测试方法和装置以及计算机可读存储介质,所述方法包括:采用知识图谱表示待测试的软件产品;当待测试的软件产品的代码发生改变时,根据知识图谱对发生改变的代码进行测试案例的追溯,以对追溯的测试案例进行测试。通过本发明实施例的方案,采用知识图谱来表示待测试的软件产品,从而当待测试的软件产品的代码发生改变时,能够快速定位受影响的测试案例,进而精确有效的进行测试,全面保证软件产品的质量。

Description

一种风险驱动测试方法和装置以及计算机可读存储介质
技术领域
本发明涉及计算机软件技术,尤指一种风险驱动测试方法和装置以及计算机可读存储介质。
背景技术
软件产品往往具有快速更新迭代的特点,或者是为了响应客户或市场上的新需求,或者是为了修复原有代码中的缺陷的问题。而在产品不断迭代,代码发生改变时,为了高效的保证产品质量,需要对软件产品进行风险驱动测试。
传统的风险驱动测试通常由产品测试人员对产品代码的主观理解来进行,需要产品开发人员和产品测试人员不断沟通,从而确定受代码改动而影响的测试用例的范围。产品开发人员完成产品代码改动与产品功能的对应,产品测试人员完成功能与测试用例的对应,不但花费较高的沟通成本,而且容易造成测试冗余或是测试遗漏的现象,从而引发不必要的测试资源的浪费,或者是产品有风险的功能点没有测全,造成产品质量未能全面保证。
发明内容
本发明实施例提供了一种风险驱动测试方法和装置以及计算机可读存储介质,能够精确测试产品代码,从而全面保证产品质量。
本发明实施例提供了一种风险驱动测试方法,包括:
采用知识图谱表示待测试的软件产品;
当待测试的软件产品的代码发生改变时,根据知识图谱对发生改变的代码进行测试案例的追溯,以对追溯的测试案例进行测试。
可选的,所述采用知识图谱表示待测试的软件产品包括:
提取待测试的软件产品中的代码函数、函数外变量或常量和测试案例;
根据提取的代码函数、函数外变量或常量和测试案例显示知识图谱的节点;
根据不同节点之间的依赖关系定义显示知识图谱的带方向的边。
可选的,所述采用知识图谱表示待测试的软件产品包括:
提取待测试的软件产品中的功能点、代码函数、函数外变量或常量和测试案例;
根据提取的功能点、代码函数、函数外变量或常量和测试案例显示知识图谱的节点;
根据不同节点之间的依赖关系定义显示知识图谱的带方向的边。
可选的,所述根据知识图谱对发生改变的代码进行测试案例的追溯包括:
确定所述发生改变的代码所在的知识图谱的节点;
根据确定出的节点按照与所述确定出的节点之间的依赖关系追溯对应受影响的测试案例对应的节点。
可选的,所述根据确定出的节点按照与确定出的节点之间的依赖关系追溯对应受影响的测试案例包括:
从所述确定出的节点开始,查找与所述确定出的节点相连的边所指向的下一跳节点,判断与所述确定出的节点相连的边所指向的下一跳节点是否是测试案例对应的节点,如果是,则为所追溯的测试案例对应的节点;如果不是,则继续执行查找与本跳节点相连的边所指向的下一跳节点,判断与本跳节点连接的边所指向的下一跳节点是否是测试案例对应的节点的步骤。
可选的,该方法还包括:
所述继续执行查找与本跳节点相连的边所指向的下一跳节点,判断与本跳节点连接的边所指向的下一跳节点是否是测试案例对应的节点的步骤之前,判断出所述本跳节点与所述确定出的节点之间的跳数小于或等于预设值。
本发明实施例还提出了一种风险驱动测试装置,包括:
展示模块,用于采用知识图谱表示待测试的软件产品;
处理模块,用于当待测试的软件产品的代码发生改变时,根据知识图谱对发生改变的代码进行测试案例的追溯,以对追溯的测试案例进行测试。
可选的,所述展示模块具体用于:
提取待测试的软件产品中的代码函数、函数外变量或常量和测试案例;
根据提取的代码函数、函数外变量或常量和测试案例显示知识图谱的节点;根据不同节点之间的依赖关系定义显示知识图谱的带方向的边。
可选的,所述展示模块具体用于:
提取待测试的软件产品中的功能点、代码函数、函数外变量或常量和测试案例;
根据提取的功能点、代码函数、函数外变量或常量和测试案例显示知识图谱的节点;
根据不同节点之间的依赖关系定义显示知识图谱的带方向的边。
可选的,所述处理模块具体用于采用以下方式实现所述根据知识图谱对发生改变的代码进行测试案例的追溯:
确定所述发生改变的代码所在的知识图谱的节点;
根据确定出的节点按照与所述确定出的节点之间的依赖关系追溯对应受影响的测试案例对应的节点。
可选的,所述处理模块具体用于采用以下方式实现所述根据确定出的节点按照与确定出的节点之间的依赖关系追溯对应受影响的测试案例:
从所述确定出的节点开始,查找与所述确定出的节点相连的边所指向的下一跳节点,判断与所述确定出的节点相连的边所指向的下一跳节点是否是测试案例对应的节点,如果是,则为所追溯的测试案例对应的节点;如果不是,则继续执行查找与本跳节点相连的边所指向的下一跳节点,判断与本跳节点连接的边所指向的下一跳节点是否是测试案例对应的节点的步骤。
可选的,所述处理模块还用于:
所述继续执行查找与本跳节点相连的边所指向的下一跳节点,判断与本跳节点连接的边所指向的下一跳节点是否是测试案例对应的节点的步骤之前,判断出所述本跳节点与所述确定出的节点之间的跳数小于或等于预设值。
本发明实施例还提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一种风险驱动测试方法的步骤。
本发明实施例还提出了一种终端,包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令被所述处理器执行时,实现上述任意一种风险驱动测试方法。
与相关技术相比,本发明实施例包括:采用知识图谱表示待测试的软件产品;当待测试的软件产品的代码发生改变时,根据知识图谱对发生改变的代码进行测试案例的追溯,以对追溯的测试案例进行测试。通过本发明实施例的方案,采用知识图谱来表示待测试的软件产品,从而当待测试的软件产品的代码发生改变时,能够快速定位受影响的测试案例,进而精确有效的进行测试,全面保证软件产品的质量。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明实施例风险驱动测试方法的流程图;
图2为本发明实施例订票系统的知识图谱的示意图;
图3为本发明实施例风险驱动测试装置的结构组成示意图;
图4为本发明实施例终端的结构组成示意图。
具体实施方式
下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
参见图1,本发明实施例提出了一种风险驱动测试方法,包括:
步骤100、采用知识图谱表示待测试的软件产品。具体包括:
提取待测试的软件产品中的代码函数、函数外变量或常量和测试案例;根据提取的代码函数、函数外变量或常量和测试案例显示知识图谱的节点;根据不同节点之间的依赖关系定义显示知识图谱的带方向的边。
或者,提取待测试的软件产品中的功能点、代码函数、函数外变量或常量和测试案例;根据提取的功能点、代码函数、函数外变量或常量和测试案例显示知识图谱的节点;根据不同节点之间的依赖关系定义显示知识图谱的带方向的边。
其中,软件产品中的功能点是指从用户角度来看的一组原子性操作。之所以要求功能点具有原子性,是因为一个功能点中的部分操作并不能有效调用代码中的一段逻辑函数,而且过多的操作聚合在一起形成肥胖功能点,会使功能点与多个接口函数以及过多测试用例相联系,不利于清晰定位。也就是说,功能点一般要能够调用代码中的一段逻辑函数,同时对应代码中的一个接口函数。一般情况下,一个功能点对应1到多组测试用例。
例如,页面上的“登录”功能点,包括“输入用户名、输入密码和点击登录”一组原子性的操作,对应多组测试用例,如“管理员登录,一般用户登录,错误密码登录,不存在用户名登录”等等,并且对应后端一个“login”处理函数。
功能点需要人工从待测试的软件产品中提取出来。
在显示功能点对应的知识图谱的节点时,显示功能点的标识和功能点对应的知识图谱的节点的重要属性。
功能点的标识可以随意设置,只要保证该标识在整个知识图谱中是唯一的就可以,例如,为了方便功能节点在软件产品中的定位,可以取功能点的标识为“模块标识_功能标识”,当然,可以取其他的标识,本发明实施例对此不作限定。
功能点对应的知识图谱的节点的属性包括:功能点标题,功能点目标,功能点描述等,例如,上述例子中,“登录”功能点标题为“登录”,功能点目标为“保证登录功能的行为正确性和错误处理能力”,功能点描述为“测试有效用户/密码可成功登录,无效用户/密码不可以登录”。为了提高知识图谱的可视化效果,可只挑选其中重要的属性,如“标题”显示。其他属性通过点击详情获取。这里的属性指的是功能点本身对本发明实施例方法的执行有帮助有意义的特质。上述只是一个例子,可以根据实际情况灵活调整。比如也可定义“功能点的重要性”这个属性,具体取值为(Fatal,Critical,Major,Minor)四者中的一种。其中,Fatal为致命性的功能,Critical为极其重要的功能,Major为主要功能,Minor为次要功能,其优先级由高到低。用来表示该功能点从产品功能角度上来看是否重要。当面临资源极其缺乏的情况下,测试执行就需要先保证Fatal,这种极其重要的功能点的测试,再接下来考虑其他功能点。
其中,软件产品中的代码函数是指一段相对独立的逻辑处理单元。利用代码函数或方法而非代码文件作为代码的一个表示粒度(即知识图谱的一个节点),是由于代码函数或方法更能精准的对应到一个功能点上,而代码文件粒度过大,往往会定义一组函数,也就会对应一堆功能点,不利于测试用例的精准定位。
代码函数可以采用自动化程序或者人工方法从待测试的软件产品中提取出来。在自动化程序中,全文检索匹配函数的定义模式,比如使用正则表达式“(public|protected|private|static|\s)+[\w\<\>\[\]]+\s+(\w+)*\([^\)]*\)*(\{?|[^;])”,来匹配提取代码函数。
在显示代码函数对应的知识图谱的节点时,显示代码函数的标识和代码函数对应的知识图谱的节点的属性。
代码函数的标识可以随意设置,只要保证该标识在整个知识图谱中是唯一的就可以,例如,为了方便代码函数在软件产品中的定位,可以取代码函数的标识为“类名_函数名”,当然,可以取其他的标识,本发明实施例对此不作限定。
代码函数对应的知识图谱的节点的属性包括:函数路径、函数描述等,例如,上述例子中,函数路径为”/LoginPage/login”,函数描述为”用户登录函数“。
其中,软件产品中的函数外变量或常量是指程序代码中除函数外,另一可能被改变的因素在函数外声明或定义的变量或常量。为了捕获这一方面的改变,将这部分内容也定义为知识图谱的节点。由于函数内包含的变量或常量发生的任何改变都会在代码函数这个节点反映出来,所以这里只需要考虑函数外的变量或常量,如程序文件中声明或定义的不属于任意函数的,却被其他函数调用或使用的,比如全局变量,类属性变量,常量等。
函数外变量或常量可以采用自动化程序或者人工方法从待测试的软件产品中提取出来。在自动化程序中,全文检索匹配函数外变量或常量的定义模式,比如和提取函数类似的使用正则表达式,来匹配提取变量或者常量。
在显示函数外变量或常量对应的知识图谱的节点时,显示函数外变量或常量的标识和函数外变量或常量对应的知识图谱的节点的必要属性。
函数外变量或常量的标识可以随意设置,只要保证该标识在整个知识图谱中是唯一的就可以,例如,为了方便函数外变量或常量在软件产品中的定位,可以取功能点的标识为“类名_变量名”,当然,可以取其他的标识,本发明实施例对此不作限定。
函数外变量或常量对应的知识图谱的节点的属性包括:相关路径,变量描述等,例如,上述例子中,相关路径为“/LoginPage/login/username”,变量描述为“登录用户名”。
其中,软件产品中的测试案例是指测试人员根据功能点模拟用户操作为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。由于测试输入以及执行条件的多样性,通常来说一个功能点会对应多个测试案例。
测试案例需要人工创建完成。这是测试工作的一个重要部分。
在显示测试案例对应的知识图谱的节点时,显示测试案例的标识。
测试案例的标识可以随意设置,只要保证该标识在整个知识图谱中是唯一的就可以,例如,为了方便测试案例在软件产品中的定位,可以取功能点的标识为“功能点标识_序列号”,其中,序列号可以随机生成,或按测试案例顺序排列,当然,可以取其他的标识,本发明实施例对此不作限定。
当提取软件代码中的功能点作为知识图谱的一个节点时,功能点对应的节点和测试案例对应的节点之间存在依赖关系,功能点对应的节点和代码函数对应的节点之间存在依赖关系,不同代码函数对应的节点之间存在依赖关系,代码函数对应的节点和函数外变量或常量对应的节点之间存在依赖关系,不同函数外变量或常量对应的节点之间存在依赖关系,其他的节点之间不存在依赖关系。
其中,对于功能点对应的节点和测试案例对应的节点之间的依赖关系,由于测试案例是基于功能点而生成的,因此,功能点对应的节点和测试案例对应的节点之间的边由功能点对应的节点指向由该功能点所生成的测试案例对应的节点。
功能点对应的节点和测试案例对应的节点之间的边的属性包括:功能点标识、测试案例标识。该属性用于唯一确认一条边并作为此边的查找条件。
功能点对应的节点和测试案例对应的节点之间的依赖关系可以在创建测试案例的过程中由测试人员建立并记录。
其中,对于功能点对应的节点和代码函数对应的节点之间的依赖关系,功能点对应的节点和代码函数对应的节点之间的边由代码函数对应的节点指向功能点对应的节点。
功能点对应的节点和代码函数对应的节点之间的边的属性包括:功能点标识、代码函数标识。该属性用于唯一确认一条边并作为此边的查找条件。
功能点对应的节点和代码函数对应的节点之间的依赖关系可以由开发人员根据软件产品的设计来进行标注。
当不提取软件代码中的功能点作为知识图谱的一个节点时,测试案例对应的节点和所调用的入口函数对应的节点之间存在依赖关系,不同代码函数对应的节点之间存在依赖关系,代码函数对应的节点和函数外变量或常量对应的节点之间存在依赖关系,不同函数外变量或常量对应的节点之间存在依赖关系,其他的节点之间不存在依赖关系。
其中,测试案例对应的节点和所调用的入口函数对应的节点之间存在依赖关系,由测试案例所调用的入口函数对应的节点直接指向该测试案例对应的节点,生成一条有向边用来表示依赖关系。图谱中其他节点之间的依赖关系不变。
其中,对于不同代码函数对应的节点之间的依赖关系,不同的代码函数对应的节点之间的边是基于相互之间的调用关系生成的由被调用者指向调用者的一条有向边。这个依赖关系的复杂度和具体项目相关,可能会变得非常庞大而复杂。好在业界已有现成的自动化工具可协助完成。这个依赖关系理论上是有强弱程度之分的,也直接影响到测试的一个优先级的设定问题。本发明实施例暂且不考虑权重这个因子。
不同代码函数对应的节点之间的边的属性包括:被调用代码函数标识、调用代码函数标识。该属性用于唯一确认一条边并作为此边的查找条件。
其中,对于函数外变量或常量对应的节点和代码函数对应的节点之间的依赖关系,根据代码函数与函数外变量或常量的相互调用关系,生成由被调用者对应的节点指向调用者对应节点的一条有向边。
函数外变量或常量对应的节点和代码函数对应的节点之间的边的属性包括:函数外变量或常量标识、代码函数标识。该属性用于唯一确认一条边并作为此边的查找条件。
函数外变量或常量对应的节点和代码函数对应的节点之间的依赖关系可以采用成熟的集成开发环境(IDE,Integrated Development Environment)提供的功能或插件功能来提取。例如,intellij(一种IDE软件)中,show usage选项能够同时提取函数外变量或常量、代码函数以及函数外变量或常量对应的节点和代码函数对应的节点之间的依赖关系。
其中,对于不同函数外变量或常量对应的节点之间的依赖关系,根据不同函数外变量或常量的调用计算关系,不同函数外变量或常量对应的节点之间的边由作为因子的函数外变量或常量对应的节点指向新生成的函数外变量或常量对应的节点。
不同函数外变量或常量对应的节点之间的边的属性包括:因子函数外变量或常量标识、新生成的函数外变量或常量标识。该属性用于唯一确认一条边并作为此边的查找条件。
其中,在显示知识图谱时,可以选择一款图数据库,如Titan,或者neo4j等来存储相应的数据信息(上述中的节点和边),同时生产可视化的知识图谱展示,然后可根据实际情况进行手工修改调整。
步骤101、当待测试的软件产品的代码发生改变时,根据知识图谱对发生改变的代码进行测试案例的追溯,以对追溯的测试案例进行测试。
本步骤中,根据知识图谱对发生改变的代码进行测试案例的追溯包括:
确定发生改变的代码所在的知识图谱的节点;根据确定出的节点按照与确定出的节点之间的依赖关系追溯对应受影响的测试案例对应的节点。
其中,根据确定出的节点按照与确定出的节点之间的依赖关系追溯对应受影响的测试案例包括:
从确定出的节点开始,查找与所述确定出的节点相连的边所指向的下一跳节点,判断与确定出的节点相连的边所指向的下一跳节点是否是测试案例对应的节点,如果是,则为所追溯的测试案例对应的节点;如果不是,则继续执行查找与本跳节点相连的边所指向的下一跳节点,判断与本跳节点连接的边所指向的下一跳节点是否是测试案例对应的节点的步骤。
其中,在查找与本跳节点相连的边所指向的下一跳节点,判断与本跳节点连接的边所指向的下一跳节点是否是测试案例对应的节点之前,可以先判断本跳节点与确定出的节点之间的跳数是否大于预设值,如果大于预设值,则结束本流程,如果小于或等于预设值,则继续执行判断与本跳节点连接的边所指向的下一跳节点是否是测试案例对应的节点的步骤。这样,可以避免知识图谱中错误的出现环形而引发无休止的计算。
其中,在查找与确定出的节点相连的边所指向的下一跳节点时,则可直接使用知识图谱的特性,查找起点(starting vertex)为该确定出的节点的边的终点(enddingvertex)。其中,起点即为边的第一个属性,终点即为边的第二个属性。
对于代码改变,无外乎于对函数逻辑,变量或常量的改变,均可落实到知识图谱中的一个节点上。具体实施中可在代码改变后,自动提取“namespace.函数(变量或常量)”路径,然后根据知识图谱中代码相关节点(包括函数和常量或变量)的路径属性,自动映射到某一节点,并存储受到改变的代码节点的标识。
利用图数据库的搜索语句,找到从受改变代码节点出去的边,在事先设定的n跳之内所能到达的类型为“测试案例”的节点。然后高亮所有测试案例,用作测试依据。一般成熟的图数据库均提供现成的命令接口可满足第一步的需求,比如,当采用Titan时,可使用如下gremlin命令追溯,得到从改动函数/变量(key为900301)到受影响测试案例的一条路径,路径最后一个节点即为我们要找的测试用例。
g.v.has("key","900301").out.loop(1){it.object.type=='Testcase'}.path
如果受影响的为多个变量/常量,函数,那么可以多次调用上述命令。
下面通过一个示例说明上述方法的具体实现。
如图2所示,一个简单的机票订票系统,包括登录、余票查询、机票下单三个功能点。登录功能点的标识为001,余票查询功能点的标识为002,机票下单功能点的标识为003。
登录功能点指向三个测试案例,分别为错误密码登录(标识为00102)、正常登录(标识为00101)、不存在用户登录(标识为00103)。
余票查询功能点指向四个测试案例,分别为输入出发到达地点时间(标识为00202)、根据航班号查询余票(标识为00201)、输入不存在的出发到达地点时间(标识为00204)、查询往返双程(标识为00203)。
机票下单功能点指向五个测试案例,分别为用户下单(标识为00302)、非用户下单(标识为00301)、下单后立即付款(标识为00303)、多张机票同时下单(标识为00304)、下单后延迟付款(标识为00305)。
代码函数LoginPage.login(标识为900101)指向登录功能点,代码函数SearchPage.Search(标识为900302)指向余票查询功能点,代码函数Orderpage.order(标识为900403)指向机票下单功能点。
代码函数Pass.check(标识为900201)指向代码函数LoginPage.login,即代码函数Pass.check被代码函数LoginPage.login调用;函数外变量或常量_all.dburl(标识为800001)指向代码函数Pass.check,即函数外变量或常量_all.dburl被代码函数Pass.check调用;
代码函数SearchPage.showtickets(标识为900301)和代码函数Storage.gettickets(标识为900303)指向代码函数SearchPage.Search,即代码函数SearchPage.showtickets和代码函数Storage.gettickets被代码函数SearchPage.Search调用,同时代码函数Storage.gettickets还指向代码函数Storage.ordertickets(标识为900304),即代码函数Storage.gettickets还被代码函数Storage.ordertickets调用;
代码函数Storage.ordertickets指向代码函数Orderpage.order,即代码函数Storage.ordertickets被代码函数Orderpage.order调用;代码函数Deal.pay(标识为900501)指向代码函数Storage.ordertickets,即代码函数Deal.pay被代码函数Storage.ordertickets调用;代码函数Deal.VISApay(标识为900502)、代码函数Deal.Wxpay(标识为900504)和代码函数Deal.ZFBpay(标识为900503)指向代码函数Deal.pay,即代码函数Deal.VISApay、代码函数Deal.Wxpay和代码函数Deal.ZFBpay被代码函数Deal.pay调用。
当代码发生改变时,无论是修改了一个变量的值、类型,抑或修改了一个代码函数内的逻辑或是函数内的变量定义,都将对应于知识图谱中的一个节点。如果代码量比较小,这一步可由人工标注,如果项目规模比较大,可根据代码函数,变量/常量节点的链接属性和被修改的函数,变量/常量在代码中的位置来自动生成。比如我们修改了代码函数SearchPage.showtickets中的部分代码,则可在知识图谱中高亮该代码函数对应的节点。
然后由该代码函数对应的节点进行追溯,得到四个测试案例,分别为输入出发到达地点时间(标识为00202)、根据航班号查询余票(标识为00201)、输入不存在的出发到达地点时间(标识为00204)、查询往返双程(标识为00203)。则测试人员可以对追溯的这四个测试案例进行针对性的测试工作。
参见图3,本发明实施例提出了一种风险驱动测试装置,包括:
展示模块,用于采用知识图谱表示待测试的软件产品;
处理模块,用于当待测试的软件产品的代码发生改变时,根据知识图谱对发生改变的代码进行测试案例的追溯,以对追溯的测试案例进行测试。
可选的,所述展示模块具体用于:
提取待测试的软件产品中的代码函数、函数外变量或常量和测试案例;
根据提取的代码函数、函数外变量或常量和测试案例显示知识图谱的节点;
根据不同节点之间的依赖关系定义显示知识图谱的带方向的边。
可选的,所述展示模块具体用于:
提取待测试的软件产品中的功能点、代码函数、函数外变量或常量和测试案例;
根据提取的功能点、代码函数、函数外变量或常量和测试案例显示知识图谱的节点;
根据不同节点之间的依赖关系定义显示知识图谱的带方向的边。
可选的,所述处理模块具体用于采用以下方式实现所述根据知识图谱对发生改变的代码进行测试案例的追溯:
确定所述发生改变的代码所在的知识图谱的节点;
根据确定出的节点按照与所述确定出的节点之间的依赖关系追溯对应受影响的测试案例对应的节点。
可选的,所述处理模块具体用于采用以下方式实现所述根据确定出的节点按照与确定出的节点之间的依赖关系追溯对应受影响的测试案例:
从所述确定出的节点开始,查找与所述确定出的节点相连的边所指向的下一跳节点,判断与所述确定出的节点相连的边所指向的下一跳节点是否是测试案例对应的节点,如果是,则为所追溯的测试案例对应的节点;如果不是,则继续执行查找与本跳节点相连的边所指向的下一跳节点,判断与本跳节点连接的边所指向的下一跳节点是否是测试案例对应的节点的步骤。
可选的,所述处理模块还用于:
所述继续执行查找与本跳节点相连的边所指向的下一跳节点,判断与本跳节点连接的边所指向的下一跳节点是否是测试案例对应的节点的步骤之前,判断出所述本跳节点与所述确定出的节点之间的跳数小于或等于预设值。
本发明实施例还提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一种风险驱动测试方法的步骤。
参见图4,本发明实施例还提出了一种终端,包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令被所述处理器执行时,实现上述任意一种风险驱动测试方法。
虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

Claims (10)

1.一种风险驱动测试方法,其特征在于,包括:
采用知识图谱表示待测试的软件产品;
当待测试的软件产品的代码发生改变时,根据知识图谱对发生改变的代码进行测试案例的追溯,以对追溯的测试案例进行测试;
所述采用知识图谱表示待测试的软件产品包括:
提取待测试的软件产品中的代码函数、函数外变量或常量和测试案例;
根据提取的代码函数、函数外变量或常量和测试案例显示知识图谱的节点;
根据不同节点之间的依赖关系定义显示知识图谱的带方向的边;
或者,
提取待测试的软件产品中的功能点、代码函数、函数外变量或常量和测试案例;
根据提取的功能点、代码函数、函数外变量或常量和测试案例显示知识图谱的节点;
根据不同节点之间的依赖关系定义显示知识图谱的带方向的边。
2.根据权利要求1所述的风险驱动测试方法,其特征在于,所述根据知识图谱对发生改变的代码进行测试案例的追溯包括:
确定所述发生改变的代码所在的知识图谱的节点;
根据确定出的节点按照与所述确定出的节点之间的依赖关系追溯对应受影响的测试案例对应的节点。
3.根据权利要求2所述的风险驱动测试方法,其特征在于,所述根据确定出的节点按照与确定出的节点之间的依赖关系追溯对应受影响的测试案例包括:
从所述确定出的节点开始,查找与所述确定出的节点相连的边所指向的下一跳节点,判断与所述确定出的节点相连的边所指向的下一跳节点是否是测试案例对应的节点,如果是,则为所追溯的测试案例对应的节点;如果不是,则继续执行查找与本跳节点相连的边所指向的下一跳节点,判断与本跳节点连接的边所指向的下一跳节点是否是测试案例对应的节点的步骤。
4.根据权利要求3所述的风险驱动测试方法,其特征在于,该方法还包括:
所述继续执行查找与本跳节点相连的边所指向的下一跳节点,判断与本跳节点连接的边所指向的下一跳节点是否是测试案例对应的节点的步骤之前,判断出所述本跳节点与所述确定出的节点之间的跳数小于或等于预设值。
5.一种风险驱动测试装置,其特征在于,包括:
展示模块,用于采用知识图谱表示待测试的软件产品;
处理模块,用于当待测试的软件产品的代码发生改变时,根据知识图谱对发生改变的代码进行测试案例的追溯,以对追溯的测试案例进行测试;
所述展示模块具体用于:
提取待测试的软件产品中的代码函数、函数外变量或常量和测试案例;
根据提取的代码函数、函数外变量或常量和测试案例显示知识图谱的节点;根据不同节点之间的依赖关系定义显示知识图谱的带方向的边;
后者,
提取待测试的软件产品中的功能点、代码函数、函数外变量或常量和测试案例;
根据提取的功能点、代码函数、函数外变量或常量和测试案例显示知识图谱的节点;
根据不同节点之间的依赖关系定义显示知识图谱的带方向的边。
6.根据权利要求5所述的风险驱动测试装置,其特征在于,所述处理模块具体用于采用以下方式实现所述根据知识图谱对发生改变的代码进行测试案例的追溯:
确定所述发生改变的代码所在的知识图谱的节点;
根据确定出的节点按照与所述确定出的节点之间的依赖关系追溯对应受影响的测试案例对应的节点。
7.根据权利要求6所述的风险驱动测试装置,其特征在于,所述处理模块具体用于采用以下方式实现所述根据确定出的节点按照与确定出的节点之间的依赖关系追溯对应受影响的测试案例:
从所述确定出的节点开始,查找与所述确定出的节点相连的边所指向的下一跳节点,判断与所述确定出的节点相连的边所指向的下一跳节点是否是测试案例对应的节点,如果是,则为所追溯的测试案例对应的节点;如果不是,则继续执行查找与本跳节点相连的边所指向的下一跳节点,判断与本跳节点连接的边所指向的下一跳节点是否是测试案例对应的节点的步骤。
8.根据权利要求7所述的风险驱动测试装置,其特征在于,所述处理模块还用于:
所述继续执行查找与本跳节点相连的边所指向的下一跳节点,判断与本跳节点连接的边所指向的下一跳节点是否是测试案例对应的节点的步骤之前,判断出所述本跳节点与所述确定出的节点之间的跳数小于或等于预设值。
9.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1~4任意一项所述的风险驱动测试方法的步骤。
10.一种终端,其特征在于,包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令被所述处理器执行时,实现如权利要求1~4任意一项所述的风险驱动测试方法。
CN201710469821.3A 2017-06-20 2017-06-20 一种风险驱动测试方法和装置以及计算机可读存储介质 Active CN109101410B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710469821.3A CN109101410B (zh) 2017-06-20 2017-06-20 一种风险驱动测试方法和装置以及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710469821.3A CN109101410B (zh) 2017-06-20 2017-06-20 一种风险驱动测试方法和装置以及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN109101410A CN109101410A (zh) 2018-12-28
CN109101410B true CN109101410B (zh) 2022-03-15

Family

ID=64795687

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710469821.3A Active CN109101410B (zh) 2017-06-20 2017-06-20 一种风险驱动测试方法和装置以及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN109101410B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110032620A (zh) * 2019-04-22 2019-07-19 上海乂学教育科技有限公司 基于图搜索算法的自适应学习方法及计算机学习系统
CN110333898A (zh) * 2019-05-27 2019-10-15 北京达佳互联信息技术有限公司 一种代码关系生成方法、装置、电子设备及存储介质
CN111625446B (zh) * 2020-04-30 2023-05-23 库卡机器人制造(上海)有限公司 软件测试方法、装置、计算机可读介质及电子设备
CN111930623B (zh) * 2020-08-10 2023-07-25 中国工商银行股份有限公司 一种测试案例构建方法、装置及电子设备
CN113535577B (zh) * 2021-07-26 2022-07-19 工银科技有限公司 基于知识图谱的应用测试方法、装置、电子设备和介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103365770B (zh) * 2012-04-09 2016-01-13 上海马乐软件有限公司 移动终端软件测试系统及软件测试方法
CN102831056B (zh) * 2012-07-31 2015-04-08 东南大学 一种基于修改影响分析的回归测试用例生成方法
CN102915271A (zh) * 2012-10-31 2013-02-06 北京邮电大学 基于控制流图的单元回归测试用例集合优化方法

Also Published As

Publication number Publication date
CN109101410A (zh) 2018-12-28

Similar Documents

Publication Publication Date Title
CN109101410B (zh) 一种风险驱动测试方法和装置以及计算机可读存储介质
US8683449B2 (en) Automated parallel software code impact analysis
US7178135B2 (en) Scope-based breakpoint selection and operation
US9256512B1 (en) Quality analysis for embedded software code
CN106657192B (zh) 一种用于呈现服务调用信息的方法与设备
US20140298286A1 (en) Systems and Methods for Automatically Associating Software Elements and Automatic Gantt Chart Creation
CN111626028A (zh) 基于函数解析的报表生成方法、装置、设备及计算机介质
JP2015041167A (ja) セキュリティ上の脅威を評価する評価装置及びその方法
US8898649B2 (en) Application program analysis method, analysis system and recording medium for identifying a contributing factor for an invalid operation of an application program
US20220197950A1 (en) Eliminating many-to-many joins between database tables
CN104615544A (zh) 面向问题的gui软件关联功能分析方法及装置
CN111177009A (zh) 一种脚本生成方法、装置、电子设备及存储介质
Vanciu et al. Hidden dependencies in software systems
CN111460235A (zh) 图谱数据的处理方法、装置、设备及存储介质
US9563541B2 (en) Software defect detection identifying location of diverging paths
CN117312167A (zh) 一种面向低代码平台的自动化测试方法及系统
CN115576828A (zh) 一种测试用例生成方法、装置、设备及存储介质
US9280627B1 (en) GUI based verification at multiple abstraction levels
CN111078671A (zh) 数据表字段的修改方法、装置、设备和介质
CN110609888A (zh) 基于关系网络的图谱查证方法、装置、服务器和存储介质
CN113254343A (zh) 一种用户界面测试断言方法、装置、电子设备及存储介质
CN109634580B (zh) 监控方法、装置、终端及计算机可读存储介质
CN113220586A (zh) 一种自动化的接口压力测试执行方法、装置和系统
US20150199183A1 (en) Program analysis apparatus and program analysis method
CN111030863A (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
GR01 Patent grant
GR01 Patent grant