CN110688321B - 一种结合群体智能与机器智能增强移动应用测试的方法 - Google Patents
一种结合群体智能与机器智能增强移动应用测试的方法 Download PDFInfo
- Publication number
- CN110688321B CN110688321B CN201910952056.XA CN201910952056A CN110688321B CN 110688321 B CN110688321 B CN 110688321B CN 201910952056 A CN201910952056 A CN 201910952056A CN 110688321 B CN110688321 B CN 110688321B
- Authority
- CN
- China
- Prior art keywords
- test
- intelligence
- path
- page
- machine intelligence
- 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
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/3676—Test management for coverage 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提出一种结合群体智能与机器智能增强移动应用测试的方法,用于增强机器智能的代码覆盖率,以获得更多发现缺陷的机会。该发明的主要创新在于两方面,一方面是将群体智能产出的代码进行了格式化的整理,从而找出群体智能在应用进行的测试中,不同页面之间进行转移的最短路径与相同页面内,和仅在少数代码中出现的特异路径,并保存为自动化工具的配置文件;另一方面将这些整理后的路径通过配置文件接人到机器智能中,使得机器智能可以解决由于部分页面之间的转移需要进行逻辑性操作(组合操作)而难以甚至无法实现的问题。
Description
技术领域
本发明属于计算机技术中的软件测试技术领域,具体是软件测试中自动化测试技术领域,最终目的为创建一个能够增强安卓自动化测试工具的测试结果的方法。
背景技术
近年来,移动应用的测试者们已经不满足于仅仅测试应用的源码,他们开始关注起了UI测试,想要通过对应用进行实际使用来进行测试以找到更多的缺陷。
然而,UI测试较为繁琐,在大部分情况下,人们选择手工进行UI测试,通过人力来对应用进行测试,但是,手工测试的成本和负担都十分的大。为了减轻UI测试的负担,许多人进行了机器智能,即自动化测试的研究,并发表了一些自动化测试框架与自动化测试工具。
自动化工具的制作者会先编写好一种测试策略,这样一来,工具就可以对应用进行一系列仿照人类行为的动作,比如点击,滑动等等。但是,现存的自动化工具并不完善,当待测应用比较复杂的时候,他们就无法覆盖整个应用、同时,这些工具的兼容性也较差,大部分工具都只能在特定的移动设备版本上才可以运行、并且,随着开发技术的更新,一些版本较老的自动化测试工具如果停止了更新,会无法解析新的应用,从而无法运行。
因此,我们提出一种结合群体智能与机器智能增强移动应用测试的方法,使得自动化测试工具能够跨越逻辑操作序列的鸿沟,从而测试到更多的页面,使其更加可能能够找到应用的缺陷。
一种结合群体智能与机器智能增强移动应用测试的方法主要基于属于开源框架的Appium框架与其改进以及自动化测试技术。
Appium框架是一种自动化测试框架,他可以解析人工编写的自动化脚本,并将它们在移动设备上运行以复现代码内容。群体智能的一种实现方法是收集群众编写的Appium脚本,再加以整合。本文所述的方法,对Appium框架进行了修改,使得用户在运行Appium脚本时,框架会自动记录下测试脚本的每一个操作产生的各种详细信息,从而用于之后的数据聚合与分析。
自动化测试技术经过在学术界多年的发展,也已经出现了多种不同方式的实现。本框架所使用的技术主要基于使用爬虫方法进行序列化的控件点击这一思想。
该技术会在应用到达每一个页面时,获取所有能够得到的控件名称并存入堆栈中,接着根据控件的类型进行序列化的点击。该操作可以很有效的遍历整个程序,但是由于安卓程序的控件加载速度并不稳定,这个过程不能太快,否则会因为控件还未加载成功而导致序列顺序变更,甚至可能导致测试失败。使用基于爬虫方法的自动化技术,可以很轻松的将之前整合出的脚本操作序列加入到遍历时获取的堆栈中,从而使得自动化测试工具可以覆盖到更大的应用范围。
发明内容
本发明要解决的问题是:提出一种结合群体智能与机器智能增强移动应用测试的方法,使得自动化工具可以进入一些原本难以或无法进入的页面,增加自动化工具的覆盖范围,增强自动化工具的测试结果。
本发明的技术方案为:提取群体智能中的页面跳转行为,接入到自动化工具中,使得自动化工具可以进入更多的页面,从而覆盖更多的控件,以增加找到缺陷的概率。
首先,对人群发放测试任务,让参与者编写自动化工具脚本。接着,我们会对这些脚本进行再执行,在再执行的过程中,我们会通过修改自动化框架,来获得脚本在执行中的每一个步骤的详细信息,如进行了什么操作,点击了什么控件,进行该操作的时候处于哪一个页面等等。通过对这些信息进行分析,我们可以获取到脚本在每两个页面转换时,所做的最短操作。通过把这些最短操作作为配置文件,再让自动化工具对应用进行测试,自动化测试工具就会在检测到相应控件的时候,根据这些操作来进行复现,从而直接进入其他页面,再继续进行控件的覆盖。
本发明的有益效果是:可以将属于人工测试的群体智能测试与属于自动化测试的自动化工具进行结合,两者互补其长,群体智能提供一些大层面的测试路径,如需要复杂组合操作的页面转变方法、自动化工具提供细节上的测试,如一些人们不会注意到,或者不屑于测试的控件的覆盖。这两种测试方式相结合,可以使得测试的广度增加,让应用的覆盖率大于等于单方面的测试,从而增加找到应用缺陷的几率,增强测试的结果。
附图说明
图1一种结合群体智能与机器智能增强移动应用测试的方法流程图
图2众包测试常见流程
图3常见的移动应用控件信息
图4生成群体智能和机器智能间可理解表示的流程
图5将可理解表示接入到机器智能中的流程
具体实施方法
一种结合群体智能与机器u智能增强移动应用测试的方法的流程为,先获取群体智能编写的自动化脚本,接着将这些自动化脚本再次运行以获得规范化的详细信息,然后对这些信息进行整合,得到页面最短转换路径和独特路径,最后将这些路径作为配置文件接入到自动化测试工具中,使得自动化测试工具可以根据这些路径进入更多的页面,从而增加找到缺陷的概率。该框架的流程图见图1。
由于本方法需要使用到群体智能编写的脚本作为提取依据,因此我们需要先介绍群体智能的概念。
群体智能这一概念,最初是由人类观察自然界动物而产生的。像蚂蚁、蜜蜂等生物,他们如果按照单个个体来看,智能很低,一只蜜蜂的脑神经元个数甚至只有人类的八万分之一。但是,如果一群蜜蜂凑在一起,总是能找到周围环境中适合它们建造新蜂巢的前几名的地方。而如果让人类在进行房屋、大桥的设计,未必能找到最优的建造方式。像昆虫们进行集体策划,找出最优答案的智能行为,被称为群体智能。
软件测试的群体智能,可以在众包测试中得以体现。开发人员将待测应用发布到专门的众包测试网站上,只要在该网站进行注册的人,就可以对这些应用进行测试,并返回一些拥有特定格式的测试报告以供分析。这些测试通常不需要测试者们拥有专业知识,只需要能够按照格式写出报告就可以看作给出了成果,最后开发人员根据成果来给出报酬,众包的流程如图2所示。
而我们所选择的群体智能实现,需要人们按照一定的规则编写自动化脚本,之后我们会自行对这些脚本进行规整,以得到统一的结果。这样的群体智能实现,在很多编程网站上可以看到,比如OJ,上机考试等。这需要测试者有一定的专业知识,但是入门并不算难。
这些代码被收集来后,我们会使用修改过后的该自动化脚本框架(如Appium)再次执行这些代码,从而使得脚本中的每一个动作都可以变成一个包含我们所需各种信息的四元组w(behavior,xpath,activity,argument)。其中,behavior为这一步的操作,如滑动,点击,长按等等。Xpath为目标控件的地址,由于移动应用的控件可以使用多种方式定位,我们选择最通用且不会有重复性名称的属性Xpath作为地址来进行位置定位。Activity为目标控件所处的页面,而argument则是该操作包含的参数信息,如滑动会带上从何位置移动到另一位置的位置信息等等,常见的控件信息一般可以用uiautomator viewer等工具查看,如图3所示。
每一份脚本都会对应生成一个四元组w的列表,代表了这份脚本在测试该应用时的测试流程。接着,我们的方法会对这些流程进行分析以得到最短页面切换路径与独特路径。对于最短页面切换路径,我们会先将一份测试流程中,某一个页面的进行的全部操作和第一次页面进行改变时的操作。我们会将这一操作序列作为页面切换路径的初始值输入。接着,我们会扫描所有测试流程中,关于这两个页面切换的部分,使用反向扫描的方法来进行路径的缩减。比如现有最短路径保存为:
(click,A/B/C/D,Login,null)>(click,A/B/C/E,Login,null)>(click,A/B/C/F,Login,null),在其他的测试流程中,我们发现了:
(click,A/B/C/G,Login,null)>(click,A/B/C/E,Login,null)>(click,A/B/C/F,Login,null),则最短路径会被缩短为:
(click,A/B/C/E,Login,null)>(click,A/B/C/F,Login,null),
因为第一个操作是可以被去除的。当然,由于页面间的切换可能可以通过Xpath不同,但是含义(或者说类型)相同的控件的点击来实现,因此,我们在比对的时候还需要考虑到该控件本身的类型。如果说在上述例子中,我们发现的其他的测试流程中的第一个操作为(click,A/B/D,Login,null),则可以将这两份操作流程看成经历了同样的操作,而依旧保留原本的三个操作。
而对于独特路径,我们会先设定一个比率作为认为操作独特的概率P,比如1%。接着对每一份操作流程中经历的控件做一个统计,如果说某一份操作流程中的某一个页面中的某一种控件在少于总数*P的流程中出现,则该控件所处页面内的,接触到该控件为止的操作都会被记录下来作为独特路径以便于自动化工具遍历时直接复现。
这两种生成群体智能和机器智能间可理解表示的流程如图4所示。
当所有的操作流程都被分析完后,会生成多个路径文件,每个路径文件对应着由一个页面转向另一个页面的最短路径,同时,也会生成某些路径中的独特路径。这些文件可以作为自动化测试工具的配置脚本进行接入,这样一来,自动化测试工具在测试应用的时候,就可以直接将这些路径作为页面转换时的策略来进行测试。
一般的以爬虫作为遍历策略的自动化测试工具,会在到达每一个页面的时候获取当前可以点击的控件列表,接着按顺序遍历。如果是使用广度搜索的方式,会在到达其他页面的时候将点击的控件记录下来,回到上一个页面,等到所有当前页面被测试完后,再通过记录下的控件到达新的页面进行测试。如果是使用深度搜索的方式,则会将上一个页面获取的控件压栈记录,接着在新到达的页面中再次获取所有的页面,当全部测试完后,回到上一个页面再继续之前的测试。我们希望使用广度测试的自动化工具,这样在到达每个页面的时候,可以根据之前由群体智能中获取的最短路径,直接获知哪些控件会造成页面转换的结果,那么在获取整个页面的时候,就可以先跳过这些控件,到当前页面被测试完后再去复现这些页面转换的最短路径,来到达新的页面。这种方式的好处,一是可以减少自动化测试工具在未知探索的情况下来到新页面后再次返回所耗费的时间,二是使得自动化工具可以根据群体智能找到的路径直接来到新的页面,而这些新的页面中,会包含一些自动化工具本身难以进入的,需要组合操作才可以进入的页面。
对于独特路径而言也是类似的,引入独特路径的目的是为了让自动化工具能够覆盖到更多的控件,这些控件通常需要进行组合操作才能到达,而这也符合了我们寻找少部分人会进行操作的特点。因为某些控件会经历一些复杂的操作才会显现,因此不是所有程序的编写者都可以找到它们。那么,我们可以相信少部分人找到的这些路径更有可能是需要进行组合操作才能到达的。自动化测试工具会在进行测试的时候记录自己遍历的控件列表,如果一个页面中,自己的策略下所有的控件都已经触发完毕了,准备开始跳转页面,就会和这些独特路径进行比对,观察是否有自己还没有覆盖到的控件,如果没有,那自然是好的,而如果有,就根据这些独特路径进行复现,从而达到更高的覆盖率。
将可理解表示接入到机器智能中的流程如图5所示。
在融合了群体智能和机器智能后,测试必然能够包含群体智能本身覆盖的部分,和机器智能原本包含的部分。同时,还会多出机器智能到达新的页面后进行覆盖时可能增加的覆盖部分,从而使得总体的覆盖率大于等于原先的两者之和,以增强整体的测试效果。
Claims (4)
1.一种结合群体智能与机器智能增强移动应用测试的方法,其特征在于,该方法包括:一种用于连接通过众包测试实现的群体智能和机器智能的可理解表示方法,将众包测试过程中测试工人编写的非格式化测试脚本进行统一格式化处理,转换成机器智能可理解的测试路径;群体智能挖掘模块,对通过众包测试实现的群体智能进行挖掘,用于挖掘众包测试中所有测试脚本对应用进行的操作,把所有测试脚本中的每一种测试路径进行拆分,从而挖掘出群体智能在切换页面中寻找到的页面最短转换路径和独特路径,其中独特路径是指若某一操作流程中的某一页面中的某一种控件在少于总路径1%的测试路径中出现过,则该控件所处页面内的,接触到该控件为止的操作都会被记录下来作为独特路径;以及机器智能融合模块,用于将挖掘到的路径接入到机器智能中,用来增强机器智能的测试结果。
2.根据权利要求1所述的一种结合群体智能与机器智能增强移动应用测试的方法,其特征在于,群体智能挖掘模块会对记录下的群体智能操作进行复现,同时将每一个动作转换为一个四元组w(behavior,xpath,activity,argument)。
3.根据权利要求1所述的一种结合群体智能与机器智能增强移动应用测试的方法,其特征在于,会通过群体智能产生的所有四元组w(behavior,xpath,activity,argument)进行整合,生成一种连接群体智能与机器智能的可理解表示,针对每一份测试人员提交的用于测试某一应用的测试脚本都会对应生成一个四元组w(behavior,xpath,activity,argument)的列表,代表了这份脚本在测试待测应用时的测试流程;最终对于一次测试过程中的所有测试脚本均将其转化为对应的四元组w,汇总得到的四元组列表即表示本次测试过程中的所有测试路径列表。
4.根据权利要求3所述的一种结合群体智能与机器智能增强移动应用测试的方法,其特征在于,机器智能融合模块会将权利要求3中所述的测试路径列表,接入到机器智能中,使得机器智能依照测试路径列表中的测试路径,直接在各个页面上进行转移,通过本来无法通过的页面,增强机器智能的效果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910952056.XA CN110688321B (zh) | 2019-09-29 | 2019-09-29 | 一种结合群体智能与机器智能增强移动应用测试的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910952056.XA CN110688321B (zh) | 2019-09-29 | 2019-09-29 | 一种结合群体智能与机器智能增强移动应用测试的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110688321A CN110688321A (zh) | 2020-01-14 |
CN110688321B true CN110688321B (zh) | 2022-07-08 |
Family
ID=69111643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910952056.XA Active CN110688321B (zh) | 2019-09-29 | 2019-09-29 | 一种结合群体智能与机器智能增强移动应用测试的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110688321B (zh) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9008416B2 (en) * | 2013-02-08 | 2015-04-14 | Emotient, Inc. | Collection of machine learning training data for expression recognition |
CN103336742B (zh) * | 2013-07-18 | 2015-11-11 | 北京航空航天大学 | 一种基于Android的自动化软件黑盒测试系统及方法 |
CN105955889B (zh) * | 2016-05-11 | 2019-02-01 | 南京大学 | 一种图形界面自动化测试方法 |
CN107038117B (zh) * | 2017-03-23 | 2020-11-06 | 北京工业大学 | 一种基于事件处理函数间定义-引用的web自动化测试方法 |
CN107992426A (zh) * | 2017-12-26 | 2018-05-04 | 河南工业大学 | 一种基于频繁子图挖掘的软件错误定位方法及处理装置 |
CN108170601A (zh) * | 2017-12-28 | 2018-06-15 | 上海璞恒新能源科技有限公司 | 一种测试路径索引方法、装置、终端及计算机可读介质 |
US10545859B2 (en) * | 2018-02-05 | 2020-01-28 | Webomates LLC | Method and system for multi-channel testing |
-
2019
- 2019-09-29 CN CN201910952056.XA patent/CN110688321B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110688321A (zh) | 2020-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8402434B2 (en) | Graphical user interface (GUI) script generation and documentation | |
WO2018010552A1 (zh) | 测试方法和装置 | |
US20020091968A1 (en) | Object-oriented data driven software GUI automated test harness | |
KR101637371B1 (ko) | 스마트기기용 어플리케이션의 테스트 시스템 및 그 방법 | |
CN109508298B (zh) | 图形化的脚本测试方法及系统 | |
CN106227654B (zh) | 一种测试平台 | |
CN107015841B (zh) | 一种程序编译的预处理方法及程序编译设备 | |
CN105760296A (zh) | 自动化测试控制方法、装置及终端 | |
CN111159014A (zh) | 探索性测试的响应方法及装置、计算机设备、存储介质 | |
Soh et al. | On the effect of program exploration on maintenance tasks | |
Abad et al. | Learn more, pay less! lessons learned from applying the wizard-of-oz technique for exploring mobile app requirements | |
CN112631704A (zh) | 一种界面元素识别方法、装置、存储介质及电子设备 | |
Dumas et al. | Robotic Process Mining. | |
CN114897296A (zh) | Rpa流程标注方法、执行过程回放方法及存储介质 | |
CN110688321B (zh) | 一种结合群体智能与机器智能增强移动应用测试的方法 | |
Rosenthal et al. | Understanding individual processes of conceptual modeling: A multi-modal observation and data generation approach | |
Fuchs et al. | Monitoring students' mobile app coding behavior data analysis based on IDE and browser interaction logs | |
Kelleher et al. | A sensemaking analysis of API learning using React | |
CN115098368A (zh) | 一种识别脑图用例的智能验证方法和装置 | |
CN110209593B (zh) | 一种面向偏好设置的安卓应用测试方法 | |
CN112069080A (zh) | 一种自动化可执行的脚本测试方法及系统 | |
Buzaid et al. | Reviewing dynamic feature location techniques: Basic elements and challenges | |
Faust et al. | Interactive visualization for data science scripts | |
Kevic et al. | Towards activity-aware tool support for change tasks | |
US12026077B2 (en) | Accelerating application interrogation and interaction mapping |
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 |