微信号:grzlwx

介绍:光荣之路官方资讯

AutoMonkey框架原理与应用(六)

2018-01-31 22:00 马华平

新书

速递


吴老的java版《selenium webdriver 实战宝典》和python版《selenium Webdriver 3.0 自动化测试框架实战指南》出版了,代码拿来就能用。

  文 | 马华平


四、autoMonkey框架

根据上文对Monkey的介绍和分析,我们现在考虑如何封装autoMonkey框架就比较容易了。个人选择Windows系统下,以Python语言实现。框架结构如图7所示:

图7 autoMonkey框架结构

1)框架入口:start.py

2)参数预设:conf

3)核心逻辑:core

1. 框架入口start.py,代码如下:

# encoding=utf-8

# Project: autoMonkey

# Author: Allan

# Version: V4

# Function:

# 1. Stability Test

# 2. Performance Test

# 3. Test Policy


import time

import datetime

import random

import threading

import unittest

from conf.config import config

from conf.setCondition import pre_condition, except_condition, post_condition, app

from core.util import create_log_path, test_policy, combineTestResult


class AutoMonkey(unittest.TestCase):


    def setUp(self):

        # 创建log目录

        create_log_path()

        # 配置初始化参数,启动服务及记录日志等

        pre_condition()


    def test_monkey(self):

        # 生成一个线程,实时记录内存、流量和流畅度等信息

        app.start()

        time.sleep(2)

        # monkey 测试

        package = config['G_APP_PACKAGE_NAME']

        for i in xrange(1, 2):

            # 记录 logcat 日志

            app.record_android_log(str(i) + config['U_LOGCAT_LOG'])

            try:

                print 'Start Round{}: '.format(i)

                seed = random.randint(100, 10000)

                # monkey 策略

                policy, count = test_policy()

                config['TEST_DETAILS']['Policy'].append(policy)

                # 执行 monkey 命令,并保存日志

                app.run_monkey(package, 'L2', seed, 500, count, str(i), policy)

                app.adb_screencap('screenshot{}.png'.format(i))

                # 分析 monkey 测试日志,统计结果

                res = app.analyze_monkey_log(policy, str(i)) 

                print 'End Round{}: Status {}'.format(i, res)

                # 结束 logcat 进程

                app.stop_running_process('logcat')

                # 结束 APP 进程

                app.stop_running_app(package)

            except Exception as error:

                # 异常处理

                print str(error)

                except_condition(str(i))

        print 'Test Results: ', config['TEST_RESULTS']

        # 结束线程

        app.stop()


    def tearDown(self):

        # 生成测试报告,绘制手机资源使用趋势图

        combineTestResult(config['TEST_RESULTS'], config['TEST_DETAILS'])

        # 结束服务

        post_condition()


if __name__ == '__main__':

    unittest.main()


2. 测试记录样例

--------------------打赏⬇小编------------------ --------------------打赏⬆小编------------------

1)Monkey测试结果概况

2)CPU使用趋势图

3)内存使用趋势图

4)内存详情趋势图

5)未释放Activities趋势图

6)流量趋势图

7)流畅度趋势图

上期精彩:

AutoMonkey框架原理与应用(一)--APP测试前瞻

AutoMonkey框架原理与应用(二)--Monkey基础知识与测试场景

AutoMonkey框架原理与应用(三)--Monkey测试策略

AutoMonkey框架原理与应用(四)--Monkey测试的日志分析(上)

AutoMonkey框架原理与应用(五)--Monkey测试的日志分析(下)

免费送书(2月1日中午12点揭晓):

1. python版《Selenium WebDriver 3.0 自动化测试框架实战指南》

2. 《疯狂前端开发讲义-jQuery+AngularJS+Bootstrap前端开发实战》

喜马拉雅app搜索并收听“光荣之路”电台

光荣之路
招聘|征稿|合作 |QQ群
735821166@qq.com
python群:457561756
性能群:415987441
招聘群:203715128
 
光荣之路 更多文章 AutoMonkey框架原理与应用(五) AutoMonkey框架原理与应用(四) AutoMonkey框架原理与应用(三) 技术还是管理? 招聘速递·大数据测试·华为研究所·西安
猜您喜欢 Technavio:2020年前制造业大数据市场将保持健康增长 一个你绝对不知道的AAC编码神级功能-深度干货分享 为什么ReactJS不适合复杂交互的前端项目?|TW洞见 关于 Block 中捕获 self 的分析 2015 – 2016 最新 Sublime Text 主题