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
浙公网安备 33010602011771号