美文网首页软件测试测试员的那点事
基于browsermob-proxy的自动化性能监控

基于browsermob-proxy的自动化性能监控

作者: 爱学技术的小仙女酱 | 来源:发表于2019-08-22 23:38 被阅读2次

在做自动化的时候,当遇到某些性能问题导致的超时情况就会出现对象访问超时的问题,遇到这种问题想回溯跟踪问题就比较困难了,如果能有个Fiddler这样的代理服务器来监控多好啊!

browsermob-proxy就是这样的一款基于Java的代理服务,它的具体流程有点类似与Flidder或Charles。即开启一个端口并作为一个标准代理存在,当HTTP客户端(浏览器等)设置了这个代理,则抓取并有能力修改所有的请求细节并获取返回内容。

browsermob-proxy可以将HTTP请求细节数据导出到HAR文件

HAR(HTTP档案规范),是一个用来储存HTTP请求/响应信息的通用文件格式,基于JSON。这种格式的数据可以使HTTP监测工具以一种通用的格式导出所收集的数据,这些数据可以被其他支持HAR的HTTP分析工具(包括Firebug、httpwatch、Fiddler等)所使用,来分析网站的性能瓶颈。

http://horve.github.io/2015/09/08/har-detail/

browsermob-proxy有两种模式,嵌入式模式是利用Java代码来启动代理,并通过Java代码来截取修改请求获取内容。另一种是独立启动模式,可以通过命令行来启动,通过RestAPI来进行操作。

在自动化中添加该模块,maven引用信息

<dependency>

<groupId>net.lightbody.bmp</groupId>

<artifactId>browsermob-core</artifactId>

<version>2.1.5</version>

</dependency>

POC代码如下

BrowserMobProxy proxy =new BrowserMobProxyServer();

proxy.start();

Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy);

DesiredCapabilities capabilities =new DesiredCapabilities();

capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);

 WebDriver driver=new ChromeDriver(capabilities);//初始化Chrome走代理

proxy.newHar("http://testops.ke.qq.com");//har信息基础域名

driver.get("http://testops.ke.qq.com");

Har har = proxy.getHar();

try {

har.writeTo(new File("testops.ke.qq.com.har"));//写har文件

}catch (IOException e) {

e.printStackTrace();

}

driver.close();

该代码运行后会在代码目录下生成testops.ke.qq.com.har文件,预览该文件可以通过在线的harviewer模块。

在浏览器中访问harviewer网站 http://www.softwareishard.com/har/viewer/,然后将har文件拖拽到页面上即可。

这样无论是在UI自动化还是接口自动化中都可以通过该代理获取详细的请求har文件,当出现响应时间过长的情况时,就可以通过har文件详细定位导致系统响应时间变长的原因。

最后跟大家推荐一个学习资料分享群:243771258,交流微信:xiang520and里面大牛已经为我们整理好了许多的学习资料,有自动化,接口,性能敏捷测试,测试运维等等的学习资料!

相关文章

网友评论

    本文标题:基于browsermob-proxy的自动化性能监控

    本文链接:https://www.haomeiwen.com/subject/dsaisctx.html