【发布时间】:2017-10-15 01:27:40
【问题描述】:
我正在使用 Spring 开发 REST API (HTTPS),现在需要对 1000 个并发用户进行负载测试。问题是我使用 siege 进行负载测试,但它无法测试 jwt 令牌标头。这是最好的方法在我的场景中执行负载测试?
【问题讨论】:
标签: java rest performance-testing load-testing siege
我正在使用 Spring 开发 REST API (HTTPS),现在需要对 1000 个并发用户进行负载测试。问题是我使用 siege 进行负载测试,但它无法测试 jwt 令牌标头。这是最好的方法在我的场景中执行负载测试?
【问题讨论】:
标签: java rest performance-testing load-testing siege
我会建议以下配置:
将 jjwt jar 连同依赖项 (jackson-databind) 放在 JMeter Classpath 下(只需将 jar 放入 JMeter 安装的“lib”文件夹中,然后重新启动 JMeter 以获取它们)
添加 HTTP Request 采样器并将其配置为发送您的 API 请求。
将 HTTP Header Manager 添加为 HTTP 请求采样器的子项。
将 JSR223 PreProcessor 添加为 HTTP 请求采样器的子项。
将以下代码放入JSR223 PreProcessor“脚本”区域:
import io.jsonwebtoken.Jwts
import io.jsonwebtoken.SignatureAlgorithm
import io.jsonwebtoken.impl.crypto.MacProvider
import org.apache.jmeter.protocol.http.control.Header
import java.security.Key
def key = MacProvider.generateKey();
def compactJws = Jwts.builder()
.setSubject('Joe')
.signWith(SignatureAlgorithm.HS512, key)
.compact()
sampler.getHeaderManager().add(new Header('Authorization', 'Bearer ' + compactJws))
上面的代码将生成一个JSON Web Token,它将registered claim子(主题)设置为Joe,并将Authorization标头与Bearer %generated token string%的值添加到HTTP请求中。
您需要根据需要修改代码,但概念应该相同。如果需要,请联系您的应用程序开发人员寻求帮助。
参考资料:
【讨论】:
您可以使用 Jmeter 来测试 JWT Secured Rest API。
您可以将 jwt 令牌与请求一起包含在“HTTP 标头管理器”中。
参考:http://jmeter.apache.org/usermanual/build-adv-web-test-plan.html#header_manager
【讨论】: