liushun 2020-04-24
案例故事: Android车载测试过程中,客户反馈低概率偶现高德地图App启动过程中,
出现了报错:“高德地图无法继续运行”,客户说只碰到过一次,后续再没复现过,
测试经理安排我们负责压测,反复进行高德地图打开关闭,
并在打开过程中,截一张图,打开加载完毕后再截取一张图,
测试经理希望自动化实现截取一晚上!
记住批处理脚本的精髓:顺序批量执行
# coding=utf-8 import os import time for i in range(100000): print("正在进行第%s轮高德地图重启测试" % i) os.system("adb shell am start com.autonavi.amapauto/com.autonavi.amapauto.MainMapActivity") os.system("adb shell screencap -p /sdcard/a.png") os.system("adb pull /sdcard/a.png D:\\MapTest\\once_%s.png" % i) # App启动中的截图 time.sleep(5) os.system("adb shell screencap -p /sdcard/a.png") os.system("adb pull /sdcard/a.png D:\\MapTest\\twice_%s.png" % i) # App启动完成的截图 os.system("adb shell am force-stop com.autonavi.amapauto") os.system("pause")
只需要一个函数reboot_apk,但是需要传递2个参数进去。
# coding=utf-8 import os import time # 封装,只留2个参数接口 def reboot_app(package_name, activity_name): os.system("adb shell am start %s/%s" % (package_name, activity_name)) os.system("adb shell screencap -p /sdcard/a.png") os.system("adb pull /sdcard/a.png D:\\MapTest\\once_%s.png" % i) # App启动中的截图 time.sleep(5) os.system("adb shell screencap -p /sdcard/a.png") os.system("adb pull /sdcard/a.png D:\\MapTest\\twice_%s.png" % i) # App启动完成的截图 os.system("adb shell am force-stop %s" % package_name) # 调用 for i in range(1000000): print("正在进行第%s轮高德地图重启测试" % i) reboot_app("com.autonavi.amapauto", "com.autonavi.amapauto.MainMapActivity") os.system("pause")
# coding=utf-8 import os import time class AppRebooter(): def __init__(self, package_name, activity_name): self.package_name = package_name self.activity_name = activity_name def reboot_app(self): os.system("adb shell am start %s/%s" % (self.package_name, self.activity_name)) os.system("adb shell screencap -p /sdcard/a.png") os.system("adb pull /sdcard/a.png D:\\MapTest\\once_%s.png" % i) # App启动中的截图 time.sleep(5) os.system("adb shell screencap -p /sdcard/a.png") os.system("adb pull /sdcard/a.png D:\\MapTest\\twice_%s.png" % i) # App启动完成的截图 os.system("adb shell am force-stop %s" % self.package_name) if __name__ == ‘__main__‘: a_obj = AppRebooter("com.autonavi.amapauto", "com.autonavi.amapauto.MainMapActivity") for i in range(1000000): print("正在进行第%s轮高德地图重启测试" % i) a_obj.reboot_app() os.system("pause")
确保Android设备通过USB线与电脑连接了,adb设备有效连接,
以上代码的3种实现形式都可以直接运行,比如保存为reboot_amap_100000.py并放在桌面,
建议python reboot_amap_100000.py运行,当然也可以双击运行,
运行一晚上后,第二天早上来,可以根据截图的文件大小,判断是否出现异常情况。
理论上说,图片的每个像素点都代表了不用的数据量,假如出现某个图片大小与其他的图片相差较大,
则说明这张图片的图像内容与别的不同,可能存在包含报错:“高德地图无法继续运行”的图片。
需要再手动check一下图片。
更多更好的原创文章,请访问官方网站:www.zipython.com
自拍教程(自动化测试Python教程,武散人编著)
原文链接:https://www.zipython.com/#/detail?id=f03fb024569c4dec9b5d59d9b1314bc0
也可关注“武散人”微信订阅号,随时接受文章推送。
adb shell cd system/app rm *.apk21. 获取管理员权限: adb root22. 启动Activity: adb shell am start -n 包名/包名+类名。
2、在设置好端口后就可输入命令连接:adb connect 192.168.2.36:5555,后面的:5555可以不用输入,例如我设置的:6666端口,则通过如下指令连接:。映像名称 PID 会话名