Нужна помощь в автоматизации тестирования многофакторной аутентификации? - PullRequest
0 голосов
/ 07 марта 2019

У нас есть требование - когда пользователь регистрируется или входит на веб-сайт из нового браузера или устройства, код проверки подлинности отправляется по электронной почте или с помощью текста. После завершения аутентификации система фиксирует отпечаток браузера.

При последующем входе в систему, если используется один и тот же браузер на том же устройстве, многофакторная проверка подлинности не запускается. Принимая во внимание, что если последующий вход в систему из нового браузера или устройства, то MFA запускается снова.

С помощью нашей команды разработчиков мы занимались автоматизацией MFA. Однако мы боремся со второй частью, где необходимо протестировать последующие сценарии входа в систему. У нас есть наш фреймворк, построенный в Selenium с Java, и нам нужна помощь в этом.

Если быть точным, нам нужно обработать менее 2 тестовых случаев -

  1. Если последующий вход в систему с того же устройства браузера, то MFA не должно происходить.
  2. Если последующий вход в систему осуществляется с другого браузера или устройства, то должно произойти MFA.

Я ищу какое-то решение, в котором нам не нужно менять браузер. Тестовый пример 1 - прогулка по пирогу Проблема в тестовом примере 2. Как заставить систему MFA считать, что последующий запрос поступает из другого браузера / устройства?

Любая помощь высоко ценится.

1 Ответ

0 голосов
/ 07 марта 2019

Я думаю, что многопоточность будет ответом для тестового примера 2, поэтому вы можете запускать два браузера одновременно. Пример:

Класс резьбы

public class BrowserThread implements Runnable {
    public void run() {
          WebDriver driver = new ChromeDriver();
          // do authentication steps
          // verify if successful
    }
}

Тогда ваша основная функция

Thread browserOne = new Thread(new BrowserThread(), "BrowserOneThread");
browserOne.start();
Thread browserTwo = new Thread(new BrowserThread(), "BrowserTwoThread");
browserTwo.start();

Это просто очень простой пример, чтобы показать вам, как это работает в целом. Если вы хотите больше контроля над выполнением каждого потока, я бы посоветовал посмотреть java.util.concurrent.Future

...