一种基于占用Android系统智能设备内存和CPU的压力测试方法技术方案

技术编号:9462739 阅读:112 留言:0更新日期:2013-12-18 23:55
本发明专利技术涉及一种基于占用Android系统智能设备内存和CPU的压力测试方法,在被测设备上安装agent程序,测试主机首先通过测试脚本运行agent程序,agent程序运行后会启动一个服务Service,服务中开启一个线程作为socket服务端监听客户端的连接请求;测试主机作为socket客户端发出连接请求,与agent建立socket连接,通过socket通信机制控制agent程序进行占用Android系统内存和CPU的行为;agent程序接受到测试主机端发送的占用内存和CPU的命令后,即开始占用内存和CPU,使Android系统资源匮乏,为压力测试提供条件;然后测试主机端开始各项测试工作,完成测试后发出停止占用内存和CPU的命令,agent程序接收到此项命令便终止占用系统内存和CPU的行为;最后,测试主机端通过命令断开与agent程序的socket连接并使agent程序终止运行。

【技术实现步骤摘要】
【专利摘要】本专利技术涉及,在被测设备上安装agent程序,测试主机首先通过测试脚本运行agent程序,agent程序运行后会启动一个服务Service,服务中开启一个线程作为socket服务端监听客户端的连接请求;测试主机作为socket客户端发出连接请求,与agent建立socket连接,通过socket通信机制控制agent程序进行占用Android系统内存和CPU的行为;agent程序接受到测试主机端发送的占用内存和CPU的命令后,即开始占用内存和CPU,使Android系统资源匮乏,为压力测试提供条件;然后测试主机端开始各项测试工作,完成测试后发出停止占用内存和CPU的命令,agent程序接收到此项命令便终止占用系统内存和CPU的行为;最后,测试主机端通过命令断开与agent程序的socket连接并使agent程序终止运行。【专利说明】—种基于占用Android系统智能设备内存和CPU的压力测试方法
本专利技术涉及,属于软件可靠性测试
,为Android软件压力测试提供条件。
技术介绍
Google开发的Android系统,作为智能手机操作系统之一,是基于Linux平台的开源手机操作系统,如今已占据全球智能手机操作系统市场大部分的份额。用户对Android应用的需求与日俱增,所以,为更加快速有效地开发出稳定的应用,测试技术就显得尤为重要。压力测试是保证软件质量的重要测试工作,在软件所需资源(内存、CPU等)匮乏的条件下进行测试工作。然而在Android系统中进行资源的占用与传统的计算机中资源占用情况是有较大区别的,例如,Android框架对每个进程的内存可用大小限制在几十M,这就给内存占用增加了难度。Monkey是Android系统自带的一个命令行工具,它通过向系统发送伪随机的用户事件流,实现对应用程序进行压力测试。但是Monkey只是模拟巨大的工作负荷(一连串事件的执行)以查看应用程序是否有异常情况出现,它并没有对系统的资源进行大量主动的占用,也就是说,Monkey没有能让应用程序在系统资源匮乏的条件下进行测试工作。
技术实现思路
本专利技术的技术解决问题:克服现有技术的不足,提供一种占用Android系统智能设备内存和CPU以支持压力测试方法。软件测试中测试主机端通过socket通信能随时控制占用或停止占用被测设备内存和CPU,更好的支持了压力测试的过程;agent程序使用JNI技术实现对系统内存的占用和停止占用,摆脱了 android框架对进程所能占用内存的限制;由于提高了 agent程序中各服务的优先权,使得对系统内存和CPU的占用更加稳定。本专利技术技术解决方案:,实现步骤如下:(I)在被测设备上安装Android的应用程序即agent程序,测试人员在测试主机上通过编写测试脚本对被测设备上的软件进行测试;(2)压力测试时,测试主机首先通过测试脚本运行agent程序,agent程序运行后会启动一个服务Service,服务中开启一个线程作为socket服务端监听客户端的连接请求;(3)测试主机作为socket客户端发出连接请求,与agent建立socket连接,通过socket通信机制控制agent程序进行占用Android系统内存和CPU的行为;(4)agent程序接受到测试主机端发送的占用内存和CPU的命令后,即开始占用内存和CPU,使Android系统资源匮乏,为压力测试提供条件;(5)然后测试主机端开始各项测试工作,完成测试后发出停止占用内存和CPU的命令,agent程序接收到此项命令便终止占用系统内存和CPU的行为;(6)最后,测试主机端通过命令断开与agent程序的socket连接并使agent程序终止运行。所述步骤(3)中的agent程序进行占用Android系统内存行为的实现过程为:(I)首先agent程序通过接受到的占用Android系统内存的命令后,获取需要的内存占用比例大小;(2)利用 java.lang.ProcessBuilder 类和 java.lang.Process 类创建一个进程,执行“cat/proc/meminfo”命令获取当前内存使用信息,解析所述的使用信息得到Android系统总的内存大小及当前空闲内存大小;(3)再根据之前解析的内存占用比例计算出需要agent程序占用的内存大小,启动占用内存的服务SM,并将所需占用的内存大小作为消息参数传递给SM,服务Sm,启动后,首先加载之前生成好的动态库,此动态库由实现本地方法即占用内存和停止占用内存的方法的C++文件生成,在服务中声明动态库中的本地方法便可在服务中调用这些本地方法;服务Sm获取需要占用的内存大小,然后调用占用内存的本地方法实现内存占用操作;(4)当agent程序接收到停止占用内存的命令时,即终止服务Smem的运行;服务Smem被销毁时调用停止占用内存的本地方法,从而释放掉自己占用的内存。所述步骤(3)中的agent程序进行占用Android系统CPU行为的实现过程为:(I)首先解析命令得到需要把CPU占用比例之后,利用java.lang.ProcessBuilder类和java.lang.Process类创建一个进程,执行本地命令“top”并解析其返回结果得到当前的CPU使用率;(2)利用当前CPU使用率和需要的CPU占用比例,计算出需要agent占用的CPU比例,把此比例作为消息参数传递给占用CPU的服务Scpu并启动Sctu ;(3)服务Sepu启动后,首先获得需要占用CPU的比例大小,之后便启动线程占用一定比例的CPU,每个线程中是一个循环,以一定的时间(几十毫秒)为周期,每个周期分为两段时间,一段时间内线程做空循环以占用CPU,另一段时间调用Thread, sleep O方法睡眠以让出CPU,通过控制每个周期内两段时间的比例决定进程占单个CPU的比例;(4)当agent程序接收到停止占用CPU的命令时,即终止服务Sepu,Scpu在结束前终止所有之前开启的占用CPU的线程,结束对CPU的占用。本专利技术原理:首先,对Android系统内存的占用,由于Android框架限制每个进程所能使用的内存,超出内存限制就会报出00M (Out of Memory)异常,为了能够占用随意大小的内存,使用JNI技术,调用C++代码,在C++代码中使用mallocO方法分配一定的内存,这种方法占用的内存大小是不计入Android对进程所能使用内存的限制的。为确定所需占用内存的大小,就需要知道系统总的内存大小和当前已用内存大小。在Android程序中利用 java.lang.ProcessBuilder 类和 java.lang.Process 类创建一个进程来执行“cat/proc/meminfo”命令并得到此命令的返回结果,对这些结果信息进行解析得到所需的内存信息。在系统CPU的占用方面,采用多线程方法,启动一个或多个线程占用CPU,每个线程在一段时间内一直做一个空循环,另一段时间内通过Thread, sleep ()方法睡眠,控制这两段时间的比例以决定占用CPU的比例大小。对于单核的设备,确定此比例相对容易,多核的就比较复杂,需多个线程配合,例如,对于双核的设备,要占用小于50%的本文档来自技高网
...

【技术保护点】
一种基于占用Android系统智能设备内存和CPU的压力测试方法,其特征在于步骤如下:第一步,在被测设备上安装Android的应用程序即agent程序,测试人员在测试主机上通过编写测试脚本对被测设备上的软件进行测试;第二步,压力测试时,测试主机首先通过测试脚本运行agent程序,agent程序运行后会启动一个服务Service,服务中开启一个线程作为socket服务端监听客户端的连接请求;第三步,测试主机作为socket客户端发出连接请求,与agent建立socket连接,通过socket通信机制控制agent程序进行占用Android系统内存和CPU的行为;第四步,agent程序接受到测试主机端发送的占用内存和CPU的命令后,即开始占用内存和CPU,使Android系统资源匮乏,为压力测试提供条件;第五步,然后测试主机端开始各项测试工作,完成测试后发出停止占用内存和CPU的命令,agent程序接收到此项命令便终止占用系统内存和CPU的行为;第六步,最后,测试主机端通过命令断开与agent程序的socket连接并使agent程序终止运行。

【技术特征摘要】

【专利技术属性】
技术研发人员:姜博沈彦鸣高小鹏王珂陈鹏万寒龙翔
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1