美文网首页
多机Monkey全自动测试尝试

多机Monkey全自动测试尝试

作者: 小安静子 | 来源:发表于2017-08-14 22:34 被阅读38次

说起Monkey测试,很多人第一印象是,那不简单,一条命令跑起来就可以了。如同厨师毕业考试,要做一盘麻婆豆腐。看似简单,真正要做到好,就不见得有那么容易了。

确实,如果很简单的monkey测试,一条命令就够了。但是跑这条命令的时候,你是不是需要手动做很多准备工作和考虑一下几个方面?

  1. 下载安装build。
  2. 如果有登录,你还得手工先登录好, monkey可做不来这活儿。
  3. Monkey就是个顽皮的小猴子,不可控,总会点到系统的东西。
  4. 分析log, 提炼出crash信息。
    如果有多台设备呢?
    如果要对多个产品测试呢?

你会发现手工真的好累。

Snake 尝试将其全部自动化,这样省时省力。
先看流程图:

屏幕快照 2017-08-10 下午9.50.46.png

只需要把指定产品,指定环境,随便插上几台设备,启动脚本,就可以悠哉悠哉喝茶去了。
程序会自动将APK build好,下载到电脑上,分别把设备黑名单设置好。
自动启动appium server, 分别安装在设备上,然后登录好。分别启动monkey,运行起来。
完成以后,自动分析log, 将最终结果总结出来,发封邮件到你邮箱。
这是多么美好的一件事情哈。

可能你会说,你端口如何设置?这个不用担心,当设备插入后,程序会自动将设备的信息,name, version等分别记录在案,并分配了端口。

这是如何做到的呢?
自然少不了多线程,这里要简单介绍下python的多线程
Pool类可以提供指定数量的进程供用户调用,当有新的请求提交到Pool中时,如果池还没有满,就会创建一个新的进程来执行请求。如果池满,请求就会告知先等待,直到池中有进程结束,才会创建新的进程来执行这些请求。
apply()
函数原型:

apply(func[, args=()[, kwds={}]])

该函数用于传递不定参数,主进程会被阻塞直到函数执行结束(不建议使用,并且3.x以后不在出现)。
apply_async()
函数原型:

apply_async(func[, args=()[, kwds={}[, callback=None]]])

与apply用法一样,但它是非阻塞且支持结果返回进行回调。
map()
函数原型:

map(func, iterable[, chunksize=None])

Pool类中的map方法,与内置的map函数用法行为基本一致,它会使进程阻塞直到返回结果。 注意,虽然第二个参数是一个迭代器,但在实际使用中,必须在整个队列都就绪后,程序才会运行子进程。

join()
主进程阻塞等待子进程的退出,join方法必须在close或terminate之后使用。

Monkey的命令,以及黑名单,就不在这讲了,如果还不知,请自行搜索。
运行时,大概就是这样子的。

    check_folder(log_dir)
    jenkins = Jenkins(build_path)
    jenkins.download_build()
    get_devices_info()

    if get_devices_info():

        pool = Pool(len(get_devices_info()))
        pool.map(start_appium_server,get_devices_info())
        pool.close()
        pool.join()

        pool2 = Pool(len(get_devices_info()))
        pool2.map(login,get_devices_info())
        pool2.close()
        pool2.join()
        
        pool3 = Pool(len(get_devices_info()))
        pool3.map(write_blacklist,get_devices_info())
        pool3.close()
        pool3.join()
        
        pool4 = Pool(len(get_devices_info()))
        pool4.map(run_monkey, get_devices_info())
        pool4.close()
        pool4.join()
    else:
        print("no device found")

目前运行起来还是很有效果的,就是有自己乱点正好登出等小问题。

更多精彩,请关注微信公众号: python爱好部落

相关文章

  • 多机Monkey全自动测试尝试

    说起Monkey测试,很多人第一印象是,那不简单,一条命令跑起来就可以了。如同厨师毕业考试,要做一盘麻婆豆腐。看似...

  • Monkey全自动化测试详解【二】

    在上一篇Monkey全自动化测试详解【一】中,主要讲解了Monkey的一些基本原理和操作,这篇将主要讲解如何使用P...

  • Monkey全自动化测试详解(一)

    关于Android Monkey自动化测试这块其实要讲的内容有很多,从基本原理到用Python封装全自动化执行监控...

  • Monkey命令

    Monkey命令 一、Monkey测试简介 Monkey测试是Android平台自动化测试的一种手段...

  • Monkey测试入门

    一、什么是Monkey测试? Monkey测试也成为压力测试,是Android自动化测试的一种手段,当Monkey...

  • Android稳定性之Monkey测试

    Monkey测试简述 monkey测试顾名思义猴子测试,猴子什么都不懂,只知道在键盘上乱敲。 monkey测试原理...

  • Android Monkey测试及源码分析

    一、Monkey测试简介 monkey测试是Android压力测试的一种手段,通过monkey程序随机模拟用户触摸...

  • 全自动板材码垛机A大英全自动板材码垛机厂

    全自动板材码垛机A大英全自动板材码垛机A全自动板材码垛机厂 全自动板材码垛机可以把硅酸钙板进行全自动码垛作用,节省...

  • monkey测试命令

    下面介绍一种Monkey测试方法:单一模块Monkey测试 以下这条Monkey指令为例: monkey -s 1...

  • App Monkey压力测试(二)

    App Monkey压力测试(一) Monkey测试的一个实例 通过这个实例,我们能理解Monkey测试的步骤以及...

网友评论

      本文标题:多机Monkey全自动测试尝试

      本文链接:https://www.haomeiwen.com/subject/rwskrxtx.html