熬夜再战Android从青铜到王者-聊聊自动化测试真经
熬夜再战Android从青铜到王者-UI组件快速搭建App界面
熬夜再战Android从青铜到王者-几个适配方案
熬夜再战Android从青铜到王者-开发效率插件篇
Unity粒子特效系列-龙卷风预制体做好了,unitypackage包直接用!
姐姐喊我解锁套娃新技能:FairyGUI在Unity中实现List嵌套List/立体画廊等,玩出花儿来
Unity新手必备5款宝藏插件–价值上千元白嫖最新版
👉关于作者
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣 !!!
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎私我,交流群让学习不再孤单。
👉即将学会
适合要入门自动化测试的人阅读,小空不是测试人员,在请教了测试的朋友后了解到的相关知识。
👉背景
有时候开发完会发现莫名奇妙的Bug,Bug 来了咱不怕,那就解决呗。但是这 Bug贼得很,几个小时甚至几天出来调戏你一次,撒手就跑,就问你服不服。所以为了让 App 中的 Bug 尽可能的减少,好好研究了下 Android 平台的自动化测试,在此总结一下。
👉实践过程
😜自动化总纲
Android 平台的自动化测试可以从两个方向入手
- Android 端的自动化测试框架
- 各大云测试平台
- 腾讯优测云测试平台
- 华为开发者联盟
- Testin 云测
测试的内容包括:
- 兼容性测试:安装、启动、登录、遍历、卸载
- 功能测试:行为检测、手势模拟、功能验证
- 稳定性测试:CPU/内存/Crash/ANR/功能异常等
- 场景测试:模拟真实网络场景,2G、3G、4G、wifi 网络的切换
Android 自动化测试框架
通过代码完成相应的测试用例,尽量减少人工的重复性操作,提升工作质量解放双手去创造更有意思的。伴随的缺点就是对测试人员的开发需求要高一些,而且有限,作为辅助开发的选择。
各大云测试平台
可以提供市面上大部分机型,兼容性测试很广,测完之后都会有详细的测试报告,位置定位比较明确。缺点嘛,就一个「收费」。毕竟人家也是要恰饭的。
😜真经上卷:自动化测试框架
第一重-ADB
开始前,我们先熟悉下ADB几个命令,因为底层的操作其实就是adb的各种真气流转,这点要了解。
安装卸载
adb install 安装包地址 adb uninstall 包名
adb 获取包名/界面名
adb shell dumpsys window windows | findstr mFocusedApp
发送文件到手机
adb push 电脑文件路径 手机文件夹路径
从手机拉取文件
adb pull 手机文件路径 电脑文件夹路径
打印日志信息
adb logcat 找到异常E级别
第二重-UIAutomator2
Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有缺点:
- 只能使用Java语言 ;
- Android版本大于4.4,
- Python大于2.7 必须每次被上传到设备上运行;
为了解决以上缺点,才有了uiautomator2。uiautomator2是一个Android UI自动化框架,支持Python编写测试脚本对设备进行自动化。
基本原理
uiautomator2的底层是基于Google uiautomator,原理是在手机上运行了一个http服务器,将uiautomator中的功能开放出来,然后再将这些http接口,封装成Python库。
安装uiautomator2
- pip install --pre uiautomator2
- pip install pillow
测试试验脚本
import uiautomator2 as u2
from time import sleep
d = u2.connect('192.168.1.66')
# 启动App
d.app_start("com.zhima.app")
# 搜索
d(resourceId="com.zhima.app:id/j0").click()
# 输入关键字
d(resourceId="com.zhima.app:id/p9").set_text("flyme")
# 搜索按钮
d(resourceId="com.zhima.app:id/tp").click()
sleep(2)
# 停止app
d.app_stop("com.zhima.app")
此框架说到这就结束了,有兴趣的可自信修炼,因他不是跨平台的,我们先放一放,重点看第三重-Appium
第三重-Appium介绍
Appium 是一款「移动」的自动化测试框架,牛逼的地方在于支持 iOS 和 Android 原生和混生的移动 Web 应用程序,也就是跨平台。
Appium环境搭建
我们使用Appium和python来进行测试,所以需要安装Appium客户端以及Python环境。
他们的执行顺序是:
python代码 -> Appium-python库 -> Appium -> 手机。
极速体验
- 打开手机模拟器/真机
- 打开appium工具
- 创建python项目
- 复制下面代码,并作微微修改
测试示例
from appium import webdriver
import time
desired_caps = dict()
# 平台的名字,大小写无所谓,不能乱写
desired_caps['platformName'] = 'Android'
# 平台的版本
desired_caps['platformVersion'] = '9'
# 设备的名字,随便写,不能乱写
desired_caps['deviceName'] = '123456'
# 要打开的应用程序
desired_caps['appPackage'] = 'com.huawei.systemmanager'
# 要打开的界面
desired_caps['appActivity'] = '.mainscreen.MainScreenActivity'
# 地址就是appium启动页面的地址端口
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
time.sleep(5)
到这就有一个简单的启动了,当然既然是自动化测试,单纯启动没什么用,所以我们就需要具体的操作view/控件,这个时候就需要借助UIAutomatorViewer
UIAutomatorViewer
他是用来扫描和分析Android应用程序的UI控件的工具,帮助你快速获取元素特征。
- 进入SDK目录下的目录
- mac 在 tools/bin 目录下,打开 uiautomatorviewer
- windows 在 tools 目录下,打开 uiautomatorviewer.bat
- 电脑连接真机或打开android模拟器
- 启动待测试app
- 点击 uiautomatorviewer 的左上角 Device Screenshot (从左数第二个按钮)
- 点击希望查看的控件 查看右下角
- Node Detail 相关信息
有了特征值,后面我们就可以搞事情了。怎么办呢?利用Appium的api进行对应的操作即可
# 获取当前设备的分辨率
print(driver.get_window_size())
print(driver.get_window_size()["width"])
print(type(driver.get_window_size()["width"]))
# 点击
driver.find_element_by_id("com.android.settings:id/search").click()
# 清空所有文本内容
input_label.clear()
# 获取文本内容
eles = driver.find_elements_by_id("com.android.settings:id/title")
还有更多API就不介绍了,代码是死的,人是活的,灵活运用,可以写出很多骚操作的测试用例。
其他的一些框架比如Espresso等,虽然也是Google自己出的,有不少优点,但是年久未更,放一放,以后再说,权当是普及。
😜真经下卷:云测试平台
第一重-腾讯优测云测试平台
图.png
收费高,pass!(图也懒得传)
第二重-Testin
第三重-华为开发者联盟
可以云端测试,远程调试,特点是免费的。但是只支持华为品牌。具体的报告日志详细。
测试主要包括:
- 兼容性测试:华为这边提供所有华为手机的测试
- 稳定性测试
- 安装、启动、注册登录、遍历、卸载
- Crash、ANR、UI、功能异常
- 提供问题上下截图及异常截图
😜最终卷-返璞归真
当你使用很熟练了之后,过过脑子就基本能定位到BUG模块,这时候可能用手撸是最快的。思想与手速相辅相成,唯快不破。
👉其他
📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢欢迎点赞👍收藏🌟留言📝
💕💕💕💕💕💕💕💕💕💕💕💕👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇💕💕💕💕💕💕💕💕💕💕💕💕
相关文章
- [Android] 性能获取方式-转自淘测试
- [Traceview]android性能测试
- [android]android自动化测试十一之代码覆盖率报告EMMA
- [android]android自动化测试十之单元测试实例
- [android]android自动化测试六之命令行编译APK
- [android]android自动化测试三之设定AVD各项参数
- Android 性能测试实践(一)
- [Android Memory] Android性能测试小工具Emmagee
- Android实例-Delphi在运行时更改Android屏幕旋转(IOS也支持,不过我可没有苹果机,测试不了)
- android 5.0新特性学习--RecyclerView
- 《Gradle权威指南》--Android Gradle测试
- 133、 Android 自动化测试(转载)
- Android错误:Re-installation failed due to different application signatures
- Android修行手册 - ScrollView属性全解析
- android CTS和GTS测试FAIL项解决集锦
- Android kotlin 组件间通讯 - LiveEventBus 及测试(更新中)
- Android 11.0 12.0NavigationBarView 导航栏 左边显示的修改
- Android 根据sensor重力感应 app横竖屏旋转
- Android 10.0 RK平台gps.default.so预编译到/system/lib/hw 下编译通不过的解决方案
- 【Android Gradle 插件】ProductFlavor 配置 ( 测试相关配置 | versionNameSuffix 配置 | applicationIdSuffix 配置 )
- 【Android 安装包优化】WebP 应用 ( 4.0 以下兼容 WebP | Android Studio 中使用 libwebp.so 库向下兼容版本 | libwebp 库测试可用性 )
- Android系统之onFirstRef自动调用原理(一百三十八)
- 编译Android源码:Exception in thread “main“ java.lang.UnsupportedClassVersionError:报错解决(七)
- monkey测试===如何获取android app的Activity