bytedance / Fastbot_iOS

About Fastbot(2.0) is a model-based testing tool for modeling GUI transitions to discover app stability problems
Other
563 stars 114 forks source link

Fastbot -iOS在如图界面停留了超过半小时还不出来,好不容易出来,没几分钟,又再次进去,又玩半个小时,绝望。。。 #52

Closed shark-666 closed 3 years ago

shark-666 commented 3 years ago

我的 app 主页有 5 个按钮作为入口,这个入口在右上角(如图二),Fastbot -iOS在(如图一)界面停留了超过半小时还不出来,好不容易出来,没几分钟,又再次进去,又玩半个小时,绝望。。。不知道为什么进入这里的频率和时长这么久。

这个页面需要点击四个CheckBox(或者 CheckBox 后面的文本也是点击区域)才能出去到主页面,Fastbot -iOS有时候也把这四个CheckBox点击出去了,但是没过两分钟,又进去了,我真的是气死了。

希望Fastbot -iOS能处理这种情况,不要在这里停留太久,就算停留很久,也不要再次进入了,否则完全无法起到遍历的效果啊。

IMG_8805

image
geron-cn commented 3 years ago
  1. 首先这个 这个页面需要点击四个CheckBox(或者 CheckBox 后面的文本也是点击区域)才能出去到主页面 作为前提条件对于算法来说命中率预期内的会是比较低一些。
  2. Fastbot-iOS 默认采用的是图像处理作为页面描述基础手段,很难兼容所有复杂背景, 上面提到的第一张图的上半部分 和 第二张图右上角部分解析效果会比较差

针对第二种情况,可以考虑使用 stub 模式替换图像模式去描述整个页面, 使用方式可参考英文手册的 Advanced Extension 部分

geron-cn commented 3 years ago

另外, 针对第一种情况, 建议在 FastbotRunner.m 的 fastbot case前,编写另一个 xcuitest case 在 fastbot 前执行,达到跳过这个页面的目的。 如果使用 stub 模式的话, 直接裁剪这个页面其他元素,也可以提高命中率。

shark-666 commented 3 years ago

@geron-cn 第二种情况,我放开这段代码了,schema 也设置了,还是会一直进入这个页面,请问是需要怎么裁剪这个页面的其他元素呢?

image
geron-cn commented 3 years ago

可以在 stub.m 里面对 pushViewController 进行 hook, 或者简单的办法, 在 stub.m describeUIView 里面对进入这个页面的控件进行剔除不返回 也就是实现黑控件功能)

shark-666 commented 3 years ago

我找到 stub.m这个文件了,可以详细说说怎么在stub.m describeUIView剔除么,最好能举个比较详细的例子,不好意思,我对 iOS 不太懂。

shark-666 commented 3 years ago

@geron-cn 你好,我在这四个 CheckBox 里面跑了一天了,早上到下午,麻烦指导一下,怎么实现黑控件功能,我需要屏蔽这个按钮,否则 fastbot-iOS对我来说相当于没法用了,非常感谢。

geron-cn commented 3 years ago

@geron-cn 你好,我在这四个 CheckBox 里面跑了一天了,早上到下午,麻烦指导一下,怎么实现黑控件功能,我需要屏蔽这个按钮,否则 fastbot-iOS对我来说相当于没法用了,非常感谢。

需要一定开发基础,相对快捷的方式: 在 describeUIView 中打印(或输出到 /Documents)这个页面, 然后找到这几个按钮的特征, 然后在 代码中 根据这个特征过滤掉这几个控件即可。