4

我是一名 .net 开发人员,之前没有 JMeter/压力测试方面的经验。我正在尝试对我使用 JMeter 开发的 ASP.net 网站进行负载测试。使用 JMeter 的原因是它是一个开源工具,具有很高的知名度和可信度。
我参考这个链接是为了处理视图状态,这是 ASP.net 的一个典型特性。但是,我的要求并不像那里所说的那么简单。我正在尝试通过将用户名和密码发送到登录页面来加载测试我的网站,然后通过仅在登录成功时才允许浏览的其他页面进行测试。

下面列出了我为实现这一目标而采取的步骤。

  1. 通过选择 WorkBench > Add > Non-Test Elements 创建 Http 代理服务器。
  2. 将 Firefox 中的网络设置更改为 Http 代理服务器中定义的端口。
  3. Thread Group通过选择测试计划 > 添加 > 线程(用户)> 线程组来创建一个。
  4. HTTP Request Defaults通过选择线程组 > 添加 > 配置元素 > HTTP 请求默认值来创建。
  5. (a) 在 (b) 中输入我的远程服务器的 IPServer Name or IP:
    将我的登录页面的路径输入为/MyWebApplication/login.aspx
  6. User Defined Variables通过选择线程组 > 添加 > 配置元素 > 用户定义变量来创建。
  7. 我的 login.aspx 页面非常简单,它从两个文本框中获取用户名和密码,并在数据库中匹配它们,如果成功,将它们重定向到 LoginSuccess.aspx 页面。
    我的 login.aspx 只有三个服务器控件,两个asp:TextBox用于接收登录 ID 和密码,一个asp:Button用于在 db 中检查它们。
    它们的 id分别是txtLogin, 。txtPasswordbtnLogin

    在用户定义的变量(在步骤 6 中创建)中,我添加了 admin 和 123admin,它们是 db 中的真实登录,在 login.aspx 页面中进行检查,成功时重定向到 LoginSuccess.aspx 页面。

    用户定义的变量:

    Name:          Value    Description
    login          admin    
    password       123admin 
    
  8. 我通过选择线程组 > 添加 > 后处理器 > 正则表达式提取器来添加两个正则表达式提取器。

  9. 我已将第一个正则表达式提取器重命名为View State Extractor并向它们添加以下数据:

    Reference Name: viewstate
    Regular Expression: name="__VIEWSTATE" id="__VIEWSTATE" value="(.+?)"
    Template:$1$
    Match No.(0 for Random): 1
    Default Value: ERROR
    
  10. 同样,我将第二个正则表达式提取器重命名为Event Validation Extractor并向它们添加以下数据:

    Reference Name: eventValidation
    Regular Expression: name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="(.+?)"
    Template:$1$
    Match No.(0 for Random): 1
    Default Value: ERROR
    
  11. 在第 5 步中,我添加了以下数据

    Send Parameters With the Request:
        Name:             - Value
        txtLogin          - $(login)
        txtPassword       - $(password)
        __VIEWSTATE       - $(viewState)
        __EVENTVALIDATION - $(eventValidation)
    
  12. 现在我通过选择线程组 > 添加 > 配置元素 > HTTP Cookie 管理器添加了 HTTP Cookie 管理器。

  13. 现在我通过选择 Thread Group > Add > Logic Controller > Recording Controller 添加了 Recording Controller。

  14. 我启动了 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:.

4

4 回答 4

1
  1. 请至少添加更好的脚本架构。
  2. 好吧,在上面的第 11 步中,你有txtLogin = $(login), txtPassword = $(password), ...
    引用变量值$(VAR_NAME)是不正确的,${VAR_NAME}应该使用。
    您能否确保您的问题是否只是拼写错误 - 或者您在脚本中是否有相同的拼写错误?
  3. 使用例如Debug Sampler / Debug PostProcessor(在两个 RegEx Extractor 应用后插入)检查两者的值是否viewstateeventValidation您的请求中提取,并且您的 regex 查询是否正常工作。
  4. 在查看结果树结果中查看第二个 HTTP 请求采样器的请求面板,以确保所有具有正确值的已定义参数 ( txtLogin, txtPassword, __VIEWSTATE, __EVENTVALIDATION) 与请求一起发送。
于 2013-03-15T15:41:56.710 回答
0

在第5步中,更改如下

Name:             - Value
txtLogin          - ${login}
txtPassword       - ${password}
__VIEWSTATE       - ${viewState}
__EVENTVALIDATION - ${eventValidation}

还要验证,正则表达式提取器是否按要求工作。我的意思是检查它是否获取正确的值。

于 2014-04-18T10:23:00.903 回答
0

我使用了CSS/JQuery Extractor ,它对我有用。使用视图状态 {viewState} 变量的正则表达式提取器被传递并得到视图状态损坏错误消息。

在 CSS/JQuery 提取器中设置的参数是:-

参考名称:viewState

CSS/JQuery 表达式:输入[id=__VIEWSTATE]

属性:值

我遵循的步骤是: -

  1. 首先记录登录过程。
  2. 在线程组中拖动所需的页面。
  3. 在登录页面的获取请求中添加两个 CSS/JQuery 提取器,分别用于视图状态和事件验证。
  4. 在登录页面的 post 请求中添加如下正文参数并运行批处理。

    名称: - 值

    txtLogin - ${登录}

    txtPassword - ${密码}

    __VIEWSTATE - ${viewState}

    __EVENTVALIDATION - ${eventValidation}

于 2016-06-19T07:56:14.520 回答
-2

Http 500 是。服务器错误代码,所以不是你的脚本失败了必须做的是.aspx中的一个标签来禁用我几个月前遇到的安全性

于 2014-04-17T22:12:50.557 回答