【第三方双重资质软件测试机构:测试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)协议下函数的灵活运用。

相关推荐
鱼日先生2 小时前
Dify 高级实验(09):测试用例生成——如何让 AI 自动产出测试用例?
人工智能·测试用例·工作流·dify·ai agent·大模型应用·ai 训练
FfHUCisI6 小时前
Golang RESTful API 设计原则
开发语言·golang·restful
神奇小梵6 小时前
《javaweb基础》后端篇————maven补充(用maven单元测试,maven常见问题)
单元测试·maven
A_cainiao_A6 小时前
【ggml系列】【第五篇】ggml_compute_forward_mul_mat 矩阵乘法算子源码与性能优化深度解析
线性代数·性能优化·矩阵
ai产品老杨7 小时前
边云协同视频分析性能优化指南:多站点部署下的参数配置与排查清单(边缘推理+云端管理)
性能优化·音视频
苏打水com8 小时前
《llama.cpp性能优化实战:从显存、KV Cache到Token/s》
性能优化·llama
数据知道9 小时前
网络安全实战:API 安全攻防——RESTful 接口渗透测试方法论
网络·安全·web安全·网络安全·restful
andongni2039 小时前
SpringBoot RESTful API 设计与实现
spring boot·后端·restful
该用户可能存在10 小时前
【Win11优化】StartAllBack实战:解决任务栏合并、右键折叠等痛点
windows·性能优化·win11·windows 11·startallback·任务栏·开始菜单
灯澜忆梦20 小时前
【MySQL12】进阶篇 | SQL优化
数据库·sql·mysql·性能优化