专利名称:基于Android的系统压力测试方法
基于Android的系统压力测试方法
技术领域:
本发明涉及一种安卓系统技术领域,尤其涉及一种基于Android的系统压力测试方法。
背景技术:
自从google发布android系统后,该 系统在全球范围发展迅速,android开发追随者越来越多,但android自动化测试却刚起步,远跟不上开发的脚步,这成为阻碍android系统发展的因素。对于开发android系统的芯片解决方案厂商来说,android压力测试是非常重要的部分,现有技术中在android压力测试方面的技术有1、手动测试,2、monkey (命令行工具)测试,3、monkeyrunner测试。各技术的缺陷如下1、手动测试由于压力测试需要大量的时间以及人力物力,使用手动测试将消耗大量的人力物力,所以手动进行压力测试,效率过低。2、monkey测试monkey测试虽然能实现自动化测试,但monkey无法根据制定的case (案例)进行相应的操作。3、monkeyrunner测试monkeyrunner能实现自动化测试,也能根据case编写相应程序,但其需要依靠pc端,pc端的不确定因数将会影响测试结果,且造成资源浪费。monkeyrunner工具提供了一个API (应用程序编程接口),使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过monkeyrunner,您可以写出一个Python (是一种面向对象、直译式计算机程序设计语言)程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件。现有技术中提供了一种“基于Andro i d的自动化测试方法”,见公开号为CN102141960A,
公开日为:2011. 08. 03的中国专利,其步骤如下步骤I、调用Android的各类测试程序及内部shell指令;步骤2、对各类测试程序及内部shell指令进行编代码;步骤3、编代码后形成一系列可随机调用测试序列,并产生相应的测试事件;步骤4、代码编写完成后,并预留存储空间以备编写扩展接口程序;步骤5、将代码通过Linux编译环境进行编译,形成可执行文件;步骤6、可执行文件在测试时调用Android的monkey随机测试命令对各类测试程序进行随机测试。该发明操作简单方便,且将各类自动化测试进行集成,只需手机就能进行自动化测试,效率高。但该发明只是对Android系统的各类程序进行测试,并不能全面地测试出Android系统所能承受的压力。
发明内容本发明要解决的技术问题,在于提供一种基于Android的系统压力测试方法,解决了手动测试效率低的问题,又不受外界环境影响,大幅度提高测试效率。本发明是这样实现的一种基于Android的系统压力测试方法,所述测试方法包括不分先后顺序的应用程序压力测试,一级睡眠待机唤醒测试,reboot模式自动开关机测试;所述应用程序压力测试先定义一模拟触屏函数和一模拟物理按钮函数;所述模拟触屏函数用于实现Android系统的一系列触摸屏幕事件;所述模拟物理按钮函数用于实现Android系统的物理按钮事件;启动Android系统的应用程序,仓Il建一用于统计测试次数和测试时间的第一文件,通过调用模拟触屏函数和模拟物理按钮函数来分别产生相应的测试事件对Android系统进行多次的循环测试,循环测试结束后,查看Android系统设备的运行状态、运行结果以及第一文件来获知测试情况;所述一级睡眠待机唤醒测试定义一模拟power按钮函数,所述模拟power按钮函数用于实现Android系统的自动待机并唤醒的事件,创建一用于统计测试次数和测试时间的第二文件,通过调用模拟power按钮函数产生 自动待机并唤醒的事件对Android系统进行多次的循环测试,循环测试结束后,查看Android系统设备的运行状态和第二文件得到待机并唤醒的时间来获知测试情况;所述reboot模式自动开关机测试定义一实现reboot功能的脚本,在Android系统的boot, img文件中加入开机启动reboot功能的脚本的代码,并将修改后的boot, img文件进行编译成可执行文件;创建一用于统计测试次数和测试时间的第三文件,Android系统开启后先调用Android系统中自带的sleep函数来控制自动开关机的时间,再通过执行实现reboot功能的脚本进行多次的循环开关机操作测试,通过查看Android系统设备的运行状态和第三文件获知测试情况。本发明具有如下优点本发明的测试方法包括不分先后顺序的应用程序压力测试,一级睡眠待机唤醒测试,reboot模式自动开关机测试;其从三个方面对Android系统压力进行测试,其测试比较全面,上述测试是通过shell脚本进行编写的,且shell脚本在程序内部执行,其编写简单,不会受到外界干扰,本发明很好的实现了对android系统压力自动化测试,大幅度提高测试效率。
图I为本发明方法总体流程示意图。图2为本发明第一实施例的测试流程示意图。图3为本发明第二实施例的测试流程示意图。图4为本发明第三实施例的测试流程示意图。
具体实施方式请参阅图I所示,本发明提供一种基于Android的系统压力测试方法,所述测试方法包括不分先后顺序的应用程序压力测试,一级睡眠待机唤醒测试,reboot模式自动开关机测试;其要定义包括应用程序压力测试的基本指令及函数、一级睡眠待机唤醒测试的基本函数以及reboot模式自动开关机测试的基本函数,根据基本函数及相关案例编写对应的shell脚本,以shell脚本为自动化测试脚本,在Android系统运行时运行脚本实现压力测试,根据脚本设计原理分析和查看测试结果。其Android系统压力测试最重要的部分在于系统稳定性,系统稳定性的关键点在于应用程序长时间使用及电源管理(待机唤醒、开关机)部分,根据压力测试以上特点及需求,该发明以shell脚本为基础,从应用程序压力测试,一级睡眠待机唤醒测试,reboot模式自动开关机测试出发。本发明的一种基于Android的系统压力测试方法,所述测试方法包括不分先后顺序的应用程序压力测试,一级睡眠待机唤醒测试,reboot模式自动开关机测试;所述应用程序压力测试先定义一模拟触屏函数和一模拟物理按钮函数;所述模拟触屏函数用于实现Android系统的一系列触摸屏幕事件;所述模拟物理按钮函数用于实现Android系统的物理按钮事件;启动Android系统的应用程序即通过在Android系统中输入am命令行来启动应用程序的,创建一用于统计测试次数和测试时间的第一文件,通过调用模拟触屏函数和模拟物理按钮 函数来分别产生相应的测试事件对Android系统进行多次的循环测试,循环测试结束后,查看Android系统设备的运行状态、运行结果以及第一文件来获知测试情况;其中,所述应用程序压力测试中每一次的循环测试结束时,调用Android系统中自带的sleep函数来控制进入下一次应用程序压力测试循环的时间,以利于更好地分析测试情况。所述一级睡眠待机唤醒测试定义一模拟power按钮函数,所述模拟power按钮函数用于实现Android系统的自动待机并唤醒的事件,创建一用于统计测试次数和测试时间的第二文件,通过调用模拟power按钮函数产生自动待机并唤醒的事件对Android系统进行多次的循环测试,循环测试结束后,查看Android系统设备的运行状态和第二文件得到待机并唤醒的时间来获知测试情况;其中,所述一级睡眠待机唤醒测试中每一次的循环测试结束时,调用Android系统中自带的sleep函数来控制进入下一次自动待机并唤醒测试循环的时间,以利于更好地分析测试情况。所述reboot模式自动开关机测试定义一实现reboot功能的脚本,在Android系统的boot, img文件中加入开机启动reboot功能的脚本的代码,并将修改后的boot, img文件进行编译成可执行文件;创建一用于统计测试次数和测试时间的第三文件,Android系统开启后先调用Android系统中自带的sleep函数来控制自动开关机的时间,再通过执行实现reboot功能的脚本进行多次的循环开关机操作测试,通过查看Android系统设备的运行状态和第三文件获知测试情况。其中,所述应用程序压力测试,一级睡眠待机唤醒测试,reboot模式自动开关机测试是通过shell脚本(shell脚本是一种程序设计语言)进行编写的。下面结合三个具体实施例子对本发明作进一步说明如图2所示,实例一 =Case(对相机拍照功能进行压力测试,实现自动拍照2000次,间隔2秒拍照一次)I、该实例通过发明中定义的基本指令及函数(am命令行、模拟触屏函数(即touch函数)、sleep函数、while循环及计数器)编写具备自动拍照功能的shell脚本,该脚本实现对相机进行间隔2秒拍照2000次的自动化压力测试。2、该实例首先调用am命令行以打开应用程序(相机)、打开相机之后创建用于计数的文件,脚本执行完这些前提条件之后进入while循环并开始频繁拍照及计数,该循环内部调用touch函数触摸拍照坐标位置以实现拍照功能,并调用sleep函数进行时间控制,实现2秒拍照一次,当循环次数达到设定值(2000次),循环结束,脚本停止运行,对相机自动化压力测试结束,人为查看测试结束后相机状态及拍照结果即可得出相机拍照模块是否稳定。如图3所示,实例二 case (加载网页过程中待机唤醒300次)I、该实例通过发明中定义的基本指令及函数(am命令行、while循环、模拟power按钮函数(即awaken函数)、模拟物理按钮函数(即input程序)以及计数器)编写shell脚本,实现在加载网页过程中自动待机唤醒300次的压力测试。2、该实例首先通过调用am函数打开应用程序(浏览器),打开浏览器后创建用于计数的文本,执行这些前提条件后进入while循环以实现待机唤醒300次,该循环内部调用计数器及awaken函数,每循环一次计数值加1,每循环一次,系统调用awaken函数一次,自动待机唤醒一次,在awaken函数中调用input程序 ,使用input程序解锁、输入网址以及加载该网页,在此加载过程awaken函数使系统进行待机,sleep3秒后唤醒并再次执行input中解锁、输入网址及加载该网页,依次重复循环,当循环次数达到设定值(300次)后循环结束,脚本停止运行,自动待机唤醒测试结束,人为查看终端状态即能得出该自动化压力测试的结果。如图4所示,实例三caSe (播放视频时自动开关机)I、该实例通过发明中修改boot的方法实现开机后自动运行脚本,并通过发明中的基本指令及函数(am命令行、模拟触屏函数(即touch函数)、sleep函数、reboot功能的脚本)实现视频播放时自动开关机的压力测试。2、该实例在修改init. rc文件实现开机自动运行脚本后循环进行开关机操作,开机后首先调用sleep函数以控制时间,使系统完全启动后再执行下一步操作,系统完全启动后调用开关机计数器的设计实现开关机次数的统计,然后调用am命令行及touch函数实现视频播放的环境,在此环境下调用reboot实现系统重启,重启后再次调用sle印函数,依次循环,以实现视频播放时自动开关机自动化压力测试。这里值得一提的是使用am命令行来启动应用程序需找出相应的Android系统中的Activity (活动)及Action (动作)。查找Activity 及 Action 方法1、查看 android 源代码,在 package 目录 APP中每个对应的APP都有AndroidManifest. xml文件,该文件代码里有相应的package及Activity,使用am start-n “package+activity”命令可实现该APP的启动,同样在该文件里存在应用程序对应的Action。2、adb进入终端,在系统中输入logcat,手动启动程序,查看 adb 中打印的 start {Activity},该 activity 同样适用于 am start [_n〈C0MP0NENT>]。在Android系统的boot, img文件中加入开机启动reboot功能的脚本的代码,并将修改后的boot, img文件进行编译成可执行文件;即在boot中init. rc文件是程序启动的配置文件,通过添加脚本启动参数,在kernel启动时将会运行脚本程序。首先在init. rc文件中加入代码,然后编译成用于自动开关机的boot。init. rc 最后添加chmod 777 /data/reboot.sh
chown root shell /data/reboot.sh
servicereboot /data/reboot.sh
class core
console
disabled
user root
onproperty:ro.debuggable=l
startreboot最简单实现reboot功能的脚本(reboot, sh)为#! / system/bin/shsleep30reboot使用adb把reboot, sh push至终端/data/目录即可实现系统自动开关机。其中,各个测试方式中都用到多次循环、计数器以及sleep函数。I、循环(while)对于压力测试,循环是必不可少的,也是脚本的关键,以下举例使用while循环足
够实现各类压力测试中的循环语句。While 的用法while test-commanddocommandsdone若test-command 为真,则运行 commands 命令。如为结合模拟触屏函数(touch函数)实现点击坐标“388” “508”的100次的循
环
J=I
Jmax=IOO
whiIe [ $j -It $jmax ];
do
touch 388 508 j=$((j+l)) done
该循环适用于所有she 11脚本。2、计数器对于自动化测试,设计一个计数器,统计测试次数及测试时间是非常有必要的,而且对测试结果分析非常重要。以下为shell脚本计数器实现过程I、创建计数的文件count, txt2、把测试次数写入该文件3、测试结束后查看该文件就能得到测 试次数,根据脚本循环时间及测试次数就能得到总共的测试时间。
权利要求
1.一种基于Android的系统压力测试方法,其特征在于所述测试方法包括不分先后顺序的应用程序压力测试,一级睡眠待机唤醒测试,reboot模式自动开关机测试; 所述应用程序压力测试先定义一模拟触屏函数和一模拟物理按钮函数;所述模拟触屏函数用于实现Android系统的一系列触摸屏幕事件;所述模拟物理按钮函数用于实现Android系统的物理按钮事件;启动Android系统的应用程序,创建一用于统计测试次数和测试时间的第一文件,通过调用模拟触屏函数和模拟物理按钮函数来分别产生相应的测试事件对Android系统进行多次的循环测试,循环测试结束后,查看Android系统设备的运行状态、运行结果以及第一文件来获知测试情况; 所述一级睡眠待机唤醒测试定义一模拟power按钮函数,所述模拟power按钮函数用于实现Android系统的自动待机并唤醒的事件,创建一用于统计测试次数和测试时间的第二文件,通过调用模拟power按钮函数产生自动待机并唤醒的事件对Android系统进行多次的循环测试,循环测试结束后,查看Android系统设备的运行状态和第二文件得到待机并唤醒的时间来获知测试情况; 所述reboot模式自动开关机测试定义一实现reboot功能的脚本,在Android系统的boot, img文件中加入开机启动reboot功能的脚本的代码,并将修改后的boot, img文件进行编译成可执行文件;创建一用于统计测试次数和测试时间的第三文件,Android系统开启后先调用Android系统中自带的sleep函数来控制自动开关机的时间,再通过执行实现reboot功能的脚本进行多次的循环开关机操作测试,通过查看Android系统设备的运行状态和第三文件获知测试情况。
2.根据权利要求I所述的基于Android的系统压力测试方法,其特征在于所述启动Android系统的应用程序是通过在Android系统中输入am命令行来启动应用程序的。
3.根据权利要求I所述的基于Android的系统压力测试方法,其特征在于所述应用程序压力测试中每一次的循环测试结束时,调用Android系统中自带的sleep函数来控制进入下一次应用程序压力测试循环的时间,以利于更好地分析测试情况。
4.根据权利要求I所述的基于Android的系统压力测试方法,其特征在于所述一级睡眠待机唤醒测试中每一次的循环测试结束时,调用Android系统中自带的sleep函数来控制进入下一次自动待机并唤醒测试循环的时间,以利于更好地分析测试情况。
5.根据权利要求I至4任意一项所述的基于Android的系统压力测试方法,其特征在于所述应用程序压力测试,一级睡眠待机唤醒测试,reboot模式自动开关机测试是通过shell脚本进行编写的。
全文摘要
本发明提供一种基于Android的系统压力测试方法,所述测试方法包括应用程序压力测试为通过调用模拟触屏函数和模拟物理按钮函数来分别产生相应的测试事件对Android系统进行多次的循环测试;一级睡眠待机唤醒测试为通过调用模拟power按钮函数产生自动待机并唤醒的事件对Android系统进行多次的循环测试;reboot模式自动开关机测试为在Android系统的boot.img文件中加入开机启动reboot功能的脚本的代码,通过执行实现reboot功能的脚本进行多次的循环开关机操作测试。本发明很好的实现了对android系统压力自动化测试,大幅度提高测试效率。
文档编号G06F11/36GK102855188SQ20121027572
公开日2013年1月2日 申请日期2012年8月3日 优先权日2012年8月3日
发明者钟瑞 申请人:福州瑞芯微电子有限公司