本发明涉及银行移动应用测试领域,特别涉及一种银行手机应用自动化测试方法及系统。
背景技术:
随着移动通信技术和移动互联网技术的高速发展,基于Android和iOS的移动应用也得到了广泛的使用。银行针对移动互联网的发展,也在大力推广移动金融业务,以满足客户的移动业务办理需求,例如微信银行、手机银行、特色O2O应用等等。而目前移动操作系统主要是由谷歌的Android系统和苹果的iOS系统组成,开源的Android系统一方面由于支持的厂商越来越多,另一方面由于系统的更新速度也较快,这导致应用开发商在发布应用前除了要进行功能测试,还需要进行大量的兼容性测试;苹果的iOS系统虽然设备兼容性测试的量小一些,但不同的iOS版本也要进行相应的系统兼容性测试。所以,目前银行移动应用在每次优化上线发布时,都需进行大量的测试。
当前,针对手机移动应用的测试,除了手工测试外,还有基于Android原生SDK的Monkey、Monkey Runner模拟事件流的测试,以及基于Instrumentation(Android 2.2+),UIA utomator(Android 4.3+)的各种Android测试方法和框架;苹果手机主要是基于UIA utomation的测试方法和框架。例如,公开号为104331373A,公布日为2015-02-04的中国发明专利公开了一种Monkey测试系统及方法,该Monkey测试系统可以通过不同测试前的设置来完成相应场景的自动化测试,以减轻手工测试强度。公开号为202334909U,公开日为2012-07-11的中国实用新型专利公开了一种通过图像对比实现自动化测试手机业务的系统,该系统主要通过截取手机实时图像与大量事先驻留的标准图片库进行比对,从而实现对用户手机业务的自动检测。公开号为103064782A,公开日为2013-04-24的中国发明专利公开了一种获取控件的方法及装置,具体公开了一种根据Java的反射机制获取Android手机控件,并进行自动化测试的方法及装置。但是,以上测试方式存在有以下缺陷:
1、现有的自动化测试方法只能单独测试Android设备,或者单独测试iOS设备,而无法同时支持对Android设备和iOS设备的测试,因此实际应用起来比较不方便;
2、现有的自动化测试方法在对控件进行识别时,只能识别常用的控件,而对于某些特殊非标准系统控件(例如加密键盘等)则无法进行识别,只能靠人工手动去测试,这会降低测试速度;在进行图像比对时,则需要预先设置大量特定的场景图片库,这会大大增加实际的测试工作;
3、针对银行移动应用的测试场景,现有的测试方式无法与银行移动业务系统进行实时联动,且无法进行大规模批量并发测试。
技术实现要素:
本发明要解决的技术问题之一,在于提供一种银行手机应用自动化测试方法,通过该方法来实现对银行手机应用的自动化测试,提高测试效率。
本发明是这样实现技术问题之一的:一种银行手机应用自动化测试方法,所述方法包括如下步骤:
步骤1、手机适配器集群监听获取手机设备集群的手机信息,并通过局域网将手机信息发送给自动化测试服务器,自动化测试服务器将手机信息展示到管理终端上;
步骤2、通过管理终端上传银行移动应用APP安装包到自动化测试服务器,并下发安装指令给手机适配器集群,手机适配器集群对接入的手机设备集群进行APP安装;
步骤3、编写Python自动化测试脚本,并通过管理终端将编好的测试脚本上传给自动化测试服务器,其中,所述测试脚本由控件识别以及相应的控件操作组成;
步骤4、通过管理终端从自动化测试服务器中选择Python自动化测试脚本和要测试的手机设备集群,并将测试任务下发给手机适配器集群,由手机适配器集群根据Python自动化测试脚本执行对手机设备集群的测试。
进一步地,在所述步骤3中,所述控件识别具体包括如下步骤:
步骤A1、通过Appium获取和识别手机设备Android或iOS系统的业务操作界面展示的所有控件;
步骤A2、对Appium无法识别的控件进行OCR文本识别;
其中,所述步骤A2具体包括:
步骤A21、截取手机设备当前屏幕图片并保存;
步骤A22、将截取的当前屏幕图片上传给手机适配器,由手机适配器从当前屏幕图片中裁剪出要进行文本识别的控件图片,并对裁剪出的控件图片进行压缩处理;
步骤A23、手机适配器将压缩后的控件图片上传给自动化测试服务器,由自动化测试服务器将控件图片转发给文本识别服务器集群,并通过文本识别服务器集群对控件图片进行文本识别;
步骤A24、文本识别服务器集群将识别出的文本返回给自动化测试服务器,自动化测试服务器将识别出的文本转发给手机适配器。
进一步地,所述步骤4具体包括:
步骤41、通过管理终端向自动化测试服务器下发测试请求,并从自动化测试服务器中选择Python自动化测试脚本和要测试的手机设备集群;
步骤42、自动化测试服务器根据选择的Python自动化测试脚本和要进行测试的手机设备集群将测试任务下发给手机适配器集群;
步骤43、手机适配器集群接收到测试任务后,先通过Appium对接入的各手机设备进行控件识别,然后对Appium识别出的控件进行相应的控件操作;对于通过Appium无法识别的控件,则先对控件进行OCR文本识别,然后对识别出的控件文本进行相应的控件操作,从而完成对各手机设备的自动化测试;在测试过程中所产生的移动应用业务数据,则通过接入手机设备的专用无线网络传送给后台银行移动业务系统;
步骤44、手机适配器集群将测试结果返回给自动化测试服务器,并由自动化测试服务器将测试结果展示到管理终端上。
进一步地,所述控件操作包括点击、输入、触摸、下拉选择以及双击操作。
进一步地,所述手机信息包括手机设备系列号、接入的手机适配器的系统类型、手机设备的系统类型以及手机设备的系统版本。
本发明要解决的技术问题之二,在于提供一种银行手机应用自动化测试系统,通过该系统来实现对银行手机应用的自动化测试,提高测试效率。
本发明是这样实现技术问题之二的:一种银行手机应用自动化测试系统,所述系统包括手机信息获取模块、APP安装模块、脚本上传模块以及自动测试模块:
所述手机信息获取模块,用于手机适配器集群监听获取手机设备集群的手机信息,并通过局域网将手机信息发送给自动化测试服务器,自动化测试服务器将手机信息展示到管理终端上;
所述APP安装模块,用于通过管理终端上传银行移动应用APP安装包到自动化测试服务器,并下发安装指令给手机适配器集群,手机适配器集群对接入的手机设备集群进行APP安装;
所述脚本上传模块,用于编写Python自动化测试脚本,并通过管理终端将编好的测试脚本上传给自动化测试服务器,其中,所述测试脚本由控件识别以及相应的控件操作组成;
所述自动测试模块,用于通过管理终端从自动化测试服务器中选择Python自动化测试脚本和要测试的手机设备集群,并将测试任务下发给手机适配器集群,由手机适配器集群根据Python自动化测试脚本执行对手机设备集群的测试。
进一步地,所述控件识别具体包括Appium识别模块和OCR文本识别模块:
所述Appium识别模块,用于通过Appium获取和识别手机设备Android或iOS系统的业务操作界面展示的所有控件;
所述OCR文本识别模块,用于对Appium无法识别的控件进行OCR文本识别;
其中,所述OCR文本识别模块具体包括:
图片截取单元,用于截取手机设备当前屏幕图片并保存;
图片裁剪单元,用于将截取的当前屏幕图片上传给手机适配器,由手机适配器从当前屏幕图片中裁剪出要进行文本识别的控件图片,并对裁剪出的控件图片进行压缩处理;
文本识别单元,用于手机适配器将压缩后的控件图片上传给自动化测试服务器,由自动化测试服务器将控件图片转发给文本识别服务器集群,并通过文本识别服务器集群对控件图片进行文本识别;
文本转发单元,用于文本识别服务器集群将识别出的文本返回给自动化测试服务器,自动化测试服务器将识别出的文本转发给手机适配器。
进一步地,所述自动测试模块具体包括:
请求单元,用于通过管理终端向自动化测试服务器下发测试请求,并从自动化测试服务器中选择Python自动化测试脚本和要测试的手机设备集群;
任务下发单元,用于自动化测试服务器根据选择的Python自动化测试脚本和要进行测试的手机设备集群将测试任务下发给手机适配器集群;
测试单元,用于手机适配器集群接收到测试任务后,先通过Appium对接入的各手机设备进行控件识别,然后对Appium识别出的控件进行相应的控件操作;对于通过Appium无法识别的控件,则先对控件进行OCR文本识别,然后对识别出的控件文本进行相应的控件操作,从而完成对各手机设备的自动化测试;在测试过程中所产生的移动应用业务数据,则通过接入手机设备的专用无线网络传送给后台银行移动业务系统;
结果显示单元,用于手机适配器集群将测试结果返回给自动化测试服务器,并由自动化测试服务器将测试结果展示到管理终端上。
进一步地,所述控件操作包括点击、输入、触摸、下拉选择以及双击操作。
进一步地,所述手机信息包括手机设备系列号、接入的手机适配器的系统类型、手机设备的系统类型以及手机设备的系统版本。
本发明具有如下优点:1、引入了同时适用Android系统和iOS系统的手机适配器,可以适配不同平台的手机设备实现跨平台的自动化测试,统一了移动端的自动化测试工具,可以降低测试成本,并使测试更加方便;2、对Appium无法识别的控件引入了OCR文本识别技术,可以减少在控件无法识别时需要进行人工手动测试的时间,可以实现银行手机应用的一站式自动化测试服务,提高整体的测试效率;3、可以实现对手机设备集群(包括Android手机设备和iOS手机设备)进行银行移动应用APP批量并行安装以及进行批量并发测试,这可以大大提高实际测试速率,并降低整体的测试成本以及降低应用上线后可能发生的风险问题;且在测试的过程中,可以通过专用无线网络实现手机设备与银行移动业务系统进行实时联动。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明需要使用到的硬件结构框图。
图2为本发明银行手机应用自动化测试方法的流程框图。
图3为本发明中加密键盘的识别示意图。
图4为本发明银行手机应用自动化测试系统的结构框图。
图5为本发明中自动测试模块的结构框图。
图6为本发明进行控件识别的结构框图。
具体实施方式
具体实施例一:
请参照图1至图3所示,一种银行手机应用自动化测试方法,该方法需要提供至少一手机设备集群(Android手机设备集群或者iOS手机设备集群)、一手机适配器集群、一自动化测试服务器、一管理终端、一文本识别服务器集群以及一后台银行移动业务系统,其中,手机设备集群通过USB接入到手机适配器集群,手机设备集群通过专用无线网络接入到后台银行移动业务系统,手机适配器集群连接自动化测试服务器,自动化测试服务器连接文本识别服务器集群、管理终端和后台银行移动业务系统。所述方法包括如下步骤:
步骤1、手机适配器集群监听获取手机设备集群的手机信息,并通过局域网(包括无线局域网或者有线局域网)将手机信息发送给自动化测试服务器,自动化测试服务器将手机信息展示到管理终端上;所述手机信息包括手机设备系列号、接入的手机适配器的系统类型、手机设备的系统类型以及手机设备的系统版本。其中,手机适配器集群会定时监听USB连接手机设备集群(包括Android手机设备和iOS手机设备)的变化情况,Android手机设备监听的是“adb devices”信息,iOS手机设备监听的是“instruments–wdevices”信息,当监听到USB接入手机设备集群时,就通过adb或者instruments获取手机设备集群的手机信息。
步骤2、通过管理终端上传银行移动应用APP安装包到自动化测试服务器,并下发安装指令给手机适配器集群,由手机适配器集群对接入的手机设备集群进行APP批量安装;
步骤3、编写Python自动化测试脚本,并通过管理终端将编好的测试脚本上传给自动化测试服务器,其中,所述测试脚本由控件识别以及相应的控件操作组成;在该步骤3中,所述控件操作包括点击、输入、触摸、下拉选择以及双击操作;
所述控件识别具体包括如下步骤:
步骤A1、通过Appium获取和识别手机设备Android或iOS系统的业务操作界面展示的所有控件;例如,可以通过Appium提供的Android、iOS控件统一的识别方式find_element_by_id、find_element_by_name、find_element_by_link_text、find_element_by_class_name、find_element_by_class_name、find_element_by_accessibility_id等获取常见的Android控件和iOS控件,其中,常见的Android控件包含:Image View、Button、Text View、WebView、List View、Image、Edit Text等;iOS控件包含:UIA Application、UIA Window、UIA Keyboard、UIA Button、UIA Web View、UIA Scroll View、UIA Text Field、UIA Secure Text Field等。
步骤A2、对Appium无法识别的控件进行OCR文本识别;
其中,所述步骤A2具体包括:
步骤A21、截取手机设备当前屏幕图片并保存;
步骤A22、将截取的当前屏幕图片上传给手机适配器,由手机适配器从当前屏幕图片中裁剪出要进行文本识别的控件图片,并对裁剪出的控件图片进行压缩处理;
步骤A23、手机适配器将压缩后的控件图片上传给自动化测试服务器,由自动化测试服务器将控件图片转发给文本识别服务器集群(在具体实施时,可以通过负载均衡设备来实现将控件图片分发给各文本识别服务器),并通过文本识别服务器集群对控件图片进行文本识别;
步骤A24、文本识别服务器集群将识别出的文本返回给自动化测试服务器,自动化测试服务器将识别出的文本转发给手机适配器。
请重点参照图3所示,下面以加密键盘为例来对特殊非标准控件的文本识别做进一步说明:
B1、截取手机设备的当前屏幕图片,并将当前屏幕图像保存到手机设备中;
B2、通过手机设备将截取的当前屏幕图片上传给手机适配器,由手机适配器从当前屏幕图片中裁剪出加密键盘图片,并对裁剪出的加密键盘图片进行压缩处理;
B3、手机适配器将压缩后的加密键盘图片上传给自动化测试服务器,由自动化测试服务器将加密键盘图片转发给对应的OCR文本识别服务器,OCR文本识别服务器先识别出加密键盘的数字系列文本,得到带顺序的数字文本矩阵;
然后,建立各数字坐标的二维映射:
其中,width为手机设备屏幕的宽度,height为加密键盘的高度,(X’,Y’)为加密键盘左上角第一个数字在整体手机设备屏幕的绝对坐标,a∈[0,1,2],b∈[0,1,2,3];
B4、根据各数字坐标(X,Y)进行相关的触摸操作,完成密码输入。
步骤4、通过管理终端从自动化测试服务器中选择Python自动化测试脚本和要测试的手机设备集群,并将测试任务下发给手机适配器集群(在实施时,可以采用负载均衡设备来分发测试任务给各手机适配器),由手机适配器集群根据Python自动化测试脚本执行对手机设备集群的测试。该步骤4具体包括:
步骤41、通过管理终端向自动化测试服务器下发测试请求,并从自动化测试服务器中选择Python自动化测试脚本和要测试的手机设备集群;
步骤42、自动化测试服务器根据选择的Python自动化测试脚本和要进行测试的手机设备集群将测试任务下发给手机适配器集群;
步骤43、手机适配器集群接收到测试任务后,先通过Appium对接入的各手机设备进行控件识别,然后对Appium识别出的控件进行相应的控件操作;对于通过Appium无法识别的控件,则先对控件进行OCR文本识别,然后对识别出的控件文本进行相应的控件操作,从而完成对各手机设备的自动化测试;同时,在测试过程中所产生的移动应用业务数据(例如App登陆、转账、汇款等业务数据),则通过接入手机设备的专用无线网络传送给后台银行移动业务系统;
步骤44、手机适配器集群将测试结果返回给自动化测试服务器,并由自动化测试服务器将测试结果展示到管理终端上。
具体实施例二:
请参照图1、图3-6所示,一种银行手机应用自动化测试系统,该系统需要提供至少一手机设备集群(Android手机设备集群或者iOS手机设备集群)、一手机适配器集群、一自动化测试服务器、一管理终端、一文本识别服务器集群以及一后台银行移动业务系统,其中,手机设备集群通过USB接入到手机适配器集群,手机设备集群通过专用无线网络接入到后台银行移动业务系统,手机适配器集群连接自动化测试服务器,自动化测试服务器连接文本识别服务器集群、管理终端和后台银行移动业务系统。所述系统包括手机信息获取模块、APP安装模块、脚本上传模块以及自动测试模块:
所述手机信息获取模块,用于手机适配器集群监听获取手机设备集群的手机信息,并通过局域网(包括无线局域网或者有线局域网)将手机信息发送给自动化测试服务器,自动化测试服务器将手机信息展示到管理终端上;所述手机信息包括手机设备系列号、接入的手机适配器的系统类型、手机设备的系统类型以及手机设备的系统版本。其中,手机适配器集群会定时监听USB连接手机设备集群(包括Android手机设备和iOS手机设备)的变化情况,Android手机设备监听的是“adb devices”信息,iOS手机设备监听的是“instruments–w devices”信息,当监听到USB接入手机设备集群时,就通过adb或者instruments获取手机设备集群的手机信息。
所述APP安装模块,用于通过管理终端上传银行移动应用APP安装包到自动化测试服务器,并下发安装指令给手机适配器集群,由手机适配器集群对接入的手机设备集群进行APP批量安装;
所述脚本上传模块,用于编写Python自动化测试脚本,并通过管理终端将编好的测试脚本上传给自动化测试服务器,其中,所述测试脚本由控件识别以及相应的控件操作组成;在该脚本上传模块中,所述控件操作包括点击、输入、触摸、下拉选择以及双击操作;
请重点参照图6所示,所述控件识别具体包括Appium识别模块和OCR文本识别模块:
所述Appium识别模块,用于通过Appium获取和识别手机设备Android或iOS系统的业务操作界面展示的所有控件;例如,可以通过Appium提供的Android、iOS控件统一的识别方式find_element_by_id、find_element_by_name、find_element_by_link_text、find_element_by_class_name、find_element_by_class_name、find_element_by_accessibility_id等获取常见的Android控件和iOS控件,其中,常见的Android控件包含:ImageView、Button、Text View、Web View、List View、Image、Edit Text等;iOS控件包含:UIA Application、UIA Window、UIA Keyboard、UIA Button、UIAWeb View、UIA Scroll View、UIA Text Field、UIA Secure Text Field等。
所述OCR文本识别模块,用于对Appium无法识别的控件进行OCR文本识别;
其中,所述OCR文本识别模块具体包括:
图片截取单元,用于截取手机设备当前屏幕图片并保存;
图片裁剪单元,用于将截取的当前屏幕图片上传给手机适配器,由手机适配器从当前屏幕图片中裁剪出要进行文本识别的控件图片,并对裁剪出的控件图片进行压缩处理;
文本识别单元,用于手机适配器将压缩后的控件图片上传给自动化测试服务器,由自动化测试服务器将控件图片转发给文本识别服务器集群(在具体实施时,可以通过负载均衡设备来实现将控件图片分发给各文本识别服务器),并通过文本识别服务器集群对控件图片进行文本识别;
文本转发单元,用于文本识别服务器集群将识别出的文本返回给自动化测试服务器,自动化测试服务器将识别出的文本转发给手机适配器。
请重点参照图3所示,下面以加密键盘为例来对特殊非标准控件的文本识别做进一步说明:
B1、截取手机设备的当前屏幕图片,并将当前屏幕图像保存到手机设备中;
B2、通过手机设备将截取的当前屏幕图片上传给手机适配器,由手机适配器从当前屏幕图片中裁剪出加密键盘图片,并对裁剪出的加密键盘图片进行压缩处理;
B3、手机适配器将压缩后的加密键盘图片上传给自动化测试服务器,由自动化测试服务器将加密键盘图片转发给对应的OCR文本识别服务器,OCR文本识别服务器先识别出加密键盘的数字系列文本,得到带顺序的数字文本矩阵;
然后,建立各数字坐标的二维映射:
其中,width为手机设备屏幕的宽度,height为加密键盘的高度,(X’,Y’)为加密键盘左上角第一个数字在整体手机设备屏幕的绝对坐标,a∈[0,1,2],b∈[0,1,2,3];
B4、根据各数字坐标(X,Y)进行相关的触摸操作,完成密码输入。
所述自动测试模块,用于通过管理终端从自动化测试服务器中选择Python自动化测试脚本和要测试的手机设备集群,并将测试任务下发给手机适配器集群(在实施时,可以采用负载均衡设备来分发测试任务给各手机适配器),由手机适配器集群根据Python自动化测试脚本执行对手机设备集群的测试。该自动测试模块具体包括:
请求单元,用于通过管理终端向自动化测试服务器下发测试请求,并从自动化测试服务器中选择Python自动化测试脚本和要测试的手机设备集群;
任务下发单元,用于自动化测试服务器根据选择的Python自动化测试脚本和要进行测试的手机设备集群将测试任务下发给手机适配器集群;
测试单元,用于手机适配器集群接收到测试任务后,先通过Appium对接入的各手机设备进行控件识别,然后对Appium识别出的控件进行相应的控件操作;对于通过Appium无法识别的控件,则先对控件进行OCR文本识别,然后对识别出的控件文本进行相应的控件操作,从而完成对各手机设备的自动化测试;同时,在测试过程中所产生的移动应用业务数据(例如App登陆、转账、汇款等业务数据),则通过接入手机设备的专用无线网络传送给后台银行移动业务系统;
结果显示单元,用于手机适配器集群将测试结果返回给自动化测试服务器,并由自动化测试服务器将测试结果展示到管理终端上。
综上所述,本发明具有如下优点:1、引入了同时适用Android系统和iOS系统的手机适配器,可以适配不同平台的手机设备实现跨平台的自动化测试,统一了移动端的自动化测试工具,可以降低测试成本,并使测试更加方便;2、对Appium无法识别的控件引入了OCR文本识别技术,可以减少在控件无法识别时需要进行人工手动测试的时间,可以实现银行手机应用的一站式自动化测试服务,提高整体的测试效率;3、可以实现对手机设备集群(包括Android手机设备和iOS手机设备)进行银行移动应用APP批量并行安装以及进行批量并发测试,这可以大大提高实际测试速率,并降低整体的测试成本以及降低应用上线后可能发生的风险问题;且在测试的过程中,可以通过专用无线网络实现手机设备与银行移动业务系统进行实时联动。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。