0

我在 badboy 中录制了我的脚本,并在 JMeter 中进行了转换。我的脚本喜欢: 在此处输入图像描述

当为 1 个用户运行此脚本时,应用程序未授权用户并在日志中引发以下异常:

调试:access.intercept.FilterSecurityInterceptor - 以前经过身份验证:org.springframework.security.authentication.AnonymousAuthenticationToken@:主体:anonymousUser;凭证:[受保护];已认证:真实;详细信息:org.springframework.security.web.authentication.WebAuthenticationDetails@0: RemoteIpAddress: ; 会话ID:;授予权限:ROLE_ANONYMOUS 调试:access.vote.AffirmativeBased - 投票者:org.springframework.security.access.vote.RoleVoter@514020c0,返回:-1 调试:access.vote.AffirmativeBased - 投票者:org.springframework.security.access。 vote.AuthenticatedVoter@502dc360,返回:0 调试:web.access.ExceptionTranslationFilter - 访问被拒绝(用户是匿名的);重定向到身份验证入口点 org.springframework.security.access.AccessDeniedException:访问被拒绝

当我访问 Web 应用程序并使用同一用户登录时,它会授权同一用户并在日志中打印以下跟踪:

调试:access.intercept.FilterSecurityInterceptor - 先前已验证:org.springframework.security.authentication.UsernamePasswordAuthenticationToken@:主体:com.ABCDUser@6d513c13;凭证:[受保护];已认证:真实;详细信息:com.ABCDEUserAuthenticationDetails@0: RemoteIpAddress: ; 会话ID:;授予权限:学习者调试:access.vote.AffirmativeBased - 投票者:org.springframework.security.access.vote.RoleVoter@514020c0,返回:1 调试:access.intercept.FilterSecurityInterceptor - 授权成功调试:access.intercept.FilterSecurityInterceptor - RunAsManager没有改变 Authentication 对象

但在 JMeter 中,我的测试没有标记为失败,所有采样器都成功并返回 200。

谁能帮帮我!谢谢。

4

1 回答 1

0

录制和重放并不是 100% 的事情,很可能您将不得不手动“调整”您的脚本来执行关联和参数化。

  • 相关性:处理动态参数的过程(Web 应用程序开发人员使用它们来跟踪用户状态或防止 CSRF 攻击),检测它们非常容易:只需记录您的测试 2 次并比较记录的请求。需要关联不同的值,即您需要使用正则表达式提取器从先前的响应中提取它们,并在下一个请求中使用生成的 JMeter 变量而不是硬编码值
  • 参数化:您不会使用 1 个虚拟用户运行负载测试,是吗?您应该使用尽可能多的用户名/密码组合来模仿您的目标用户。通常人们使用CSV 数据集配置来保存这种类型的数据。同样,您需要将记录的值替换为 CSV 文件中的变量

完成后,使用 1 - 2 个虚拟用户/迭代运行您的测试,并仔细检查View Results Tree侦听器中的请求和响应详细信息,以确保您的测试正常工作。

关于in JMeter my test was not marked fail,JMeter 将状态代码低​​于 400 的 HTTP 响应视为成功,因此即使您有数百个粗体和红色异常但 HTTP 状态代码为 200 - JMeter 会将结果标记为“绿色”。您可以使用响应断言向 JMeter 测试添加一些失败标准,即用于登录的用户文本,如Welcome, ${username}预期等。

于 2017-03-16T05:42:19.403 回答