作者:Richard Pal 来自:perftesting 翻译:Elaine00
通过这篇文章,我将介绍如何通过HP Loadrunner VuGen来测试一个安卓应用的网络流量。测试过程中,安卓的SDK将用来执行安卓应用,同时HP Loadrunner VuGen将用来抓包并且转换为HP Loadrunner VuGen的脚本。
要求:
- Loadrunner/Performance Center Virtual User Generator 9.5x
- Android SDK with the Android emulator
- A test application
首先准备安卓模拟器:
第一,需要先下载安卓SDK,解压SDK.zip之后,点击SDK Manager.exe进行配置更新,下载各种必要的API。
这个将耗费一定的时间。配置完毕之后,创建一个安卓的模拟器,比如创建一个名字为A22,Android 2.2版本的模拟器.
在测试前需要准备好要测试的应用Get the application under test ready
先准备好要安装的apk安装包。
这里我们使用安卓SDK维基百科的例子来展示。
把Android的应用部署到模拟器Deploy the Android application into the emulator
启动模拟器,可以通过SDK管理器的用户界面或者通过命令行启动(设置模拟式的名字为A22)。
D:appsandroid-sdk-windows oolsemulator.exe -avd A22 -netspeed full -netdelay none ~/.android/A22.avd
[更新] 因为我写的这篇文章中模拟器的参数列表已更改。现在你需要给“DeviceName emulator.exe模拟器配置,例如基于例如emulator.exe @ A22。
一旦设备完成启动,使用ADB工具,把Android应用安装到Android SDK中(需要切换到存放APK的目录):
D:appsandroid-sdk-windowsplatform-toolsadb install Wiktionary.apk
在模拟器中启动应用,而且需要确保该应用可以正常执行。
使用VuGen来抓取安卓应用产生的网络包
关闭模拟器。
创建一个新的脚本,因为Wiktionary使用的是HTTP和JSON,所以HTTP协议将会使用到。
在开始录制的对话框中需要先指定执行的模拟器和虚拟模拟器的一些执行参数:
- Program to record: D:appsandroid-sdk-windows oolsemulator.exe
- Program arguments: -avd A22 -netspeed full -netdelay none (see the [Update] on argument list above)
(确保把模拟器名字改为A22。)
在开始录制之前,网络的Capture level需要修改为:“Socket level and WinInet level data”。(其他两个选项是do not record any traffic or crash the emulator during recording)
在Non-Resources content-type添加 “application/json” 。 这个将产生多个 web_url 来请求JSON源。此外,JSON的请求也将被添加到 EXTRA_RES节点中.
开始录制并且执行测试,记住,必须确保Recording toolbar有展示记录的事件。
在VuGen测试停止之后,生成了测试脚本。下面是一个测试例子:
Action() { web_url("api.php", "URL=http://en.wiktionary.org/w/api.php?action=query&list=random&format=json", "TargetFrame=", "Resource=1", "RecContentType=application/json", "Referer=", "Snapshot=t1.inf", LAST); web_url("api.php_2", "URL=http://en.wiktionary.org/w/api.php?action=query&prop=revisions&titles=phosphourous&rvprop=content&format=json&rvexpandtemplates=true", "TargetFrame=", "Resource=1", "RecContentType=application/json", "Referer=", "Snapshot=t2.inf", LAST); lr_think_time(5); web_url("api.php_3", "URL=http://en.wiktionary.org/w/api.php?action=query&prop=revisions&titles=phosphorous&rvprop=content&format=json&rvexpandtemplates=true", "TargetFrame=", "Resource=1", "RecContentType=application/json", "Referer=", "Snapshot=t3.inf", LAST); return 0; }
确保回放的脚本是正确的,脚本通常需要定制正确模拟用户交互(parameters, correlation, think times, pacing,等)
记录和重放网络流量可以在树视图跟踪。
如果脚本准备好,它可以用来像用户访问中心网站一样做负载测试。
我希望这个简短的介绍将帮助您设置的Android应用程序的负载测试。