网站建设 amp 金手指排名效果好,莱芜二手房,做灯箱到哪个网站找业务,济南智能网站建设服务背景
目前移动端App上线后 crash 率比较高#xff0c; 尤其在iOS端。我们需要一款Monkey工具测试App的稳定性#xff0c;更早的发现crash问题并修复。
去年移动开发者大会上有参加 fastbot 的分享#xff0c;所以很自然的就想到Fastbot工具。
Fastbot-iOS安装配置
准备工…背景
目前移动端App上线后 crash 率比较高 尤其在iOS端。我们需要一款Monkey工具测试App的稳定性更早的发现crash问题并修复。
去年移动开发者大会上有参加 fastbot 的分享所以很自然的就想到Fastbot工具。
Fastbot-iOS安装配置
准备工具
XCode: iOS开发IDE。CocoaPads: 用来管理XCode依赖库的项目。Fastbot_iOS: github项目。tidevice: iOS 自动化工具。
通过macOS应用商店下载XCode。 安装cocoapods sudo gem install cocoapods -v1.8.1克隆fastbot_iOS项目并初始化 git clone https://github.com/bytedance/Fastbot_iOScd Fastbot_iOScd Fastbot-iOS pod install --repo-updateFastbot_iOS 是克隆的项目目录Fastbot-iOS是项目下面的子目录。 通过Xcode 打开项目Fastbo-iOS项目。
GitHub - bytedance/Fastbot_iOS: About Fastbot(2.0) is a model-based testing tool for modeling GUI transitions to discover app stability problems 具体配置查看github项目中的《中文手册》操作步骤非常详细。 运行测试XCode
点击顶部FastbotRunner 弹出菜单选择Edit Scheme... 选项。 在Scheme中设置参数参考表格
字段说明示例BUNDLEID被测试App的 Bundle IDcom.apple.Pagesduration测试时长单位分钟240throttle操作间隔单位毫秒300launchenv启动测试App的环境变量一般为空或者以 :分割的keyvalue形式isAutoTestUI1:AutoTest
执行测试
点击testFastbot 按钮开始运行Monkey测试。你可以在手机端看到被测试App以及启动并开始自动执行操作。 运行测试tidevice
tidevice是阿里开源的iOS自动化测试工具其实叫自动化工具有点不准确。他本质上有点像android 的 adb 工具可以理解为PC与iOS之间的通信工具。提供了一些非常有用的功能查看设备信息、安装卸载应用当然最主要的是可以执行XCTest。
github: GitHub - alibaba/taobao-iphone-device: tidevice can be used to communicate with iPhone device
安装tidevices pip install -U tidevice使用tidevice检查连接的设备udid tidevice list
List of apple devices attached
xxxx-xxxxxxxxxxx iPhone USB检查是否安装FastbotRunner-Runner App。 tidevice ps --json
[{pid: 11549,name: FastbotRunner-Runner,bundle_id: bytedance.FastbotRunner.name.xctrunner,display_name: FastbotRunner-Runner},
]前参考前面fastbot-iOS《中文手册》他会详细说明如何在手机上安装FastbotRunner-Runner APP。这一步极为重要。 通过tidevices 运行测试 tidevice xctest -B bytedance.FastbotRunner.name.xctrunner -e BUNDLEID:com.apple.Pages -e duration:480 -e throttle:300 --debug参考前面Scheme参数说明。 遇到的问题
fastbot是如何遍历的
这是我们想搞懂的一个问题以便于看看是否有可配置的选项。
fastbot- 算法原理 我们将页面的 GUI 信息抽象成模型中的 State将执行的动作抽象成模型中的 Action通过 State 作为图的节点Action 作为图的边连接形成有向有环图模型。遍历决策想法上源于 Alphago 的蒙特卡洛搜索树的思想此基础上我们也使用了其他强化学习的方法设计了 N 步 Q-Learning 算法和基于页面变化程度的 reward function为页面下每个 Action 计算出相应的 Q 值基于 Q 值选取最优动作。 ... 我们选择使用好奇心强化学习的方法来解决奖励稀疏问题同时结合自然语言处理对页面信息做特征抽象在原有 reward function 基础上增加好奇心Curiosity的 reward 上面摘自《奔跑吧智能Monkey之Fastbot跨平台》 一文所以不用做过多的人工配置或干预。随着不断执行App 的遍历也是不断强化遍历的工具的学习的过程。
fastbot不识别元素或无法解析DOM tree怎办?
这一点对我们尤为重要因为我们的App中大量页面是用flutter实现的做传统的UI自动化是非常麻烦。 在 Fastbot 低能耗、低耗时、高性能前提要求下我们优先选用最基础的图像处理技术来识别 GUI 界面信息可以在毫秒级完成构建一个页面的信息。 上面摘自《奔跑吧智能Monkey之Fastbot跨平台》 一文 强烈建议阅读原文多读几遍受益匪浅。
如何同时执行多个设备
tidevice的作者给了答案通过设备的udid号区分就可以了。当你的PC连接多个手机时。 tidevice list
List of apple devices attached
xxxx-xxxxxxxxxxx iPhone USB
yyyy-yyyyyyyyyyy iPhone USB启动x设备 tidevice -u xxxx-xxxxxxxxxxx xctest -B bytedance.FastbotRunner.name.xctrunner -e BUNDLEID:com.apple.Pages -e duration:480 -e throttle:300 --debug启动y设备 tidevice -u yyyy-yyyyyyyyyyy xctest -B bytedance.FastbotRunner.name.xctrunner -e BUNDLEID:com.apple.Pages -e duration:480 -e throttle:300 --debug测出了崩溃怎么办
我一开始想当然的以为测出了崩溃工具就停止呗以至于我跑了两天都以为工具没发现崩溃。后来在官方的微信群里问过才知道崩溃后重新启动App继续执行。直到设置的运行时间结束。
如何获取崩溃报告
这一步也很重要总不能崩溃就崩溃了吧monkey的执行过程我们又无法复现。我一开始以为日志藏在tidevice 中因为他运行的过程加--debug参数中会打印大量的日志。我又没办法把这个日志写到文件中(命令结尾加 log.txt 无用花了半天时间改 tidevice 的代码在logger的地方写文件。
后来发现这么做没有卵用tidevice/fastbot 相当于是指令的发出者他只会说“我发送了一条指令哦” 这样的废话至于 App 接收到指令后是否执行是否引起崩溃无法给到 tidevice/fastbot 工具。
但是作者说fastbot工具可以集成报告。
Where can I get the test report? · Issue #2 · bytedance/Fastbot_iOS · GitHub
我觉得他也只是说说因为这是8月份的问题当然这么好用的工具愿意开源就很好了不要不知好歹。可能他又有别的KPI要忙~
那么我们的App是有集成firebase的SDK如果App崩溃那么会上报日志到firebase平台可以在firebase平台上统计分析。 【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】 一、Python编程入门到精通
二、接口自动化项目实战 三、Web自动化项目实战 四、App自动化项目实战 五、一线大厂简历 六、测试开发DevOps体系 七、常用自动化测试工具
八、JMeter性能测试
九、总结尾部小惊喜
生命不息奋斗不止。每一份努力都不会被辜负只要坚持不懈终究会有回报。珍惜时间追求梦想。不忘初心砥砺前行。你的未来由你掌握
生命短暂时间宝贵我们无法预知未来会发生什么但我们可以掌握当下。珍惜每一天努力奋斗让自己变得更加强大和优秀。坚定信念执着追求成功终将属于你
只有不断地挑战自己才能不断地超越自己。坚持追求梦想勇敢前行你就会发现奋斗的过程是如此美好而值得。相信自己你一定可以做到
最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走
这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你