一种基于adb的测试驱动系统、方法及存储介质与流程

文档序号:24184580发布日期:2021-03-09 13:18阅读:180来源:国知局
一种基于adb的测试驱动系统、方法及存储介质与流程

1.本发明涉及android(安卓系统)的测试技术领域,特别涉及一种基于adb的测试驱动系统、方法及存储介质。


背景技术:

2.现有的对安卓系统的测试框架不能很全面的进行测试,要么对安卓系统依赖很强,要么笨重不够灵活。如robotium,robotium是一款国外的android自动化测试框架,主要针对android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的api,能够对各种控件进行操作。robotium需要在应用内部编写测试代码,是集成在应用里面的。再比如appium,appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。appium配置环境非常繁杂,需要安装安卓sdk、jdk。综上所述,现有的对安卓系统的测试框架,不能和安卓系统进行很好的衔接,系统操作能力弱。


技术实现要素:

3.本发明的目的是提供一种基于adb的测试驱动系统、方法及存储介质,可以解决现有的测试框架对安卓系统依赖性高,不能和安卓系统进行很好的衔接的问题。
4.本发明的目的是通过以下技术方案实现的:
5.第一方面,本发明提供一种基于adb的测试驱动系统,包括元素控件查找模块、用户事件输入模块、测试辅助模块和系统操作模块,其中:
6.元素控件查找模块,通过元素控件查找api与待测安卓系统连接,主要通过封装使用os模块的popen方法调用uiautomator、screencap和adb pull命令来实现元素树获取、屏幕截图获取,然后通过python封装成所需的接口函数对外提供服务;
7.用户事件输入模块,通过用户事件输入api与被测安卓系统连接,主要通过封装使用os模块的popen方法调用input命令以及自定义的命令工具来实现用户事件输入接口函数;
8.测试辅助模块,通过测试辅助api与被测安卓系统连接,主要通过封装使用os模块的popen方法调用logcat、am、pm等命令,结合元素控件查找api实现相应的接口函数;
9.系统操作模块,通过系统操作api与被测安卓系统连接,主要通过封装使用os模块的popen方法调用svc、getprop、setprop、settings、ime、wm、screencap、自定义命令命令来实现相应的接口函数。
10.第二方面,本发明提供一种基于adb的测试驱动方法,包括以下步骤:
11.步骤1、查找目标控件;
12.步骤2、使用元素对应的方法进行用户操作模拟;
13.步骤3、使用python单元测试框架实现用例管理和结果断言。
14.进一步的,所述的结果断言的实现方法为:引用python内置的assert实现结果判
断,通过判断是否存在某一控件是否存在或控件文本是否存在来实现。
15.进一步的,所述的查找目标控件的方法为:实例化一个测试驱动类为设备实例,使用设备实例下面的方法来进行元素定位。
16.第三方面,本发明提供一种存储介质,所述的存储介质中存储有计算机程序,运行该计算机程序,可以执行上述基于adb的测试驱动方法。
17.本发明的基于adb的测试驱动系统,其测试框架是基于python开发的库,只需要一个python就可以直接编写测试脚本测试运行,不需要安装和配置复杂的环境,能和安卓系统进行很好的衔接,有很好的适用性。
附图说明
18.图1为本发明的基于adb的测试驱动系统框架结构示意图;
19.图2为本发明的基于adb的测试驱动方法步骤图。
具体实施方式
20.下面结合附图对本公开实施例进行详细描述。
21.以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
22.本发明的基于adb的测试驱动系统,是基于python开发的库,python是一种跨平台的计算机程序设计语言,是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
23.基于adb的测试驱动系统,包括元素控件查找模块、用户事件输入模块、测试辅助模块和系统操作模块,其中:
24.元素控件查找模块,通过元素控件查找api(application programming interface,应用程序接口)与待测安卓系统连接,主要通过封装使用os(operating system,操作系统)模块的popen方法(进程i/o函数)调用uiautomator、screencap(安卓的截图指令)和adb pull(从手机传送文件到电脑上)来实现元素树获取、屏幕截图获取,然后通过python封装成所需的接口函数对外提供服务。
25.uiautomator是谷歌在android4.1版本发布时推出的一款用java编写的ui测试框架,基于accessibility服务。其最大的特点就是可以跨进程操作,可以使用uiautomator框架提供的一些方便的api来对安卓应用进行一系列的自动化测试操作,如点击、滑动、键盘输入、长按以及常用的断言方法等。
26.adb pull命令:从手机传送文件到电脑上。
27.用户事件输入模块,通过用户事件输入api与被测安卓系统连接,主要通过封装使用os模块的popen方法调用input(输入)命令以及自定义的命令工具来实现常用的用户事
件输入接口函数。
28.测试辅助模块,通过测试辅助api与被测安卓系统连接,主要通过封装使用os模块的popen方法调用logcat(日志抓取命令)、am、pm等命令,结合元素控件查找api类似实现相应的接口函数。
29.am全称activity manager,是android下非常实用命令。
30.pm工具为包管理(package manager)的简称,可以使用pm工具来执行应用的安装和查询应用宝的信息、系统权限、控制应用。
31.系统操作模块,通过系统操作api与被测安卓系统连接,主要通过封装使用os模块的popen方法调用svc、getprop、setprop、settings、ime、wm、screencap、自定义命令等命令来实现相应的接口函数。
32.svc命令行wifi开关、gprs移动数据开关,用来管理电源控制,无线数据。
33.getprop,此命令的原理很简单,就是从系统的各种配置文件中读取信息。
34.setprop,设置指定key的属性值。
35.settings,查看settingscmd.java文件。
36.ime,输入法设置。
37.wm,分辨率相关设置。
38.以上4类函数采用python面向对象的方式设计,均包含在testdriver类下,对外提供各种操作方法。
39.一种基于adb的测试驱动方法,包括以下步骤:
40.步骤1、查找目标控件。
41.进一步的,查找目标控件的方法为:
42.实例化一个测试驱动类为设备实例,使用设备实例下面的方法来进行元素定位。此处的方法是指元素控件定位分类下的所有方法,即元素控件查找模块、用户事件输入模块、测试辅助模块和系统操作模块中包括的所有方法。
43.步骤2、使用元素对应的方法进行用户操作模拟;
44.根据唯一不变化的原则选择定位方式。
45.步骤3、使用python unittest(python单元测试框架)实现用例管理和结果断言。
46.用例管理直接集成unittest类下的testcase,重写其setup、teardown以及testxx方法来实现用例前置条件、测试步骤、期望结果判断等过程描述。
47.结果断言:引用python内置的assert实现结果判断,通过判断是否存在某一控件是否存在或控件文本是否存在来实现,还是根据唯一不变化的原则来确定。
48.下面以测试安卓系统的微信程序的登录为例对本发明的测试方法过程进行详细描述:
49.用例分为3个部分setup、test、teardown。
50.setup:
51.初始化一个测试驱动类实例,打开微信应用。
52.test:
53.通过测试驱动类实例的查找控件方法找到用户名输入框;
54.通过测试驱动类实例的输入文本方法输入用户名到用户名输入框;
55.通过测试驱动类实例的查找控件方法找到密码输入框;
56.通过测试驱动类实例的输入文本方法输入密码到密码输入框;
57.通过测试驱动类实例的查找控件方法找到登录按钮;
58.通过测试驱动类实例的点击方法点击登录按钮;
59.判断通过测试驱动类实例的查找控件方法是否可以找到”我”的按钮来确定是否登录成功。
60.teardown:
61.通过测试驱动类实例的应用退出方法关闭微信应用。
62.一种存储介质,该存储介质中存储有计算机程序,运行该计算机程序,可以执行上述基于adb的测试驱动方法。
63.在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接或彼此可通讯;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
64.以上仅为说明本发明的实施方式,并不用于限制本发明,对于本领域的技术人员来说,凡在本发明的精神和原则之内,不经过创造性劳动所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1