美文网首页
Monkey测试

Monkey测试

作者: 雨落川川 | 来源:发表于2020-06-12 11:51 被阅读0次

    因为应用上线需要,所以来学习一下monkey测试怎么使用。

    像猴子一样的测试
    需要先解决一个问题

    在Android Studio的Terminal命令行中执行 adb,发现使用的adb.exe是在C盘下的
    系统的命令行中执行也是同样的

    G:\test_work\GuYuanTong>adb
    Android Debug Bridge version 1.0.40
    Version 4797878
    Installed as C:\Windows\system32\adb.exe
    
    global options:
     -a         listen on all network interfaces, not just localhost
     -d         use USB device (error if multiple devices connected)
     -e         use TCP/IP device (error if multiple TCP/IP devices available)
    

    造成的问题就是执行在Terminal下执行adb其他命令,都是报错的

    G:\test_work\GuYuanTong>adb -h
    adb: usage: unknown command -h
    

    开始排查问题,目的是要使用自己sdk路径下的adb.exe,也就是这个路径下的 D:\androidSDK\Sdk\platform-tools
    查看环境变量
    系统变量下新建了android变量,下面配置了D:\androidSDK\Sdk\platform-toolsD:\androidSDK\Sdk\platform-tools这两项,并在系统变量的path下添加了%android%
    这个看上去没啥问题啊,百思不得其解。
    突然想,把错误的这个adb.exe,也就是C盘下的这个删除了试试,果断的在C:\Windows\system32\adb.exe目录下删除了adb.exe,然后在cmd窗口和Terminal窗口下执行adb,发现问题解决了,执行结果
    如下:

    G:\test_work\GuYuanTong>adb
    Android Debug Bridge version 1.0.41
    Version 29.0.2-5738569
    Installed as D:\androidSDK\Sdk\platform-tools\adb.exe
    
    global options:
     -a         listen on all network interfaces, not just localhost
     -d         use USB device (error if multiple devices connected)
     -e         use TCP/IP device (error if multiple TCP/IP devices available)
    

    显然,找到了正确的位置。

    开始monkey测试

    Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

    根据我们要测试应用的包名启动app,随机操作1000次,com.xxx.xxx是要测试应用的包名

    adb shell monkey -p com.xxx.xxx 1000
    

    执行结果:

    G:\test_work\GuYuanTong>adb shell monkey -p com.xxx.xxx 1000
      bash arg: -p
      bash arg: com.xxx.xxx
      bash arg: 1000
    args: [-p, com.xxx.xxx, 1000]
     arg: "-p"
     arg: "com.xxx.xxx"
     arg: "1000"
    data="com.xxx.xxx"
        // activityResuming(com.xxx.xxx)
    Got IOException performing flipjava.io.IOException: write failed: EINVAL (Invalid argument)
        // Injection Failed
    Got IOException performing flipjava.io.IOException: write failed: EINVAL (Invalid argument)
        // Injection Failed
    Got IOException performing flipjava.io.IOException: write failed: EINVAL (Invalid argument)
        // Injection Failed
    Events injected: 1000
    ## Network stats: elapsed time=10699ms (0ms mobile, 0ms wifi, 10699ms not connected)
    
    

    重点看到这个Got IOException performing flipjava.io.IOException: write failed: EINVAL (Invalid argument) // Injection Failed
    究竟算不算是一个报错呢?找了一圈,也没有找到相关的说明啊。这里执行时是未登录情况,排查了登陆页面逻辑,登陆后,再次使用相关命令进行测试。

    monkey测试有很多的命令可以使用:

    -s

    -v:Level 0(缺省值)除 启动提示、测试完成和最终结果之外,提供较少信息。
    -v -v :Level 1提供较为详细的测试信息,如逐个发送到Activity的 事件。
    -v -v -v :Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。

    adb shell monkey -p com.xxx.xxx -v -v -v 1000
    

    -s

    伪随机数生成器的seed值
    测试为了人员能够重现测试到的bug问题,需要能够对Monkey的随机生成事件有重现能力,monkey允许对随机事件的seed值做设置,当两次seed值一样,整个测试效果将会产生相同的事件序列

    adb shell monkey -p com.xxx.xxx -s 123 -v  1000
    

    先写这么多,用到了再摆渡。
    先去按照小米测试给出的 [FC_Log文件] 解决bug了。

    相关文章

      网友评论

          本文标题:Monkey测试

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