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

相关推荐
山峰哥16 小时前
数据库工程与SQL调优——从索引策略到查询优化的深度实践
数据库·sql·性能优化·编辑器
杜子不疼.17 小时前
CANN_Transformer加速库ascend-transformer-boost的大模型推理性能优化实践
深度学习·性能优化·transformer
ujainu17 小时前
Flutter + OpenHarmony 实现无限跑酷游戏开发实战—— 对象池化、性能优化与流畅控制
flutter·游戏·性能优化·openharmony·endless runner
池央18 小时前
CANN oam-tools 诊断体系深度解析:自动化信息采集、AI Core 异常解析与 CI/CD 流水线集成策略
人工智能·ci/cd·自动化
向哆哆21 小时前
CANN生态性能优化:msprof-performance-analyzer深度解析
性能优化·cann
Lethehong21 小时前
深度解析昇腾CANN算子开发:从ops-nn仓库看AIGC算子性能优化实战
性能优化·aigc
程序猿追1 天前
深度解析CANN ops-nn仓库 神经网络算子的性能优化与实践
人工智能·神经网络·性能优化
池央1 天前
CANN GE 深度解析:图编译器的核心优化策略、执行流调度与模型下沉技术原理
人工智能·ci/cd·自动化
3GPP仿真实验室1 天前
【Matlab源码】6G候选波形:OFDM-IM 增强仿真平台 DM、CI
开发语言·matlab·ci/cd
heartbeat..1 天前
JVM 性能调优流程实战:从开发规范到生产应急排查
java·运维·jvm·性能优化·设计规范