一种基于Android多浏览器内核的自动化测试方法与流程

文档序号:11216191阅读:792来源:国知局
一种基于Android多浏览器内核的自动化测试方法与流程

本发明涉及android移动应用研发及软件测试领域,尤其涉及一种基于android多浏览器内核的自动化测试方法。



背景技术:

随着移动互联网的高度普及、html5规范标准的确立和技术成熟,以及各终端设备硬件性能和浏览器内核的日趋发展,基于html5的webapp或微信公众号微网站及微服务已经成为移动互联网应用的重要组成部分。如今,html5化的webapp呈现出易于开发、迭代迅速、易于传播等特性,已经被广泛应用于移动电商、移动办公、新闻资讯、视频游戏等各个领域。但由于移动互联网用户的手机终端各种个性化需求存在,导致浏览和使用webapp的浏览器(包括微信、微博等应用内嵌浏览器)呈现多样性,也就导致了一系列的因浏览器内核不同出现不同程度的ui及功能上的兼容性问题。android因其开源开放的生态,其兼容性问题表现得尤为凸显,而ios研发生态和体系较为封闭,webapp基本都是基于safari浏览器和对应内核,兼容性问题呈现较少。所以,本发明旨在找到一种行之有效的方法,集成适用于android系统的不同浏览器内核,通过javascript脚本语言提供测试脚本,仅在单机设备上,即可集中完成多浏览器内核下的兼容性自动化测试。



技术实现要素:

针对现有技术存在的不足之处,本发明的目的在于提供一种基于android多浏览器内核的自动化测试方法,该方法包括android系统上主流四种主流浏览器内核即webkit、blink、chromium、腾讯x5的集成,以满足基本全覆盖android系统的自带浏览器、第三方浏览器、微信微博内嵌浏览器等平台上发布的webapp的自动化兼容性测试。

本发明的目的通过下述技术方案实现:

一种基于android多浏览器内核的自动化测试方法,其方法步骤如下:

步骤a、在集成adt、androidstudio或intellijidea的android开发环境下创建工程,在该工程中分别引入webkit、blink、chromium、腾讯x5四种不同的浏览器内核的官方sdk,该官方sdk包括jar包、so库;

步骤b、在android开发环境或步骤a的工程中构造superwebview基类,并引入这四种内核的webview类作为成员变量;

步骤c、设置webview类的成员变量为coretype,用以标记当前测试对象使用的浏览器内核类型,coretype包含core_webkit、core_blink、core_chromium、core_x5共四个常量;

步骤d、结合switch分支逻辑判断,重写superwebview基类构造函数和浏览器常用函数;

步骤e、在步骤d的构造函数中做好相应的初始化配置,以开启浏览器对象对javascript的支持;

步骤f、为superwebview基类编写starttest(url,scripts[])函数,以针对待测地址url,按照scripts[]数组的顺序地执行测试脚本;

步骤g、将待测webapp以域名形式发布至内网或公网中,通过url即可访问;

步骤h、利用javascript脚本语言,为待测webapp编写若干后缀名*.js的测试脚本,其核心方法是利用包括模拟点击、模拟滚动、模拟输入、模拟延时、模拟循环方法对待测webapp页面的dom元素进行模拟操作测试;

步骤i、通过if-else条件判断语句,判断是否达到脚本最终预期运行状态;同时,结合webview记录报错日志,编写superwebview的testjudger模块,通过该testjudger模块最终形成通过率及错误率的报告。

本发明较现有技术相比,具有以下优点及有益效果:

本发明包括android系统上主流四种主流浏览器内核即webkit、blink、chromium、腾讯x5的集成,以满足基本全覆盖android系统的自带浏览器、第三方浏览器、微信微博内嵌浏览器等平台上发布的webapp的自动化兼容性测试。

附图说明

图1是本发明的superwebview基类的结构示意图;

图2是本发明的自动化测试流程示意图。

具体实施方式

下面结合实施例对本发明作进一步地详细说明:

实施例

如图1、图2所示,一种基于android多浏览器内核的自动化测试方法,android多内核自动化测试方法是用android原生代码开发一个能兼容不同浏览器内核的superwebview基类,并让其继承webview的所有常用操作,通过coretype变量标记当前测试内核类型,在此基础上扩展提供starttest(url,scripts[])方法来提供针对域名形式发布的webapp在scripts[]测试脚本集合上的兼容性测试,而scripts[]的测试脚本是由若干后缀名*.js的基于javascript脚本语言编写的自动化测试用例脚本。其具体方法步骤如下:

步骤a、在集成adt、androidstudio或intellijidea的android开发环境下创建工程,在该工程中分别引入webkit、blink、chromium、腾讯x5四种不同的浏览器内核的官方sdk,该官方sdk包括jar包、so库;

步骤b、在android开发环境或步骤a的工程中构造superwebview基类,并引入这四种内核的webview类作为成员变量;

步骤c、设置webview类的成员变量为coretype,用以标记当前测试对象使用的浏览器内核类型,coretype包含core_webkit、core_blink、core_chromium、core_x5共四个常量;

步骤d、结合switch分支逻辑判断,重写superwebview基类构造函数和浏览器常用函数;

步骤e、在步骤d的构造函数中做好相应的初始化配置,以开启浏览器对象对javascript的支持;

步骤f、为superwebview基类编写starttest(url,scripts[])函数,以针对待测地址url,按照scripts[]数组的顺序地执行测试脚本(其具体流程请见图2);

步骤g、将待测webapp以域名形式发布至内网或公网中,通过url即可访问;

步骤h、利用javascript脚本语言,为待测webapp编写若干后缀名*.js的测试脚本,其核心方法是利用包括模拟点击、模拟滚动、模拟输入、模拟延时、模拟循环方法对待测webapp页面的dom元素进行模拟操作测试;

步骤i、通过if-else条件判断语句,判断是否达到脚本最终预期运行状态;同时,结合webview记录报错日志,编写superwebview的testjudger模块,通过该testjudger模块最终形成通过率及错误率的报告。

superwebview基类的具体实现方法如下:

⑴定义枚举类型,包括四个静态常量:

core_webkit=0;//webkit内核类型

core_blink=1;//blink内核类型

core_chromium=2;//chromium内核类型

core_x5=3;//腾讯x5内核类型

⑵申明当前浏览器内核类型标识变量coretype,并完成初始化定义:

coretype=core_webkit;

⑶提供加载url方法,其接口原型为:

publicvoidloadurl(stringurl);

⑷提供开始自动化测试方法,其接口原型为:

publicvoidstarttest(stringurl,strings[]scrips);

⑸实现测试脚本加载器scriptsloader{}

⑹实现测试判断器testjudger{}

测试用例脚本的编写方法可以具体概括为:

模拟点击object.click(),以id为targetobject的按钮为例:

document.getelementbyid(“targetobject”).click();

模拟滚动window.scrollto(),以滚动到1/2文档高度为例:

window.scrollto(0,document.body.offsetheight/2);

模拟输入object.innerhtml=xxx,以id为targetedit的输入框为例:

document.getelementbyid(“targetedit”).innerhtml=”代输入数据”;

模拟延时settimeout(执行func,延时),以延时1000ms为例:

settimeout(testfunc(),1000);

模拟循环setinterval(执行func,间隔),以间隔1000ms为例:

setinterval(testfunc(),1000);

其对于清除循环的方法为:clearinterval()。

scriptsloader的具体实现方法为:

将测试用例脚本的编写方法中所编写的测试用例脚本放置在手机内置或外置sd存储卡中,并给出其文件存储路径,将其以string[]scripts的参数形式传给scriptsloader,由scriptsloader开启一个线程thread,按行分别取出javascript语句,假设句柄字串为handlestr1、handlestr2、handlestr3…,并以间隔1000ms,通知主线程,利用loadurl(“javascript:”+handlestr)的方式执行,直至当前脚本句柄全部完成为止,又继续循环执行下一个脚本。待所有脚本执行完毕,线程结束。

testjudger的具体实现方法为:

webview内在的html、css、javascript解释器,在运行出错时,会自动反馈错误异常句柄,testjudger主要需要拦截异常事件,并分别统计每个测试脚本的异常个数和具体异常代码行。若测试脚本无法完整执行,则在报告提示正确执行到的脚步句柄行数(handlen);若测试脚本能够完整执行,则统计整个脚本完整执行的耗时。结合javascript的if-else条件判断语句,通过是否到达预期页面,或出现预期dom元素结果,来判别是否完正确执行完成测试脚本。

核心指标如下:

运行完整度(100%):正确运行行数/脚本完整行数。

错误数(个):由webview内核截获的javascript报错数。

错误日志:由webview返回的异常代码段及错误异常原因+测试用例脚本异常行号。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1