不可轻言放弃,否则对不起自己!

发布新日志

  • app性能数据收集

    2015-07-19 19:10:18

    功能描述

    集成monkey功能, 以及在手工测试app端功能时,自动收集相关数据,并生成HTML报告。

     

    实现方法

      1、采用python脚本来驱动测试;

      2、调用android SDK adbmonkey命令,进行数据采集和稳定性测试;

      3、采集数据写入文件和数据库;

      4、附带android其他小脚本,便于测试过程中使用;

      5、根据实际情况修改配置文件后进行数据采集,生成静态HTML报告,数据一目了然

     

    目录结构

    代码目录结构:


     

     

    性能数据收集使用指南

    测试准备

    1、配置文件

    只需保证配置文件内容正确即可。

    配置文件存放在src/config/目录下,名称是:config.ini。配置文件各参数介绍,参考如下:

    [PERFORMANCE]

    package_name = com.xxxxx.xxxx

    activity = com.xxxxx.xxx.xxxxxPager

    start_no = 10

    interval = 5

    capture_num = 100

    isROOT = True


    [MONKEY]

    #种子数

    throttle = 500

    #事件数

    event_number = 10000

    #事件延迟时间

    event_delay_time = 600

    #事件分布比,填写正整数,且总和不能超过100

    pct_touch = 30

    pct_motion = 30

    pct_nav = 0

    pct_trackball = 0

    pct_majornav = 10

    pct_syskeys = 10

    pct_appswitch = 10

    pct_anyevent = 10


    [CAPTURE_FILE]

    #性能数据采集后记录到文件

    cpu_info_file = cpu_info.txt

    cpu_load_file = cpu_load.txt

    mem_info_file = mem_info.txt

    flow_info_file = flow_info.txt


     

    2SQLIte数据库表设计说明

    表名 字段 字段说明
    cpu_data    
      capture_time 采集时间点
      occupancyRate 总的cpu消耗百分比
      user user百分比
      kernel kernel百分比
       
    cpu_load    
      capture_time 采集时间点
      lavg_1 1分钟平均负载
      lavg_5 5分钟平均负载
      lavg_15 15分钟平均负载
      nr_running 在采样时刻,运行队列的任务的数
      nr_threads 在采样时刻,系统中活跃的任务的个数(不包括运行已经结束的任务)
      last_pid 最大的pid值,包括轻量级进程,即线程
       
    flow_data    
      capture_time 采集时间点
      download wifi下载流量
      upload wifi上传流量
      down_flow_diff 本次download-上一次download,差值为两个采集时间点下载流量的实际消耗
      up_flow_diff 本次upload-上一次upload,差值为两个采集时间点上传流量的实际消耗
       
    mem_data    
      capture_time 采集时间点
      mem_percent 内存实际消耗百分比(PSS/MemoryTotal)


    3、创建表SQL语句

    表名 SQL语句
    cpu_data CREATE TABLE [cpu_data] (
      [capture_time] DATETIME NOT NULL,
      [occupancyRate] CHAR NOT NULL,
      [user] CHAR NOT NULL,
      [kernel] CHAR NOT NULL);
       
    cpu_load CREATE TABLE [cpu_load] (
      [capture_time] DATETIME NOT NULL,
      [lavg_1] CHAR NOT NULL,
      [lavg_5] CHAR NOT NULL,
      [lavg_15] CHAR NOT NULL,
      [nr_running] INT,
      [nr_threads] INT,
      [last_pid] CHAR);
       
    flow_data CREATE TABLE [flow_data] (
      [capture_time] DATETIME NOT NULL,
      [download] CHAR NOT NULL,
      [upload] CHAR NOT NULL,
      [down_flow_diff] CHAR,
      [up_flow_diff] CHAR);
       
    mem_data CREATE TABLE [mem_data] (
      [capture_time] DATETIME NOT NULL,
      [mem_percent] CHAR NOT NULL);

     

     

    4、涉及的第三方模块

    模块名称

    安装命令

    模块说明

    progressbar

    pip install progressbar

    进度条

    configobj

    pip install configobj

    读取配置文件

    matplotlib

    pip install matplotlib

    绘图使用

    dateuti

    pip install python-dateutil

    绘图使用

    numpy

    pip install numpy

    绘图使用

     

     

     

     

     

    性能数据收集代码执行

        执行src目录下run_performance.py,即可进行性能数据的收集工作,在数据收集期间,请手工进行app端的功能测试,这样的数据采集才具有意义。

     

    Monkey稳定性测试

    src目录下,执行run_monkey.py,可调用monkey命令进行稳定性测试,产生的日志信息记录在report目录下。

     

    说明:

        可在进行monkey稳定性过程中,进行性能数据收集操作,这样采集的数据为monkey稳定性测试期间被测app的性能数据。

     

     

    测试报告查看

    测试报告在report目录下Performance_Results.html文件,部分截图详见附件


  • python all any

    2014-07-07 14:53:15

    python all any

    all
    def all(iterable):
        for element in iterable:
            if not element:
                return False
        return True

    any
    def any(iterable):
       for element in iterable:
           if  element:
               return False
       return True
       

    all 只要list或tupe中含有0,'',false中的任何一个,则为false;否则为true
    any 只要list或tupe中含有0,'',false(全部),则为false;否则为true
    注意:
    all  空元组、空列表返回true
    any  空元组、空列表返回false
Open Toolbar