@jackyroc apimock 简单用目前支持 2 种
1.对某一个接口轮询触发 mock 一种 fuzz。每次触发这个接口时更换一种 fuzz。当所有 fuzz 都应用过后再 mock 下一个新的接口
2.自定义注入一种 mock fuzz 如
python proxy.py -a /api/user/get -k re:name="H1 \u266a@\u5c0f\u8776\u6c42\u5b88\u62a4"
对 api/user/get 接口 正则找 name 字段的值替换为 H1 \u266a@\u5c0f\u8776\u6c42\u5b88\u62a4,其余内容不变
不同的注入可以动态添加 无需重启 mockserver
@gsky @jacexh @davidyang @carl 其实引流回放几年前就有了。最开始源于 gor 后来改名叫 goreplay https://github.com/buger/goreplay
我觉得主要是可以做 备份和回放放大。 我们之前有 游戏 beta 测试 考虑这种方式。花钱请批公会做真人压测,然后用这部分数据做录制然后 后面再回放和放大测试,这样。
得有钱
@jackyroc https://github.com/zhangzhao4444/Apimock 看这么满足吗?动态 mock
2018.03.22 update
[
{
"firstList":
[
{ "xpath": "//*[contains(@text,'绝地求生')]" }
],
"selectList":
[
{ "xpath": "//*[@clickable='true']" },
{ "xpath": "//*[@clickable='true']//*[contains(name(),'Text')]" },
{ "xpath": "//*[@clickable='true']//*[contains(name(),'Button')]" },
{ "xpath": "//*[@clickable='true']//*[contains(name(),'Image')]" }
],
"lastList":
[
{ "xpath": "//*[../*[@selected='true']]" },
{ "xpath": "//*[../../*/*[@selected='true']]" },
{ "xpath": "//*[../../*/*[@selected='true'] and contains(@resource-id,'tab_')]" },
{ "xpath": "//*[contains(@resource-id,'HorizontalScrollView')]" }
],
"blackList":
[
{ "xpath": "//*[contains(@resource-id,'wrapper_in_custom_title_bar')]//*[contains(@resource-id,'right_button')]" },
{ "xpath": "//*[contains(@resource-id,'share')]" }
]
}
]
控件选择策略 会按 1first 2select 3last 并屏蔽 black 来执行遍历操作。
adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.panda.videoliveplatform --uiautomatortroy --running-minutes 15 -v -v
另注 max.xpath.selector 需要 push 到/sdcard/
支持的
@leunggz 你这个需要定义很多特殊事件
qq 我下帮你看下原因 77227005
kotlin
import java.util.*
val str :String? = Scanner(System.`in`).nextLine()
print( "${try { str?.toInt() ?: 0 } catch (e: Exception) { 0 }}")
你这个是开线程定时循环主动检查的,还有一种是回调触发的。方法都是不错的,唯一缺陷是会长时占用 accessibilityservice。仍适用手工辅助的
你那里报错了吗? 加 q 群吧 看下 log
多谢支持,有建议或问题 可随时 q 我
嗯基本一致。只是将崩溃堆栈重定向输出到 log
我觉得是 算法
2018.03.09 update
1.(MIX 支持)高速截图 及 dump xml
配置
Max.config
max.takeScreenShot = true 开启截图
max.savePageSource = true 保存 xml
将该文件 push 到 /sdcard/max.config
截图的生效条件
throttle > 200 && max.takeScreenSho= true
1 默认保存在 /sdcard/
2 也可以自定义路径 --output-directory /sdcard/max1/
当自定义路径已存在 会自动mkdir max1.1 并将截图保存在max1.1中
案例:
adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.panda.videoliveplatform --uiautomatormix --running-minutes 6 -v -v --throttle 400 --output-directory /sdcard/max1/
备注:每分钟 100-200 截图,故因大量截图对手机空间要求较高,仅为复现崩溃时建议开启截图
问这个脱机的人很多,我原来就不知道。
关于如何脱机运行(adb 后拔掉 usb)
adb shell "CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.panda.videoliveplatform --uiautomatormix --running-minutes 60 -v -v >/sdcard/monkeyout.txt 2>/sdcard/monkeyerr.txt &"
关于黑控件 max.widget.black
-v -v -v -v 4 级 log 可以看到 blackWidget
生成:
每次刷新 activity 生成黑区域 会对控件 tree 按 xpath 进行 search,若找到则加入黑区域 或只配 bounds 则直接加入黑区域.
检测:
有 2 种:
贴里 有三处 "常见问题排查"
可以先排查看看 或加我 q
还得过段时间。
monkey 停打印的 log 是什么? 加我 q 下 77227005 调试看下问题