最近一直在寻求一种好的压力测试方案,由于monkey的可控性太差,经常会跑到某个界面无法跳出来,所以就果断的放弃了monkey。
随后在testerhome 里面找到了appcrawler,用appcrawler试跑了几次后,发现跑了几分钟就结束了。猜测是跑应用的时候一直停留在某个界面,里面所有的按钮被点击完毕,但是没有跳到其他页面,导致appcrawler结束。
然后我就尝试着在appcrawler的基础上,结合uiautomator脚本运行,由于appcrawler是基于appium,而appium的底层是uiautomator,一个设备只能运行一个uiautomator,该方案又以失败告终。
后来又想到既然monkey可控性差,我们可以人为地增强可控性,思路如下:
1.将wify按钮,飞行模式按钮在下拉菜单中隐藏掉,防止断网
2.执行monkey 脚本示例:
adb shell monkey -p com.tencent.mobileqq --throttle 500 100000
3.运行uiautomator脚本,定时启动activity,防止monkey跑道某个死角出不来
代码如下:
package com.example.administrator.yallatool.UITest.PressureTest;
import android.content.Context;
import android.content.Intent;
import android.support.test.InstrumentationRegistry;
import android.support.test.uiautomator.UiAutomatorTestCase;
import android.util.Log;
import org.junit.Test;
/**
* Created by Administrator on 2017/11/17.
*/
public class Test_WithMonkey extends UiAutomatorTestCase {
@Test
public void test_1(){
for(int i=0;i<100;i++){
startactivity();
Log.i("startActivity","==="+i);
sleep(60000);
}
}
public void startactivity(){
Context context = InstrumentationRegistry.getInstrumentation().getContext();
Intent intent = context.getPackageManager().getLaunchIntentForPackage("com.tencent.mobileqq");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent);
}
}
网友评论