一种Android程序的自动测试方法

文档序号:6438171阅读:148来源:国知局
专利名称:一种Android程序的自动测试方法
一种Android程序的自动测试方法
技术领域
本发明涉及一种Android程序的自动测试方法。背景技术
程序的测试,一直都是应用程序开发中非常关键也是非常繁琐的一环,稳定性测试与批量测试更是其中最为耗时最为繁琐的一个阶段。常见的传统测试方法主要有(1) 人工模拟用户操作进行黑盒测试;( 通过外挂程序或程序自身模块,读取编写好的键码文件,进行批量测试。二者都存在缺点人工黑盒测试会耗费非常多的人力和物力;使用编写的键码文件,在键码编写时非常繁琐且不够直观。另外,Android应用层程序对于硬件设备的访问权限非常有限,难以实现对触摸屏和键盘的全局录制。以下是申请人检索到的有关Android程序的自动测试方法2011-08-03公开的,公开号为102141960A的中国发明公开了一种基于Android的自动化测试方法,包括步骤1、调用Android的各类测试程序及内部shell指令;步骤2、对各类测试程序及内部shell指令进行编代码;步骤3、编代码后形成一系列可随机调用测试序列,并产生相应的测试事件;步骤4、代码编写完成后,并预留存储空间以备编写扩展接口程序;步骤5、将代码通过Linux编译环境进行编译,形成可执行文件;步骤6、可执行文件在测试时调用Android的monkey随机测试命令对各类测试程序进行随机测试。该发明主要是将各类自动化测试进行集成,只需手机就能进行自动化测试,效率高。但该方案还是需要人工进行测试脚本的编写,无法实现脚本的录制,当需要测试的内容较多时,脚本编写的工作量巨大。2011-06- 公开的,公开号为102110053A的中国发明公开了一种基于Android的随机测试方法,其步骤如下1、使用Windows的CMD命令引导用户进行测试;2、使用CMD命令调用各个.bat文件进行monkey测试;3、使用CMD命令帮助monkey产生随机参数;4、使用monkey命令进行随机测试;5、使用CMD命令导出monkey的log日志文件;6、使用CMD命令筛选monkey出现的log日志文件;7、使用CMD命令来判断文件是否被占用从而判断测试程序是否继续。windows的CMD命令与android的Monkey命令集合起来,使手机的软件测试简单化,且提高测试效率,降低使用门槛。该技术方案仅仅是通过CMD命令简化脚本的编写,依旧没有实现“所见即得”的直接录制功能。2011-05-11公开的,公开号为102053911A的中国发明提供了一种基于Android的自动化测试方法、系统及其移动终端,首先获取被测程序的至少一界面元素的坐标,即便与该被测程序不属于同一进程,仍可根据该界面元素的坐标向被测程序的某界面元素发送模拟操作指令,以进行跨进程的自动化测试,因此其测试的覆盖面更广;并且,该发明自动化测试技术不需要白盒测试,因此能有效保证程序代码的安全性;另外,本发明利用技术完全模拟人机交互功能,从而减少程序开发周期,减少测试开发的人力资本,提高测试效率。该方法获取到的数据仅是被测程序处于活动状态的页面的元素,获取到元素后依旧需要后续添加测试逻辑,无法直观的进行测试的录制操作。并且,当被测程序的待测页面并不处于活动状态时,该方法无法获取到指定的页面元素,也就无法进行测试。
发明内容本发明要解决的技术问题,在于提供一种Android程序的自动测试方法,可以实现对触摸屏和键盘的全局录制,而且不受硬件设备访问权限的影响。本发明是这样实现的一种Android程序的自动测试方法,其包括如下步骤步骤10、通过Android模拟器录制用户操作,该操作被Android操作系统写入串口,再导出串口数据为二进制文件;步骤20、格式化上述二进制文件为程序可识别的键码文件;步骤30、应用所述键码文件进行自动测试。其中,所述步骤10具体为(1)运行 Android 模拟器;(2)进入Android远程终端,方法为运行命令~ /AndroidSDKPath/adb.exe shell ;(3)在远程终端中导出串口数据,方法为运行命令cat/dev/input/eventO > /sdcard/dump. bin ;该命令将/dev/input/eventO 的串口数据导出到Android模拟器的/sdcard/dump. bin文件中,执行该命令后,所有对该串口写入的数据,都将同时被写入到指定的文件中;(4)在模拟器上模拟用户操作;(5)录制结束后,在远程终端中按Ctrl+C结束录制操作,最终得到的dump, bin文件即为所述二进制文件。该步骤( 中的dump, bin文件是按照固定的格式存储用户的触摸屏和键盘操作,dump, bin文件包含以下重要信息a、触摸屏事件,包括按下、移动、弹起以及触摸的坐标;b、键盘事件,包括按下、弹起以及所按按键的键值;C、每个事件的时间戳。所述步骤30具体是测试人员手动控制程序开始自动键码测试;或者是程序启动时自动向服务器查询是否需要自动测试,若需要则自动从服务器下载键码文件并自动开始进行测试。本发明具有如下优点1、本发明采用串口导出二进制文件的方式进行操作的录制,解决了现有技术中由于权限受限和Android接口的缺乏,Android的应用层程序难以实现对触摸屏和键盘设备的操作进行直接录制的问题;2、本发明采用Android模拟器进行串口数据的导出,并根据该导出文件转换为应用层可识别的包含虚拟键值的键码文件,并不受硬件设备的影响现有技术中Android的串口数据是未格式化的二进制数据,其受硬件的影响较大,例如,触摸屏数据可能因硬件不同而有不同的校准参数,使得不同设备间的坐标信息不统一;相对的,Android应用层提供了虚拟键值等抽象层的外设输入数据,该数据在Android应用层可以确保唯一且不会随系统版本和硬件的变动而改变,而本发明利用 Android模拟器提供一个虚拟的硬件环境,在该环境中所有硬件设备都相对统一,因此可以通过Android模拟器进行串口数据的导出,并根据该导出文件转换为应用层可识别的包含虚拟键值的键码文件,来确保最终转换得到的键码的通用性不受硬件设备的影响;
3、本发明能够实现在程序出现错误时自动停止键码的自动播放与录制键码的方法不同,本发明将在应用层实现键码的播放,能够实现在程序出现错误时自动停止键码的自动播放,其主要应用了 Android系统的以下两个特性(1) Android应用层程序在出现未捕捉的程序异常时,系统会弹出一个错误提示框,必须由用户点击确定后才会退出应用程序(该提示框属于系统进程,不属于应用程序);(2)Android应用层提供模拟触摸屏和键盘操作的接口,但只允许针对程序自身,若向外部程序或进程模拟用户操作,将抛出异常。当程序出现错误时,系统将弹出提示框,若此时自动键码发送模拟数据将抛出异常,通过捕捉该异常即可在适当时机停止键码的自动播放,并可实现额外操作,例如保存错误信息或状态信息到文件中,极大的方便了程序的调试。

下面参照附图结合实施例对本发明作进一步的说明。图1为本发明方法的流程框图。
具体实施方式请参考图1所示,本发明方法包括如下步骤步骤10、通过Android模拟器录制用户操作,该操作被Android操作系统写入串口,再导出串口数据为二进制文件为了方便开发人员进行调试,Google提供了非常简便易用的Android模拟器,并且该模拟器可以独立于开发环境独立运行,因此我们可以方便的使用模拟器来录制所需的用户操作。Android是基于Linux的操作系统,所有外设输入(包括触摸屏、键盘)都将写入数据到串口,因此即可通过读取串口数据来获取用户进行的操作。其具体方法为(1)运行 Android 模拟器;(2)进入Android远程终端,方法为运行命令~ /AndroidSDKPath/adb. exe shell ;(3)在远程终端中导出串口数据,方法为运行命令cat/dev/input/eventO > /sdcard/dump, bin ;该命令将/dev/input/eventO的串口数据导出到Android模拟器的/sdcard/ dump, bin文件中,执行该命令后,所有对该串口写入的数据,都将同时被写入到指定的文件中;(4)在模拟器上模拟用户操作;(5)录制结束后,在远程终端中按Ctrl+C结束录制操作,最终得到的dump, bin文件即为我们所需要的二进制文件。步骤20、格式化上述二进制文件为程序可识别的键码文件上述步骤(5)中的dump, bin文件按照固定的格式存储用户的触摸屏和键盘操作, 因此,可以将其解码为程序可识别且程序员易读的键码文件,其中键码文件的格式可自行定义。
上述dump, bin文件中包含以下重要信息(1)触摸屏事件(包括按下、移动、弹起),以及触摸的坐标;(2)键盘事件(包括按下、弹起),以及所按按键的键值;(3)每个事件的时间戳;通过以上信息,即可记录用户对触摸屏和键盘操作的所有信息。步骤30、应用键码文件进行自动测试Android提供模拟用户触摸屏和键盘操作的接口,在得到具体的键码后,即可在程序中通过键码进行自动测试,包括但不限于以下方法测试人员手动控制程序开始自动键码测试;或者是在程序启动时自动向服务器查询是否需要自动测试,若需要则自动从服务器下载键码文件并自动开始进行测试。综上所述,本发明具有如下优点1、现有技术中由于权限问题和Android接口的缺乏,Android的应用层程序难以实现对触摸屏和键盘设备的操作进行直接录制,而本发明采用外部直接读取串口数据的方式,可以便捷的实现对这些用户操作的完整录制,并且与具体应用没有关联;2、本发明采用Android模拟器进行串口数据的导出,并根据该导出文件转换为应用层可识别的包含虚拟键值的键码文件,并不受硬件设备的影响现有技术中Android的串口数据是未格式化的二进制数据,其受硬件的影响较大,例如,触摸屏数据可能因硬件不同而有不同的校准参数,使得不同设备间的坐标信息不统一;相对的,Android应用层提供了虚拟键值等抽象层的外设输入数据,该数据在Android应用层可以确保唯一且不会随系统版本和硬件的变动而改变,而本发明利用 Android模拟器提供一个虚拟的硬件环境,在该环境中所有硬件设备都相对统一,因此可以通过Android模拟器进行串口数据的导出,并根据该导出文件转换为应用层可识别的包含虚拟键值的键码文件,来确保最终转换得到的键码的通用性不受硬件设备的影响;3、本发明能够实现在程序出现错误时自动停止键码的自动播放与录制键码的方法不同,本发明将在应用层实现键码的播放,能够实现在程序出现错误时自动停止键码的自动播放,其主要应用了 Android系统的以下两个特性(1) Android应用层程序在出现未捕捉的程序异常时,系统会弹出一个错误提示框,必须由用户点击确定后才会退出应用程序(该提示框属于系统进程,不属于应用程序);(2)Android应用层提供模拟触摸屏和键盘操作的接口,但只允许针对程序自身,若向外部程序或进程模拟用户操作,将抛出异常。当程序出现错误时,系统将弹出提示框,若此时自动键码发送模拟数据将抛出异常,通过捕捉该异常即可在适当时机停止键码的自动播放,并可实现额外操作,例如保存错误信息或状态信息到文件中,极大的方便了程序的调试。虽然以上描述了本发明的具体实施方式
,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
权利要求
1.一种Android程序的自动测试方法,其特征在于包括如下步骤步骤10、通过Android模拟器录制用户操作,该操作被Android操作系统写入串口,再导出串口数据为二进制文件;步骤20、格式化上述二进制文件为程序可识别的键码文件;步骤30、应用所述键码文件进行自动测试。
2.根据权利要求1所述的一种Android程序的自动测试方法,其特征在于所述步骤 10具体为(1)运行Android模拟器;(2)进入Android远程终端,方法为运行命令 /AndroidSDKPath/adb. exe shell ;(3)在远程终端中导出串口数据,方法为运行命令cat/dev/input/eventO > /sdcard/dump. bin ;该命令将/dev/input/eventO 的串口数据导出到Android模拟器的/sdcard/dump. bin文件中,执行该命令后,所有对该串口写入的数据,都将同时被写入到指定的文件中;(4)在模拟器上模拟用户操作;(5)录制结束后,在远程终端中按Ctrl+C结束录制操作,最终得到的dump,bin文件即为所述二进制文件。
3.根据权利要求2所述的一种Android程序的自动测试方法,其特征在于所述步骤 (5)中的dump, bin文件是按照固定的格式存储用户的触摸屏和键盘操作,dump, bin文件包含以下重要信息a、触摸屏事件,包括按下、移动、弹起以及触摸的坐标;b、键盘事件,包括按下、弹起以及所按按键的键值;C、每个事件的时间戳。
4.根据权利要求2所述的一种Android程序的自动测试方法,其特征在于所述步骤 30具体是测试人员手动控制程序开始自动键码测试;或者是程序启动时自动向服务器查询是否需要自动测试,若需要则自动从服务器下载键码文件并自动开始进行测试。
全文摘要
本发明提供一种Android程序的自动测试方法,包括步骤10、通过Android模拟器录制用户操作,该操作被Android操作系统写入串口,再导出串口数据为二进制文件;步骤20、格式化上述二进制文件为程序可识别的键码文件;步骤30、应用所述键码文件进行自动测试。通过本发明方法可以实现对触摸屏和键盘的全局录制,而且不受硬件设备访问权限的影响。
文档编号G06F11/36GK102521118SQ20111035925
公开日2012年6月27日 申请日期2011年11月11日 优先权日2011年11月11日
发明者李中冬, 陈节省 申请人:福建星网视易信息系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1