我正在努力学习J-Meter。
当我运行使用有效/无效凭据登录站点的示例脚本时,如果使用无效登录凭据并且登录未记录在数据库中,则不会停止执行线程。
它是否实际登录到网站或仅创建虚拟登录以创建类似的环境。有没有办法使用Samplers实现这一目标?
答案 0 :(得分:1)
JMeter是/ headless browser
。
无论您使用UI的浏览器是什么,JMeter也可以这样做 - 除了执行javascript。因此,如果您已正确记录脚本 - JMeter也可以登录到实际应用程序。
Jmeter与QTP / Selenium不同。它不知道它是否是有效的凭证/无效凭证。它根据HTTP代码传递/失败请求。如果来自服务器的HTML响应带有200个http代码,则为JMeter传递。如果服务器以代码500响应,则JMeter会使请求失败。但JMeter还提供了一种验证所得响应的方法 - Assertion
。您可以使用Response Assertion
查看是否正在查看主页,以确认用户是否已成功登录。
要停止错误测试,请在thread Group
属性中选择相应的选项。
JMeter是一个非常好的工具&已经使用它2年没有问题。
祝你好运!答案 1 :(得分:1)
您的脚本是否有Config Element -> HTTP Cookie Manager
?它需要用于登录功能的cookie。
如果您的脚本与登录事务具有相同级别的许多事务,并且您在线程组中选择的选项为Continue
,则无论登录事务是否通过或失败,都将执行所有事务。
如果您希望在登录失败时不执行其他事务,请添加Regular Expression Extractor
作为登录事务的子项以检索文本Dashboard
,将其他事务放入{{1 }}。假设Logic Controller -> If Controller
的名称为Regular Expression Extractor
且Dashboard
为Default value
,则NotFound
的条件为If Controller
答案 2 :(得分:1)
JMeter会自动成功处理2xx和3xx HTTP响应代码,因此除非您明确告诉它检查响应数据中是否存在某些特定内容,否则它将无法检测失败的登录。
因此,如果您添加Response Assertion,您将能够有条件地使采样器失败,并通过Thread Group级别上的“采样器错误后采取的措施”选择在发生故障时应采取的措施。
有关断言域的更多详细信息,请参阅How to Use JMeter Assertions in Three Easy Steps指南。
如果您不确定JMeter Sampler正在做什么,您可以通过View Results Tree监听器检查请求和响应详细信息。如果在大多数情况下无法模拟登录事件,则是由于缺少HTTP Cookie Manager和/或动态强制参数(如Viewstate,CSRF令牌等)的相关性失败。