【第三方双重资质软件测试机构:测试RESTful API和SOAP Web Services:LoadRunner协议选择和脚本编写】

LoadRunner针对SOAP和RESTful这两种Web服务进行性能测试,协议选择、脚本开发思路完全不同。

SOAP Web Services (基于XML/SOAP/WSDL):LoadRunner首选协议Web Services 协议,soap_request 或可视化Service Call,通过导入WSDL文件自动生成调用框架,自动生成结构严谨的XML SOAP报文,对XML节点值进行参数化,从结构化的XML响应中提取数据。

RESTful API (通常基于HTTP/JSON):LoadRunner首选协议Web (HTTP/HTML) 协议,web_custom_request, web_url, web_submit_data等,通过录制HTTP流量或手动编写HTTP请求,需手动或参数化构建JSON/XML/文本报文,对URL、请求头、请求体进行参数化,从JSON、XML或文本响应中提取数据。

两种服务的测试方法:

如何测试 SOAP Web Services

SOAP协议规范、结构严谨,LoadRunner的Web Services协议能很好地支持。

1. 协议选择和脚本创建

启动VuGen,选择New Single Protocol Script (单协议脚本),在协议列表中选择Web Services。这是专门为基于WSDL的Web服务设计的协议,能自动解析接口定义。

2. 导入服务和生成脚本

点击 Manage Services -> Import。

在弹出窗口中,选择 URL,输入完整的WSDL地址(例如 http://zmtests.com/service?wsdl),点击 Import。

导入成功后,点击 Add Service Call,在弹出的界面中选择已导入的服务、端口和要测试的操作(Operation)。

在参数编辑界面,可以为每个输入参数设置具体的值,或选择 Auto Generate 自动生成。

点击确定,VuGen会自动生成一个包含 soap_request 函数调用的脚本。该函数会构建一个符合标准的SOAP信封(Envelope),无需手动拼接复杂的XML。

3. 脚本示例和优化

生成的脚本部分如下:

cpp 复制代码
soap_request("StepName=MySOAPCall",

    "URL=http://zmtests.com/WebService.asmx",

    "SOAPEnvelope="

    "<?xml version=\"1.0\" encoding=\"utf-8\"?>"

    "<soap:Envelope ...>"

    "  <soap:Body>"

    "    <GetUserInfo xmlns=\"http://zmtests.com/\">"

    "      <UserId>{Parameter_UserId}</UserId>" // 参数化部分

    "    </GetUserInfo>"

    "  </soap:Body>"

    "</soap:Envelope>",

    "SOAPAction=http://zmtests.com/GetUserInfo",

    "ResponseParam=response",

    LAST);

参数化:将XML中的具体值(如 {Parameter_UserId})替换为参数,以实现不同用户使用不同数据。

关联:如果需要从响应中提取动态数据(如会话标识),可使用 web_reg_save_param_ex 等函数捕获XML响应中的特定节点值。

认证:若服务需要认证,可在请求前使用 web_set_user 设置用户名密码。

文章来源:卓码软件测评

精彩推荐:点击蓝字即可
▲软件负载测试 ▲API自动化测试 ▲软件测试 ▲第三方软件测试 ▲软件性能测试 ▲软件测试机构

如何测试RESTful API

RESTful API基于HTTP协议,更灵活,通常使用JSON格式,因此选用通用的Web (HTTP/HTML) 协议来模拟。

1. 协议选择和脚本创建

在VuGen中创建新脚本,选择 Web (HTTP/HTML) 协议。这是最常用、最通用的协议,能够模拟所有基于HTTP的交互。

2. 脚本生成方式

推荐方式(手动编写/复制):使用web_custom_request函数。这个函数自由度极高,可以完全自定义请求方法、URL、请求头和请求体。可以直接从开发人员提供的API文档、或通过工具(如Postman)复制出原始的HTTP请求,稍加修改后嵌入这个函数。

辅助方式(录制):如果API有对应的网页前端,可以通过浏览器操作进行录制。但纯API调用通常手动编写更高效。

3. 脚本和优化

测试JSON格式REST API的脚本如下:

cpp 复制代码
lr_start_transaction("api_post_user");

// 设置请求头,表明发送和接收JSON

web_add_header("Content-Type", "application/json");

web_add_header("Accept", "application/json");

// 发起自定义请求

web_custom_request("create_user",

    "URL=http://api.zmtests.com/users",

    "Method=POST",

    "Body={\"name\": \"{Name}\", \"job\": \"{Job}\"}", // 请求体参数化

    LAST);

lr_end_transaction("api_post_user", LR_AUTO);

参数化:对URL路径、查询参数、请求体(JSON串)中的值进行参数化。对于复杂的动态数据(如从数据库实时获取),可结合 lr_db_connect、lr_db_executeSQLStatement 等数据库函数实现。

关联:从JSON响应中提取数据,使用 web_reg_save_param_ex 并配合 "LB/UB" 或正则表达式来捕获值。

事务与集合点:使用 lr_start_transaction 和 lr_end_transaction 标记要监控的业务操作,使用 lr_rendezvous 设置集合点模拟瞬间高并发。

测试总结

无论是测试SOAP还是RESTful服务,以下原则都通用:

深入了解了系统:开始测试前必须向开发人员确认服务使用的准确协议和数据格式。

从单用户调试开始:保证单个虚拟用户的脚本能成功回放,再进行并发测试。

加入检查点:使用web_reg_find等函数验证返回结果中是否包含关键文本,保证业务逻辑正确。

模拟真实场景:通过参数化、使用不同的测试数据,避免因缓存导致的性能假象。

资源管理:像数据库连接这类资源,应在vuser_init中建立,在vuser_end中释放。

SOAP服务测试是利用Web Services协议和WSDL,实现高度自动化的脚本生成;而RESTful API测试则更依赖对HTTP协议和Web (HTTP/HTML)协议下函数的灵活运用。

相关推荐
贾伟康41 分钟前
HarmonyOS API 26 分块 3DGS 实战:相机驱动、瓦片回调与并发去重
性能优化·harmonyos·arkts·3dgs·spatial recon kit
螺丝钉tina18 小时前
[Playwright] [02]常用命令与调试:Debug UI、Mode和 Trace Viewer
开发语言·javascript·测试工具·ui·自动化
李纲明1 天前
WordPress 定时发布不准点或备份/邮件从不跑:先分清 WP-Cron 触发与 DISABLE_WP_CRON,再查回环与系统 Cron
运维·性能优化·wordpress·定时任务·devdiy·wp-cron
七夜zippoe1 天前
Agent 测试实战:单元测试、集成测试与 Mock LLM 策略
ai·单元测试·集成测试·mock·agent
Da Da 泓1 天前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
梧桐1682 天前
14天、31个缺陷、28个测试脚本—用 Claude Code 完成第三方软件测试
人工智能·测试工具
Patrick在香港2 天前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
会开车的鸟哥2 天前
自动创建测试用例与组件测试向导
测试用例·simuinktest
2501_915921432 天前
KXBuild CI 实操,Windows/Linux 服务器接入 Jenkins 打包 iOS IPA
服务器·windows·vscode·ios·ci/cd·个人开发·敏捷流程
Sayai2 天前
Flink 日志解析任务性能优化实战:正则/Grok 预编译、Guava 缓存权重陷阱与 ES 写入隔离
java·大数据·性能优化·flink·实时计算