我是一名 .net 开发人员,之前没有 JMeter/压力测试方面的经验。我正在尝试对我使用 JMeter 开发的 ASP.net 网站进行负载测试。使用 JMeter 的原因是它是一个开源工具,具有很高的知名度和可信度。
我参考这个链接是为了处理视图状态,这是 ASP.net 的一个典型特性。但是,我的要求并不像那里所说的那么简单。我正在尝试通过将用户名和密码发送到登录页面来加载测试我的网站,然后通过仅在登录成功时才允许浏览的其他页面进行测试。
下面列出了我为实现这一目标而采取的步骤。
- 通过选择 WorkBench > Add > Non-Test Elements 创建 Http 代理服务器。
- 将 Firefox 中的网络设置更改为 Http 代理服务器中定义的端口。
Thread Group
通过选择测试计划 > 添加 > 线程(用户)> 线程组来创建一个。HTTP Request Defaults
通过选择线程组 > 添加 > 配置元素 > HTTP 请求默认值来创建。- (a) 在 (b) 中输入我的远程服务器的 IP
Server Name or IP:
将我的登录页面的路径输入为/MyWebApplication/login.aspx
User Defined Variables
通过选择线程组 > 添加 > 配置元素 > 用户定义变量来创建。我的 login.aspx 页面非常简单,它从两个文本框中获取用户名和密码,并在数据库中匹配它们,如果成功,将它们重定向到 LoginSuccess.aspx 页面。
我的 login.aspx 只有三个服务器控件,两个asp:TextBox
用于接收登录 ID 和密码,一个asp:Button
用于在 db 中检查它们。
它们的 id分别是txtLogin
, 。txtPassword
btnLogin
在用户定义的变量(在步骤 6 中创建)中,我添加了 admin 和 123admin,它们是 db 中的真实登录,在 login.aspx 页面中进行检查,成功时重定向到 LoginSuccess.aspx 页面。
用户定义的变量:
Name: Value Description login admin password 123admin
我通过选择线程组 > 添加 > 后处理器 > 正则表达式提取器来添加两个正则表达式提取器。
我已将第一个正则表达式提取器重命名为
View State Extractor
并向它们添加以下数据:Reference Name: viewstate Regular Expression: name="__VIEWSTATE" id="__VIEWSTATE" value="(.+?)" Template:$1$ Match No.(0 for Random): 1 Default Value: ERROR
同样,我将第二个正则表达式提取器重命名为
Event Validation Extractor
并向它们添加以下数据:Reference Name: eventValidation Regular Expression: name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="(.+?)" Template:$1$ Match No.(0 for Random): 1 Default Value: ERROR
在第 5 步中,我添加了以下数据
Send Parameters With the Request: Name: - Value txtLogin - $(login) txtPassword - $(password) __VIEWSTATE - $(viewState) __EVENTVALIDATION - $(eventValidation)
现在我通过选择线程组 > 添加 > 配置元素 > HTTP Cookie 管理器添加了 HTTP Cookie 管理器。
现在我通过选择 Thread Group > Add > Logic Controller > Recording Controller 添加了 Recording Controller。
我启动了 HTTP 代理服务器,然后使用 firefox 输入了 login.aspx 页面的完整 URL,在两个文本框中输入了 admin 和 123admin,然后按下了 Login 按钮并在 LoginSuccess.aspx 上成功重定向。我停止了 HTTP 代理服务器并关闭了我的 Firefox 浏览器。
现在我已经保存了测试计划(包含记录的步骤,这里只有 2 个步骤,1 个用于 login.aspx,另一个用于 LoginSuccess.aspx)并运行测试并在返回 500 错误的 View Result Tree 中查看测试结果服务器。
我无法确定我在这里缺少什么成分,因此我无法成功使用 JMeter。我只更改了此处提到的那些值,对于我没有在这里写的所有内容,这些值都是默认类型,例如No of thread:
.