k6的新增功能,它与一个Web应用程序一起使用,该Web应用程序在加载CSS和JS文件时在主页上短暂显示了一个微调框。
一旦文件被加载并且脚本可用,就会添加一个登录表单(替换微调框)。
当前,当我查看响应正文时,我仅看到微调器元素。即使理论上应该将登录表单添加到页面,添加延迟似乎也不会影响返回的正文。
如果在初始页面加载后将元素添加到主体,则k6会检测到该元素并将其在响应中使用吗?
感谢您的帮助。
账单
答案 0 :(得分:1)
k6不能像浏览器那样工作-负载测试是用JavaScript编写的,但是当您请求HTML文件时,该文件中的JavaScript不会执行。由于k6没有DOM或任何常用的浏览器API,因此即使使用eval()
或类似方法也通常无法执行。因此,您必须明确指定希望k6脚本发出的所有HTTP请求,在您的情况下,我假设微调器和登录表单是由主页中某个JavaScript生成的。
要简化在使用k6时使用这种高度动态网站的工作,可以在浏览器中正常使用该网站,将浏览器会话记录为.har
文件,然后将其导出,然后将其转换为{{1} },使用.har
命令将文件归档到k6脚本,如下所示:k6 convert
。您可以找到有关here整个过程的更多信息。
答案 1 :(得分:0)
k6不执行客户端代码,也不呈现任何内容。它针对目标系统发出请求并加载它们。这样可以有效地进行大量需求,但会产生在某些情况下必须解决的新事物。
捕获所有必要的请求-通常使用k6 convert
来转换HAR文件,可以很好地为脚本奠定基础。我建议在转换时使用其他选项以限制任何第三方请求。例如--only
或--skip
。此处更多信息:https://support.loadimpact.com/4.0/how-to-tutorials/how-to-convert-har-to-k6-test/
自从您记录了浏览器会话以来,如果您的应用程序/站点使用任何预防CSRF攻击的方法,则必须处理这些值或将它们关联起来。例如.NET站点使用VIEWSTATE
,如果您正在测试.NET应用,则需要指示VU从响应主体中提取视图状态,并在需要它的请求中重新使用它。
与第2点类似,如果要提交表单,则可能不想一遍又一遍地使用相同的详细信息。通常,这只是测试系统可以缓存或导致失败请求的性能(如果您登录并且系统不支持同一用户的并发登录,例如一个示例)。 k6能够利用CSV或JSON数据作为数据参数化的来源。如果不太复杂,您还可以生成一些内联。以下是一些示例:https://docs.k6.io/docs/open-filepath-mode