Устранение ошибки аутентификации 403 при тестировании производительности API с использованием JmeterJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Устранение ошибки аутентификации 403 при тестировании производительности API с использованием Jmeter

Сообщение Anonymous »

Я пытаюсь выполнить некоторые тесты производительности API моего приложения. Когда я отправляю запрос к API, я получаю ответ 403 (ошибка аутентификации), но ожидаю ответ 200 (успешно).Шаги, которые я предпринял на данный момент:
  • Я отправляю запрос в API с допустимыми параметрами.
  • Я включая действительный токен носителя в запросе.
  • Я проверил, что URL-адрес создан правильно.
    < /li>
    Я протестировал нашу конечную точку работоспособности, которая не требует аутентификации, и она работает правильно.
Однако, несмотря на эти усилия, я все еще получаю ответ об ошибке аутентификации 403 вместо сообщения ожидается 200 Успешный ответ.
Это говорит о том, что может возникнуть проблема с тем, как я настраиваю токен носителя в запросе. Возможно, API не распознает или не принимает предоставленный мной токен-носитель, хотя я считаю его действительным.
Это код, который я выполняю: (Код все еще необходимо почиститься)
package initialization;

import org.apache.jmeter.control.LoopController;
import org.apache.jmeter.control.gui.LoopControlPanel;
import org.apache.jmeter.control.gui.TestPlanGui;
import org.apache.jmeter.engine.JMeterEngineException;
import org.apache.jmeter.engine.StandardJMeterEngine;

import org.apache.jmeter.protocol.http.control.HeaderManager;
import org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui;
import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy;
import org.apache.jmeter.reporters.ResultCollector;
import org.apache.jmeter.reporters.Summariser;

import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.testelement.TestPlan;
import org.apache.jmeter.threads.ThreadGroup;
import org.apache.jmeter.threads.gui.ThreadGroupGui;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.ListedHashTree;
import org.testng.annotations.Test;

import java.io.IOException;

public class JmeterSetup {
private static final String API_URL = "";
private static final String ACCEPT_HEADER = "*/*";
private static final String AUTHORIZATION_HEADER = "Bearer ActualBearer";
private static final String Param = "sd";

@Test
void givenJMeterScript_whenUsingCode_thenExecuteViaJavaProgram() throws IOException, JMeterEngineException {

JMeterUtils.setJMeterHome(".\\Downloads\\apache-jmeter-5.6.3\\bin\\jmeter.properties");
String jmeterFile = ".\\Downloads\\apache-jmeter-5.6.3\\bin\\jmeter.properties";

JMeterUtils.loadJMeterProperties(jmeterFile);
JMeterUtils.initLocale();
StandardJMeterEngine jmeter = new StandardJMeterEngine();

HTTPSamplerProxy httpSampler = getHttpSamplerProxy();

LoopController loopController = getLoopController();

ThreadGroup threadGroup = getThreadGroup(loopController);

TestPlan testPlan = getTestPlan(threadGroup);

ListedHashTree testPlanTree = new ListedHashTree();
ListedHashTree threadGroupHashTree = (ListedHashTree) testPlanTree.add(testPlan, threadGroup);
threadGroupHashTree.add(httpSampler);

Summariser summer = null;
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");

if (summariserName.length() > 0) {
summer = new Summariser(summariserName);
}

String logFile = "output-logs.jtl";
ResultCollector logger = new ResultCollector(summer);
logger.setFilename(logFile);
testPlanTree.add(testPlanTree.getArray()[0], logger);

jmeter.configure(testPlanTree);
jmeter.run();

System.out.println("Test completed. See output-logs.jtl file for results");
System.out.println("JMeter .jmx script is available at script.jmx");
}

private static LoopController getLoopController() {
LoopController loopController = new LoopController();
loopController.setLoops(1);
loopController.setFirst(true);
loopController.setProperty(TestElement.TEST_CLASS, LoopController.class.getName());
loopController.setProperty(TestElement.GUI_CLASS, LoopControlPanel.class.getName());
loopController.initialize();
return loopController;
}

private static HTTPSamplerProxy getHttpSamplerProxy() {
HTTPSamplerProxy httpSampler = new HTTPSamplerProxy();
httpSampler.setProtocol("https");
httpSampler.setDomain("ApplicationDomain");
httpSampler.setPath("Path");
httpSampler.setMethod("GET");

// Create a HeaderManager and add the headers
HeaderManager headerManager = new HeaderManager();
headerManager.add(new org.apache.jmeter.protocol.http.control.Header("accept", ACCEPT_HEADER));
headerManager.add(new org.apache.jmeter.protocol.http.control.Header("Authorization", AUTHORIZATION_HEADER));
headerManager.add(new org.apache.jmeter.protocol.http.control.Header("param", Param));
httpSampler.setHeaderManager(headerManager);

// Set the properties for the HTTPSamplerProxy
httpSampler.setProperty(TestElement.GUI_CLASS, HttpTestSampleGui.class.getName());
httpSampler.setProperty(TestElement.NAME, "API Request");

return httpSampler;
}

private static TestPlan getTestPlan(ThreadGroup threadGroup) {
TestPlan testPlan = new TestPlan("Sample Test Plan");
testPlan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName());
testPlan.setProperty(TestElement.GUI_CLASS, TestPlanGui.class.getName());
return testPlan;
}

private static ThreadGroup getThreadGroup(LoopController loopController) {
ThreadGroup threadGroup = new ThreadGroup();
threadGroup.setName("Sample Thread Group");
threadGroup.setNumThreads(10);
threadGroup.setRampUp(5);
threadGroup.setSamplerController(loopController);
threadGroup.setProperty(TestElement.TEST_CLASS, ThreadGroup.class.getName());
threadGroup.setProperty(TestElement.GUI_CLASS, ThreadGroupGui.class.getName());
return threadGroup;
}
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... ing-jmeter
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»