CN104615544A - 面向问题的gui软件关联功能分析方法及装置 - Google Patents

面向问题的gui软件关联功能分析方法及装置 Download PDF

Info

Publication number
CN104615544A
CN104615544A CN201510105283.0A CN201510105283A CN104615544A CN 104615544 A CN104615544 A CN 104615544A CN 201510105283 A CN201510105283 A CN 201510105283A CN 104615544 A CN104615544 A CN 104615544A
Authority
CN
China
Prior art keywords
software
interface element
test case
window
function
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.)
Granted
Application number
CN201510105283.0A
Other languages
English (en)
Other versions
CN104615544B (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.)
China Software Evaluation Center
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to CN201510105283.0A priority Critical patent/CN104615544B/zh
Publication of CN104615544A publication Critical patent/CN104615544A/zh
Application granted granted Critical
Publication of CN104615544B publication Critical patent/CN104615544B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开一种面向问题的GUI软件关联功能分析方法,包括:通过获取GUI软件的窗口元素、分析窗口内元素依赖关系、获取窗口调用关系以及基于界面元素的软件功能组成,以得到GUI软件功能;根据得到的GUI软件功能,创建GUI软件功能、测试用例和软件问题三者之间的关联关系;通过所述三者之间的关联关系,找出软件问题所对应的测试用例,并且找出该问题所关联的软件功能;通过所关联的软件功能,在回归测试时重新测试所述软件的相应功能。本发明公开的面向问题的GUI软件关联功能分析方法及装置,能够快速、准确、方便地获取软件问题所关联的软件功能,以提高GUI软件测试效率和充分性。

Description

面向问题的GUI软件关联功能分析方法及装置
技术领域
本发明涉及软件工程技术领域,尤其涉及一种面向问题的GUI软件关联功能分析方法及装置。
背景技术
在软件生存周期中,发现问题→修改问题→验证问题始终伴随着整个软件生存周期,一旦发现问题,开发人员通过对问题进行分析,找出问题产生的原因,并修改相关软件,问题修改完毕后,测试人员设计相应的测试用例,验证问题修改的正确性。这个过程需要反复进行,直到软件满足规定的要求。
在每一轮的修改→验证过程中,由于软件功能和结构的复杂性,开发人员和测试人员难以准确掌握软件问题与相关软件功能的关系,经常出现如下问题。(1)软件修改不彻底。由于开发人员不了解某个软件问题所涉及的软件功能,经常出现顾此失彼的现象,甚至是越改越糟的情况;(2)软件测试不充分。由于测试人员不了解某个软件问题所涉及的软件功能,经常出现“错那测那”的现象,遗漏很多需要测试的功能。
为了解决上述问题,业界提出了很多方法,有代表性的是基于源代码分析的软件变更影响分析方法,这种方法主要通过比较新旧版本源程序代码,找出软件修改部分,并根据软件代码之间的依赖关系,找出受代码变更影响的代码。这种方法是从源代码层面给出的解决方案,对测试人员有较高的要求,一是要求测试人员能够理解代码,将问题与相应的代码对应起来;二是需要测试人员将代码与软件功能对应起来。软件功能需求是外在的显性要求,无论是测试还是开发,直接面对的是软件功能而不是源代码,因此,上述方法在使用上受到一定的限制。
有鉴于此,为填补现有软件工程技术领域的功能自动获取技术的空白,并且针对图形用户界面获取软件功能中存在的技术问题,有必要提供一种新的面向问题的GUI软件关联功能分析方法及装置,从而能够快速、准确、方便地获取软件问题所关联的软件功能,以提高GUI软件测试效率和充分性。
发明内容
为了解决上述问题,本发明提供的一种面向问题的GUI软件关联功能分析方法及装置,能够快速、准确、方便地获取软件问题所关联的软件功能,以提高GUI软件测试效率。
本发明提供了一种面向问题的GUI软件关联功能分析方法,包括:S1、通过获取GUI软件的窗口元素、分析窗口内元素依赖关系、获取窗口调用关系以及基于界面元素的软件功能组成,以得到GUI软件功能;S2、根据得到的GUI软件功能,创建GUI软件功能、测试用例和软件问题三者之间的关联关系;S3、通过所述三者之间的关联关系,找出软件问题所对应的测试用例,并且找出该问题所关联的软件功能;S4、通过所关联的软件功能,在回归测试时重新测试所述软件的相应功能。
作为一种实施例,所述步骤S1进一步包括:基于GUI软件界面中的元素都按照树形结构排列,软件的启动界面为该树形结构的根结点,遍历以该窗口为根结点的树形结构,以获取该窗口所包含的所有界面元素;基于同一个窗口中的界面元素之间存在着一定的逻辑制约关系,通过界面元素的不同排列组合操作构成软件的子功能,以分析窗口内元素依赖关系;根据界面元素类型属性进行过滤得到界面元素类型为按钮的窗口元素,将按钮作为遍历的起始节点,并遍历当前按钮结点的所有子结点,其他结点类型不做处理,递归遍历当前结点的子结点界面元素,处理完子结点界面元素后,处理当前结点的兄弟结点,以获取窗口调用关系;在分别获取了各窗口元素及其依赖关系、各窗口间的调用关系的基础上,通过将窗口调用关系与各窗口中元素依赖关系进行组合,最终得到基于界面元素的软件功能组成。
作为一种实施例,所述步骤S2进一步包括:构建软件功能与测试用例追踪矩阵;接着,构建测试用例与软件问题追踪矩阵;接着,基于软件功能与测试用例追踪矩阵和测试用例与软件问题追踪矩阵,创建GUI软件功能、测试用例和软件问题三者之间的关联关系。
作为一种实施例,所述构建软件功能与测试用例追踪矩阵,进一步包括:基于测试用例就是软件功能路径上所包含的界面元素的取值以及预期结果,获取一个GUI软件功能路径上包含的各种不同类型的界面元素;基于软件是由软件功能组成的,一个软件功能中包含多个软件元素,同时,一个测试用例对应着多个界面元素,界面元素是软件功能和测试用例之间的最小描述单元,是两者之间的桥梁,采用追踪矩阵描述界面元素与测试用例之间的映射关系并构建界面元素与测试用例追踪矩阵。
作为一种实施例,所述构建测试用例与软件问题追踪矩阵,进一步包括:测试用例设计完毕后,按照测试用例描述的步骤执行测试用例并记录发现的软件问题;采用软件问题与界面元素追踪矩阵构建测试用例与软件问题追踪矩阵。
本发明还提供了一种面向问题的GUI软件关联功能分析装置,包括:软件功能构建模块,用于通过获取GUI软件的窗口元素、分析窗口内元素依赖关系、获取窗口调用关系以及基于界面元素的软件功能组成,以得到GUI软件功能;关联关系创建模块,用于根据得到的GUI软件功能,创建GUI软件功能、测试用例和软件问题三者之间的关联关系;检测模块,用于通过所述三者之间的关联关系,找出软件问题所对应的测试用例,并且找出该问题所关联的软件功能,通过所关联的软件功能,在回归测试时重新测试所述软件的相应功能。
作为一种实施例,所述软件功能构建模块进一步用于:基于GUI软件界面中的元素都按照树形结构排列,软件的启动界面为该树形结构的根结点,遍历以该窗口为根结点的树形结构,以获取该窗口所包含的所有界面元素;基于同一个窗口中的界面元素之间存在着一定的逻辑制约关系,通过界面元素的不同排列组合操作构成软件的子功能,以分析窗口内元素依赖关系;根据界面元素类型属性进行过滤得到界面元素类型为按钮的窗口元素,将按钮作为遍历的起始节点,并遍历当前按钮结点的所有子结点,其他结点类型不做处理,递归遍历当前结点的子结点界面元素,处理完子结点界面元素后,处理当前结点的兄弟结点,以获取窗口调用关系;在分别获取了各窗口元素及其依赖关系、各窗口间的调用关系的基础上,通过将窗口调用关系与各窗口中元素依赖关系进行组合,最终得到基于界面元素的软件功能组成。
作为一种实施例,所述关联关系创建模块进一步用于:构建软件功能与测试用例追踪矩阵;接着,构建测试用例与软件问题追踪矩阵;接着,基于软件功能与测试用例追踪矩阵和测试用例与软件问题追踪矩阵,创建GUI软件功能、测试用例和软件问题三者之间的关联关系。
作为一种实施例,所述关联关系创建模块进一步用于:基于测试用例就是软件功能路径上所包含的界面元素的取值以及预期结果,获取一个GUI软件功能路径上包含的各种不同类型的界面元素;基于软件是由软件功能组成的,一个软件功能中包含多个软件元素,同时,一个测试用例对应着多个界面元素,界面元素是软件功能和测试用例之间的最小描述单元,是两者之间的桥梁,采用追踪矩阵描述界面元素与测试用例之间的映射关系并构建界面元素与测试用例追踪矩阵。
作为一种实施例,所述关联关系创建模块进一步用于:测试用例设计完毕后,按照测试用例描述的步骤执行测试用例并记录发现的软件问题;采用软件问题与界面元素追踪矩阵构建测试用例与软件问题追踪矩阵。
由上述本发明的实施例提供的技术方案可以看出,采用本发明所提出的方法及装置,通过构建软件功能、测试用例和软件问题三者之间的关系,,找出软件问题所对应的测试用例,进而找出该问题所关联的软件功能,这些功能就是回归测试时必须重新测试的功能,能够快速、准确、方便地获取获取软件问题所关联的软件功能,以提高GUI软件测试效率和充分性。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例的面向问题的GUI软件关联功能分析方法构建的软件功能-测试用例-软件问题关联图示意图;
图2为本发明一实施例的面向问题的GUI软件关联功能分析方法的具体流程示意图;
图3为本发明一实施例的数据库登录界面示意图;
图4为本发明一实施例的界面元素获取工作流程示意图;
图5为本发明一实施例的获取窗口调用关系流程示意图;
图6为本发明一实施场景的学生管理系统的界面示意图;
图7为本发明一实施场景的新建人员窗口的界面示意图;
图8为本发明一实施例的学生管理系统软件的功能组成图;
图9为本发明一实施例的面向问题的GUI软件关联功能分析方法的整体流程示意图。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。
针对这种情况以及目前所面临的上述问题,本发明提出了通过分析软件的图形用户界面获取软件功能的方法,主要解决如何快速、准确地获取软件所具有的功能技术问题。
图形用户界面类软件,其界面展现方式主要分为两种:基于菜单窗口和基于对话框窗口的界面。这两种图形用户界面类软件虽然展现风格有所不同,但可采用相同的方法获取软件功能。本方案主要利用微软Windows操作系统提供的Microsoft UI Automat i on(简称UIA)框架,对被测软件的用户界面进行分析,获取主界面中的菜单和界面元素,而后通过自动触发菜单和界面元素的点击事件,得到次级菜单或次级对话框窗口,依此方式,递归找出被测软件所有层级的菜单或对话框中包含的元素,通过分析菜单层级关系或对话框窗口调用关系,得出被测软件的功能组成结构。
图1为本发明一实施例的面向问题的GUI软件关联功能分析方法构建的软件功能-测试用例-软件问题关联图示意图。本方案主要通过构建软件功能-测试用例-软件问题追踪表,建立软件功能、测试用例和软件问题三者之间的对应关系。软件问题通过测试用例发现,测试用例是桥梁,它一端连接着所发现的软件问题,另一端连接着对应的软件功能。如图1所示,三者之间是多对多的关系,即一个测试用例可以发现多个软件问题,一个软件问题可以由多个测试用例发现;一个软件功能对应着多个测试用例,一个测试用例可以与多个软件功能相关联。
图9为本发明一实施例的面向问题的GUI软件关联功能分析方法的整体流程示意图。如图9所示,本发明提供一种面向问题的GUI软件关联功能分析方法,包括:S1、通过获取GUI软件的窗口元素、分析窗口内元素依赖关系、获取窗口调用关系以及基于界面元素的软件功能组成,以得到GUI软件功能;S2、根据得到的GUI软件功能,创建GUI软件功能、测试用例和软件问题三者之间的关联关系;S3、通过所述三者之间的关联关系,找出软件问题所对应的测试用例,并且找出该问题所关联的软件功能;S4、通过所关联的软件功能,在回归测试时重新测试所述软件的相应功能。
图2为本发明一实施例的面向问题的GUI软件关联功能分析方法的主要工作流程示意图。如图2所示,软件功能需求获取可以包括但不限于:窗口元素获取;窗口内元素依赖关系获取;窗口调用关系获取;基于界面元素的软件功能组成。测试用例设计可以进一步包括:正常值判断;异常值判断;测试步骤设计。最后,通过执行测试用例,进一步找到软件的问题并记录。本发明所提出的方法,通过构建软件功能、测试用例和软件问题三者之间的关系,找出软件问题所对应的测试用例,进而找出该问题所关联的软件功能,这些功能就是回归测试时必须重新测试的功能,能够快速、准确、方便地获取软件问题所的关联软件功能,以提高GUI软件测试效率和充分性。
一、软件功能获取
作为一种实施例,所述步骤S1进一步包括:基于GUI软件界面中的元素都按照树形结构排列,软件的启动界面为该树形结构的根结点,遍历以该窗口为根结点的树形结构,以获取该窗口所包含的所有界面元素;基于同一个窗口中的界面元素之间存在着一定的逻辑制约关系,通过界面元素的不同排列组合操作构成软件的子功能,以分析窗口内元素依赖关系;根据界面元素类型属性进行过滤得到界面元素类型为按钮的窗口元素,将按钮作为遍历的起始节点,并遍历当前按钮结点的所有子结点,其他结点类型不做处理,递归遍历当前结点的子结点界面元素,处理完子结点界面元素后,处理当前结点的兄弟结点,以获取窗口调用关系;在分别获取了各窗口元素及其依赖关系、各窗口间的调用关系的基础上,通过将窗口调用关系与各窗口中元素依赖关系进行组合,最终得到基于界面元素的软件功能组成。
1、软件功能定义
对于图形用户界面类软件而言,软件功能为从某个根界面元素到叶子界面元素所经过的界面元素排列。图3为本发明一实施例的数据库登录界面示意图。例如,对于图3所示的软件界面,数据库登录功能是由“服务器、端口、用户名、密码、确定”所构成的界面元素排列。
2、窗口元素获取
图形用户界面类软件是由不同的窗口组成的,每个窗口中包含各种不同种类的元素,如菜单、文本框、对话框、列表框等。窗口中不同元素的组合输入构成了该窗口的功能实现。要提取窗口的功能,首先需要获取组成该窗口功能的所有界面元素。通过分析发现,在Windows操作系统中的UIA框架下,界面中的元素都按照树形结构排列,软件的启动界面为该树形结构的根结点,这些元素可以以AutomationEIement对象的形式进行访问,并通过Automation ID、Name、ControlType等获取对象的多种属性。同时,采用TreeWalker/FindAll方法可以对对象进行遍历和条件化查询。这样,对于某个窗口而言,获取该窗口所包含的界面元素的过程实际上就变成遍历以该窗口为根结点的树形结构的过程。
图4为本发明一实施例的界面元素获取工作流程示意图。如图4所示,获取窗口界面元素及其信息的主要流程可以包括:输入窗口标题;获取窗口句柄;获取窗口界面元素;获取第一个孩子节点;判断该节点是否为空,若否,则递归遍历子节点,若是,则结束该流程;递归遍历后,处理兄弟节点,随后结束该流程。该方法的核心思想是获取当前窗口的窗口句柄,通过当前窗口句柄构建窗口中界面元素树的根结点,使用UIA框架提供的TreeWalker类,采用深度遍历算法递归构造以当前窗口为根结点的界面元素树,从而获取窗口中所有界面元素及其信息。
3、窗口元素依赖关系分析
对于图形用户界面类软件,用户通过操作窗口中的界面元素来实现软件功能。同一个窗口中的界面元素之间存在着一定的逻辑制约关系,通过界面元素的不同排列组合操作构成软件的子功能。
在获取窗口所有界面元素的基础上,经过分析得到一般界面元素间存在的四类逻辑关系:
(1)串行关系,表示界面元素间的执行顺序是串行的,依次输入和选择界面元素内容后实现相应的子功能。这种情况在图形用户界面软件中最常见。
(2)并列关系,表示界面元素间的执行顺序是并列的,两个或多个界面元素必须是被同时操作后才能实现相应的子功能。例如计算类功能,必须同时输入和选择参与计算的各参数值后才能得到最终的计算结果。
(3)互斥关系,表示界面元素间的执行是互斥的,不能同时存在。这种互斥关系多体现在单选按钮等界面元素中。
(4)关联关系,表示界面元素间的执行是有选择性关联关系的。例如在学生管理软件中选择了学生所在的学院后,由于学院与下属的系存在关联关系,相关的界面元素就会形成一个或多个界面元素操作序列。
通过对窗口界面元素及其逻辑依赖关系的分析,得到当前窗口所包含的所有子功能。
4、窗口调用关系获取
通过上述方法能够获取窗口的组成元素及其依赖关系,从而也就分析出该窗口所实现的功能,该功能只是整个软件功能的一个组成部分。对于功能复杂的图形用户界面软件而言,一个功能往往是通过调用多个窗口而实现的,不同窗口所实现的功能相互组合构成软件的整个功能。因此,除了获取单个窗口的功能外,还需要获取窗口间的调用关系,从而得到完整的软件功能。
下面详细阐述获取窗口调用关系的过程。通过上述第二点介绍的方法,首先可以得到被测软件主窗口的所有界面元素及其信息,该信息以树形结构展示,然后根据界面元素类型ControlType属性进行过滤得到界面元素类型为按钮的窗口元素。在获取主窗口的基础上,需要找到当前主窗口调用的子窗口,并建立窗口的调用关系。通过调用invoke界面元素模式触发GUI事件,模拟人工点击按钮的操作,递归查找当前窗口的子窗口,并保存主窗口与子窗口的调用关系。图5为本发明一实施例的获取窗口调用关系的流程示意图。如图5所示,获取窗口调用关系可以包括:传入主窗口节点;获取第一个孩子节点;判断是否节点为空,若是,则结束该流程,若否,则进一步判断Invoke界面元素模式;若Invoke界面元素模式为否,则结束该流程;若Invoke界面元素模式为是,则递归遍历子节点,随后处理兄弟节点并结束该流程。
该算法函数的传入参数rootElement是被测程序的主窗口,即遍历的起点。遍历时首先找到rootElement的第一个子结点,如果该结点是按钮界面元素,则需要遍历当前结点的所有子结点,调用结点的Invoke界面元素模式(相当于点击按钮);其他结点类型在这里不做处理。递归遍历当前结点的子结点界面元素,处理完子结点界面元素后,处理当前结点的兄弟结点。
5、基于界面元素的软件功能获取
通过上述介绍的方法,分别获取了各窗口元素及其依赖关系、各窗口间的调用关系,在此基础上,通过将窗口调用关系与各窗口中元素依赖关系进行组合,最终得到基于界面元素的软件功能组成。
作为一种实施例,所述步骤S2进一步包括:构建软件功能与测试用例追踪矩阵;接着,构建测试用例与软件问题追踪矩阵;接着,基于软件功能与测试用例追踪矩阵和测试用例与软件问题追踪矩阵,创建GUI软件功能、测试用例和软件问题三者之间的关联关系。
二、软件功能与测试用例追踪矩阵构建
作为一种实施例,所述构建软件功能与测试用例追踪矩阵,进一步包括:基于测试用例就是软件功能路径上所包含的界面元素的取值以及预期结果,获取一个GUI软件功能路径上包含的各种不同类型的界面元素;基于软件是由软件功能组成的,一个软件功能中包含多个软件元素,同时,一个测试用例对应着多个界面元素,界面元素是软件功能和测试用例之间的最小描述单元,是两者之间的桥梁,采用追踪矩阵描述界面元素与测试用例之间的映射关系并构建界面元素与测试用例追踪矩阵。
1、测试用例定义
测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。其中,测试输入是测试用例设计的核心,直接关系到测试质量。对于图形用户界面类软件而言,测试用例就是软件功能路径上所包含的界面元素的取值以及预期结果。
2、界面元素取值
一个软件功能路径上包含各种不同类型的界面元素,其中,每个界面元素可以取不同的值,包括正常值和异常值,因此,一个软件功能测试项对应着多个测试用例。
3、界面元素与测试用例映射
软件是由软件功能组成的,一个软件功能中包含多个软件元素,同时,一个测试用例对应着多个界面元素,界面元素是软件功能和测试用例之间的最小描述单元,是两者之间的桥梁。
本方案中采用追踪矩阵描述界面元素与测试用例之间的映射关系,追踪矩阵如表1所示。
表1 界面元素与测试用例追踪矩阵
序号 测试用例1 测试用例2 …… 测试用例n
1 界面元素1
2 界面元素2
……
n 界面元素n
表1中给出了软件所包含的所有界面元素以及所设计的所有测试用例,如果某个测试用例中包含该界面元素,则在相应的位置用●标注。
4、软件功能与界面元素映射
软件功能是由界面元素组成的,为了找出软件功能与界面元素之间的关系,本方案中采用追踪矩阵描述软件功能与界面元素之间的关系,追踪矩阵如表2所示。
表2 软件功能与界面元素追踪矩阵
序号 界面元素1 界面元素2 …… 界面元素n
1 软件功能1
2 软件功能2
……
n 软件功能n
表2中给出了软件功能与界面元素之间的对应关系,如果某个软件功能中包含该界面元素,则在相应的位置用●标注。
5、软件功能与测试用例追踪关系
表1给出了软件所包含的所有界面元素与设计的所有测试用例之间的对应关系,表2给出了软件功能与界面元素之间的对应关系,通过查询表1和表2,很容易构建软件功能与测试用例之间的对应关系。
三、测试用例与软件问题追踪矩阵构建
作为一种实施例,所述构建测试用例与软件问题追踪矩阵,进一步包括:测试用例设计完毕后,按照测试用例描述的步骤执行测试用例并记录发现的软件问题;采用软件问题与界面元素追踪矩阵构建测试用例与软件问题追踪矩阵。
测试用例设计完毕后,按照测试用例描述的步骤执行测试用例,一旦发现软件问题,记录发现的软件问题。
为了找出测试用例与软件问题之间的关联关系,本方案中采用软件问题与界面元素追踪矩阵,描述两者之间的关系,追踪矩阵如表3所示。
表3 软件问题与界面元素追踪矩阵
序号 界面元素1 界面元素2 …… 界面元素n
1 软件缺陷1 × ×
2 软件缺陷2 × ×
…… ×
n 软件缺陷n ×
表3中给出了软件缺陷与界面元素之间的对应关系,如果操作某个界面元素软件没有出现问题,则在相应的位置用√标注;如果某个软件缺陷是由操作该界面元素时引发,则在相应的位置用×标注。
一旦构建了软件缺陷与界面元素之间的追踪矩阵,再结合表1中给出的界面元素与测试用例之间的追踪矩阵,可以建立测试用例与软件缺陷的追踪关系。
四、软件问题关联域分析
软件问题通过执行测试用例而发现,软件问题被发现后,需要找出该问题所关联的软件功能,这样,开发人员可以修改该问题所关联的所有软件功能,问题修改完成后,测试人员重新运行与该问题有关联的测试用例,验证问题修改的正确性。
结合表2和表3,以软件界面元素为查找对象,通过搜索表2和表3,找出软件缺陷所关联的软件功能;
结合表1和表3,以软件界面元素为查找对象,通过搜索表1和表3,找出软件缺陷所关联的测试用例。
本发明还提供了一种面向问题的GUI软件关联功能分析装置,包括:软件功能构建模块,用于通过获取GUI软件的窗口元素、分析窗口内元素依赖关系、获取窗口调用关系以及基于界面元素的软件功能组成,以得到GUI软件功能;关联关系创建模块,用于根据得到的GUI软件功能,创建GUI软件功能、测试用例和软件问题三者之间的关联关系;检测模块,用于通过所述三者之间的关联关系,找出软件问题所对应的测试用例,并且找出该问题所关联的软件功能,通过所关联的软件功能,在回归测试时重新测试所述软件的相应功能。
作为一种实施例,所述软件功能构建模块进一步用于:基于GUI软件界面中的元素都按照树形结构排列,软件的启动界面为该树形结构的根结点,遍历以该窗口为根结点的树形结构,以获取该窗口所包含的所有界面元素;基于同一个窗口中的界面元素之间存在着一定的逻辑制约关系,通过界面元素的不同排列组合操作构成软件的子功能,以分析窗口内元素依赖关系;根据界面元素类型属性进行过滤得到界面元素类型为按钮的窗口元素,将按钮作为遍历的起始节点,并遍历当前按钮结点的所有子结点,其他结点类型不做处理,递归遍历当前结点的子结点界面元素,处理完子结点界面元素后,处理当前结点的兄弟结点,以、获取窗口调用关系;在分别获取了各窗口元素及其依赖关系、各窗口间的调用关系的基础上,通过将窗口调用关系与各窗口中元素依赖关系进行组合,最终得到基于界面元素的软件功能组成。
作为一种实施例,所述关联关系创建模块进一步用于:构建软件功能与测试用例追踪矩阵;接着,构建测试用例与软件问题追踪矩阵;接着,基于软件功能与测试用例追踪矩阵和测试用例与软件问题追踪矩阵,创建GUI软件功能、测试用例和软件问题三者之间的关联关系。
作为一种实施例,所述关联关系创建模块进一步用于:基于测试用例就是软件功能路径上所包含的界面元素的取值以及预期结果,获取一个GUI软件功能路径上包含的各种不同类型的界面元素;基于软件是由软件功能组成的,一个软件功能中包含多个软件元素,同时,一个测试用例对应着多个界面元素,界面元素是软件功能和测试用例之间的最小描述单元,是两者之间的桥梁,采用追踪矩阵描述界面元素与测试用例之间的映射关系并构建界面元素与测试用例追踪矩阵。
作为一种实施例,所述关联关系创建模块进一步用于:测试用例设计完毕后,按照测试用例描述的步骤执行测试用例并记录发现的软件问题;采用软件问题与界面元素追踪矩阵构建测试用例与软件问题追踪矩阵。
五、本发明的应用场景之一
下面以图6给出的学生管理系统软件为例,详细描述实现本发明的具体实施过程。该软件是一个典型的包含图形用户界面的管理类软件,具备管理软件所具有的新建、删除等典型功能。
1、软件功能获取
以图7所示的新建人员窗口为例,采用本方案2.1节中介绍的方法,通过分析新建人员窗口界面元素及界面元素间依赖关系以及该窗口与其他窗口的调用关系,得到如下结果:
(1)窗口中的姓名、身份证号、工号、学号等基本信息界面元素为串行关系;
(2)窗口中的人员类别与学生类别、学制为并列关系,人员类别与教师职称、职务为并列关系;
(3)窗口中的学生类别和学制与教师职称和职务为互斥关系;
(4)窗口中的学院与系所为关联关系。
通过上述分析得出新建人员子功能组成列表如图8所示。
2、界面元素与测试用例追踪
根据获取到的基于界面元素的软件功能,得到界面元素与测试用例的追踪表如表4所示。由该表可以看出,测试用例1是由“姓名、性别、身份证号、出生日期、学院、系所、人员类别、工号/学号、学生类别、学制”这10个界面元素取正常值组成的,而测试用例3虽然同样是由这10个界面元素组成的,但其中的“姓名”取值为“空”,即异常值,其他的测试用例与此类似。
表4 界面元素与测试用例追踪矩阵
序号 界面元素 测试用例1 测试用例2 测试用例3 测试用例4
1 姓名
2 性别
3 身份证号 超长
4 出生日期
5 学院
6 系所
7 人员类别
8 工亏/学亏
9 学生类别
10 学制
11 教师职称
12 职务
3、界面元素与软件功能追踪
根据上述分析结果,得到“新建学生”,即功能1、“新建教师”,即功能2与界面元素的追踪表如表5所示。
表5界面元素与软件功能追踪矩阵
序号 界面元素 新建学生 新建教师
1 姓名
2 性别
3 身份证号
4 出生日期
5 学院
6 系所
7 人员类别
8 工亏/学亏
9 学生类别
10 学制
11 教师职称
12 职务
4、界面元素与软件问题追踪
假设该软件在测试执行过程中,当输入一个正常的“出生日期”时软件出现错误,记为“软件问题1”;当输入一个超长的“身份证号”时软件出现错误,记为“软件问题2”,由此得到界面元素与软件问题的追踪表如表6所示。
表6 界面元素与软件问题追踪矩阵
序号 界面元素 软件问题1 软件问题2
1 姓名
2 性别
3 身份证号 ×
4 出生日期 ×
5 学院
6 系所
7 人员类别
8 工亏/学亏
9 学生类别
10 学制
11 教师职称
12 职务
5、软件问题关联域分析
根据表6给出的软件问题与界面元素的对应关系,可以得出这两个软件问题与界面元素“出生日期”和“身份证号”有关联;根据表4给出的结果,可以得出设计的四个测试用例都与这两个界面元素有关;根据表5的分析结果,可以得出“新建学生”和“新建教师”这两个功能与这两个界面元素有关。
根据上述分析结果,得出这两个软件问题所关联的软件功能是“新建学生”,和“新建教师”、所关联的测试用例是“测试用例1”、“测试用例2”、“测试用例3”、“测试用例4”。因此,在软件错误修改过程中,除了要直接修改与这两个界面元素处理相关的代码,还要关注与这两个界面元素相关联的“新建学生”和“新建教师”这两个软件功能;同样,在回归测试时,除了要直接测试“出生日期”和“身份证号”这两个界面元素外,还要执行与此相关的测试用例。
六、本发明优点和积极效果
软件问题是开发人员修改软件的依据,同时也是测试人员进行回归测试的依据,采用本发明所提出的方法,可以方便、快速地构建软件功能-测试用例-软件问题三者之间关系,并通过该关系找出软件问题所关联的软件功能和测试用例。这种方法不需要开发人员和测试人员通过阅读相关软件文档获取相关信息,就可以构建软件功能-测试用例-软件问题三者之间的关联关系,一方面可以大大减轻工作量;另一方面可以保证分析的准确性和全面性(软件功能-测试用例-软件问题三者之间关系复杂,人工分析难免造成遗漏),有效解决因软件问题关联域分析不全面造成的软件修改不彻底、软件回归测试不全面等问题。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (10)

1.一种面向问题的GUI软件关联功能分析方法,其特征在于,包括:
S1、通过获取GUI软件的窗口元素、分析窗口内元素依赖关系、获取窗口调用关系以及基于界面元素的软件功能组成,以得到GUI软件功能;
S2、根据得到的GUI软件功能,创建GUI软件功能、测试用例和软件问题三者之间的关联关系;
S3、通过所述三者之间的关联关系,找出软件问题所对应的测试用例,并且找出该问题所关联的软件功能;
S4、通过所关联的软件功能,在回归测试时重新测试所述软件的相应功能。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1进一步包括:
基于GUI软件界面中的元素都按照树形结构排列,软件的启动界面为该树形结构的根结点,遍历以该窗口为根结点的树形结构,以获取该窗口所包含的所有界面元素;
基于同一个窗口中的界面元素之间存在着一定的逻辑制约关系,通过界面元素的不同排列组合操作构成软件的子功能,以分析窗口内元素依赖关系;
根据界面元素类型属性进行过滤得到界面元素类型为按钮的窗口元素,将按钮作为遍历的起始节点,并遍历当前按钮结点的所有子结点,其他结点类型不做处理,递归遍历当前结点的子结点界面元素,处理完子结点界面元素后,处理当前结点的兄弟结点,以获取窗口调用关系;
在分别获取了各窗口元素及其依赖关系、各窗口间的调用关系的基础上,通过将窗口调用关系与各窗口中元素依赖关系进行组合,最终得到基于界面元素的软件功能组成。
3.根据权利要求1所述的方法,其特征在于,所述步骤S2进一步包括:
构建软件功能与测试用例追踪矩阵;
接着,构建测试用例与软件问题追踪矩阵;
接着,基于软件功能与测试用例追踪矩阵和测试用例与软件问题追踪矩阵,创建GUI软件功能、测试用例和软件问题三者之间的关联关系。
4.根据权利要求3所述的方法,其特征在于,所述构建软件功能与测试用例追踪矩阵,进一步包括:
基于测试用例就是软件功能路径上所包含的界面元素的取值以及预期结果,获取一个GUI软件功能路径上包含的各种不同类型的界面元素;
基于软件是由软件功能组成的,一个软件功能中包含多个界面元素,同时,一个测试用例对应着多个界面元素,界面元素是软件功能和测试用例之间的最小描述单元,是两者之间的桥梁,采用追踪矩阵描述界面元素与测试用例之间的映射关系并构建界面元素与测试用例追踪矩阵。
5.根据权利要求4所述的方法,其特征在于,所述构建测试用例与软件问题追踪矩阵,进一步包括:
测试用例设计完毕后,按照测试用例描述的步骤执行测试用例并记录发现的软件问题;
采用软件问题与界面元素追踪矩阵构建测试用例与软件问题追踪矩阵。
6.一种面向问题的GUI软件关联功能分析装置,其特征在于,包括:
软件功能构建模块,用于通过获取GUI软件的窗口元素、分析窗口内元素依赖关系、获取窗口调用关系以及基于界面元素的软件功能组成,以得到GUI软件功能;
关联关系创建模块,用于根据得到的GUI软件功能,创建GUI软件功能、测试用例和软件问题三者之间的关联关系;
检测模块,用于通过所述三者之间的关联关系,找出软件问题所对应的测试用例,并且找出该问题所关联的软件功能,通过所关联的软件功能,在回归测试时重新测试所述软件的相应功能。
7.根据权利要求6所述的装置,其特征在于,所述软件功能构建模块进一步用于:
基于GUI软件界面中的元素都按照树形结构排列,软件的启动界面为该树形结构的根结点,遍历以该窗口为根结点的树形结构,以获取该窗口所包含的所有界面元素;
基于同一个窗口中的界面元素之间存在着一定的逻辑制约关系,通过界面元素的不同排列组合操作构成软件的子功能,以分析窗口内元素依赖关系;
根据界面元素类型属性进行过滤得到界面元素类型为按钮的窗口元素,将按钮作为遍历的起始节点,并遍历当前按钮结点的所有子结点,其他结点类型不做处理,递归遍历当前结点的子结点界面元素,处理完子结点界面元素后,处理当前结点的兄弟结点,以获取窗口调用关系;
在分别获取了各窗口元素及其依赖关系、各窗口间的调用关系的基础上,通过将窗口调用关系与各窗口中元素依赖关系进行组合,最终得到基于界面元素的软件功能组成。
8.根据权利要求6所述的装置,其特征在于,所述关联关系创建模块进一步用于:
构建软件功能与测试用例追踪矩阵;
接着,构建测试用例与软件问题追踪矩阵;
接着,基于软件功能与测试用例追踪矩阵和测试用例与软件问题追踪矩阵,创建GUI软件功能、测试用例和软件问题三者之间的关联关系。
9.根据权利要求8所述的装置,其特征在于,所述关联关系创建模块进一步用于:
基于测试用例就是软件功能路径上所包含的界面元素的取值以及预期结果,获取一个GUI软件功能路径上包含的各种不同类型的界面元素;
基于软件是由软件功能组成的,一个软件功能中包含多个界面元素,同时,一个测试用例对应着多个界面元素,界面元素是软件功能和测试用例之间的最小描述单元,是两者之间的桥梁,采用追踪矩阵描述界面元素与测试用例之间的映射关系并构建界面元素与测试用例追踪矩阵。
10.根据权利要求9所述的装置,其特征在于,所述关联关系创建模块进一步用于:
测试用例设计完毕后,按照测试用例描述的步骤执行测试用例并记录发现的软件问题;
采用软件问题与界面元素追踪矩阵构建测试用例与软件问题追踪矩阵。
CN201510105283.0A 2015-03-10 2015-03-10 面向问题的gui软件关联功能分析方法及装置 Active CN104615544B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510105283.0A CN104615544B (zh) 2015-03-10 2015-03-10 面向问题的gui软件关联功能分析方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510105283.0A CN104615544B (zh) 2015-03-10 2015-03-10 面向问题的gui软件关联功能分析方法及装置

Publications (2)

Publication Number Publication Date
CN104615544A true CN104615544A (zh) 2015-05-13
CN104615544B CN104615544B (zh) 2018-09-28

Family

ID=53150001

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510105283.0A Active CN104615544B (zh) 2015-03-10 2015-03-10 面向问题的gui软件关联功能分析方法及装置

Country Status (1)

Country Link
CN (1) CN104615544B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107193739A (zh) * 2017-05-23 2017-09-22 张泽祎 一种黑盒回归测试方法
CN108427637A (zh) * 2018-01-18 2018-08-21 平安科技(深圳)有限公司 测试案例推荐方法、电子装置及可读存储介质
CN108475360A (zh) * 2015-12-31 2018-08-31 微软技术许可有限责任公司 分布式计算依赖管理系统
CN109445767A (zh) * 2018-11-13 2019-03-08 上海宝尊电子商务有限公司 一种应用于多终端的新型响应式导航设计实现方法
CN111552646A (zh) * 2020-04-30 2020-08-18 北京百度网讯科技有限公司 用于回归测试的方法和装置
CN112084111A (zh) * 2020-09-10 2020-12-15 广州小鹏汽车科技有限公司 一种数据处理方法、系统和装置
CN112685328A (zh) * 2021-03-12 2021-04-20 北京志翔科技股份有限公司 一种图形界面测试方法、装置及存储介质
CN113127366A (zh) * 2021-04-28 2021-07-16 芜湖雄狮汽车科技有限公司 基于模型的矩阵自动化测试方法及计算机可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719095A (zh) * 2009-12-30 2010-06-02 北京世纪高通科技有限公司 一种回归测试的管理方法及装置
CN101916225A (zh) * 2010-09-02 2010-12-15 于秀山 图形用户界面软件功能覆盖测试方法
US20110231825A1 (en) * 2007-04-05 2011-09-22 Accenture Global Services Limited Automatic test generation for reference testing
CN102243586A (zh) * 2011-07-22 2011-11-16 于秀山 一种软件功能图自动获取方法
CN104346278A (zh) * 2014-09-28 2015-02-11 上海新炬网络技术有限公司 一种基于矩阵模型的软件测试方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110231825A1 (en) * 2007-04-05 2011-09-22 Accenture Global Services Limited Automatic test generation for reference testing
CN101719095A (zh) * 2009-12-30 2010-06-02 北京世纪高通科技有限公司 一种回归测试的管理方法及装置
CN101916225A (zh) * 2010-09-02 2010-12-15 于秀山 图形用户界面软件功能覆盖测试方法
CN102243586A (zh) * 2011-07-22 2011-11-16 于秀山 一种软件功能图自动获取方法
CN104346278A (zh) * 2014-09-28 2015-02-11 上海新炬网络技术有限公司 一种基于矩阵模型的软件测试方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘伟: "基于UIA技术的软件自动化测试框架实践", 《计算机光盘软件与应用》 *
金京: "基于UIA的自动化测试框架的设计与实现", 《中国优秀硕士学位论文全文数据库信息 科技辑》 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108475360B (zh) * 2015-12-31 2021-06-08 微软技术许可有限责任公司 分布式计算依赖管理系统
CN108475360A (zh) * 2015-12-31 2018-08-31 微软技术许可有限责任公司 分布式计算依赖管理系统
US11757720B2 (en) 2015-12-31 2023-09-12 Microsoft Technology Licensing, Llc Distributed computing dependency management system
CN107193739B (zh) * 2017-05-23 2020-06-05 张泽祎 一种黑盒回归测试方法
CN107193739A (zh) * 2017-05-23 2017-09-22 张泽祎 一种黑盒回归测试方法
CN108427637A (zh) * 2018-01-18 2018-08-21 平安科技(深圳)有限公司 测试案例推荐方法、电子装置及可读存储介质
CN108427637B (zh) * 2018-01-18 2021-05-25 平安科技(深圳)有限公司 测试案例推荐方法、电子装置及可读存储介质
CN109445767A (zh) * 2018-11-13 2019-03-08 上海宝尊电子商务有限公司 一种应用于多终端的新型响应式导航设计实现方法
CN111552646A (zh) * 2020-04-30 2020-08-18 北京百度网讯科技有限公司 用于回归测试的方法和装置
CN111552646B (zh) * 2020-04-30 2023-08-29 阿波罗智能技术(北京)有限公司 用于回归测试的方法和装置
CN112084111A (zh) * 2020-09-10 2020-12-15 广州小鹏汽车科技有限公司 一种数据处理方法、系统和装置
CN112685328B (zh) * 2021-03-12 2021-06-08 北京志翔科技股份有限公司 一种图形界面测试方法、装置及存储介质
CN112685328A (zh) * 2021-03-12 2021-04-20 北京志翔科技股份有限公司 一种图形界面测试方法、装置及存储介质
CN113127366A (zh) * 2021-04-28 2021-07-16 芜湖雄狮汽车科技有限公司 基于模型的矩阵自动化测试方法及计算机可读存储介质
CN113127366B (zh) * 2021-04-28 2023-08-15 芜湖雄狮汽车科技有限公司 基于模型的矩阵自动化测试方法及计算机可读存储介质

Also Published As

Publication number Publication date
CN104615544B (zh) 2018-09-28

Similar Documents

Publication Publication Date Title
CN104615544A (zh) 面向问题的gui软件关联功能分析方法及装置
CN104699608B (zh) 图形用户界面软件自动测试方法及装置
Kamimura et al. Extracting candidates of microservices from monolithic application code
Kaiser et al. A new component concept for fault trees
US9613074B2 (en) Data generation for performance evaluation
Langer et al. A posteriori operation detection in evolving software models
US10067859B2 (en) Constructing test-centric model of application
Komperda Likert-type survey data analysis with R and RStudio
CN109408385B (zh) 一种基于缺陷规则和分类反馈的缺陷发现方法
Khedri et al. Handling database schema variability in software product lines
CN105677570B (zh) 一种基于事件响应函数树的gui软件测试用例生成方法
CN112783475B (zh) 一种嵌入式软件需求分析方法
Strandberg Automated system-level software testing of industrial networked embedded systems
CN103150626B (zh) 基于程序依赖图的bpel过程一致性度量方法
CN104536880A (zh) 基于符号执行的gui程序测试用例扩增方法
Brunings et al. Defining meaningful local process models
Gerlitz et al. Flow sensitive slicing for MATLAB/Simulink models
White et al. Artefact relation graphs for unit test reuse recommendation
Koegel et al. State-based vs. operation-based change tracking
Kasegn et al. Spatial locality based identifier name recommendation
Farchi et al. Using projections to debug large combinatorial models
Petnga Graph‐based Assessment and Analysis of System Architecture Models
Poženel et al. Using clickstream data to enhance reverse engineering of Web applications
Liu Integrating process mining with discrete-event simulation modeling
Priya A survey: design pattern detection approaches with metrics

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20230327

Address after: No. 66, Zizhuyuan Road, Haidian District, Beijing 100048

Patentee after: China Software Evaluation Center

Address before: 100036 Courtyard 6, Wanshou Road, Haidian District, Beijing

Patentee before: Yu Xiushan

TR01 Transfer of patent right