如何队一个安卓app进行稳定性测试请阐述思路

& Android ANR与自动化测试工具Monkey
Android ANR与自动化测试工具Monkey
&&&&&& 本文主要讲解ANR即Application Not Responding和自动化测试工具Monkey的相关内容。&&&&&& 一、ANR(Application Not Responding)  在Android上,如果你的应用程序有一段时间响应不够灵敏(5秒内没有输入响应事件),系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。Handlermessage或者处理过程时间超过十秒也会引起。  避免方法:运行在主线程里的任何方法都尽可能少做事情。特别是,Activity应该在它的关键生命周期方法(如onCreate()和onResume())里尽可能少的去做创建操作。潜在的耗时操作,例如网络或数据库操作,或者高耗时的计算如改变位图尺寸,应该在子线程里(或者以数据库操作为例,通过异步请求的方式)来完成。主线程应该为子线程提供一个,以便完成时能够提交给主线程。以这种方式设计你的应用程序,将能保证你的主线程保持对输入的响应性并能避免由于5秒输入事件的超时引发的ANR对话框。  IntentReceiver执行时间的特殊限制意味着它应该做:在后台里做小的、琐碎的工作如保存设定或者注册一个。和在主线程里调用的其它方法一样,应用程序应该避免在BroadcastReceiver里做耗时的操作或计算。替代的是,如果响应Intent广播需要执行一个耗时的动作的话,应用程序应该启动一个。顺便提及一句,你也应该避免在Intent Receiver里启动一个Activity,因为它会创建一个新的画面,并从当前用户正在运行的程序上抢夺焦点。如果你的应用程序在响应Intent广播时需要向用户展示什么,你应该使用Notification Manager来实现。  一般来说,在应用程序里,100到200ms是用户能感知阻滞的时间阈值。  如果你的应用程序为响应用户输入正在后台工作的话,可以显示工作的进度(ProgressBar和ProgressDialog对这种情况来说很有用)。  特别是游戏,在子线程里做移动的计算。  如果你的应用程序有一个耗时的初始化过程的话,考虑可以显示一个Splash Screen或者快速显示主画面并异步来填充这些信息。在这两种情况下,你都应该显示正在进行的进度,以免用户认为应用程序被冻结了。  二、自动化测试工具Monkey  1、什么是Monkey&&&&&& Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。  2、Monkey的特征  1)测试的对象仅为应用程序包,有一定的局限性。  2)Monky测试使用的事件流数据流是随机的,不能进行自定义。  3)可对MonkeyTest的对象,事件数量,类型,频率等进行设置。  3、Monkey的基本用法  $ adb shell monkey &p(包) your.package.name &v(频率) 500  4、Monkey测试的停止条件  Monkey Test执行过程中在下列三种情况下会自动停止:  1)如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。  2)如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。  3)如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错。
本文发布:
本文地址:
发布:鸡啄米
&&( 22:3:38)&&( 22:46:36)&&( 22:12:17)&&( 23:0:46)&&( 21:59:24)&&( 21:32:49)&&( 22:27:17)
完全随机文章sikuli+eclipse对于安卓app自动化测试的应用(第一次写博客,有些语言还不太专业,望海涵)
时间: 11:46:18
&&&& 阅读:341
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&&Sikuli是什么?
& && &&&下面是来自于官网的介绍:Sikuli is a visual technology to automate and test graphical user interfaces (GUI) using images (screenshots). Sikuli includes Sikuli Script, a visual scripting API for Jython, and Sikuli IDE, an integrated development environment for writing visual scripts with screenshots easily. Sikuli Script automates anything you see on the screen without internal API‘s support. You can programmatically control a web page, a Windows/Linux/Mac OS X desktop application, or even an iphone or android application running in a simulator or via VNC.
& && &&&Sikuli是一种使用截图进行UI自动化测试的技术。Sikuli包括sikul脚本,基于Jython的API以及sikuli IDE。Sikuli可以实现任何你可以在显示器上看到ui对象的自动化,你可以通过编写一些代码来实现web 页面,window/linux/Mac OS X桌面应用、甚至是iphone和android模拟器的自动化测试。
实现sikuli+eclipse在安卓上的应用需要的相关软件和jar包:
1.sikulixsetup-1.1.0.jar/sikulixapi.jar(前者可以通过命令产生后者)
3.小萝贝控机大师
4.一台安卓手机+数据线
5.安卓app的apk
第一步,首先讲一下,如何通过sikulixsetup-1.1.0.jar生成sikulixapi.jar包
sikulixsetup下载地址:https://launchpad.net/sikuli/+download
将jar包导入工程中;
在cmd中运行该jar包。java -jar sikulixsetup-1.1.0.jar,则会出现如下图,选择相应选项后,启动会下载sikulixapi.jar。不然会报错:libs to export not found on above classpath: /sikulixlibs/mac/libs642.
选择第二个
启动后会有have fun的提示;
在文件夹中找到下载的sikulixapi.jar包,导入到工程中。
将apk放入项目的apps文件夹中,apps是后建的
第二步,将手机关联到电脑上
第三步,打开小萝贝控机大师,手机的界面可以在电脑上见得。
第四步,在eclipse中写代码,代码如下:
import org.junit.Aimport org.junit.Bimport org.junit.Timport org.sikuli.script.FindFimport org.sikuli.script.Spublic class SikuliTest {&& &/*@Before&& &public void setUp() throws Exception{& &&&&&&& System.out.println("App is launched!");
&& &}*/&& &&& &@Test&& &&& & public void addContact() throws FindFailed, InterruptedException{&&&&&&& //获得电脑桌面屏幕内容&& &&& &Screen s = new Screen();&& &&& &//图片存储路径&& &&& &String imgpath="D:\\eclipse-jee-mars-2-win32-x86_64\\Appium_demo\\pics\\";&& &&& &//点击最小化,最小化eclipse&& &&& &s.click("D:\\eclipse-jee-mars-2-win32-x86_64\\Appium_demo\\pics\\min1.png");&& &&& &//找到桌面上控机大师中的图标&& &&&& s.find(imgpath+"Contect.png");&& &&& &s.click(imgpath+"Contect.png");&& &&& &&& &&& &Thread.sleep(1000);&& &&& &&& &&& &s.click(imgpath+"AddContact.png");&& &&& &&& &&& &Thread.sleep(1000);&& &&& &//输入contactname为some&& &&& &s.type(imgpath+"Contactname.png", "some");&& &&& &s.click(imgpath+"Contactemail.png");&& &&& &&& &&& &Thread.sleep(1000);&&& &&& &s.type(imgpath+"Contactemail.png", "");&& &&& &&& &&& &Thread.sleep(1000);&& &&& &&& &&& &s.click(imgpath+"save.png");&& &&& &&& &&& &System.out.println("App is done!");&&& }&& &&&& @After&&& public void tearDown() throws Exception {&&&&&&& //此处可以添加关闭该程序的按钮click,在此没有写出&&& }}
第五步,右键,选择run as---&junit test运行该程序
运用sikuli+eclipse对安卓app进行自动化测试完成了,很简单吧,但是sikuli的对于图片的辨识度比较低,所以要求点击的位置一定要精确截图,写的有些地方不是很详细,之后我再补充。
&标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码! 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
手机安卓系统下图书借阅APP的研究与实现
下载积分:1850
内容提示:手机安卓系统下图书借阅APP的研究与实现
文档格式:PDF|
浏览次数:15|
上传日期: 10:48:42|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1850 积分
下载此文档
该用户还上传了这些文档
手机安卓系统下图书借阅APP的研究与实现
官方公共微信

我要回帖

 

随机推荐