小身材也有大本领 – 开发人员友好的LoadRunner DevWeb

DevWeb能做什么

DevWeb是Micro Focus新推出的免费的轻量级Web应用性能和负载测试工具,面向的用户是开发人员。相比于传统的LoadRunner,DevWeb的灵活度要好很多,比如跨平台(Windows, Linux, macOS)、多IDE支持,脚本是JavaScript而不再是久被诟病的C语言。

DevWeb脚本可以在各种IDE里创建,比如Visual Studio Code,Atom.io,JetBrains WebStorm (IntelliJ) ,熟悉LoadRunner的用户也可以用LoadRunner创建脚本和运行测试。如果懒得手写脚本, DevWeb提供了内置的脚本录制工具,也可使用浏览器或者Fiddler生成HAR格式文件,DevWeb能够从HAR文件自动生成脚本。

有了脚本就可以运行DevWeb来执行测试,或者直接在IDE里运行测试。DevWeb一次测试最多运行50个并发虚拟用户。DevWeb测试运行的原始结果数据存储在数据库(SQLite或者InfluxDB)里用于分析。

使用DevWeb完成一个性能测试

下载

DevWeb的官方下载地址在Micro Focus Marketplace:https://marketplace.microfocus.com/appdelivery/content/LoadRunner-Developer,根据操作系统选择对应的版本。

小身材也有大本领 – 开发人员友好的LoadRunner DevWeb

安装和配置

下载DevWeb后解压到本地文件夹,不需要安装,但要在系统里配置环境变量,例如在Windows里配置DEVWEB_PATH指向解压后的DevWeb目录(如C:\DevWeb)。

创建测试脚本

DevWeb的测试脚本可以通过下面两种方法创建:

1. 从HAR文件生成脚本

DevWeb目录下面有个OfflineGenerator.exe,就是用来从HAR文件生成测试脚本的,但是HAR文件又从哪儿来呢?有三种常用的方法:

           a. 用DevWeb自带的Proxy Recorder录制

录制之前需要先在客户端(浏览器或移动设备)上配置代理,指向运行ProxyRecorder的IP和端口(默认端口8156和其它配置可以在配置文件里修改)。运行DevWeb目录下的ProxyRecorder.exe,然后在浏览器或者APP进行操作,Proxy Recorder作为中间代理录制(抓取)客户端和服务器端的交互并生成HAR文件。

小身材也有大本领 – 开发人员友好的LoadRunner DevWeb

为了解决HTTPS录制的问题,DevWeb自带了一个CA证书(在DevWeb\cert\default_devweb_cert目录下),需要先安装到DevWeb所在的系统里,当然你也可以使用自己的证书

           b. 用浏览器生成HAR文件

很多浏览器如Chrome都支持抓取数据包并且导出为HAR文件的功能

           c. 用其它工具比如Fiddler录制并导出HAR文件

现在HAR文件有了,接下来运行OfflineGenerator.exe命令生成脚本,参数用法参考文档。如果抓取的数据需要过滤,修改Generator的配置文件generator_config.yml设置过滤后重新运行OfflineGenerator.exe。

小身材也有大本领 – 开发人员友好的LoadRunner DevWeb

2. 在IDE里写脚本

开发人员可以选择自己喜欢的IDE使用DevWeb JavaScript SDK手工编写脚本,DevWeb为每种支持的IDE提供了代码模板,具体的配置步骤参考文档,主要包括两个步骤:

           a. 从DevWeb\examples拷贝或者导入样例项目

           b. 在IDE里配置DevWeb作为执行工具

DevWeb测试脚本结构里,所有的测试步骤定义在main.js文件,其中包括三个部分:

  • initialize

每个虚拟用户在测试运行开始时执行initialize部分,一次测试只运行一次。

  • action

在指定的测试持续时间内每个虚拟用户迭代运行action部分。

  • finalize

每个虚拟用户在结束测试运行时执行一次finalize部分。

除了main.js,可能还会用到其它的测试脚本文件(如测试场景配置、参数配置、运行时设置等)或者第三方Library,具体参考文档

脚本常用技术

DevWeb JavaScript SDK提供了不少非常有用的对象和方法,用来对脚本进行进一步加工,解决一些性能测试常见的需求,这些概念与LoadRunner一脉相承。

Transaction(事务)

在脚本中,定义在Transaction中的所有步骤的执行时间会自动计为该Transaction的响应时间,并显示在测试结果中,Transaction Response Time是性能测试最重要的结果指标之一。

小身材也有大本领 – 开发人员友好的LoadRunner DevWeb

Parameters(参数)

通过在脚本中定义Parameters,可以让脚本在测试运行时使用多套测试数据,如登录账号、搜索关键字等。参数及其使用方式在Parameters.yml文件里定义。

  小身材也有大本领 – 开发人员友好的LoadRunner DevWeb

Correlation(关联)

性能测试脚本通常要处理服务器端返回的动态数据,如Session ID、token或时间戳,具体方法是根据某种规则从服务器端返回的Response里把动态数据抓取出来存在变量里,之后在脚本里的其它地方使用。LoadRunner和DevWeb把这个过程称为Correlation(关联)。

DevWeb提供了多种类型的Extractor,用于从Response里定位和提取想要的数据。

小身材也有大本领 – 开发人员友好的LoadRunner DevWeb

Extractor可以在脚本中手工定义,也可以在配置文件里定义关联规则,DevWeb在录制或生成脚本时会在自动在脚本里根据规则创建Extractor。

运行测试

和LoadRunner Controller这种有UI的工具不同,DevWeb通过命令行运行测试,这样很容易和pipeline集成。

DevWeb运行测试可以通过两种方式,参数及使用方法参考文档

1. 运行DevWeb命令行工具

  • 单用户模式:

Windows

DevWeb.exe -mode=single -rts=C:\MyScripts\genericRts.yml -keyLocation=C:\Keys\secret1.txt -iteration=10 -pacing=3 C:\MyScripts\ExceptionalScript

Linux/MacOS

DevWeb -mode=single -rts=~/MyScripts/genericRts.yml -keyLocation=~/Keys/secret1.txt -iteration=10 -pacing=3 ~/MyScripts/ExceptionalScript

  • 负载模式(在scenario.yml里定义负载场景设置):

Windows

DevWeb.exe -mode=load C:\ScriptDirectory

Linux/MacOS

DevWeb -mode=load ~/ScriptDirectory

2. 在IDE里运行DevWeb测试

  • Visual Studio Code

选择Terminal > Run Tasks,根据需要选择运行选项:Single/Debug/Load

  • JetBrains WebStorm (IntelliJ)

选择Tools > External Tools > Run DevWeb

  • Atom.io

选择DevWeb > Run single user或DevWeb > Run scenario(使用scenario.yml设置)

和测试运行相关的配置文件主要有两个:

1. 负载场景配置文件scenario.yml

定义运行的用户数和压力加载模式(如递增加载时间、持续时间、递减退出时间)

样例:

小身材也有大本领 – 开发人员友好的LoadRunner DevWeb

2. 运行时设置配置文件rts.yml

可配置运行日志、网络代理、错误快照、运行逻辑、Dynatrace监控集成等。

测试日志和结果

  • DevWeb运行脚本结束后,命令行窗口或IDE里会显示摘要信息:

小身材也有大本领 – 开发人员友好的LoadRunner DevWeb

  • 每个虚拟用户产生的日志存储在..\<脚本文件夹>\results\logs。
  • 如果测试运行过程中产生了快照,则存储在..\<脚本文件夹>\results\snapshots。
  • 测试原始结果默认存储在SQLite数据库..\<Script Directory>\results\devWebDB.db,可使用DB Browser查看。

小身材也有大本领 – 开发人员友好的LoadRunner DevWeb

测试结果还可以选择存储在InfluxDB(需要先安装InfluxDB并在local.config.yml文件里配置),使用Dashboard工具(如Grafana)产生报表,Grafana Dashboard 样例可在Marketplace下载。

小身材也有大本领 – 开发人员友好的LoadRunner DevWeb