【发布时间】:2013-03-06 13:31:18
【问题描述】:
我是一名 .net 开发人员,之前没有 JMeter/压力测试方面的经验。我正在尝试对我使用 JMeter 开发的 ASP.net 网站进行负载测试。使用 JMeter 的原因是它是一个开源工具,具有很高的知名度和可信度。
我参考了this link 来处理视图状态,这是 ASP.net 的一个典型特性。但是,我的要求并不像那里所说的那么简单。我正在尝试通过将用户名和密码发送到登录页面来加载测试我的网站,然后通过仅在登录成功时才允许浏览的其他页面进行测试。
下面列出了我为实现这一目标而采取的步骤。
- 通过选择 WorkBench > Add > Non-Test Elements 创建 Http 代理服务器。
- 将 Firefox 中的网络设置更改为 Http 代理服务器中定义的端口。
- 通过选择“测试计划”>“添加”>“线程(用户)”>“线程组”来创建
Thread Group。 - 通过选择线程组 > 添加 > 配置元素 > HTTP 请求默认值来创建
HTTP Request Defaults。 - (a) 在
Server Name or IP:中输入我的远程服务器的 IP
(b) 输入我的登录页面路径为/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)并运行测试并在返回的 View Result Tree 中查看测试结果来自服务器的 500 错误。
我无法确定我在这里缺少什么成分,因此我无法成功使用 JMeter。我只更改了这里提到的那些值,对于我没有在这里写的所有内容,这些值都是默认类型,例如 No of thread:。
【问题讨论】:
-
我对 jmeter 的一个类似问题的回答可以在这里查看:stackoverflow.com/questions/16008413/…
标签: asp.net jmeter viewstate load-testing