移动性能测试 用 appium 获取页面加载时间,几个问题请教大家

陆云达 · 2015年08月31日 · 最后由 hellcat 回复于 2019年01月31日 · 2710 次阅读

目前在自己的产品和竞品上,使用 appium 来获取页面加载时间,想法很简单,就是点击入口元素,埋点,然后定位一个目标元素再埋点,通过两个埋点时间差来计算页面加载时间。
现在做下来发现做出的时间比实际时间要长比较多,研究了下,大概有 2 个原因:

  1. 页面 dump 时间无法省去
  2. 遍历元素的时候会有等待

其中第一个问题,暂时没有比较好的解决方法,不知道大家有没有什么建议?

第二个问题,现在的想法是更改 uiautomator 的源码来解决,可以看到下面的源码中,在查找匹配元素的时候,每次找不到会有个固定等待时间,这个值默认是 1s
但是第二个问题来了,改完以后,怎么打 uiautomator.jar 包。。。

protected AccessibilityNodeInfo findAccessibilityNodeInfo(long timeout) {
    AccessibilityNodeInfo node = null;
    long startMills = SystemClock.uptimeMillis();
    long currentMills = 0;
    while (currentMills <= timeout) {
        node = getQueryController().findAccessibilityNodeInfo(getSelector());
        if (node != null) {
            break;
        } else {
            // does nothing if we're reentering another runWatchers()
            UiDevice.getInstance().runWatchers();
        }
        currentMills = SystemClock.uptimeMillis() - startMills;
        if(timeout > 0) {
            SystemClock.sleep(WAIT_FOR_SELECTOR_POLL);
        }
    }
    return node;
}
共收到 19 条回复 时间 点赞
陆云达 回复

用的 PY 还是 java 做的?

hellcat 回复

我这问题太早了,现在用 adb 自带的录像,然后把录下来的视频分帧处理后,用图像处理算法计算第一帧和最后一帧就可以了
图像处理算法没啥难度的,很多库都提供了方法,调用组合下就可以了

hellcat 如何计算 app 页面加载的时间? 中提及了此贴 12月05日 18:10
陆云达 回复

老铁,这个问题我们最近也在做。。有新的方法吗

您好,我们是高速摄像机研发制造企业 --- 合肥富煌君达高科信息技术有限公司,我公司的高速相机几百 ---- 一百万帧的相机都有覆盖,我们自己研发了图像采集软件和图像分析软件与相机进行匹配工作。欢迎来电咨询交流。13856506123

#14 楼 @neyo 不是,就是点击入口后在 uiautomator 源码里面埋个点,然后寻找元素的方法里面再埋个点这样做的

#13 楼 @eurekasaber 最后做法还是 dump 下来做的吗?目前我们这边也要做这个。。

#12 楼 @verainmay 最后就是按照帖子里面描述的做了,我自己觉得和肉眼比是差不多的。。。

有想出解决的方法吗?我最近也在想这方面的实践,数帧实在太无聊了……

#10 楼 @eurekasaber 百度一下 腾讯 GT

#9 楼 @917930921 GT 是啥啊~

GT 应该可以

#6 楼 @kasi 嗯。。。iOS 目前是高速摄像机,不过做的同学表示太无聊,不想一直做- -,想拓展一个自动化的方法。。。

#5 楼 @yangchengtest 我们做自己的产品是在 js 里面埋点的,不过为了和竞品比较,所以计算方法就要统一。。。各位说的方法其实都有考虑过,但是要用到竞品,现在只有觉得 appium 还能做做看

秒表时间误差还是存在,换录像数帧吧_^

H5 是不是可以在 JS 里面埋点?重写部分 LOAD?WEBVIEW 应该是可以从 CONSOLE LOG 取日志的。可能需要同时修改 H5 和手机端的代码。
没试过。。。要不你试试看呢?~不动源码的话,个人感觉都不怎么靠谱。
PS:要求不高的话,拿个秒表掐掐算了。。。网络条件不一样,时间也会不同么。。。~~~

#2 楼 @doctorq 要做竞品的对比,所以没法在 app 里面埋点

#1 楼 @sanlengjingvv 我是在我写的测试 case 里面埋点的,用 appium 方便自动化获取时间,logcat 的话,我是 H5 页面,很难获得准确的页面加载完成的那个时间点吧?

你这是在 case 里面埋点吧。应该在 app 的源码里埋点。

我觉得不能在源码里埋点,下一个考虑是从 logcat 日志获取时间,为什么要用 appium 这种呀?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册