CN104699608B - 图形用户界面软件自动测试方法及装置 - Google Patents

图形用户界面软件自动测试方法及装置 Download PDF

Info

Publication number
CN104699608B
CN104699608B CN201510104605.XA CN201510104605A CN104699608B CN 104699608 B CN104699608 B CN 104699608B CN 201510104605 A CN201510104605 A CN 201510104605A CN 104699608 B CN104699608 B CN 104699608B
Authority
CN
China
Prior art keywords
software
interface
input
window
user interface
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
CN201510104605.XA
Other languages
English (en)
Other versions
CN104699608A (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 CN201510104605.XA priority Critical patent/CN104699608B/zh
Publication of CN104699608A publication Critical patent/CN104699608A/zh
Application granted granted Critical
Publication of CN104699608B publication Critical patent/CN104699608B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开一种图形用户界面软件测试方法,包括:对图形用户界面软件进行分析,通过图形用户界面中的界面元素获取该软件的功能需求并且提取界面元素的边界值;根据获取的该软件的功能需求和界面元素的边界值生成测试用例;通过测试用例自动测试图形用户界面软件的各项功能。本发明公开的图形用户界面软件自动测试方法及装置,通过自动生成测试用例以对图形用户界面软件进行快速、准确、高效地自动测试。

Description

图形用户界面软件自动测试方法及装置
技术领域
本发明涉及软件功能测试技术领域,尤其涉及一种图形用户界面软件自动测试方法及装置。
背景技术
图形用户界面软件以其操作简单、直观、方便得到广泛应用,与嵌入式软件相比,图形用户界面软件设计了很多的界面元素,用户通过操作界面上的元素,实现规定的功能。图形用户界面软件包含很多的窗口,每一个窗口中又包含很多元素,这些窗口和其中元素的不同组合构成了软件不同的功能。为了对这种软件进行测试,至少要覆盖这些软件功能,然而,图形用户界面软件中窗口和元素的多样性以及组合的复杂性,导致软件功能数量庞大,测试工作量巨大,并且,在测试过程中,容易重复和遗漏软件功能。
目前,在软件功能测试领域,一类有代表性的是基于录制/回放的功能测试工具,如WinRunner、QTP。这类工具通过录制用户的操作,以脚本的方式记录测试过程,在回归测试时,回放测试脚本,从而对软件自动进行测试。这类工具只是记录了测试人员的操作,测试用例的设计仍然需要测试人员手工完成,测试用例质量依赖于测试人员的经验。另一类有代表性的是基于需求的测试用例设计,或需求驱动的测试用例设计。这种方法主要是通过分析软件需求规格说明等相关文档,获取软件信息,根据这些信息设计测试用例。这种方法具有一定的理论价值,但在具体应用中存在如下问题:1、软件需求需要测试人员根据软件需求规格说明等文档手工产生,工作量大;2、软件需求经常发生变化,软件需求和最新版本的软件难以同步更新,导致软件需求过时,软件需求的准确性和一致性差;3、难以实现自动化。由于软件需求规格说明是用纯文字的方式表述的,是非形式化的,因此,难以自动获取相关信息。一些能够实现测试用例设计自动化的方法要求软件需求是用形式化语言,如UML描述的,而要将软件需求用类似UML的形式化语言进行描述,其工作量很大,这也是这种方法目前难以实用的根本原因。
有鉴于此,为填补现有软件测试技术领域的自动化测试技术的空白,并且针对图形用户界面软件的功能测试中存在的技术问题,有必要提供一种新的自动测试方法及装置,通过自动生成测试用例以对图形用户界面软件进行快速、准确、高效地自动测试。
发明内容
为了解决上述问题,本发明提供的一种图形用户界面软件自动测试方法及装置,通过自动生成测试用例以对图形用户界面软件进行快速、准确、高效地自动测试。
本发明提供了一种图形用户界面软件测试方法,包括:S1、对图形用户界面软件进行分析,通过图形用户界面中的界面元素获取该软件的功能需求并且提取界面元素的边界值;S2、根据获取的该软件的功能需求和界面元素的边界值生成测试用例;S3、通过测试用例自动测试图形用户界面软件的各项功能。
作为一种实施例,所述步骤S1进一步包括:S11、通过分析被测软件界面元素,获取软件界面元素组成及其属性;S12、通过对被测软件源代码进行分析,得到界面中包含的输入元素及其取值范围;S13、根据软件窗口调用关系,生成软件功能图,并采用深度优先搜索技术,遍历功能组成图,得到每一条软件功能路径;S14、根据每一条功能路径,找到路径节点所包含的窗口及窗口界面中的输入元素及其边界值。
作为一种实施例,所述步骤S11进一步包括:S111、获取被测软件用户界面窗口句柄,并通过当前窗口句柄构建窗口中元素树的根节点;S112、使用Microsoft UIAutoamtion框架提供的获取窗口界面控件树的TreeWalker类对窗口中的对象进行遍历和条件化查询,调用TreeWalker类中的函数TreeWalker.ControlViewWalker.GetFirstChild(rootElement)和TreeWalker.ControlViewWalker.GetNextSibling(elementNode),采用深度遍历算法递归构造以当前窗口为根节点的元素树,以获取窗口中所有元素信息。
作为一种实施例,所述步骤S12进一步包括:S121、通过对被测软件源代码扫描及分析,找出涉及软件所有输入的代码文件;S122、从代码文件中得到每个代码文件的语法树结构;S123、根据语法树结构,精确定位输入字段所涉及的代码位置,以分析得出字段的输入范围及类型。
作为一种实施例,所述步骤S123进一步包括:S1231、将软件开发过程中输入界面所涉及的输入字段划分为窗体设计、窗体实现、输入验证、数据库对象四种类型,并根据所属类型对输入字段进行分析;S1232、根据窗体设计和数据库对象类型对应的输入字段创建控件树,并根据窗体实现和输入验证对应的输入字段创建事件树;S1233、根据控件树和事件树定位键盘输入的相关代码段,并根据相关代码段获取键盘输入控件输入字段范围;
作为一种实施例,所述步骤S12进一步包括:综合采用等价类划分、边界值分析和组合测试方法,生成包含正常值和异常值的、能够覆盖软件功能的测试用例。
作为一种实施例,所述获取的该软件的功能需求,进一步包括:在获取被测软件所有的界面元素基础上,对被测软件用户主界面的所有元素信息进行过滤,找出其中的功能界面元素,包括:菜单项和按钮类元素;调用invoke控件模式触发GUI事件,模拟人工点击菜单或按钮的操作;递归查找当前窗口的子窗口,并保存主窗口与子窗口的层级关系,以得到整个被测软件所包含的功能界面元素;在得到软件功能组成图后,采用深度优先搜索技术,遍历功能组成图,得到软件从主界面到最终子界面的每一条功能路径。这种方法可以直接从最终的软件中自动获取软件功能需求,不再依赖于软件需求规格说明等软件文档,能够有效解决软件功能需求需要根据软件需求规格说明等文档人工产生、软件文档与最终软件不一致等问题。
作为一种实施例,所述生成测试用例,进一步包括:根据获取了被测软件功能、被测软件功能路径上包含的输入元素以及每一个输入元素的取值范围,创建从软件的根结点到叶子结点所经过的界面元素的有序集合,其中的界面元素包括界面上的可操作控件。这种方法不需要测试人员阅读相关软件文档就能够提取软件输入元素边界值,并能够根据边界值,采用等价类划分、边界值分析、组合测试等方法自动设计出测试用例,测试用例的设计不再依赖于测试人员的经验手工完成,测试用例质量能够得到有效保证。
本发明提供了一种图形用户界面软件测试装置,包括:分析模块,用于对图形用户界面软件进行分析,通过图形用户界面中的界面元素获取该软件的功能需求并且提取界面元素的边界值;生成模块,用于根据获取的该软件的功能需求和界面元素的边界值生成测试用例;测试模块,用于通过测试用例自动测试图形用户界面软件的各项功能。
由上述本发明的实施例提供的技术方案可以看出,本方案设计的针对上述情况,本发明提出了通过分析图形用户界面软件界面元素获取软件功能需求和界面元素的边界值,在此基础上,采用等价类划分、边界值分析、组合测试等方法,自动生成测试用例的方法,主要解决如何快速、准确、高效地获取软件功能需求以及界面元素边界值等技术问题。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例的图形用户界面软件自动测试方法中的测试用例生成流程示意图;
图2为本发明一实施例的图形用户界面软件自动测试方法中输入范围获取主要工作流程示意图;
图3为本发明一实施例的登录界面示意图;
图4为本发明一实施例的学生管理系统程序主界面的示意图;
图5为本发明一实施例的窗口界面控件树的示意图;
图6为本发明一实施例的新建学生信息用户界面的示意图;
图7为本发明一实施例的获取到的选择类控件数据的示意图;
图8为本发明一实施例的学生“姓名”字段的输入长度的示意图;
图9为本发明一实施例的获取到的选择类控件数据的示意图;
图10为本发明一实施例的学生“身份证”字段的输入合法范围的示意图;
图11为本发明一实施例的学生管理系统软件功能组成示意图;
图12为本发明一实施例的学生管理系统软件功能路径的示意图;
图13为本发明一实施例的图形用户界面软件自动测试方法流程图。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。
本发明主要解决图形用户界面软件测试用例自动生成的问题,其目的是提供一种测试用例自动生成方法,使测试人员能够准确、快速地理解被测软件的功能需求,在建立图形用户界面输入元素与软件功能需求关系的基础上,根据测试用例设计策略,自动生成测试用例,为测试人员设计测试用例提供技术支持。
设计高质量测试用例的前提是对软件功能需求有深刻的理解,因此,测试用例生成的首要任务是对软件功能需求进行分析和提取。对于图形用户界面类软件而言,软件功能通过界面元素体现,因此,本方案采用图形用户界面元素分析方法获取软件功能,根据获取的软件功能及其元素属性,综合采用等价类划分、边界值分析、组合测试等方法,生成覆盖软件功能的测试用例。等价类划分、边界值分析和组合测试是生成本发明需要的测试用例的三种不同方法,每一种方法有自己的优点,需要综合这三种方法生成测试用例。等价类划分、边界值分析、组合测试等方法是软件测试领域现有的方法,应用这三种方法的前提是需要预先获取被测软件的功能和边界值,如何获取被测软件的功能和边界值这两部分内容是本发明所要解决的的核心问题和主要技术贡献。
图1为本发明一实施例的图形用户界面软件自动测试方法中的测试用例生成流程示意图。如图1所示,本方案的执行过程如下:1、软件界面元素分析,具体为:通过分析被测软件界面元素,获取软件界面元素组成及其属性;2、输入元素边界值获取,具体为:通过对被测软件源代码进行分析,得到界面中包含的输入元素及其取值范围;3、软件功能获取,具体为:根据软件窗口调用关系,生成软件功能图,并采用深度优先搜索技术,遍历功能组成图,得到每一条软件功能路径,即软件所具有的功能;4、测试用例生成。根据每一条功能路径,找到路径节点所包含的窗口及窗口界面中的输入元素及其边界值,采用等价类划分、边界值分析、组合测试等方法,生成包含正常值和异常值的、能够覆盖软件功能的最佳测试用例。
2.1软件界面元素分析
软件界面元素分析主要完成软件界面元素获取及界面元素相互关系分析。该分析过程主要包含以下几个步骤:(1)获取被测软件用户界面窗口句柄,并通过当前窗口句柄构建窗口中元素树的根节点;(2)使用Microsoft UI Autoamtion框架提供的获取窗口界面控件树的TreeWalker类对窗口中的对象进行遍历和条件化查询,调用TreeWalker类中的函数TreeWalker.ControlViewWalker.GetFirstChild(rootElement)和TreeWalker.ControlViewWalker.GetNextSibling(elementNode),采用深度遍历算法递归构造以当前窗口为根节点的元素树,从而完成窗口中所有元素信息的获取。获取用户界面元素的简要描述算法具体参见软件代码示例中的示例一。
2.2输入元素输入范围获取
通过2.1节的方法可以得到被测软件窗口界面所包含的所有控件元素。对于测试用例设计而言,输入元素是测试用例数据的主要来源,不同输入元素的不同数据组合构成该软件功能的测试用例。图形用户界面类软件数据输入域以人机交互的输入内容为主,在界面中以控件的方式展现。根据这些控件的功能,可以将其分为两大类,一类为选择性控件,如ComboBox、ListBox、CheckBox控件,一类为键盘输入控件,如TextBox文本框控件。对于选择性控件,其输入字段的范围在2.1节获取界面控件时即可得到,或在软件动态运行时屏幕上有直观的显示;对于键盘输入控件,可输入的内容多种多样,其种类和长度各异,这种多样性给确定其输入范围带来了困难。
为解决该问题,本方案主要通过对被测软件源代码扫描及分析,找出涉及软件所有输入的代码文件,从代码文件中得到每个代码文件的语法树结构,根据语法树结构,精确定位输入字段所涉及的代码位置,从而分析得出字段的输入范围及类型。对于同一个输入字段,其实现方式因编程语言、开发人员不同而不同,因此,需要根据不同的实现方式,采用不同的获取方法。通过对软件开发过程中输入界面所涉及的输入字段分析,总结归纳了开发人员采用的四种不同的实现方式,分别是:窗体设计、窗体实现、输入验证、数据库对象。针对这四种不同的实现方式,提出了输入字段输入范围获取方案,获取流程如图2所示。
窗体设计代码分析主要是通过扫描窗体设计代码文件构造控件树,控件树中结点为该窗体所拥有的控件,选择某个控件结点,可以快速定位到该控件的属性代码段,在代码段中找到键盘输入控件的MaxLength属性赋值语句,该赋值语句定义了键盘输入控件允许输入的字符个数,这个值就是键盘输入控件的边界值。
窗体实现代码分析通过扫描分析窗体实现代码文件,构造事件树,事件树中结点为该窗体包含的所有控件事件。键盘输入控件输入字段通常出现在两种控件事件中:1、文本框控件的编辑事件;2、按钮控件的提交事件。对此,首次选择某个控件结点,通过该结点快速定位到该控件的事件代码段,如果该事件是文本框控件的编辑事件,那么,设置该文本框输入字段范围的语句就包含在该事件中,通过分析这些语句可以得到文本框输入字段的范围;如果该事件是按钮控件的提交事件,则在该事件中会通过一系列条件判断语句对窗体中各文本框的输入字段范围或类型进行限制,通过分析这些条件判断语句,如if(xx>1||xx<100)等,可以得到其输入字段范围。
输入验证类代码分析通过对窗体实现代码的扫描和分析,找到按钮提交事件,同时构造出事件的函数调用关系图,该函数调用关系图中就包括了对输入验证类成员函数的调用,通过函数调用关系图可以迅速定位到输入验证类中针对每一个键盘输入控件输入范围或类型的正则表达式,解析该正则表达式,就可以得到键盘输入控件的输入范围或类型。
数据库对象类代码分析通过分析数据库对象类的设计代码文件获取对应窗口控件的输入字段范围。首先,扫描窗体设计代码文件,找到每个键盘输入控件对应的数据库字段名称,然后,扫描数据库对象类的设计代码文件,得到对应数据库各表的对象类,在每个对象类中通过Column关键字标签找到表中的各字段属性代码段,各字段均与窗体中的控件一一对应,代码段中包含了该字段在数据库中定义的类型和长度,至此,也就获取了键盘输入控件的输入范围。
2.3软件功能获取
设计测试用例的目的是为了测试软件的功能,只有充分掌握被测软件的功能组成,设计出的测试用例才能更准确、更全面地覆盖软件功能需求,本节主要阐述获取软件功能的方法。
采用2.1节提出的方法,能够获取被测软件所有的界面元素,在此基础上,对被测软件用户主界面的所有元素信息进行过滤,找出其中的菜单项和按钮类元素(称这两类元素为功能界面元素),调用invoke控件模式触发GUI事件,模拟人工点击菜单或按钮的操作,递归查找当前窗口的子窗口,并保存主窗口与子窗口的层级关系,从而得到整个被测软件所包含的功能界面元素。得到软件功能组成图后,采用深度优先搜索技术,遍历功能组成图,得到软件从主界面到最终子界面的每一条功能路径。获取窗口层级关系的简要描述算法具体参见软件代码示例中的示例二。
2.4测试用例生成
测试用例生成是本发明最终要实现的目标。对于含有图形用户界面类的软件而言,一个测试用例可定义为从软件的根结点到叶子结点所经过的界面元素的有序集合。其中的界面元素包括界面上的可操作控件,如菜单、文本框、下拉框、按钮等。要自动生成图形用户界面类软件测试用例,主要需要解决如下技术问题:1、被测软件功能;2、被测软件功能路径上所包含的输入元素;3、输入元素取值范围;4、输入元素组合。采用前述方法,分别获取了被测软件功能、被测软件功能路径上包含的输入元素以及每一个输入元素的取值范围,有效解决了前三个技术问题。本节阐述如何根据这些信息自动生成测试用例。
问题描述:
假设软件的某一个功能路径为A1,A2,…,An,其中,Ai为第i个软件输入窗口,在该窗口内有ni个可输入的元素,求出覆盖该功能路径的最少个数测试用例。该问题求解的难度在于组合爆炸,例如,对于图3所示的“登录”界面,
图3为本发明一实施例的登录界面示意图。如图3所示,该界面包含四个输入字段,其中,“服务器”和“端口”是下拉框字段,其输入值个数是有限的,而“用户名”和“密码”字段是文本框字段,其输入值个数是无限的,显然,这四个字段的组合个数也是无限的,即使采用某种方法,如等价类划分,将后两个字段的取值缩小为5个,这四个字段的组合个数也是很大的,在实际测试过程中,无法执行如此多的测试用例。这里只是一个输入窗口,软件的一个功能通常是由这样多个类似的窗口组合而成的,窗口间输入元素再次组合,其数量可想而知,这就是组合爆炸问题。软件元素多样性以及组合复杂性,导致软件功能数量庞大,测试用例数量巨大,难以在有限的时间内对软件进行有效测试。
对于组合问题,业界已给出了很多实用的组合方法,常用的有:随机组合、单因素轮换组合、正交试验设计、准正交试验设计、均匀试验设计、成对组合覆盖等。应用这些方法的前提是需要知道输入元素的边界值。在以往的测试用例设计中,测试人员只能通过阅读软件相关文档获取输入元素及其边界值,这种方法既费时也不准确(软件文档过时所致),为了解决这个问题,在本发明的2.2节提出了通过分析源代码获取输入元素取值范围的方法,根据每个输入元素的取值范围,可以容易地确定其边界值。一旦确定了输入元素边界值,可以采用不同的组合方法生成测试用例,其主要过程如下:
步骤1、确定每个输入字段的具体取值。对于选择性字段,其具体取值可以通过2.2节中的方法获得;对于文本输入字段,根据2.2节中所获取的取值范围,采用等价类划分、边界值分析等方法,确定出每个输入字段有代表性的取值;
步骤2、采用组合方法生成每一个窗口中各输入字段的组合。一个输入窗口中通常包含多个输入字段,根据步骤1中所确定的各个输入字段取值,采用某种组合方法,生成针对该输入窗口的输入组合;
步骤3、采用组合方法生成各个功能的测试用例。一个软件功能通常包含多个输入窗口,这些窗口串联在一起构成软件的一个功能。因此,对一个软件功能进行测试的测试用例相当于多个窗口的二次组合,即将一个窗口作为一个组合元素看待,采用组合方法将多个窗口组合在一起,就可以得到针对该功能的测试用例。
具体方法将结合后面的实施方案给出。
优点和积极效果
采用本发明所提出的方法,可以直接从图形用户界面中提取软件所设计的功能需求以及界面元素的边界值,并自动设计出测试用例,从而不再需要测试人员通过阅读相关软件文档来获取测试信息,不再需要测试人员手工设计测试用例。这种方法一是可以提高测试需求获取的准确性。测试需求直接来源于最终的被测软件,彻底解决由于软件文档过时所带来的测试需求获取偏差;二是可以提高测试效率。该发明能够根据获取的被测软件信息,自动设计出最佳的覆盖软件功能的正常和异常测试用例,测试用例设计效率得到很大提高;三是可以提高测试充分性。在获取测试信息的基础上,本发明综合采用等价类划分、边界值分析、组合测试等方法,自动生成测试用例,这种方法不依赖于测试人员的测试经验,设计出的测试用例有针对性和代表性,既能提高测试充分性又能有效减少测试用例数量,有效避免测试用例的重复、冗余和遗漏。
具体实施场景
下面以VS C#语言开发的学生管理系统程序为例,具体说明如何通过本发明自动生成测试用例。示例程序输入界面如图4所示。
图4为本发明一实施例的学生管理系统程序主界面示意图。
4.1软件界面元素分析
根据本方案2.1节的方案,通过对软件界面进行分析,可得到界面中的元素,即控件类型、名称、选择类数据项等属性,如图5所示。
4.2输入元素的输入范围获取
以“新建学生信息”功能为例,用户界面如图6所示。该用户界面共包含10个输入控件,其中6个为选择类控件,4个为文本输入控件。根据本方案2.2节中的方法,通过分析用户界面能够直接获取选择类控件的输入域,例如“学制”字段为list view选择类控件,可选择的数据项包括:全日制、非全日制、在职,如图7所示。
根据本方案2.2节的方法,通过分析程序源代码,建立用户界面文本输入控件与对应字段合法范围判断语句的映射关系,获取输入文本框类控件的输入长度及范围。如图8、9、10所示,通过定位控件语句,分别获取到“姓名”、“籍贯”、“学号”、“身份证”字段的合法输入长度及范围,分别为:“姓名”字段长度最大为5,“籍贯”字段长度的获取方式与“姓名”字段相同,最大长度为10,“学号”输入范围(0,99],“身份证”只能为18或15位的数字组合。
4.3软件功能获取
采用本方案2.1、2.3节中界面控件获取和窗口层级调用关系算法,通过分析被测软件界面,得到被测软件功能组成图及功能路径如图11、图12所示。
4.4测试用例生成
本节以图12中的“新建学生信息”功能为例,说明其对应的测试用例生成方法。
在主界面下,点击“新建”后,弹出如图6所示的“新建学生信息”录入窗口,该窗口中控件的基本信息如表1所示。
表1控件基本信息
对于其中的四个文本框输入控件,根据其取值范围,采用等价类划分和边界值分析方法,确定出有代表性的具体输入值,如表2所示。
表2文本框输入字段取值
对于其中的6个选择类控件,其取值在图7中已明确列出,需要特殊说明的是其中的“出生日期”字段,采用等价类和边界值分析等方法,确定出其具体取值为:空、1894年12月31日、2015年1月1日。
确定的“新建学生信息”录入窗口各个输入字段的具体值如表3所示。表3输入字段具体输入值
根据表3所确定的各个输入字段输入值,可以采用不同的组合方法生成测试用例。下面给出采用单因素轮换组合方法所得出的部分测试用例(由于篇幅所限)。
表4测试用例(部分)
前面介绍了如何生成“新建学生信息”输入窗口测试用例的方法,该软件的“新建”功能包含“人员管理”→“新建”→“新建学生信息”三个输入窗口,要得到针对该功能的测试用例,需要将这三个窗口中的测试用例再次组合,由于篇幅所限,在此不再赘述。
图13为本发明一实施例的图形用户界面软件自动测试方法流程图。步骤S1、对图形用户界面软件进行分析,通过图形用户界面中的界面元素获取该软件的功能需求并且提取界面元素的边界值;步骤S2、根据获取的该软件的功能需求和界面元素的边界值生成测试用例;步骤S3、通过测试用例自动测试图形用户界面软件的各项功能。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
软件代码示例
示例一、下面是获取用户界面元素的简要描述算法:
示例二、下面是获取窗口层级关系的简要描述算法:

Claims (7)

1.一种图形用户界面软件测试方法,其特征在于,包括:
步骤S1、对图形用户界面软件进行分析,通过图形用户界面中的界面元素获取该软件的功能需求并且提取界面元素的边界值;
其中,所述获取该软件的功能需求,进一步包括:在获取被测软件所有的界面元素基础上,对被测软件用户主界面的所有元素信息进行过滤,找出其中的功能界面元素,包括:菜单项和按钮类元素;调用invoke控件模式触发GUI事件,模拟人工点击菜单或按钮的操作;递归查找当前窗口的子窗口,并保存主窗口与子窗口的层级关系,以得到整个被测软件所包含的功能界面元素;在得到软件功能组成图后,采用深度优先搜索技术,遍历功能组成图,得到软件从主界面到最终子界面的每一条功能路径;
步骤S2、根据获取的该软件的功能需求和界面元素的边界值生成测试用例;
其中,所述生成测试用例,进一步包括:根据获取的被测软件功能、被测软件功能路径上包含的输入元素以及每一个输入元素的取值范围,创建从软件的根结点到叶子结点所经过的界面元素的有序集合,其中的界面元素包括界面上的可操作控件;
步骤S3、通过测试用例自动测试图形用户界面软件的各项功能。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1进一步包括:
步骤S11、通过分析被测软件界面元素,获取软件界面元素组成及其属性;
步骤S12、通过对被测软件源代码进行分析,得到界面中包含的输入元素及其取值范围;
步骤S13、根据软件窗口调用关系,生成软件功能图,并采用深度优先搜索技术,遍历功能组成图,得到每一条软件功能路径;
步骤S14、根据每一条功能路径,找到路径节点所包含的窗口及窗口界面中的输入元素及其边界值。
3.根据权利要求2所述的方法,其特征在于,所述步骤S11进一步包括:
步骤S111、获取被测软件用户界面窗口句柄,并通过当前窗口句柄构建窗口中元素树的根节点;
步骤S112、使用Microsoft UI Autoamtion框架提供的获取窗口界面控件树的TreeWalker类对窗口中的对象进行遍历和条件化查询,调用TreeWalker类中的函数TreeWalker.ControlViewWalker.GetFirstChild(rootElement)和TreeWalker.ControlViewWalker.GetNextSibling(elementNode),采用深度遍历算法递归构造以当前窗口为根节点的元素树,以获取窗口中所有元素信息。
4.根据权利要求2所述的方法,其特征在于,所述步骤S12进一步包括:
步骤S121、通过对被测软件源代码扫描及分析,找出涉及软件所有输入的代码文件;
步骤S122、从代码文件中得到每个代码文件的语法树结构;
步骤S123、根据语法树结构,精确定位输入字段所涉及的代码位置,以分析得出字段的输入范围及类型。
5.根据权利要求4所述的方法,其特征在于,所述步骤S123进一步包括:
步骤S1231、将软件开发过程中输入界面所涉及的输入字段划分为窗体设计、窗体实现、输入验证、数据库对象四种类型,并根据所属类型对输入字段进行分析;
步骤S1232、根据窗体设计和数据库对象类型对应的输入字段创建控件树,并根据窗体实现和输入验证对应的输入字段创建事件树;
步骤S1233、根据控件树和事件树定位键盘输入的相关代码段,并根据相关代码段获取键盘输入控件输入字段范围。
6.根据权利要求2所述的方法,其特征在于,所述步骤S12进一步包括:
综合采用等价类划分、边界值分析和组合测试方法,生成包含正常值和异常值的、能够覆盖软件功能的测试用例。
7.一种图形用户界面软件测试装置,其特征在于,包括:
分析模块,用于对图形用户界面软件进行分析,通过图形用户界面中的界面元素获取该软件的功能需求并且提取界面元素的边界值;所述分析模块用于获取软件功能需求,进一步包括:在获取被测软件所有的界面元素基础上,对被测软件用户主界面的所有元素信息进行过滤,找出其中的功能界面元素,包括:菜单项和按钮类元素;调用invoke控件模式触发GUI事件,模拟人工点击菜单或按钮的操作;递归查找当前窗口的子窗口,并保存主窗口与子窗口的层级关系,以得到整个被测软件所包含的功能界面元素;在得到软件功能组成图后,采用深度优先搜索技术,遍历功能组成图,得到软件从主界面到最终子界面的每一条功能路径;
生成模块,用于根据获取的该软件的功能需求和界面元素的边界值生成测试用例;所述生成模块用于生成测试用例,进一步包括:根据获取的被测软件功能、被测软件功能路径上包含的输入元素以及每一个输入元素的取值范围,创建从软件的根结点到叶子结点所经过的界面元素的有序集合,其中的界面元素包括界面上的可操作控件;
测试模块,用于通过测试用例自动测试图形用户界面软件的各项功能。
CN201510104605.XA 2015-03-10 2015-03-10 图形用户界面软件自动测试方法及装置 Active CN104699608B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510104605.XA CN104699608B (zh) 2015-03-10 2015-03-10 图形用户界面软件自动测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510104605.XA CN104699608B (zh) 2015-03-10 2015-03-10 图形用户界面软件自动测试方法及装置

Publications (2)

Publication Number Publication Date
CN104699608A CN104699608A (zh) 2015-06-10
CN104699608B true CN104699608B (zh) 2017-10-27

Family

ID=53346761

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510104605.XA Active CN104699608B (zh) 2015-03-10 2015-03-10 图形用户界面软件自动测试方法及装置

Country Status (1)

Country Link
CN (1) CN104699608B (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893242A (zh) * 2015-12-11 2016-08-24 乐视致新电子科技(天津)有限公司 一种对应用进行测试的方法和测试装置
CN105718353B (zh) * 2016-01-18 2019-01-29 深圳市紫光同创电子有限公司 一种用于图形界面应用的测试方法、装置及系统
CN105760297B (zh) * 2016-02-02 2018-10-12 四川长虹电器股份有限公司 一种基于用户反馈的测试用例生成方法
CN105930262B (zh) 2016-03-02 2018-04-20 平安科技(深圳)有限公司 应用程序用户界面自动化测试方法及电子设备
CN106021102B (zh) * 2016-05-16 2019-05-28 北京奇虎科技有限公司 自动化测试文件的生成方法及装置
CN106168923A (zh) * 2016-06-30 2016-11-30 北京奇虎科技有限公司 一种功能遍历与界面遍历方法及系统
CN108345532A (zh) * 2017-01-23 2018-07-31 中国移动通信集团浙江有限公司 一种自动化测试用例生成方法和装置
CN108509332A (zh) * 2017-02-28 2018-09-07 广州赛度检测服务有限公司 一种计算机辅助制造软件功能测试方法
CN107066382B (zh) * 2017-03-09 2021-01-26 北京航空航天大学 一种基于模型的航天器系统自动化测试方法
CN107908563A (zh) * 2017-11-23 2018-04-13 中国航空无线电电子研究所 测试飞行任务计划软件人机交互界面的测试系统
CN110244934B (zh) * 2018-03-09 2024-01-19 阿里巴巴集团控股有限公司 产品需求文档、测试信息的生成方法及装置
CN109062785B (zh) * 2018-07-06 2021-03-19 北京大学 接口参数约束代码定位方法与系统
CN109062784B (zh) * 2018-07-06 2021-04-27 北京大学 接口参数约束代码入口定位方法与系统
CN109324844A (zh) * 2018-09-30 2019-02-12 武汉斗鱼网络科技有限公司 一种检测窗口界面的方法、装置及计算机设备
CN109271323B (zh) * 2018-10-10 2022-03-15 东软集团股份有限公司 页面元素的处理方法、装置、测试设备及存储介质
CN109344074B (zh) * 2018-10-19 2022-06-03 中国银行股份有限公司 一种跨平台自动化测试方法及系统
CN109815119B (zh) * 2018-12-14 2022-09-30 平安科技(深圳)有限公司 一种app链接渠道的测试方法及装置
CN109800161A (zh) * 2018-12-28 2019-05-24 网宿科技股份有限公司 一种用户界面的控件测试方法、电子设备和可存储介质
CN110286958B (zh) * 2019-06-20 2021-10-29 腾讯科技(深圳)有限公司 节点信息获取方法、装置及存储介质
CN110825396B (zh) * 2019-10-31 2023-07-25 Oppo(重庆)智能科技有限公司 异常处理方法及相关设备
CN111797026A (zh) * 2020-07-17 2020-10-20 上海复深蓝软件股份有限公司 测试用例生成方法、装置、计算机设备及存储介质
CN112506766B (zh) * 2020-12-02 2023-06-20 华南理工大学 交互式测试用例的自动生成方法
CN114090155B (zh) * 2021-11-17 2024-08-20 中国建设银行股份有限公司 机器人流程自动化界面元素定位方法、装置和存储介质
CN115840711B (zh) * 2022-12-29 2023-05-09 江西萤火虫微电子科技有限公司 图形用户界面的软件测试方法、系统、存储介质及计算机
CN118467395A (zh) * 2024-07-02 2024-08-09 中国第一汽车股份有限公司 车辆功能测试方法、系统、存储介质及车辆

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101377759A (zh) * 2008-08-26 2009-03-04 中国工商银行股份有限公司 自动化界面测试系统
CN102135936A (zh) * 2010-12-31 2011-07-27 华为技术有限公司 生成测试用例的方法以及系统
CN103970662A (zh) * 2014-05-22 2014-08-06 于秀山 一种gui软件输入边界值获取方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9135147B2 (en) * 2012-04-26 2015-09-15 International Business Machines Corporation Automated testing of applications with scripting code

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101377759A (zh) * 2008-08-26 2009-03-04 中国工商银行股份有限公司 自动化界面测试系统
CN102135936A (zh) * 2010-12-31 2011-07-27 华为技术有限公司 生成测试用例的方法以及系统
CN103970662A (zh) * 2014-05-22 2014-08-06 于秀山 一种gui软件输入边界值获取方法和系统

Also Published As

Publication number Publication date
CN104699608A (zh) 2015-06-10

Similar Documents

Publication Publication Date Title
CN104699608B (zh) 图形用户界面软件自动测试方法及装置
Ingram et al. Dimstiller: Workflows for dimensional analysis and reduction
Rastkar et al. Generating natural language summaries for crosscutting source code concerns
WO2019169858A1 (zh) 一种基于搜索引擎技术的数据分析方法及系统
CN104615544B (zh) 面向问题的gui软件关联功能分析方法及装置
Soto et al. Testing separability and independence of perceptual dimensions with general recognition theory: A tutorial and new R package (grtools)
Soliman et al. Enriching architecture knowledge with technology design decisions
Karaca Lessons from the Large Hadron Collider for model-based experimentation: the concept of a model of data acquisition and the scope of the hierarchy of models
Bradley et al. Supporting software history exploration
Denk et al. Contextual analyses with QCA-methods
CN105677570B (zh) 一种基于事件响应函数树的gui软件测试用例生成方法
Mauša et al. A systematic data collection procedure for software defect prediction
Zayour et al. How much integrated development environments (ides) improve productivity?
Kirby et al. Weighing the evidence: On relationship types in microservice extraction
Lawrie et al. An empirical study of rules for well‐formed identifiers
Uhrmacher Seven pitfalls in modeling and simulation research
Aljawabrah et al. Automated recovery and visualization of test-to-code traceability (TCT) links: An evaluation
Nagel et al. Ontology-based software graphs for supporting code comprehension during onboarding
Osman et al. Interactive scalable abstraction of reverse engineered UML class diagrams
Dwanoko et al. Implementation of User Centered Design methodology for designing information systems introduction to culture based on mobile applications
Hammoudi et al. A traceability dataset for open source systems
Kasegn et al. Spatial locality based identifier name recommendation
Aguilera-Cora et al. Accelerating research processes with Scopus AI: A place branding case study
Durner Applied plant science experimental design and statistical analysis using SAS® OnDemand for Academics
Gervas Analysis of User Interface design methods

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
TR01 Transfer of patent right

Effective date of registration: 20230419

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