W3C标准即浏览器标准(W3C).普通浏览器支持W3C标准(W3C标准),该标准规定用户能够通过api进行性能信息的查询,并能够借W3C协议来完成自动化H5的性能测试
W3C网站:
https://www.w3.org/TR/navigation-timing/
用chrome浏览器手动查看webview,随着业务的增加,次数也越来越多,手动操作速度将跟不上业务的发展,这时就需要采用自动化方法来检验webview的性能
页面加载完成后,将对一系列的内容进行渲染,而渲染的过程可以划分为几个阶段,例如如下图所示
•Promptforunload在进入新页后卸载旧页所需的时间
•redirect重定向、用户取消登陆后回到主页面以及跳过其他站点等等
•Appcache查看缓存并开启缓存
•DNS指示DNS查询所需时间,若为长连接或从缓存和其他本地存储中请求文件时,返回fetchStart时
•TCP和服务器之间建立联系所需时间
•Requests客户端申请启动时间
•Response获得服务器首个响应字节至上一响应字节所需的时间
•Processing中各状态(如加载状态等)的持续时间
•onLoad引发load事件的执行期
chrome浏览器上执行js代码可以得到各阶段内容:1
window.performance.timingprocess
以上时间仅为一时刻,若要得到每一阶段之特定时刻,则需在两时刻做相减运算如计算domContent载入事件之时刻:
window.performance.timing.
domContentLoadedEventEnd-
window.performance.timing.
domContentLoadedEventStart
appium/selenium能够执行js.借appium/Selenium这一工具能够自动化地获取能指标。调用appium/ExExecuteScriptapi可以将以下代码注入到网页中
returnJSON.stringify(window.performance.timing)returnJSON.stringify(window.performance.getEntriesByName(document.querySelector("img").src)[0],null,2)
案例中
H5的性能测试要求与自动化测试工具(如selenium或appium等)相配合,自动化调用api的方法是js代码的注入
使用python+selenium进行js注入:
fromseleniumimportwebdriverdriver=webdriver.Chrome()driver.get("https://home.testing-studio.com/")print(driver.execute_script("returnJSON.stringify(window.performance.timing)"))
执行之后将返回json数据,其中包括介绍的所有性能指标,这些性能指标可以进行二次处理,也可以可视化显示:
{"navigationStart":1585043212714,"unloadEventStart":0,"unloadEventEnd":0,"redirectStart":0,"redirectEnd":0,"fetchStart":1585043212717,"domainLookupStart":1585043212747,"domainLookupEnd":1585043212747,"connectStart":1585043212747,"connectEnd":1585043212835,"secureConnectionStart":1585043212787,"requestStart":1585043212836,"responseStart":1585043212918,