CN113238952A - 基于应用程序状态转换图的智能辅助引导测试方法及装置 - Google Patents
基于应用程序状态转换图的智能辅助引导测试方法及装置 Download PDFInfo
- Publication number
- CN113238952A CN113238952A CN202110570661.8A CN202110570661A CN113238952A CN 113238952 A CN113238952 A CN 113238952A CN 202110570661 A CN202110570661 A CN 202110570661A CN 113238952 A CN113238952 A CN 113238952A
- Authority
- CN
- China
- Prior art keywords
- state transition
- transition diagram
- application program
- node
- state
- 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/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3692—Test management for test results analysis
-
- 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/3676—Test management for coverage analysis
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
技术领域
本发明属于计算机技术领域,涉及软件测试技术,尤其是一种基于应用程序状态转换图的智能辅助引导测试方法及装置,用于辅助并引导测试人员对应用程序进行探索性测试。
背景技术
由于手机的便携性和方便性,在当今世界越来越流行。鉴于有300万个Android应用程序可用于阅读、购物、银行和聊天等不同的任务,手机和应用程序现在已经成为我们日常生活中不可或缺的一部分。移动应用的重要性使得开发团队必须进行彻底的测试,以确保移动应用的质量。然而,要保证应用程序的质量是一个挑战,特别是考虑到移动应用程序是以事件为中心的程序,具有丰富的图形用户界面与复杂的环境(如用户、设备和其他应用程序)交互。
为了保证应用程序的质量,GUI测试主要有两种,即自动GUI测试和手动GUI测试。尽管这种自动化测试具有方便性和可伸缩性,但它可能没有很高的活动覆盖率,特别是对于那些只能通过复杂的输入或长时间的操作序列来实现的功能。此外,可用性、可访问性问题(例如,颜色模式、字体大小、交互)不能通过自动化GUI测试检测。
因此,除了自动化的GUI测试外,大公司还采用手工测试作为最后一道防线。研究还表明,由于自动化工具的可用性和学习曲线,手工测试是许多软件开发人员的首选。在手动测试中,多个测试人员模仿用户的行为来探索应用程序中的不同功能,以发现更多的bug。为了利用众包的多样性,众包测试最近出现在软件测试中,它利用了众包和云平台的好处、有效性和效率,取代了限制测试人员固定数量的传统手工测试。
综上所述,自动GUI测试和手动GUI测试总是有利有弊的,将它们分成两个不相关的过程可能会进一步加深它们的缺点。
发明内容
为了解决以上问题,本发明公开了一种基于应用程序状态转换图的智能辅助引导测试方法及装置,通过构造了一个丰富的状态转换图,利用动态规划算法来规划探索路径,并在运行时GUI中添加可视化提示,以供测试人员快速探索未测试的活动,避免重复探索,既保证检测准确性,又降低检测成本。
本发明的技术方案为:
一种基于应用程序状态转换图的智能辅助引导测试方法,其步骤包括:
1)分别对应用程序进行静态分析与动态分析,获取静态状态转换图与动态状态转换图;
2)将静态状态转换图与动态状态转换图合并,得到状态转换图;
3)根据状态转换图,规划探索路径;
4)基于探索路径,指导测试人员测试所述应用程序。
进一步地,通过以下步骤进行静态分析:
1)获取应用程序的源代码,遍历源代码中的Intent()方法,找出所有两状态之间的静态转换关系;
2)以状态作为节点,静态转换关系作为边,构建静态状态转换图。
进一步地,通过以下步骤进行动态分析:
1)通过Android调试桥动态执行应用程序,自动化点击应用程序界面上的组件,对应用程序进行探索;
2)记录探索过程中每个页面发生改变时状态的动态转换关系;
3)以状态作为节点,动态转换关系作为边,构建动态状态转换图。
进一步地,通过以下步骤得到状态转换图:
1)将静态分析中状态所对应的页面与动态分析中状态所对应的页面,分别抽象为第一界面组件树与第二界面组件树;
2)根据第一界面组件树与第二界面组件树中的节点信息,进行相似度计算;
3)若相似度大于一设定阈值,则对两节点合并,得到第三界面组件树;
4)根据第三界面组件树,得到状态转换图。
进一步地,相似度计算的方法包括:余弦相似度。
进一步地,通过以下步骤规划探索路径:
1)利用Floyd算法,计算状态转换图中每对节点之间的最短路径;
2)从起始节点基于最短路径信息进行路径规划,查找下一节点中的未访问节点,并更新阶段访问状态;直到结束节点,得到一个节点队列及相应访问状态队列;其中若下一节点中都是已访问节点,则从起始节点重新规划;
3)重复上述步骤2),得到若干节点队列,并获取若干节点队列中的最短路径节点序列;
4)依据该最短路径节点序列中的节点序列信息及相应访问状态队列中的访问状态信息,获取节点访问顺序,以生成探索路径。
进一步地,基于探索路径,并通过视觉增强技术指导测试人员测试所述应用程序。
进一步地,通过以下步骤指导测试人员测试所述应用程序:
1)使用Android调试桥命令启动测试人员所述应用程序;
2)获取当前接口的运行信息,所述运行信息包括状态信息和后端当前页面中的现有组件信息;
3)采用Android浮动窗口来可视化提示动作,指导测试人员测试所述应用程序。
一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述所述的方法。
一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机以执行上述所述的方法。
与现有技术相比,本发明的有益效果如下:
1)通过自动化提取应用程序的界面转换图,获得应用程序较为完整的状态转换图;
2)在状态转换图的基础上使用动态规划的算法,为测试人员推荐探索路径,并且利用视觉增强技术在用户界面中一步一步地建议下一步的操作,以帮助测试人员覆盖未浏览的页面并减少复制探索;
3)既保证检测的准确度,又降低检测成本,减少重复探索的过程。
附图说明
图1为本发明的方法流程图。
图2为本发明与现有技术的实验结果对比图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的智能辅助引导测试方法构造了一个丰富的状态转换图,其中触发动作作为两个相关状态的边。基于该图,我们利用动态规划算法来规划探索路径,并在运行时GUI中添加可视化提示,以供测试人员快速探索未测试的活动,避免重复探索。其中,方法流程如图1所示,其具体步骤为:
步骤1首先需要对应用程序的源代码进行静态分析。静态分析应用程序源代码,遍历源代码中的Intent()方法,找出两状态之间的转换关系(例如:从a状态跳转至b状态)。然后将静态分析得到的状态作为节点,转换关系作为边构建状态转换图。
步骤2其次动态运行应用程序,通过adb动态执行应用程序,自动化点击应用程序界面上的组件,完成对应用程序的探索。在探索过程中记录每个页面发生改变时的状态转换关系。将动态分析得到的状态作为节点,转换关系作为边构建状态转换图。
步骤3由于静态分析和动态分析均提取了相应的状态转换图,需要对两者进行合并,合并的方法是首先将状态所对应的页面抽象成界面组件树。根据节点的信息对其进行相似度计算。相似度计算方法采用的是余弦相似度。如果两状态的相似度大于90%则对这两个状态进行合并。合并完成后,得到的是一界面组件树,基于此得到最终的状态转换图。
步骤4然后根据应用程序的状态转换图,采用动态规划算法为测试人员规划探索路径。首先遍历状态转换图获得图中的所有节点和边,然后使用Floyd算法计算每对节点之间的最短路径。然后基于最短路径信息,方法开始进行路径规划,引导测试人员优先访问未访问的节点。假设当前在节点,算法将判断下一节点的访问状态是否被访问;如果没有,则在两节点之间找到一条最短路径,并更新节点访问状态。最后,通过计算从起始节点到结束节点的最短距离,得到结束节点及其访问状态。并且根据节点队列中最短路径的节点序列信息和访问状态队列中的访问状态信息,从结束节点回溯每个中间节点,得到节点的访问顺序。在完成上述操作后,即可获得测试人员的推荐探索路径。
步骤5最后基于上述方法的路径规划结果,通过视觉增强技术指导测试人员测试移动应用程序。它可以在用户界面中一步一步地建议下一步的操作,以帮助测试人员覆盖未浏览的页面并减少复制探索。首先使用Android调试桥(adb)命令启动测试人员需要测试的应用程序。然后获取当前接口的运行时信息,包括状态信息和后端当前页面中的现有组件。最后我们采用Android浮动窗口来可视化提示动作。
实验数据:
我们分别使用本发明(Navidroid)、IC3、Monkey、Droidbot、Droidmate-2及Humaniod等方法进行实验,实验结果如图2所示,表明在应用程序活动覆盖率方面比现有的基线方法高了12%。
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。
Claims (10)
1.一种基于应用程序状态转换图的智能辅助引导测试方法,其步骤包括:
1)分别对应用程序进行静态分析与动态分析,获取静态状态转换图与动态状态转换图;
2)将静态状态转换图与动态状态转换图合并,得到状态转换图;
3)根据状态转换图,规划探索路径;
4)基于探索路径,指导测试人员测试所述应用程序。
2.如权利要求1所示的方法,其特征在于,通过以下步骤进行静态分析:
1)获取应用程序的源代码,遍历源代码中的Intent()方法,找出所有两状态之间的静态转换关系;
2)以状态作为节点,静态转换关系作为边,构建静态状态转换图。
3.如权利要求1所示的方法,其特征在于,通过以下步骤进行动态分析:
1)通过Android调试桥动态执行应用程序,自动化点击应用程序界面上的组件,对应用程序进行探索;
2)记录探索过程中每个页面发生改变时状态的动态转换关系;
3)以状态作为节点,动态转换关系作为边,构建动态状态转换图。
4.如权利要求1所示的方法,其特征在于,通过以下步骤得到状态转换图:
1)将静态分析中状态所对应的页面与动态分析中状态所对应的页面,分别抽象为第一界面组件树与第二界面组件树;
2)根据第一界面组件树与第二界面组件树中的节点信息,进行相似度计算;
3)若相似度大于一设定阈值,则对两节点合并,得到第三界面组件树;
4)根据第三界面组件树,得到状态转换图。
5.如权利要求4所示的方法,其特征在于,相似度计算的方法包括:余弦相似度。
6.如权利要求1所示的方法,其特征在于,通过以下步骤规划探索路径:
1)利用Floyd算法,计算状态转换图中每对节点之间的最短路径;
2)从起始节点基于最短路径信息进行路径规划,查找下一节点中的未访问节点,并更新阶段访问状态;直到结束节点,得到一个节点队列及相应访问状态队列;其中若下一节点中都是已访问节点,则从起始节点重新规划;
3)重复上述步骤2),得到若干节点队列,并获取若干节点队列中的最短路径节点序列;
4)依据该最短路径节点序列中的节点序列信息及相应访问状态队列中的访问状态信息,获取节点访问顺序,以生成探索路径。
7.如权利要求1所示的方法,其特征在于,基于探索路径,并通过视觉增强技术指导测试人员测试所述应用程序。
8.如权利要求7所示的方法,其特征在于,通过以下步骤指导测试人员测试所述应用程序:
1)使用Android调试桥命令启动测试人员所述应用程序;
2)获取当前接口的运行信息,所述运行信息包括状态信息和后端当前页面中的现有组件信息;
3)采用Android浮动窗口来可视化提示动作,指导测试人员测试所述应用程序。
9.一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1-8中任一所述方法。
10.一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如权利要求1-8中任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110570661.8A CN113238952B (zh) | 2021-05-25 | 2021-05-25 | 基于应用程序状态转换图的智能辅助引导测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110570661.8A CN113238952B (zh) | 2021-05-25 | 2021-05-25 | 基于应用程序状态转换图的智能辅助引导测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113238952A true CN113238952A (zh) | 2021-08-10 |
CN113238952B CN113238952B (zh) | 2022-07-12 |
Family
ID=77138773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110570661.8A Active CN113238952B (zh) | 2021-05-25 | 2021-05-25 | 基于应用程序状态转换图的智能辅助引导测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113238952B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076290A (zh) * | 2023-07-07 | 2023-11-17 | 天津大学 | 一种基于深度页面探索的细粒度普适性问题检测方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030005413A1 (en) * | 2001-06-01 | 2003-01-02 | Siemens Ag Osterreich | Method for testing of software |
CN103336742A (zh) * | 2013-07-18 | 2013-10-02 | 北京航空航天大学 | 一种基于Android的自动化软件黑盒测试系统及方法 |
CN104699613A (zh) * | 2015-03-26 | 2015-06-10 | 北京航空航天大学 | 一种航天器测试需求自动生成系统及其方法 |
CN109033234A (zh) * | 2018-07-04 | 2018-12-18 | 中国科学院软件研究所 | 一种基于状态更新传播的流式图计算方法及系统 |
-
2021
- 2021-05-25 CN CN202110570661.8A patent/CN113238952B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030005413A1 (en) * | 2001-06-01 | 2003-01-02 | Siemens Ag Osterreich | Method for testing of software |
CN103336742A (zh) * | 2013-07-18 | 2013-10-02 | 北京航空航天大学 | 一种基于Android的自动化软件黑盒测试系统及方法 |
CN104699613A (zh) * | 2015-03-26 | 2015-06-10 | 北京航空航天大学 | 一种航天器测试需求自动生成系统及其方法 |
CN109033234A (zh) * | 2018-07-04 | 2018-12-18 | 中国科学院软件研究所 | 一种基于状态更新传播的流式图计算方法及系统 |
Non-Patent Citations (8)
Title |
---|
GUOQIANG SHU 等: "Validating Objected-oriented Prototype of Real-time Systems with Timed Automata", 《PROCEEDINGS OF THE 13 TH IEEE INTERNATIONAL WORKSHOP ON RAPID SYSTEM PROTOTYPING (RSP’02)》 * |
GUOQIANG SHU 等: "Validating Objected-oriented Prototype of Real-time Systems with Timed Automata", 《PROCEEDINGS OF THE 13 TH IEEE INTERNATIONAL WORKSHOP ON RAPID SYSTEM PROTOTYPING (RSP’02)》, 31 December 2002 (2002-12-31), pages 1 - 8 * |
YINXING XUE 等: "Detection and Classification of Malicious JavaScript via Attack Behavior Modelling", 《INSTITUTIONAL KNOWLEDGE AT SINGAPORE MANAGEMENT UNIVERSITY》, 31 July 2015 (2015-07-31), pages 48 - 59, XP058513240, DOI: 10.1145/2771783.2771814 * |
ZHE LIU 等: "Guided Bug Crush: Assist Manual GUI Testing of Android Apps via Hint Moves", 《CHI ’22》, 5 May 2022 (2022-05-05), pages 1 - 14 * |
ZHE LIU 等: "Owl Eyes: Spotting UI Display Issues via Visual Understanding", 《CONFERENCE’17》, 31 July 2017 (2017-07-31), pages 1 - 12 * |
毛澄映 等: "一个C/C++程序集成测试平台的设计与实现", 《小型微型计算机系统》 * |
毛澄映 等: "一个C/C++程序集成测试平台的设计与实现", 《小型微型计算机系统》, no. 6, 30 June 2007 (2007-06-30), pages 6 * |
赵欣培 等: "一种基于Agent的自适应软件过程模型", 《软件学报》, 31 December 2004 (2004-12-31), pages 348 - 359 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076290A (zh) * | 2023-07-07 | 2023-11-17 | 天津大学 | 一种基于深度页面探索的细粒度普适性问题检测方法 |
CN117076290B (zh) * | 2023-07-07 | 2024-03-19 | 天津大学 | 一种基于深度页面探索的细粒度普适性问题检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113238952B (zh) | 2022-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106471476B (zh) | 用于对经优化代码的编辑并继续以及增强的经优化调试的技术 | |
CN110741354B (zh) | 呈现代码实体调用之间的差异 | |
US9202005B2 (en) | Development and debug environment in a constrained random verification | |
US10768904B2 (en) | System and method for a computational notebook interface | |
Alimadadi et al. | Inferring hierarchical motifs from execution traces | |
US20160077831A1 (en) | Accurate and performant code design using memoization | |
US20110145799A1 (en) | Path-sensitive dataflow analysis including path refinement | |
Sunshine et al. | Searching the state space: A qualitative study of API protocol usability | |
CN110959153A (zh) | 使用灵活后处理的应用分析 | |
CN110597704B (zh) | 应用程序的压力测试方法、装置、服务器和介质 | |
Gu et al. | Deepprof: Performance analysis for deep learning applications via mining gpu execution patterns | |
CN113238952B (zh) | 基于应用程序状态转换图的智能辅助引导测试方法及装置 | |
Xue | Automated mobile apps testing from visual perspective | |
CN110990285A (zh) | 一种ui自动化测试方法及装置 | |
Ge et al. | Leveraging android automated testing to assist crowdsourced testing | |
Jiang et al. | Elevating jupyter notebook maintenance tooling by identifying and extracting notebook structures | |
JP2017041196A (ja) | スタブ化対象判定装置、方法、及びプログラム | |
Průcha | Aspect optimalization of robotic process automation | |
Nabuco et al. | Inferring ui patterns with inductive logic programming | |
Cai et al. | Reinforcement learning application testing method based on multi-attribute fusion | |
Ran et al. | Guardian: A Runtime Framework for LLM-Based UI Exploration | |
Shlomov et al. | From grounding to planning: Benchmarking bottlenecks in web agents | |
Lin | Advancing Automated Software Testing Through Test Reuse | |
Baktha | Evaluating the Performance and Capabilities of Popular Android Mobile Application Testing Automation Frameworks in Agile/DevOps Environment | |
CN114579183B (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 |