一种基于控件融合的群体智能测试方法与流程

文档序号:23890022发布日期:2021-02-09 09:26阅读:77来源:国知局
一种基于控件融合的群体智能测试方法与流程

[0001]
本发明属于软件测试技术领域,尤其是软件测试中的针对android的ui测试。其目的在于为软件测试人员提供测试进度的快速反馈,是一种帮助软件测试人员在有限时间内提升软件测试质量的方法。
技术背景
[0002]
软件测试是软件开发中控制软件质量的重要方式,ui测试一般是软件测试中比较靠后的一部分,此时软件的每个部分基本已经集成完毕,能对软件的整体上进行很好的测试,ui测试是通过对软件中的控件进行覆盖来实现。在实际应用中,ui测试路径非常复杂,不同控件的点击顺序能够组成的路径非常多,把每个路径遍历完需要很大的人力和时间。同时,这种独立的测试,测试进度非常不直观,测试人员之间也无法知道哪些路径已经被测试,造成了大量的重复测试。很多软件也需要在不同的设备上进行兼容性测试,但是在有限的时间内,往往效率较低。软件测试是在软件发布前的最后一环,时间非常紧迫,缺乏一个能够减少重复测试,自动执行测试的对应平台。
[0003]
如何整合测试流水线,使得执行测试用例、测试效果展示、用例管理和分析能够在统一的平台上得到实现是开发者关注的重点。一款实时追踪的、可视化的、具备完善的编辑和分析模块的平台是测试人员们所期待的。


技术实现要素:

[0004]
本发明要解决的问题是:当前测试分析工具测试进度无法实时、直观的展示,无法基于定向路径引导测试,无法进行测试回放的问题。
[0005]
本发明的技术方案为一种基于java反射的hook方法,并基于该方法对android应用中的控件进行了劫持,可以实时跟踪测试人员的操作,并传送到服务器。服务器对这些信息进行处理后,在前端web页面生成控件流图,并随着测试的不断深入,该控件流图会不断的增长。该平台可以分为两部分,一部分是android端。基于java的hook,android应用通过继承一个显式的父类basicactivity来实现对所有activity下的所有控件进行劫持,获取控件的相关信息,例如控件id,所在activity等等,再传送给服务端。另一部分则是服务器获取到这些信息后,维护测试路径信息,同时把信息推送给前端,由前端渲染出可点击的控制流图。测试人员点击控制流图的节点,在图中通过最短路径生成测试用例,该测试用例可以回放执行。
[0006]
1.本发明的特点在于:1)通过hook控件获得执行控件信息;2)通过控件信息构建控件流图;3)融合众包测试者控件流图;4)基于定向路径引导测试。将这4点结合,本发明可以支持目前android所有的ui测试,通过反射机制hook移动应用控件,收集控件运行时信息;生成移动应用的执行控件树,准确展示测试路径以及计算测试覆盖率。
[0007]
本发明的有益效果是:可以减少测试人员重复测试的情况,对每个测试展示精确的路径,基于定向路劲引导测试,使得测试人员可以用更少的进行更多的测试,节省了时间
成本。
附图说明
[0008]
图1为本发明的整体架构逻辑图。
[0009]
图2为本android应用组织结构图。
[0010]
图3位本发明定义的控件流图。
具体实施方式
[0011]
本发明中涉及的几项关键的技术分别是:java技术,android技术,nodejs技术,websocket协议,js技术以及图算法。接下来进行一些说明:
[0012]
1、java
[0013]
java是当前android最流行的开发语言。android平台的控件通过java反射来进行hook。java是当前最为流行的开发语言之一,其具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点,同时还支持运行时绑定、生命周期管理等高级功能。
[0014]
2、android
[0015]
android是一个开源的,基于linux的移动设备操作系统,主要使用于移动设备,如智能手机和平板电脑。android是由谷歌及其他公司带领的开放手机联盟开发的,是当前市场占有率最高的移动设备操作系统。本平台主要针对android系统来提供测试的实时跟踪。
[0016]
3、nodejs
[0017]
该平台使用了nodejs作为服务端的主要语言,node.js是一个基于chrome v8引擎的javascript运行环境。node.js使用了一个事件驱动、非阻塞式i/o的模型,使其轻量又高效。
[0018]
4、websocket协议
[0019]
websocket协议是基于tcp的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
[0020]
5、前端技术
[0021]
vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,vue被设计为可以自底向上逐层应用。vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。本平台通过使用vue和开源的echarts图表工具来渲染控制流图以及其它的前端基本功能。
[0022]
6、最短路径算法
[0023]
dijkstra
[0024]
求单源、无负权的最短路。时效性较好,时间复杂度为o(v*v+e)。源点可达的话,o(v*lgv+e*lgv)=>o(e*lgv)。
[0025]
当是稀疏图的情况时,此时e=v*v/lgv,所以算法的时间复杂度可为o(v^2)。若是斐波那契堆作优先队列的话,算法时间复杂度,则为o(v*lgv+e)。
[0026]
floyd
[0027]
求多源、无负权边的最短路。用矩阵记录图。时效性较差,时间复杂度o(v^3)。
[0028]
floyd-warshall算法(floyd-warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题。
[0029]
本方法默认所有边都单源单向且都权值都为1,所以将使用经典的dijkstra算法。
[0030]
根据该平台进行测试的步骤如下:
[0031]
1)配置本地jdk环境,要求jdk版本是1.8及以上。
[0032]
2)在android应用的每个activity里面,继承basicactivity父类
[0033]
3)打包编译运行,测试人员在该应用上进行测试,测试环境应保证网络良好。
[0034]
4)测试时点击对应的控件,收集<id,activity>信息传送到服务器。
[0035]
5)维护一个执行队列,生成控件流图,并通过websocket协议推送给前端渲染。
[0036]
6)在web页面查看实时控件流图。
[0037]
7)融合众包测试者控件流图。
[0038]
8)点击控件流图上的节点,会在设备上回放执行该测试用例。
[0039]
9)能够基于已有的控件流图,定向引导测试。
[0040]
工具在运行时解决的问题主要有:
[0041]
1)通过提供basicactivity父类,使得应用能够无侵入式hook,收集测试信息。
[0042]
2)通过绘制控件流图的形式,使得整个测试进度和测试路径变得直观,测试覆盖率也能很易于观察,减少了重复测试的几率,测试人员可以针对没有覆盖到的路径进行测试,不同的测试人员能很好的协同测试。
[0043]
3)点击控件流图节点可以回放测试用例,减少了人工操作,提高测试效率。
[0044]
4)基于定向路径引导测试,能够及时覆盖到没有被测试的控件。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1