一、错误现象与影响分析
在Loadrunner性能测试场景中,”Requested image not found”错误通常出现在脚本回放阶段,具体表现为:
- 脚本录制时正常,但回放时HTTP请求返回404状态码
- 错误日志中明确提示资源路径(如图片、CSS、JS文件)无法定位
- 导致页面渲染不完整,影响后续业务操作验证
该问题对测试结果的影响具有隐蔽性:
- 基础功能测试可能因资源缺失而中断
- 性能数据采集可能包含异常请求
- 自动化测试流程可能因断言失败而终止
典型错误日志示例:
Action.c(123): Error -26612: HTTP Status-Code=404 (Not Found) for "https://example.com/static/images/logo.png"[MsgId: MERR-26612]Action.c(123): web_url("home_page") highest severity level was "ERROR", 1 body bytes, 283 header bytes
二、问题根源深度剖析
1. 环境配置差异
(1)测试环境与生产环境资源路径不一致
- 开发环境使用相对路径(如
/static/img/) - 生产环境部署在CDN导致路径变更
- 负载均衡配置引发的域名解析差异
(2)协议版本不匹配
- HTTPS站点强制跳转导致资源请求被拦截
- HTTP/2协议下资源加载机制变化
(3)代理配置问题
- 录制时使用代理服务器但回放时未配置
- 代理规则过滤了特定类型的静态资源
2. 脚本实现缺陷
(1)硬编码资源路径
// 错误示例:直接使用绝对路径web_url("logo","URL=https://dev.example.com/static/images/logo.png",LAST);
(2)动态参数处理不当
- 未捕获的JavaScript动态加载资源
- AJAX请求返回的动态路径未参数化
(3)会话保持问题
- 登录态失效导致权限资源无法访问
- Cookie/Session过期策略不一致
3. 资源依赖管理
(1)第三方资源变更
- CDN服务商更新资源版本
- 第三方库升级导致路径结构变化
(2)本地缓存干扰
- 浏览器缓存策略影响资源加载验证
- Loadrunner缓存机制与真实用户行为差异
三、系统化解决方案
1. 环境标准化建设
(1)路径管理规范
// 推荐方案:使用参数化路径char* resourcePath;if (strcmp(lr_get_host_name(), "dev.example.com") == 0) {resourcePath = "/dev-static/images/";} else {resourcePath = "/prod-static/images/";}web_url("logo","URL={resourcePath}logo.png",LAST);
(2)协议一致性验证
- 使用Wireshark抓包对比录制/回放请求差异
- 配置Loadrunner的HTTP高级选项:
// 在Runtime Settings -> Internet Protocol -> PreferencesEnable "Follow Redirects"Disable "Cache Control" during replay
2. 脚本优化实践
(1)资源加载验证机制
// 添加资源存在性检查web_reg_find("Text=logo.png","SaveCount=pngCount",LAST);web_url("home_page","URL=https://example.com/",LAST);if (atoi(lr_eval_string("{pngCount}")) == 0) {lr_error_message("Critical resource missing");return -1;}
(2)动态资源处理策略
- 使用web_reg_save_param捕获动态路径
- 结合关联函数处理加密资源名
3. 资源依赖管理方案
(1)构建资源版本控制系统
- 维护资源哈希值与路径的映射表
- 实现自动化校验脚本:
# 示例校验脚本import requestsdef verify_resource(url):try:response = requests.get(url, timeout=5)return response.status_code == 200except:return False
(2)本地化测试资源
- 搭建内部资源服务器
- 配置Loadrunner使用本地镜像:
// 在vuser_init段设置lr_save_string("http://local-resource/static/", "localBasePath");web_set_proxy("", "", "", 0); // 禁用代理
四、预防性措施与最佳实践
-
环境一致性检查清单:
- 域名解析验证
- 证书有效性检查
- 跨域资源共享(CORS)配置
-
脚本维护规范:
- 建立资源路径白名单
- 实施脚本版本控制
- 定期执行回归测试
-
性能测试优化建议:
- 对静态资源设置合理超时时间:
// 在Runtime Settings中配置web_set_timeout("Step Download Timeout", 30);
- 使用资源下载监控工具(如Fiddler)辅助分析
- 对静态资源设置合理超时时间:
-
自动化校验机制:
- 集成资源校验到CI/CD流程
- 开发自定义校验插件
- 建立告警阈值体系
五、典型案例解析
案例1:CDN资源路径变更
- 问题现象:回放时404错误集中在CDN资源
- 根本原因:生产环境切换CDN供应商未更新脚本
- 解决方案:
- 修改脚本使用相对路径
- 配置CDN回源策略
- 添加资源校验前置步骤
案例2:动态加载图片缺失
- 问题现象:特定操作后图片无法显示
- 根本原因:JavaScript动态生成图片URL未捕获
-
解决方案:
// 使用web_reg_save_param捕获动态URLweb_reg_save_param("dynamicImg","LB/IC=data:image/png;base64,","RB/IC=\"",LAST);// 执行触发动态加载的操作web_click("generate_image_btn","Snapshot=t1.inf",LAST);
通过系统化的环境管理、脚本优化和资源控制,可有效解决Loadrunner脚本执行中的”Requested image not found”错误。建议测试团队建立资源校验自动化体系,将静态资源监控纳入持续集成流程,从源头预防此类问题的发生。在实际项目中,可结合百度智能云提供的性能测试解决方案,利用其分布式执行环境和智能诊断功能,进一步提升测试效率和问题定位精度。