使用uiautomator获取应用内存
2015-07-15 14:11
435 查看
最近在学习uiautomator,于是研究了下使用uiautomator来获取应用内存使用情况。
2.通过命令行查看应用内存,其中Pss对应的TOTAL值为应用所占用的实际内存值。
![](http://img.blog.csdn.net/20150715141809344)
3.根据测试场景,采集应用内存数据。
2.在手机存储根目录下创建文件及目录,用来存放日志文件。
3.新建文件夹测试场景。
准备工作
1.制定测试场景,考虑到一般会引起内存泄漏的情形,诸如activity之间的跳转、大缓存文件的切换、数据库的读写操作。2.通过命令行查看应用内存,其中Pss对应的TOTAL值为应用所占用的实际内存值。
adb shell dumpsys meminfo packageName
3.根据测试场景,采集应用内存数据。
实现方法
每执行一次测试场景用例(例如新建文件夹这个操作),将获取其内存值并写入到文件里,执行n次后,采集所有数据绘制成图表分析。主要代码
1.获取应用内存值。public String getPss(String packageName) { Process proc = null; StringBuffer sb = new StringBuffer(); String line, Pss = null; try { proc = Runtime.getRuntime().exec("dumpsys meminfo " + packageName); proc.waitFor(); BufferedReader br = new BufferedReader(new InputStreamReader( proc.getInputStream())); while ((line = br.readLine()) != null) { if (line.contains("TOTAL")) { sb.append(line + "\n"); } } String[] s = sb.toString().split("TOTAL"); String s2 = s[1].trim(); String[] s3 = s2.split(" "); Pss = s3[0].trim(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } return Pss; }
2.在手机存储根目录下创建文件及目录,用来存放日志文件。
public File createFile(String caseNumber) { String directory = "/storage/sdcard0/uiautomator/memory";// directory String file = directory + "/" + caseNumber + "_" + formatDate() + ".xls";// file File directoryPath = new File(directory); File mfile = new File(file); if (!directoryPath.exists() && !mfile.exists()) { directoryPath.mkdirs(); try { mfile.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } return mfile; }
3.新建文件夹测试场景。
public void testCase() throws UiObjectNotFoundException, IOException { String caseNumber = "testCase"; File mFile = createFile(caseNumber); FileOutputStream fos = null; fos = new FileOutputStream(mFile); openApplication("文件管理"); findElementAndClick( "com.aurora.filemanager:id/usb_card_storage_single", 6); for (int i = 0; i < counts; i++) { menu(); findElementAndClick("com.aurora:id/aurora_menu_item_text", "新建文件夹"); findElementAndClick("android:id/button2", "确定"); delay(1); String mPss = getPss(packageName); delay(1); byte[] b1 = (mPss + "\n").getBytes(); fos.write(b1); } fos.close(); back(); back(); }
相关文章推荐
- 【原】设置iOS项目BuildVersion自动增加
- UIimageview tap 跳转
- iOS开发——UI基础-自定义构造方法,layoutSubviews,Xib文件,利用Xib自定义View
- 如何编译WinCE Bluetooth Stack并打开的默认LOG
- Forbidden (403) CSRF verification failed. Request aborted.
- UEFI HOB
- UEFI Drivers & UEFI Driver Model
- UEFI Images
- UEFI小结-Handle的来龙去脉
- UEFI Boot Flow
- EasyUI改变Layout的Region的宽高,位置等信息
- Android UI学习之---Button
- UI-程序的运行顺序
- SQL Server 阻止了对组件 \'Ad Hoc Distributed Queries\' 的访问
- [CareerCup] 1.1 Unique Characters of a String 字符串中不同的字符
- iOS开发——UI基础-懒加载,plist文件,字典转模型,自定义view
- Ubuntu——grub rescue 主引导修复
- 深入理解String、StringBuffrt、StringBuilder
- Android开发UI之控件-Android-PullToRefresh
- IBM Bluemix Trial Experience(IBM Bluemix试用体验)