### LoadRunner 常见问题及解决方案
#### 一、脚本问题
##### 1.1 无法弹出IE浏览器或录制中出现0事件
**原因:**
通常是因为计算机上安装了多个浏览器而导致的问题。
**解决方法:**
调整 IE 浏览器的设置,具体步骤如下:
1. 打开 IE 浏览器。
2. 进入“工具”(或按 Alt 键显示菜单栏后点击“工具”)-> “Internet 选项”。
3. 在“高级”选项卡中,找到“启用第三方浏览器扩展”选项,并取消其勾选。
4. 重新启动 LoadRunner 并尝试录制脚本。
##### 1.2 Windows 2003 无法录制 IE6/7
**原因:**
可能是因为 Windows Server 2003 默认启用了 DEP(数据执行保护)功能,与 LoadRunner 的 Vugen.exe 发生冲突。
**解决方法:**
1. 右键点击“我的电脑” -> “属性”。
2. 进入“高级”选项卡 -> “性能” -> “设置”。
3. 在“数据执行保护”中,点击“添加”按钮,选择 LoadRunner 安装目录下的 bin 文件夹中的 Vugen.exe 文件。
4. 确认并重启 LoadRunner。
##### 1.3 录制正常但脚本中无数据显示
**原因:**
这可能是由于协议设置或数据捕获方式不当导致的。
**解决方法:**
1. 在录制过程中,打开 Options(选项)-> Port Mapping(端口映射)。
2. 调整数据捕获方式或选择正确的协议配置。
##### 1.4 录制时出现 Visual Studio 调试器
**原因:**
这是 Windows 的数据保护设置所致。
**解决方法:**
1. 打开“我的电脑” -> “属性” -> “高级” -> “性能 - 设置”。
2. 在“数据执行保护”选项中,勾选“除所选程序之外的所有程序和服务都开启数据执行保护”。
3. 点击“添加”按钮,选择 iexplore.exe 文件。
##### 1.5 录制时修改参数保存的方式
**原因:**
在 .NET 协议录制时,默认情况下参数是以 Binary 格式保存的。
**解决方法:**
1. 在录制过程中,进入 Options -> Microsoft.net -> Recording -> Serialzation。
2. 将 Serialzation format 的 Value 值更改为 XML 格式。
##### 1.6 脚本回放正常但测试未通过
**原因:**
可能是由于缺少必要的包头信息。
**解决方法:**
1. 使用抓包工具(如 HttpWatch)进行抓包分析,找出缺失的报头。
2. 在脚本中添加相应的报头信息,例如:`web_add_auto_header("x-requested-with", "XMLHttpRequest")`。
3. 在录制过程中,打开 Options -> Advanced -> Headers -> Record headers in list,添加所需的报头。
##### 1.7 脚本回放无法正常通过
**原因:**
录制时使用的请求方式不正确。
**解决方法:**
在录制过程中,打开 Options -> Recording -> URL Advanced,选择 Use web_custom_request only 方式录制。
##### 1.8 脚本出现 26601 错误
**原因:**
缺失压缩包头。
**解决方法:**
在脚本中添加以下代码:`web_add_auto_header("Accept-Encoding", "gzip, deflate");`
#### 二、其他问题
##### 2.1 Java 应用并发数上不去
**原因:**
可能是 Spring 框架的重定向问题。
**解决方法:**
修改 Spring 配置文件中的 bean scope 为 prototype:
```xml
<bean name="verchiecletion" class="..." scope="prototype" />
```
##### 2.2 场景设置中监控不到服务器
**原因:**
服务器的相关服务没有开启。
**解决方法:**
1. 打开服务管理工具。
2. 开启 RemoteRegistry 服务。
3. 如果 computerbrowser 服务无法启动,检查 server 和 workstation 服务是否已开启。
##### 2.3 生成的结果数据不一致
**原因:**
采样时间不同。
**解决方法:**
可以通过调整 setgranularity 函数来修改平均事务响应时间的采样频率,使其与场景执行时间保持一致。
##### 2.4 SilverLight 中脚本回放错误
**原因:**
缺少 SOAPAction 包头。
**解决方法:**
在录制过程中,打开 Options -> Advanced -> Headers -> Record headers in list,添加 SOAPAction 包头。
##### 2.5 Microsoft.NET 协议中无法查看数据文件
**原因:**
默认情况下,脚本中生成的数据文件类型为 Binary,而非易于查看的 XML 格式。
**解决方法:**
在录制过程中,打开 Options -> Microsoft.net -> Recording -> Serialization format,将其改为 XML 格式。
#### 三、脚本优化
##### 3.1 检查点
**函数:**
- `web_reg_find`
- `web_image_check`
- `web_find`
**web_reg_find(文本检查点)函数的使用方法和技巧:**
```csharp
web_reg_find(
"Search=查找的范围",
"SaveCount=记录缓冲出现的次数",
"Test=查找的参数",
LAST);
```
如果需要记录缓冲区中匹配项的数量,可以使用以下代码:
```csharp
If (atoi(lr_eval_string("{N_count}")) > 0)
```
**web_image_check(图片检查点)函数的使用方法和技巧:**
```csharp
web_image_check(
"ImgName=图片名称",
"Type=图片类型",
"TargetFrame=目标框架",
"CheckSum=校验和",
LAST);
```
以上是针对 LoadRunner 中常见的问题及其解决方法,希望能帮助您更好地使用 LoadRunner 进行性能测试。