CN113590477A - 一种移动应用功能测试用例生成方法 - Google Patents
一种移动应用功能测试用例生成方法 Download PDFInfo
- Publication number
- CN113590477A CN113590477A CN202110808403.9A CN202110808403A CN113590477A CN 113590477 A CN113590477 A CN 113590477A CN 202110808403 A CN202110808403 A CN 202110808403A CN 113590477 A CN113590477 A CN 113590477A
- Authority
- CN
- China
- Prior art keywords
- test
- oracle
- matching
- function
- mobile application
- 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
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/3684—Test management for test design, e.g. generating new test cases
-
- 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
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)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明提供一种移动应用功能测试用例生成方法。首先基于被测移动应用的图形用户界面生成其功能测试序列;再根据部分独立于应用的功能和满足IEEE标准格式的需求规格文档,直接或间接提取与功能相关的测试Oracle信息,并进行形式化描述;最后使用结构匹配、语义匹配和完善匹配三种匹配方法,将功能测试序列和获取的测试Oracle信息进行关联,从而获得完整的移动应用功能测试用例。本发明中的测试序列的生成与测试Oracle信息的提取在很大程度上反映了移动应用测试中关心的问题,不同的测试Oracle信息获取方法、测试序列与测试Oracle匹配的方法流程能够很好地适应不同移动应用的测试环境,提高移动应用自动化测试的效率。
Description
技术领域
本发明属于软件工程中的软件测试领域,尤其涉及一种移动应用功能测试用例生成方法。
背景技术
随着移动应用的需求快速增长,移动应用的质量保证是决定其成功的主要因素。测试自动化是提高移动应用质量并降低测试成本的有效解决方案。测试用例自动生成是自动化移动应用测试中的一个重要研究问题。传统的手工方式进行测试用例设计,需要花费大量的时间和人力。移动应用的功能测试对被测移动应用程序的各功能进行验证,根据功能测试用例,逐项测试,检查被测移动应用程序(Application Under Test,AUT)是否达到需求要求的功能。移动应用功能测试可以根据软件说明或用户需求,验证移动应用程序的各个功能实现并评估和保证整个被测移动应用程序的质量。
发明内容
本发明公开了一种针对移动应用自动生成功能测试用例的方法,由以下步骤组成。
1):功能测试序列生成:基于图形用户界面模型技术和模型遍历算法,生成被测移动应用的功能测试序列;在该步骤中,根据移动应用功能测试的特性以及事件流图(Eventflow graph, EFG)中的非功能性事件特性,通过消除AUT中的非功能事件来生成最小的功能序列,从而生成最小的功能测试序列,达到优化EFG的目的。
2):测试Oracle获取及形式化描述:基于被测移动应用的功能和需求,获取Oracle信息,并进行形式化描述;本发明专利希望可以从AUT中所需行为之间的已知关系构建Oracle或者从AUT相关文档中得出信息来构造部分测试Oracle。为此分别提出两种方法获取AUT的Oracle信息:针对移动应用中独立于应用的功能测试Oracle信息,采用人工的方式将这类测试Oracle信息,进行形式化描述;针对符合一定规范的AUT需求规格文档,采用信息提取方法,从文档中提取其中的Oracle信息,进行形式化描述。
3):功能测试用例生成:采用不同的匹配方法,将功能测试序列与功能Oracle进行匹配,组成功能测试用例;本发明专利根据移动应用功能测试序列和两种方式获得的测试Oracle 的组成特性,提出一种匹配机制,将测试序列与测试 Oracle 进行关联,从而获得完整的功能测试用例。具体的匹配机制包括三种方式:结构匹配,语义匹配和完善匹配。
本发明提供一种移动应用功能测试用例生成方法。首先基于被测移动应用的图形用户界面生成其功能测试序列;再根据部分独立于应用的功能和满足IEEE标准格式的需求规格文档,直接或间接提取与功能相关的测试 Oracle信息,并进行形式化描述;最后使用结构匹配、语义匹配和完善匹配三种匹配方法,将功能测试序列和获取的测试Oracle信息进行关联,从而获得完整的移动应用功能测试用例。本发明中的测试序列的生成与测试Oracle信息的提取在很大程度上反映了移动应用测试中关心的问题,不同的测试Oracle信息获取方法、测试序列与测试Oracle匹配的方法流程能够很好地适应不同移动应用的测试环境,提高移动应用自动化测试的效率。
附图说明
图1为本发明方法的流程示意图。
具体实施方式
为了更加清楚地展示本发明的目的和技术方案,下面将结合具体的实施过程和附图,对本发明的具体实施方式和方案流程进行更加详细的描述。
本发明专利主要分为三大步骤,第一个步骤主要解决移动应用的功能测试序列生成问题,采用了基于图形用户界面(Graphic User Interface, GUI)模型的测试技术来生成移动应用的功能测试序列;第二个步骤主要解决测试 Oracle 获取的问题,提出了两种测试 Oracle 获取方法;第三个步骤通过使用匹配机制,将第一个步骤生成的测试序列和第二个步骤获取的测试 Oracle进行关联,从而获得完整的功能测试用例。
步骤一:实现基于 GUI 模型生成移动应用的功能测试序列。具体包括以下三个步骤:(1)GUI 模型构建;(2)模型优化;(3)测试序列生成。
步骤1):GUI 模型构建过程,主要包括两步,第一步采用通用的 GUI Ripping 技术,从应用程序提取 GUI 信息并构建 GUI 树;第二步进行模型转换,根据 GUI 树中每个GUI 窗口所包含的信息以及事件转换中提取出的全部事件与事件之间的关系,并对事件之间的跟随关系建立有向边,从而构建 EFG,其中EFG 以 XML 文件格式输出。
这个过程中的一个表示AUT相关GUI的结构信息的GUI树,通常包括:GUI 窗口集,部件集,部件在每个 GUI 窗口中的属性以及执行窗口小部件后出现的GUI窗口。通过在GUI树中的GUI组件来标识事件对应于EFG中的每一个结点,并在每次执行事件之后,在窗口上标识一个表示为事件的可执行窗口小部件,并在所有可见窗口上标识所有可执行窗口小部件的集合,而窗口小部件之间的语义信息是从GUI树推断的,对应EFG中的每条边。
步骤2):模型优化过程,通过消除 EFG 中的非功能性事件对 EFG 进行优化,这一过程主要包括三个步骤,第一步是从应用程序的 EFG 中提取出所有事件。第二步是对事件进行分类,主要分为三类,即可达性事件,系统交互事件和终止事件,其中可达性事件和终止事件属于非功能性事件,系统交互事件属于功能性事件;第三步就是依据第二步的分类结果,对第一步得到的事件进行处理,通过消除其中的非功能性事件,获得新的 EFG。
步骤3):测试序列生成过程,采用深度优先遍历算法对经过上述过程获得的 EFG进行遍历,生成满足测试覆盖标准的最小功能测试序列,再将生成的功能测试序列存储到功能测试序列表。
步骤二: 测试 Oracle 获取。该步骤主要实现测试 Oracle 获取,主要包括两种方法: (1)独立于应用功能的功能测试 Oracle 获取; (2)基于需求规格的功能测试Oracle 获取;将两种方法获得的测试Oracle再进行合并放到待匹配测试Oracle表中。
方法一:独立于应用功能测试Oracle获取方法,主要对独立于应用功能的两种类型的测试 Oracle 进行直接获取, 一种是交互功能,包括“旋转”,“手势”和“活动生命周期”;另一种是通用功能,包括“身份验证”,“创建读取更新删除”操作和“保存”。它们的Oracle 信息来源于常识,这些通用信息与应用程序无关,本发明专利对交互功能及通用功能进行了形式化描述,其中包含功能的操作序列和测试 Oracle 的语义,通过常见的交互功能和通用功能的具体定义,给出此类功能的测试 Oracle 信息。
方法二:基于需求规格的测试 Oracle 获取方法,首先基于符合 IEEE 标准格式的应用需求文档,使用正则表达式提取与功能测试相关的测试 Oracle 信息,该测试Oracle 信息以半形式化的三元组格式输出,其中包含了应用的前置状态,功能的操作序列和预期的 GUI 状态序列;最后,通过人工操作,将半形式化的测试 Oracle 信息形式化。
两种方法在形式化描述上保持一致, 将两种方法获得的测试 Oracle 信息存储到一个测试 Oracle 信息表。
步骤三:测试用例生成。该步骤主要实现测试序列与测试 Oracle 进行关联,形成完整的功能测试用例;测试序列与测试 Oracle 的关联过程,通过一种匹配机制,将基于GUI 模型生成的功能测试序列与基于移动应用功能与需求获取的测试 Oracle 进行关联,达到生成完整的功能测试用例的目的。 该机制采用三种匹配方式,结构匹配,语义匹配和完善匹配。
匹配方式1):结构匹配,结构匹配采用字符串匹配算法KMP算法,将测试序列与测试 Oracle 包含的操作序列进行匹配,通过对匹配成功的情况进行分析,匹配成功的情况主要分为两种:第一种是完全匹配,对于完全匹配的测试序列和测试 Oracle,可以直接进行结合,即将匹配上的测试序列,替换测试 Oracle 三元组中的操作序列,形成完整的功能测试用例。第二种是部分匹配,由于移动应用的最后预期行为主要取决于操作序列的最后一个操作,而前段匹配及子序列匹配都未能包含操作序列的最后一个操作,这种情况是无效的,故本发明专利摒弃了符合这两种匹配的测试序列和测试 Oracle。采用后段匹配即包含了操作序列的最后一个操作,选择保留符合此种匹配的测试序列和测试 Oracle,然后将匹配上的测试序列,替换测试 Oracle 三元组中的操作序列,形成完整的功能测试用例。
匹配方式2):语义匹配,语义匹配主要针对结构匹配中由于测试序列和测试Oracle 包含的操作序列中存在命名差异,但语义一样所导致的匹配不成功的情况。通过构建深层语义模型,将测试序列里包含的操作序列文本和测试 Oracle 包含的操作序列文本作为输入,将其表示为低纬语义向量,并通过余弦距离来计算两个语义向量的距离,最终训练出语义相似度模型。通过该模型可以获得某段操作序列的低纬语义向量表达,又可以用来预测测试序列与测试Oracle中的操作序列的语义相似度。结合人工操作审查,进行匹配,筛选出满足完全匹配和后段匹配的测试序列和测试 Oracle, 并将其结合成完整的功能测试用例。
匹配方式3):完善匹配,完善匹配主要用于解决交互功能测试需要的事件序列不能通过 GUI 模型获得的问题,该过程通过人工操作,将交互功能的事件序列直接增加到能够兼容此功能的应用的事件序列中,并连带其测试 Oracle 信息一起加入, 形成完整的功能测试用例。最后,将通过上述三个匹配过程获得的功能测试用例加入到功能测试用例表,完成移动应用功能测试用例的生成。
Claims (4)
1.一种移动应用功能测试用例生成方法,其特征在于,包括以下步骤:
1):功能测试序列生成:基于图形用户界面模型技术和模型遍历算法,生成被测移动应用的功能测试序列;
2):测试Oracle获取及形式化描述:基于被测移动应用的功能和需求,获取其Oracle信息,并进行形式化描述;
3):功能测试用例生成:采用不同的匹配方法,将功能测试序列与功能Oracle进行匹配,组成功能测试用例。
2.根据权利要求1所述方法,其特征在于,上述步骤1),功能测试序列生成,包括以下步骤:
a1):使用图形用户界面测试工具,动态分析被测移动应用程序的图形用户界面,生成图形用户界面模型;
b1):根据图形用户界面模型和事件流图的组成关系,从图形用户界面模型推导出事件流图,完成模型转换;
c1):根据移动应用功能测试特性及事件流图中功能性事件特性,对事件流图进行优化,其主要特征包括:(1)事件的识别;(2)事件分类;(3)消除非功能性事件;
d1):采用深度优先搜索算法,基于新的事件流图生成被测移动应用的功能测试序列。
3.根据权利要求1所述方法,其特征在于,所述步骤2),测试Oracle获取及形式化描述,包括:主要从两个方面获取测试Oracle,一种是移动应用中独立于应用的功能测试Oracle信息,包括交互功能和通用功能的Oracle信息,采用人工的方式将这类测试Oracle信息,进行形式化描述;另一种是IEEE格式的软件需求说明书,利用正则表达式提取其中的Oracle信息,进行形式化描述。
4.根据权利要求1所述的方法,其中,上述步骤3)中的匹配方法,其主要特征包括:(1)结构匹配:根据功能测试序列与功能Oracle的文本内容进行字符串匹配;(2)语义匹配:根据测试序列和测试 Oracle 包含的操作序列中文本内容进行语义匹配;(3)完善匹配:根据交互功能的事件序列特点,扩充操作序列和测试Oracle包含的操作序列中文本内容,形成匹配。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110808403.9A CN113590477B (zh) | 2021-07-16 | 2021-07-16 | 一种移动应用功能测试用例生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110808403.9A CN113590477B (zh) | 2021-07-16 | 2021-07-16 | 一种移动应用功能测试用例生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113590477A true CN113590477A (zh) | 2021-11-02 |
CN113590477B CN113590477B (zh) | 2023-06-09 |
Family
ID=78247792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110808403.9A Active CN113590477B (zh) | 2021-07-16 | 2021-07-16 | 一种移动应用功能测试用例生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590477B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114490316A (zh) * | 2021-12-16 | 2022-05-13 | 四川大学 | 一种基于损失函数的单元测试用例自动生成方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000057015A (ja) * | 1998-08-07 | 2000-02-25 | Nippon Steel Corp | ソフトウェアのテスト装置および記録媒体 |
CA2627714A1 (en) * | 2007-04-05 | 2008-10-05 | Accenture Global Services Gmbh | Automatic test generation for reference testing |
CN102411538A (zh) * | 2011-11-22 | 2012-04-11 | 南京大学 | 基于事件可达性模型的图形用户界面测试脚本修复方法 |
US20130339930A1 (en) * | 2012-06-18 | 2013-12-19 | South Dakota Board Of Regents | Model-based test code generation for software testing |
US20140122043A1 (en) * | 2012-11-01 | 2014-05-01 | University Of Nebraska | Linking graphical user interface testing tools and human performance modeling to enable usability assessment |
CN105677570A (zh) * | 2016-01-11 | 2016-06-15 | 北京航空航天大学 | 一种基于事件响应函数树的gui软件测试用例生成方法 |
US20190042398A1 (en) * | 2017-08-03 | 2019-02-07 | Fujitsu Limited | Interactive software program repair |
CN109522225A (zh) * | 2018-11-09 | 2019-03-26 | 网宿科技股份有限公司 | 一种自动化测试断言方法及装置、测试平台及存储介质 |
CN111124870A (zh) * | 2018-10-31 | 2020-05-08 | 北京国双科技有限公司 | 一种接口测试方法及装置 |
CN111708699A (zh) * | 2020-06-16 | 2020-09-25 | 荆门汇易佳信息科技有限公司 | 针对Android应用程序的智能化集成检测系统 |
-
2021
- 2021-07-16 CN CN202110808403.9A patent/CN113590477B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000057015A (ja) * | 1998-08-07 | 2000-02-25 | Nippon Steel Corp | ソフトウェアのテスト装置および記録媒体 |
CA2627714A1 (en) * | 2007-04-05 | 2008-10-05 | Accenture Global Services Gmbh | Automatic test generation for reference testing |
CN102411538A (zh) * | 2011-11-22 | 2012-04-11 | 南京大学 | 基于事件可达性模型的图形用户界面测试脚本修复方法 |
US20130339930A1 (en) * | 2012-06-18 | 2013-12-19 | South Dakota Board Of Regents | Model-based test code generation for software testing |
US20140122043A1 (en) * | 2012-11-01 | 2014-05-01 | University Of Nebraska | Linking graphical user interface testing tools and human performance modeling to enable usability assessment |
CN105677570A (zh) * | 2016-01-11 | 2016-06-15 | 北京航空航天大学 | 一种基于事件响应函数树的gui软件测试用例生成方法 |
US20190042398A1 (en) * | 2017-08-03 | 2019-02-07 | Fujitsu Limited | Interactive software program repair |
CN111124870A (zh) * | 2018-10-31 | 2020-05-08 | 北京国双科技有限公司 | 一种接口测试方法及装置 |
CN109522225A (zh) * | 2018-11-09 | 2019-03-26 | 网宿科技股份有限公司 | 一种自动化测试断言方法及装置、测试平台及存储介质 |
CN111708699A (zh) * | 2020-06-16 | 2020-09-25 | 荆门汇易佳信息科技有限公司 | 针对Android应用程序的智能化集成检测系统 |
Non-Patent Citations (3)
Title |
---|
LEONARDO MARIANI等: "Augusto: Exploiting Popular Functionalities for the Generation of Semantic GUI Tests with Oracles" * |
冯谷等: "模型驱动的移动应用测试方法" * |
杨利利等: "Web服务测试问题综述" * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114490316A (zh) * | 2021-12-16 | 2022-05-13 | 四川大学 | 一种基于损失函数的单元测试用例自动生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113590477B (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102243586B (zh) | 一种软件功能图自动获取方法 | |
US20230035121A1 (en) | Automatic event graph construction method and device for multi-source vulnerability information | |
CN113779272A (zh) | 基于知识图谱的数据处理方法、装置、设备及存储介质 | |
CN113238932B (zh) | 测试用例自动生成方法 | |
CN113590477B (zh) | 一种移动应用功能测试用例生成方法 | |
CN104835015B (zh) | 基于前驱任务的工作流挖掘方法 | |
CN112395198B (zh) | 一种基于区分子图挖掘的软件缺陷发现方法 | |
Liu et al. | Test reuse based on adaptive semantic matching across android mobile applications | |
CN112019403B (zh) | 一种物联网消息协议状态机的跨平台自动化挖掘方法与系统 | |
Baier et al. | Bridging abstraction layers in process mining: Event to activity mapping | |
CN111913874B (zh) | 一种基于语法结构变更分析的软件缺陷溯源方法 | |
CN116483700A (zh) | 一种基于反馈机制的api误用检测与修正方法 | |
CN114706558A (zh) | 基于K-Truss的复杂软件关键模块识别方法 | |
CN115438341A (zh) | 提取代码循环计数器的方法、装置、存储介质和电子设备 | |
CN114090011A (zh) | 一种方便开发者使用的软件开发方法 | |
CN115168085A (zh) | 一种基于diff代码块匹配的重复冲突方案检测方法 | |
CN103220179A (zh) | 基于统计模型检验的不稳定网络鲁棒性评测方法 | |
CN112835797A (zh) | 一种基于程序中间结构特征的蜕变关系预测方法 | |
CN117787244B (zh) | 一种面向Handle标识解析的数据解析方法和系统 | |
CN118503270B (zh) | 一种nl2sql数据集构建方法、装置、设备及介质 | |
CN114692595B (zh) | 一种基于文本匹配的重复冲突方案检测方法 | |
CN114610320B (zh) | 一种基于llvm的变量类型信息修复与比较方法及系统 | |
Xiong et al. | A Multi-code Representation Fusion Smart Contract Vulnerability Line Detection Method Based on Graph Neural Network | |
WO2024207609A1 (zh) | 从客户端-服务器架构到区块链架构的应用迁移方法 | |
TWI579721B (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 |