IOS设备上客户端性能测试小工具

发表于:2015-6-23 11:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:happylifecth    来源:51Testing软件测试网采编

  在工作中,有时需要检查被测app的在特定页面或者特定操作下内存占用和cpu占用率等指标。于是,自己写了一个测试的小工具,用于检测客户端的性能。
  IOS系统的底层是UNIX,因此想到通过建立ssh连接,发送top指令来获取进程的状态。这种方式的前提是需要一台越狱的ios设备,再装上OpenSSH插件和top插件,然后就可以通过xshell等与手机连接上啦,输入一个top指令,截图如下:
  一、测试工具的原理如下:
  1、输入:1)顺序执行的待测场景,比如发布流程:选图页-编辑页-发布中-发布完成页
  2)两个对比app的进程名,比如:app1,app2
  2、输出:1)cpu占用率对比折线图
  2)内存占用对比折线图
  3、过程:1)与ios设备建立ssh连接
  2)启动app1,顺序停留在待测页面,通过回车触发,发送top指令获取app1的进程信息
  3)解析top指令的结果,获得cpu占用率和内存占用数值,存储在list1中
  4)启动app2,重复2)和3)的步骤,数值存储在list2中
  5)把list1和list2中的cpu占用率和内存占用的对比数据分别提取出来,绘制两个折线图
  二、 使用的jar包:
  1、ganymed-ssh2-build251:通过ssh2协议执行远程命令
  2、jfreechart-1.0.19:绘制图表
  三、关键点和需要注意的地方:
  1、建立连接:
  connection = new Connection(hostname, port);
  connection.connect();
  boolean isAuthenticated = connection.authenticateWithPassword(username, password);
  if (isAuthenticated == false)
  {
  throw new IOException("Authentication failed.");
  }
  2、建立会话,执行命令
  Session sess = connection.openSession();
  sess.execCommand("top -l 2");
  InputStream stdout = new StreamGobbler(sess.getStdout());
  BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
  这里,top -l 2表示刷新两次结果退出,至于为什么要更新两次呢,参见以下解释。
  3、从top结果中把被测app的进程提取出来。开始我只刷新一遍,逐行读取直到包含被测app的进程名时退出,却发现每次取得结果%CPU这一值都是0.0%,于是把整个top指令结果打印出来发现所有进程的%CPU也都是0.0%。第二次刷新的结果就可以正常取得数据了。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号