我是一名 .net 开发人员,之前没有 JMeter/压力测试经验。我正在尝试对我使用 JMeter 开发的 ASP.net 网站进行负载测试。使用 JMeter 的原因是它是一个具有很高知名度和可信度的开源工具。
我提到这个链接 http://blog.technicallyworks.com/2009/06/load-testing-aspnet-sites-with-jmeter.html为了照顾视图状态,这是 ASP.net 的一个典型特征。然而我的要求并不像那里所说的那么简单。我正在尝试通过将用户名和密码发送到登录页面来加载测试我的网站,然后通过仅在登录成功时才允许浏览的其他页面进行测试。
下面列出了我为实现这一目标而采取的步骤。
- 通过选择 WorkBench > 添加 > 非测试元素来创建 Http 代理服务器。
- 将 Firefox 中的网络设置更改为 Http 代理服务器中定义的端口。
- 创建一个
Thread Group
通过选择测试计划 > 添加 > 线程(用户) > 线程组。
- 创造
HTTP Request Defaults
通过选择“线程组”>“添加”>“配置元素”>“HTTP 请求默认值”。
- (a) 输入我的远程服务器的 IP
Server Name or IP:
(b) 输入我的登录页面的路径/MyWebApplication/login.aspx
- Create
User Defined Variables
通过选择“线程组”>“添加”>“配置元素”>“用户定义的变量”。
-
我的login.aspx页面非常简单,它从两个文本框中获取用户名和密码,并在数据库中匹配它们,如果成功,则将它们重定向到LoginSuccess.aspx页面。
我的login.aspx只有三个服务器控件,两个asp:TextBox
用于接收登录名和密码以及一个asp:Button
用于在数据库中检查它们。
他们的id是txtLogin
, txtPassword
, btnLogin
分别。
在用户定义的变量(在步骤 6 中创建)中,我添加了 admin 和 123admin,它们是在 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 管理器。
现在,我通过选择“线程组”>“添加”>“逻辑控制器”>“录制控制器”来添加录制控制器。
我启动了 HTTP 代理服务器,然后使用 Firefox 输入完整的 URL 到我的 login.aspx 页面,在两个文本框中输入 admin 和 123admin,然后按下登录按钮,并在 LoginSuccess.aspx 上成功重定向。我停止了 HTTP 代理服务器并关闭了 Firefox 浏览器。
现在我已经保存了测试计划(包含记录的步骤,这里只有 2 个步骤,1 个用于 login.aspx,另一个用于 LoginSuccess.aspx)并运行测试并在“查看结果树”中查看测试结果,该结果返回 500 错误服务器。
我无法确定我在这里缺少什么成分,因为我无法成功使用 JMeter。我只更改了此处提到的那些值,对于我此处未写的所有内容,这些值都是默认类型,例如No of thread:
.
- 请至少添加更好的脚本架构。
- 那么,在上面的步骤 11 中,您已经
txtLogin = $(login)
, txtPassword = $(password)
, ...
将变量值引用为$(VAR_NAME)
是不正确的,${VAR_NAME}
应该使用。
您能否确保您的问题中只有拼写错误 - 或者您的脚本中有相同的拼写错误?
- 使用例如调试采样器 http://jmeter.apache.org/usermanual/component_reference.html#Debug_Sampler / 调试后处理器 http://jmeter.apache.org/usermanual/component_reference.html#Debug_PostProcessor(在应用两个正则表达式提取器之后插入)以检查两个值
viewstate
and eventValidation
是从您的请求中提取的,并且您的正则表达式查询工作正常。
- 查看“查看结果树”结果中的第二个 HTTP 请求采样器的“请求”面板,以确保所有定义的参数(
txtLogin
, txtPassword
, __VIEWSTATE
, __EVENTVALIDATION
)与请求一起发送正确的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)