【第三方双重资质软件测试机构:测试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 小时前
Java虚拟机垃圾回收机制解析
java·jvm·性能优化·gc·垃圾回收
别会,会就是不问2 小时前
Junit4下Mockito包的使用
java·junit·单元测试
凹凸曼coding2 小时前
Java业务层单元测试通用编写流程(Junit4+Mockito实战)
java·单元测试·log4j
三水不滴2 小时前
从原理、场景、解决方案深度分析Redis分布式Session
数据库·经验分享·redis·笔记·分布式·后端·性能优化
生活很暖很治愈2 小时前
Pytest-order插件
python·测试工具·测试用例·pytest
悟能不能悟2 小时前
postman中的Tests,怎么获取返回的response中的stateCde
测试工具·postman
EndingCoder14 小时前
案例研究:从 JavaScript 迁移到 TypeScript
开发语言·前端·javascript·性能优化·typescript
我真的是大笨蛋14 小时前
InnoDB行级锁解析
java·数据库·sql·mysql·性能优化·数据库开发
Thomas_YXQ15 小时前
Unity3D在ios平台下内存的优化详解
开发语言·macos·ios·性能优化·cocoa