Selenium WEB 自动化性能测试

xinxi · 2018年11月06日 · 最后由 zlp 回复于 2019年01月09日 · 1829 次阅读

介绍

从浏览器打开一个网站,需要dns解析、tcp三次握手、发送请求、dom渲染、js加载等以一系列操作,最终在用户面前展示完整的页面.

如果打开页面加载或者白屏的时间较长,用户会立即关掉或者放弃浏览,用户流量自然会丢失.

所以在web项目中web页面的加载时间测试是必不可少的.

相关参数

全部页面加载时间

全部页面载入时间指从最初启动浏览开始,直到所有元素都被加载完成后,在2秒后仍然没有网络活动的时间.
0-2秒:用户体验最好,打分100
2-8秒:用户可以容忍,从第2秒开始,每超过1秒减5分
8-15秒:用户不能忍受,从第2秒开始,每超过1秒减5分

页面加载时间

从页面开始加载到页面onload事件触发的时间。一般来说onload触发代表着直接通过HTML引用的CSS,JS,图片资源已经完全加载完毕.

白屏时间

输入网址到数据返回时间,此时页面还没有进行dom渲染

首字节时间

从开始加载到收到服务器返回数据的第一字节的时间

DNS时间

进行域名解析所需要的时间

TCP时间

客户端建立连接的时间

DOM渲染时间

DOM节点渲染时间,此时页面还不能执行操作事件

js加载时间

js、css、图片加载,此时用户可以对页面进行操作事件

访问web页面过程

image

查看性能加载数据

使用chrome浏览器中的控制台,使用window.performance.timing函数可以查看页面的加载数据.

自动化工具

有了可以查看web页面的js函数,就可以利用一些自动化手段测试web页面并且自动化生产性能数据.

主要使用selenium+spring boot+rest-assured+highcharts等技术完成自动化测试

selenium

使用selenium的headless模式可以无感的打开一个网页并进行自动化测试,这种模式可以降低cpu和内存的消耗

spring boot

spring boot是java的web应用框架,使用velocity模版接受请求参数,可以动态渲染web页面.

rest-assured

rest-assured是java的一个接口测试框架,用于给服务端传递参数.

highcharts

highcharts是HTML5交互性图表库,有丰富的柱状图、饼图等

展示效果

git地址

https://github.com/xinxi1990/webtest
共收到 7 条回复 时间 点赞
xinxi 关闭了讨论 11月06日 22:22
xinxi 重新开启了讨论 11月06日 22:28

windows上能跑么?老是提示找不到指定文件。。。
Caused by: java.io.IOException: Cannot run program "lsof": CreateProcess error=2
, 系统找不到指定的文件。
at java.lang.ProcessBuilder.start(Unknown Source)

我的命令行是这么输的:
D:\Project\webtest\target>java -jar webtest-1.0.0.jar -w http://www.baidu.com -r
"D:\Project\webtest\report" "C:\Program Files (x86)\Google\Chrome\Application\c
hromedriver.exe"

zlp 回复

windows没试过,你可以在windows开个linux虚拟环境试试
参考命令:
java -jar webtest-1.0.0.jar
-w http://www.baidu.com
-r /Users/xinxi/Desktop/report
-c /Users/xinxi/Desktop/WebTest/target/chromedriver

还是没搞起来。。。我在centos7上运行chromedrive会报这个错,不知道你碰到过没
Starting ChromeDriver 2.42.591071 (0b695ff80972cc1a65a5cd643186d2ae582cd4ac) on port 9515
Only local connections are allowed.
[1541644797.546][SEVERE]: bind() returned an error, errno=99: 无法指定被请求的地址 (99

然后运行你的jar包会提示下面这个错,网上百度了一下有些说是版本不一致,但是已经匹配上版本了。。。
Caused by: org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
(Driver info: chromedriver=2.42.591071 (0b695ff80972cc1a65a5cd643186d2ae582cd4ac),platform=Linux 3.10.0-862.11.6.el7.x86_64 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 60.12 seconds
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'testadmin', ip: '10.200.111.149', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-862.11.6.el7.x86_64', java.version: '1.8.0_181'
Driver info: driver.version: ChromeDriver

研究了半天。。。终于在windows上跑起来了😁 ~
主要碰到的问题:
1.8081端口我电脑上被其他进程占了,所以报错了~我后来改成其他了
2.windows上好像不能用lsof -i:%s命令,所以把killPid("8081")注释了

zlp 回复

我也遇到这个问题,你是改哪个文件,然后重新打jar包吗?

我也搞定了,注释了端口的,但是win上有乱码,编码的研究一下。

注释端口

乱码==

豆豆 回复

乱码可以在java -jar的时候加个参数
-Dfile.encoding=utf-8

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