首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

利用 Selenium WebDriver + Grid2 实现并行的浏览器端性能测试(3)

利用 Selenium WebDriver + Grid2 实现并行的浏览器端性能测试(3)

Selenium WebDriver 和 Grid2 并发执行测试用例TestNG 可以很方便的加载在已经开发好的 Selenium WebDriver 测试案例,测试用例中的参数通过 @Parameters 传递。在测试中我们需要将同一个测试案例发送到不同的节点或是浏览器上执行。所以我们从已有的 Selenium 脚本中选出案例后用 @Test 标注并加入节点的 IP、端口和浏览器类型参数。
清单 3. 将 TestNG 加载在已有的 Selenium 测试脚本
1
2
3
@Test
@Parameters({"seleniumHost", "seleniumPort", "bs"})
public void sitenav(String Host,String Port,String browser)




TestNG 要求将所有要运行的测试用例都记录在一个叫 testng.xml 的文件中,然后根据该文件中的测试用例顺序依次执行测试。通过 suit 标签的属性可以指定 method、tests 或是 classes 的并发执行。我们在 testng.xml 中将测试的并行粒度设为 Test, 用参数传入不同的 IP 地址、端口号、浏览器名称,形成不同的测试案例,以便在不同节点上的不同浏览器中并行执行。
清单 4. testng.xml 中有关并行测试案例的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="UTF-8" ?>
<suite name="Suite" annotations="JDK" parallel="tests" thread-count="5">
<test name="Test1">
<parametername="seleniumHost" value="127.0.0.1" />
<parametername="seleniumPort" value="5555" />
<parametername="bs" value="*firefox" />
<classes>
<classname="tst.tryconnection" />
</classes>
</test>
<test name="Test2">
<parametername="seleniumHost" value="9.123.239.109" />
<parametername="seleniumPort" value="5555" />
<parametername="bs" value="*firefox" />
<classes>
<classname="tst.tryconnection" />
</classes>
</test>
</suite>




最后用 Ant 从命令行运行 TestNG 类。用户通过命令行启动 Ant,读取目标文件 build.xml 来获得项目的参数,例如目标定义、类路径、引入的文件等。Ant 通过读取 TestNG 的配置文件 testng.xml 来获取参数,将 Java 代码编译成 TestNG 类,并且根据配置文件中传入的参数和顺序来执行这些类。以下是在 Ant 的 build.xml 里面如何正确配置 TestNG。
清单 5. Build.xml 里配置 TestNG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<taskdef name="testng" classname="com.beust.testng.TestNGAntTask"   
<classpath="${lib.dir}/testng-6.5.1.jar" />
<target name="run" depends="compile" description="test">
<java classpathref="test.classpath"
classname="org.testng.TestNG"
failonerror="true">
<sysproperty key="java.security.policy"
file="${lib.dir}/testng.policy"/>
<arg value="-d" />
<arg value="${basedir}/test-output" />
<arg value="-suitename" />
<arg value="Suite" />
<arg value="testng.xml"/>
</java>
</target>




应用示例  IBM Connections 3 是 IBM 专门为满足企业业务需求而设计的一款社交软件。我们用它作为目标程序来测试其浏览器端的性能。用 Selenium WebDriver 编写脚本模拟用户依次浏览主页、登陆、个人资料、博客等主要页面。我们将同样的脚本在不同网络环境、不同操作系统、不同浏览器中并行执行,并且记录页面的响应时间,完整下载时间,对不同浏览器,不同网络条件下的页面响应时间加以比较。测试过程如下:
  • 选取几台测试机作为测试节点,测试机器上具有我们所需要的操作系统、浏览器类型、测试分析工具,选取一台测试机作为 Hub。配置和启动 Hub 和测试节点。
  • 准备不同类型的测试案例 Test1.....TestN。根据操作系统、浏览器和所需的测试工具,在 testng.xml 中将测试脚本分配给相对应的测试节点 Node1.......NodeN 形成不同的测试案例。图 2 是测试节点配置和测试案例的分布图。
  • 编辑 build.xml 文件。执行 ant 命令。通过网页观察 Hub 的状态和测试节点的执行情况。
  • 测试执行完,从各节点和 Hub 上收集测试数据加以整理和分析。
  测试数据从几个方面获得。有关测试环境的数据将会直接从配置文件获取,简单的页面响应时间会由 Selenium 脚本获取。浏览器响应时间分解和网页分析数据将会由 HTTPWACTH 等辅助测试工具获得。图 3 是由部分测试数据经过汇总整理后形成的表格。从表格中可以看到同一个页面请求在不同配置的测试机上的响应时间,如果该机器加载了性能分析工具,还可以通过抓取 HTTPWACTH 分析结果进一步得到响应时间分解。
图 2. 测试节点配置和测试案例的分布图图 3. 测试数据汇总表格样式小结 利用 Selenium WebDriver 和 Grid2 可以将已有的自动化测试脚本为性能测试服务,并发、自动地执行测试案例节省了时间和人力,使测试人员能够将精力集中在数据分析和性能调优上。灵活的配置测试环境,包括网络环境、操作系统和浏览器类型,可以在短时间内得出不同情况下目标程序的客户端性能数据,方便比较和发现问题。
返回列表