直接进入业务逻辑的问题在于,您永远无法确定您在表示层中没有遇到给服务器带来额外负载的问题。并且单独测试业务逻辑可能意味着错过可能的性能问题(例如,如果在很多 HTTP 会话中有很多对象,您的服务器可能大部分时间都花在垃圾收集器上,因为堆太低了),所以我建议创建一个包含对服务器的所有调用的复杂测试计划。
最简单的方法是使用 JMeter 的 HTTP 代理,启动您的浏览器,让 HTTP 代理为您记录测试计划。
请参阅Basic JMeter Proxy Step By Step,了解如何开始使用代理。
这将记录从浏览器到服务器的所有调用(您对 javascript 本身不感兴趣,因为这发生在浏览器上,因此不会影响服务器负载,尽管 AJAX 调用会)。
HTTP 代理创建的测试计划将对所有值进行硬编码,因此您可能必须通过它来确定每次调用时哪些值不同(例如,如果您有一个返回新 ID 的创建选项,后续请求需要使用服务器返回的ID。
要获得这些值,您可以将Regular Expression Extractors 添加到您的请求中,并分配一个变量名称,然后该变量名称可以在后续请求中用作请求参数。遍历请求参数并确定哪些需要替换为需要从先前页面解析的值可能有点乏味,但并不难。
例如,如果您的页面在返回 HTML 中包含 recordId
<input type="hidden" name="recordId" value="abcqwer123" />
下一个请求中需要用到的,可以用下面的正则提取出来:
name="recordId"\s+value="([a-z0-9]+)"
要记住的另一件事是确保您使用范围广泛的测试数据(例如,如果您模拟多个用户登录,您需要确保并非每个测试都使用相同的 userId 运行,因为缓存可能意味着诸如数据库查找之类的繁重操作仅在您第一次运行时完成。为了简化使用多个帐户,您可以使用CSV Data Set Config 将值列表加载到变量中,然后每次迭代都会更改。
我最后的建议是研究在Distributed Mode 中运行 JMeter。这是您在许多远程客户端上启动 Jmeter-server 的地方,然后它们都执行相同的测试。这可确保测试客户端本身会因没有足够的 CPU 内核或网络带宽来创建大量并发请求而造成瓶颈。