web和webview性能测试

1.chrome浏览器控制台的功能
加载的时候绿色条、蓝色条是根据谁先加载默认排序的
preserve log:保存日志
disable cache:建议钩上,不然速度就比较快的加载,因为有缓存 
录制,清空
时间线
  • 蓝线:dom 加载完成
  • 红线:所有资源加载完成

捕获:查看加载图片

根据 waterfall 排序 ,进行资源筛选

shift 查看资源依赖关系 

2.弱网测试
webview可以提供弱网
有的网站可以做到离线加载,但是大部分网站做不到离线加载,offline后刷新会提示访问异常
3.网页捕获等功能
点击灰色的圆点就会实现录制
勾选第一个按钮,就不会加载js,使整个界面看上去整洁一些
 
点击环状腰带形状按钮,可以查看页面层级结构
火焰图(调用关系图)
性能分析工具
最重要的是分析main()函数

快捷键: ad左移和右移 ws放大和缩小
并且我们可以通过查看谷歌官方文档去查看其他性能工具,地址如下:
https://developers.google.com/web/tools/chrome-devtools/network/reference#timing-explanation
 
4.python脚本获取页面性能数据
根据w3c标准,使用python脚本执行js,获取页面加载时间等性能数据
这里是以雪球app为例子,对雪球app中的H5页面进行操作获取性能数据
w3c:https://www.w3.org/TR/navigation-timing/#sec-navigation-timing-interface
from appium import webdriver
from selenium.webdriver.common.by import By


class TestWebview:
    _package = "com.xueqiu.android"
    _activity = ".view.WelcomeActivityAlias"

    def test_webview(self):
        caps = dict()
        caps["platformName"] = "android"
        caps["deviceName"] = "hogwarts"
        caps["appPackage"] = self._package
        caps["appActivity"] = self._activity
        caps["noReset"] = True
        # 需要对应版本的 chromedirver ,才能在 webview 中执行 js 代码
        caps["chromedriverExecutable"] = "C:/develop/chromedriver/chromedriver2.20.exe"
        # 初始化driver
        self._driver = webdriver.Remote(
            "http://localhost:4723/wd/hub",
            caps)
        self._driver.implicitly_wait(15)
        # 进入到 webview
        self._driver.find_element(By.XPATH, "//*[@text='交易']").click()
        # 切换上下文到 webview
        webview = self._driver.contexts[-1]
        self._driver.switch_to.context(webview)
        # 执行 js 代码,获取性能数据
        all_time = self._driver.execute_script("return window.performance.timing")
        # 对数据进行二次操作
        response_time = all_time['responseEnd'] - all_time['responseStart']
        print(response_time)

android是基于linux系统的这一点一定要记住

5.使用 adb shell 获取 cpu 使用率

需要记住的是top命令缺点:本身就是一个性能杀手

while true;do adb shell top -n 1 | grep xueqiu | awk '{print $3}';done

cpu 使用率:

  • 用户态:计算操作
  • 内核态:I/O 操作 -> 系统调用

IO:文件系统的读写,write、open、read(文件IO、物理IO)
性能不仅包括timing还有navigation 

 

posted @ 2020-05-11 13:35  zhaikunkun  阅读(557)  评论(0)    收藏  举报