搜索
您的当前位置:首页正文

Android移动终端稳定性自动化测试系统的研究*

来源:小奈知识网
广电风向标●技术前沿●广电网络●数字电视●NGB综合技术实验室专栏●广达新网专栏●吉视汇通专栏●Android移动终端稳定性自动化测试系统的研究黎伟毅 郭太良 林志贤 福州大学物理与信息工程学院摘要:针对Android移动终端稳定性测试中效率低、工作量大等问题,提出了基于UiAutomator工具的自动化测试方法,并研究与设计了自动化测试系统,包括连接模块、上传模块、控制测试模块和结果分析模块,最终实现一键自动化测试,基于Nelson模型对测试结果进行分析,计算出Android移动终端的稳定性系数。实际应用表明,设计的自动化测试系统效果良好,能够很好地替代手工测试,发现自动化测试相比手工测试节约了3/4的测试时间,有效地提高了测试效率以及节约了人力资源。关键词:Android移动终端 稳定性测试 UiAutomator工具 自动化测试系统 Nelson模型 稳定性系数*1 引言随着互联网和移动通信技术的高速发展,移动终端如智能手机、智能平板电脑已经成为了我们工作生活中必需的一部分。目前,市场上大多数移动终端选择Android操作系统。相较于手工测试,自动化测试可以极大地减轻测试人员的工作量、提高测试效率。目前,稳定性自动化测试大多使用Monkey工具,但此工具只能进行随机测试,测试步骤、数据等不能进行自定义。本文基于UiAutomator工具实现固定事件测试,具有更好的自动化测试效果,研究与设计了自动化测试系统,实现一键自动化测试。要求4.1以上版本。通过模拟人工进行单击、滑动、输入文本等操作,能进行跨应用程序测试。利用UiAutomator替代人工的反复操作,从而有效地节约人力资源和提高测试效率。在长时间运行后或多次使用后仍能保证正常工作且不出现异常。3.1 Android稳定性自动化测试项目针对Android移动终端进行分模块稳定性测试,如图1所示,包括无线网络稳定性测试、有线网络稳定性测试、蓝牙稳定性测试等。2.2 ADB命令工具ADB是Android SDK里的一个工具,它是一个客户端—服务器端程序,用这个工具可以直接操作管理Android模拟器或者真实的Android移动终端,通过它,我们可以在电脑上建立一个连接到Android移动终端的通道,然后可以在PC端向Android移动终端发送指令,完成一些我们需要做的工作。3.2 Android稳定性自动化测试用例测试用例的设计方法主要包括:等价划分法、边界值分析法、错误推测法、边界值分析法、错误推测法、错误推测法、状态迁移图法。如表1所示,举例列出无线网络稳定性测试用例。2 Android自动化测试工具及ADB命令工具2.1 Android自动化测试工具UiAutomator是由Google公司开发的一种自动化测试工具,Android SDK*3 Android稳定性需求分析对于Android移动终端来说,需保证整体系统的稳定性以及个体应用程序的稳定性。用户希望系统在长时间运行后或多个程序运行时,不会出现重启或死机的情况;个体应用程序4 Android稳定性自动化 测试系统4.1 自动化测试流程Android自动化测试过程的主要活动包括:构建测试模型、搭建测试环基金项目:国家重点研发计划课题(No.2016YFB0401503);福建省科技重大专项(No.2014HZ0003-1);广东省科技重大专项(No.2016B090906001);福建省资助省属高校专项课题(No.JK2014002)40《有线电视技术》 2017年第3期 总第327期天威网络技术专栏运营商专栏●●境、生成测试用例、执行自动化测试、分析结果和排错与回归测试,具体流程如图2所示。4.2 基于UiAutomator实现固定事件测试通过Android SDK Tools中的UiAutomatorviewer对Android移动终端进行扫描以及分析UI部件,获取控件属性信息,如图3所示,如text信息、resource-id信息等;然后通过eclipse创建java project,如图4所示,根据UiAutomator的五大组件(UiDevice、UiCollection、UiScrollable、UiObject、UISelector)编写测试代码,对Android移动终端进行模拟手工操作,如点击、滑动、截屏等,每次测试结束后自动判定测试结果,主要有以下三种判定方法。(1)通过ping命令来判定网络连接是否正常,工作原理是:通过PC机向待测的Android移动终端发送ICMP报文,等待Android移动终端是否接受并返回一样的ICMP报文,如果正常接受并返回,则判定Android移动终端网络连接正常。(2)测试完成后,通过获取最终界面中关键控件的状态来判定测试结果,如判断该控件是否存在、是否已点击等。例如,表1中的无线网络稳定性测试II,进入百度新闻网站后,通过判定“Baidu新闻”的Logo是否存在来判定测试结果。(3)首先对Android移动终端测试中的屏幕图像进行截屏并保存,然后与预留的正常图像进行比对,从而判定测试结果。自动判断测试结果为成功或失败,重复指定次数测试后,最后保存测试成功次数/失败次数和测试日志,从运维管理节目制播实践应用行业动态●●●●而实现稳定性测试的目的。4.3.1 连接模块4.3 自动化测试系统组成模块执行测试所需的条件,包括必备的硬件设备以及软件程序。自动化测试系统由以下模块组(1)待测设备:Android移动终成:连接模块、上传模块、控制测试端,如智能手机、平板电脑,已安装模块、结果分析模块。Android系统。● 数图1 Android移动终端稳定性测试字电视表1 无线网络稳定性测试用例测试用例测试步骤预期结果1.连接无线网络无线网络稳定性测试I2.无线网络on/off能正常连接网络并且能3.重复测试100次正常访问网页1.连接无线网络1能正常切换连接无线网无线网络稳定性测试II2.连接无线网络2络1和2并且能正常访3.重复测试100次问网页1.连接无线网络无线网络稳定性测试III2.打开浏览器,进入网页,每隔15网络连接状态保持正常秒刷新网页并且能正常刷新网页3.重复测试150次1.连接无线网络无线网络稳定性测试IV2.打开浏览器,进入网页,连续访问网络连接状态保持正常不同网页(新闻网页与视频网页)并且浏览网页无异常3.重复测试100次1.连接无线网络2.打开浏览器,进入视频网站,播放无线网络稳定性测试V在线视频网络连接状态保持正常3.每隔15秒切换视频并且切换视频无异常4.测试50次图2 Android自动化测试流程41广电风向标●技术前沿●广电网络●数字电视●NGB综合技术实验室专栏●广达新网专栏●吉视汇通专栏●图3 UiAutomatorviewer获取控件属性信息图4 eclipse下创建java project (2)PC机:已搭建好测试环境,可对待测设备进行自动化测试。(3)Micro-USB线:连接待测设备与PC机,开启开发者权限,实现通信,收集待测设备的Android Logcat日志。应用adb命令工具,输入adb devices,可以查看连接状况。“stress_test.jar”);最后通过Micro-USB线和adb命令工具将jar包上传至Android移动终端上。wifi_stress_test.jar –c wifi_stress_test.wifi_stress_test_1>D:\\wifi_stress_test_1-log.txt从代码中看出,通过调用“wifi_stress_test.jar”执行名为“wifi_stress_test_1”的自动化测试,将测试日志保存在D:\\wifi_stress_test_1-log.txt。自动化测试平台就是通过运行上述编写好的批处理程序来执行自动化测试,自动化测试平台可以添加或删除测试用例;设置测试先后顺序;设置每项测试间隔时间,上一个测试用例结束后发出信息提示,自动进行下一个测试用例;期间可暂停测试/继续测试;测试结束,输出测试结果并保存。4.3.3 控制测试模块控制测试模块通过自动化测试平台来实现,如图5所示。自动化测试平台利用MFC/QT等作为界面平台,C++语言作为程序语言进行开发。C++语言相较于脚本语言,如python、perl等,具有更快的执行速度,实现性能更好。首先编写批处理程序,用于执行随机事件测试或固定事件测试。在固定事件测试中通过调用Android移动终端上的jar文件包来执行测试,具体代码如下:call adb shell UiAutomator runtest 4.3.2 上传模块上传模块首先通过ant编译脚本命令,将编写好的java project生成jar包,再通过adb命令工具将jar包导入进待测设备中,具体代码如下:@echo offD:cd D:\\Users\\LWY\\workspace\\wifi_stress_testcall android create uitest-project –n wifi_stress_test –t 7 –p D:\\Users\\LWY\\workspace\\wifi_stress_testecho “success create uitest-project”call ant buildcall adb push D:\\Users\\LWY\\workspace\\wifi_stress_test\\bin\\wifi_stress_test.jar从代码中看出,首先进入到java工程存放的路径;选择API大于15的Android SDK的ID值(代码中ID为7);调用ant编译脚本命令,生成可执行的jar文件包(代码中命名为4.3.4 结果分析模块在Nelson模型的基础上,对测试图5 自动化测试平台42《有线电视技术》 2017年第3期 总第327期天威网络技术专栏●运营商专栏●运维管理●节目制播●实践应用●行业动态●结果进行数学建模,对测试做如下假设。(1)将测试当做一个可计算函数 ,测试域为:应不同的测试用例分别给予相应的权重来描述: (7) R2=0.92,R3=0.93,R4=0.91,R5=0.98。设定: (1)其中,全部测试集合,为第i用来表示第N个测试次测试。用例出现测试失败的次数,则观测到(2)第次测试后,得到的测试的测试失败矩阵为:结果为,用表示函数的真 值(预期测试结果),则当条件:(8) (2)满足时,测试成功;否则,测试则该模块稳定性的具体算法如下。失败。①针对不同测试用例,定义为(3)测试域可划分为两个子第N个测试用例的测试成功率,按公集,和:式(6)计算: (9)(3)②定义模块的稳定性系数为:式中,是能保证测试成功的子集,是测试失败的子集。(10)在进行测试中,每次发生测试失败,不终止测试,不排错。用表示计算得出的稳定系数越高,则子集中的总数,当测试总数足够大代表该模块的稳定性越好。反之,时,测试失败一次的概率为:越低,稳定性越低。 (4)测试成功一次的概率为:5 测试结果及分析 (5)在已安装Android 5.1系统的平板则测试连续成功次的概率为:电脑AOC G5上,将表1中的测试用 (6)例进行自动化测试,发现自动化测试将Android移动终端分成若干个所花时间相比手工测试节约了3/4左模块进行稳定性测试,每个模块中包右,得到的测试数据如表2所示。含N个测试用例,因为每个测试用例根据公式(6)计算出每个测试对该模块稳定性的影响不同,所以对用例的测试成功率分别为R1=0.93,表2 无线网络稳定性测试数据测试用例测试次数成功次数/失败次数自动测试用时/手工测试用时(分钟)无线网络稳定性测试I10093/718/78无线网络稳定性测试II10092/829/95无线网络稳定性测试III150140/1033/98无线网络稳定性测试IV10091/98/38无线网络稳定性测试V5049/115/33根据公式(10)计算出无线网络模块的稳定系数为H=0.937。6 结束语本文提出Android移动终端稳定性自动化测试的方法,基于UiAutomator● 工具实现固定事件测试。研究与设计数自动化测试系统,实现一键自动化测字电试,通过分析测试结果,计算出稳定视系数,得出Android移动终端的稳定性能。测试结果表明,该系统能很好地代替手工测试,有效节约了人力资源和提高了大约3倍的测试效率。参考文献[1] 秉翰.2014年Android市场份额81.5%iOS份额下降[N].华商报,2015-03-05(2).[2] CAI K, DONG Z, LIU K. Software Testing Processes as a Linear DynamicSystem[J]. Information Sciences, 2008, 178(6).[3] KUMAR D, MISHRA K. The Impacts of Test Automation on Software’s Cost,Quality and Time to Market[J]. Procedia Computer Science, 2016, 79:8-15.[4] 周颖.Android平板稳定性自动化测试的研究和实现[D].湖北:华中师范大学,2014.[5] 池云.Android系统稳定性测试探究[J].电子测试,2014(7).[6] 鞠秀娟,赵明.软件自动化测试概述及应用工具分析[J].计算机应用,2007(1).[7] 李震,王肖,卢超,王敏,李阳.Android软件可靠性测试用例自动生成的设计研究[J].计算机应用与软件,2016(1).[8] 文霞.Android应用程序测试方法研究[D].广东:华南理工大学,2015.[9] 董振华.软件开发中的MFC[J].黑龙江科学,2014(11).[10] 虞翊,吴芳美.基于Nelson模型的软件安全性评估准则[J].计算机科学,2001CATV43(11).

因篇幅问题不能全部显示,请点此查看更多更全内容

Top