美文网首页测试开发
用ADB命令写Android自动化测试脚本

用ADB命令写Android自动化测试脚本

作者: Tyhj | 来源:发表于2019-01-26 11:00 被阅读0次

    之前有用过monkey进行测试,简单测试一下稳定性;最近也简单了解了一下Espresso感觉还可以,可以对UI进行测试和校验;最近发现自己根据adb命令来写一下脚本来执行自动化测试也是不错的,比较有意思,主要是测试程序的稳定性

    脚本来执行测试的优缺点

    • 写起来容易
    • 基本上可以实现90%以上的功能性覆盖
    • 测试结果需要通过自己观察整个过程和日志文件来得出的
    • 有些外部的动作,脚本是无法实现的,比如需要录入指纹
    • 只适配特定尺寸的设备
    • 没法对内容进行校验
    • 执行命令间隔时间要把控好

    实现原理

    Espresso比较起来,其实原理是差不多的,都是模拟输入事件来操作程序;脚本是用adb命令来实现点击哪一个位置,位置需要自己测量,而Espresso的话就是通过写代码来获取控件的位置来实现的,还可以添加一些对控件内容的校验;所以脚本不需要知道程序的代码,只需要看见界面,自己拿控件位置,就可以写出测试脚本,而Espresso需要知道这个界面的具体组成部分,拿到每个控件的ID,写代码获取到控件,也自然可以对控件本身做一些校验

    实现难度

    脚本其实就只需要反复执行那么几个adb命令,主要工作在于测量控件位置和命令的执行顺序,还是比较简单;Espresso其实也差不多,也比较简单,但是写测试代码的人员肯定要能看懂Android代码,根据代码和流程写测试代码

    屏幕适配

    脚本可能还需要根据界面尺寸来做调整,其实就是多种尺寸需要写多套脚本;Espresso肯定是不用的

    测试过程

    测试过程就是模拟输入事件,所以哪里出了问题,自己观察整个过程是最好的,有错误的话,也可以通过输出错误日志到文件;其实感觉和Espresso也差不多

    可玩性

    写写脚本肯定是更有意思一点,不仅仅是某个程序,所用应用都可以写出一些脚本来玩,执行自动化运行;搭配上ADB网络调试,不就可以忽悠一大堆小白,成为他们的黑客了

    简单的运用

    比如在mac上,写一个解锁的shell脚本,点亮程序解锁;当然解锁密码肯定要知道,或者图案密码,人脸、虹膜、指纹肯定是不行的;

    #!/bin/bash
    adb shell svc power stayon true
    sleep 0.2
    adb shell input keyevent 82
    sleep 0.2
    adb shell input text 4444 && adb shell input keyevent 66
    sleep 0.6
    

    执行脚本

    sh test.sh
    

    常用命令

    打电话

    adb shell am start -a android.intent.action.CALL -d tel:10086
    

    打开QQ

    adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity
    

    打开微信

    adb shell am start com.tencent.mm/com.tencent.mm.ui.LauncherUI
    

    打开支付宝

    adb shell am start com.eg.android.AlipayGphone/.AlipayLogin
    

    杀死支付宝

    adb shell am force-stop com.eg.android.AlipayGphone
    

    关闭QQ

    adb shell am force-stop com.tencent.mobileqq
    

    点击事件

    adb shell input tap 500 500
    

    home键

    adb shell input keyevent 3
    

    返回键

    adb shell input keyevent 4
    

    截图(保存到SDCard)

    adb shell /system/bin/screencap -p /sdcard/screenshot.png
    

    从SD卡导出到电脑

    adb pull /sdcard/screenshot.png /Users/dhht/Desktop
    

    录屏

    adb shell screenrecord /sdcard/test.mp4
    adb pull /sdcard/test.mp4 /Users/dhht/Desktop/test.mp4
    

    亮屏

    adb shell input keyevent 26
    

    上下滑动

    adb shell input swipe 700 2000 700 1000
    

    左右滑动

    adb shell input swipe 100 1000 1000 1000
    

    解锁

    adb shell input keyevent 82
    

    锁定

    adb shell input keyevent 26
    

    输入密码,并回车:

    adb shell input text 123456 && adb shell input keyevent 66
    

    屏幕长亮

    adb shell svc power stayon true      [true|false|usb|ac|wireless]
    

    wifi设置界面

    adb shell am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings
    adb shell svc wifi enable  //打开wifi
    adb shell svc wifi disable  //关闭wifi
    

    蓝牙

    adb shell service call bluetooth_manager 6 //打开蓝牙
    adb shell service call bluetooth_manager 9 //关闭蓝牙
    

    关机重启

    adb reboot  //重启
    adb shell reboot  //重启
    adb shell reboot -p  //关机
    

    打开网页

    adb shell am start -a android.intent.action.VIEW -d  http://google.com
    

    卸载应用

    adb uninstall com.example.appname
    

    屏幕相关

    wm density
    wm size
    wm density 240
    

    定位当前页面位置

    adb shell dumpsys activity top
    

    获取屏幕分辨率

    adb shell wm size
    

    删除屏幕锁

    adb shell rm /data/system/access_control.key 
    adb shell rm /data/system/password.key 
    adb shell rm /data/sysem/gesture.key 
    

    相关文章

      网友评论

        本文标题:用ADB命令写Android自动化测试脚本

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