Defender, спасибо за ответ и желание помочь)
Под взаимосвязанными тестами подразумевается следующее:
Тест 1:
- логинимся под user1 на портал или в административную консоль;
- делаем какие либо действия, проверяем что-либо, создаем какие-нибудь объекты из предметной области, ищем что-то;
- запоминаем для передачи в следующий тест какие-либо значения, например, СНИЛС или id объекта или url;
- разлогиниваемся на портале/ в консоли.
Тест 2 (IE only):
- логинимся под user2 на портал или в административную консоль;
- делаем какие либо действия, проверяем что-либо, создаем какие-нибудь объекты из предметной области, ищем что-то;
- запоминаем для передачи в следующий тест какие-либо значения, например, СНИЛС или id объекта или url;
- разлогиниваемся на портале/ в консоли.
Тест 3:
- логинимся под user1 на портал или в административную консоль;
- делаем какие либо действия, проверяем что-либо, создаем какие-нибудь объекты из предметной области, ищем что-то;
- запоминаем для передачи в следующий тест какие-либо значения, например, СНИЛС или id объекта или url;
- разлогиниваемся на портале/ в консоли.
То есть, в каждом тесте сначала логинимся, в конце разлогиниваемся.
Порядок тестов практически везде строгий. Т.е. исходя из сценария тестирования, например нельзя выполнить сначала тесты 3, 5, 8 (которые IE only),
а затем выполнить тесты 1,2,4,6,7,9,10
По поводу вашей рекомендации тестировать все в IE.
Самая большая Story, написанная мной, состоит из 17 тестов (каждый тест примерно из 5-15 шагов) из них 3 теста работают только из под IE.
Если любой тест падает, Story считается непройденным, а функционал неработающим.
Вероятность успешного прохождения всех тестов из Story (практически вычисленная) меньше 1/10.
Помогает использование в строке запуска мавена параметра “число попыток перезапуска упавшего теста”, например так -Dmax.retries=5.
В итоге 17 тестов выполняются под IE за 25-30 минут. Время ручного тестирования функционала Story превышает 2 часа.
Замеры времени выполнения нескольких тестов до теста, который IE only, показали, что под FireFox и Chrome время их выполнения примерно в 2 раза меньше, чем под IE.
Также я заметил и посчитал (убил сутки) практическую вероятность прохождения части тестов с одной попытки для IE (примерно 0,1), FireFox (0,4) и Chrome (0,4).
Для уменьшения времени выполнения тестов данной Story я решил выполнять все в FireFox или Chrome, а для тестов под IE принудительно стартовать еще один драйвер.
В итоге получилось некрасиво, коряво, есть мелкие проблемы, мне самому не нравится, но работает.
Время выполения в итоге уменьшилось до 10-11 минут.
Пример кода (прошу строго не судить, на Java я пишу с нуля со 2-го января 2015, автоматизированным тестированием занимаюсь полгода, Thucydides осваиваю тоже с января).
public class ServiceStoryTest {
...
@BeforeClass
public static void beforeClass() {
driverType = Injectors.getInjector().getInstance(Configuration.class).getDriverType().toString();
}
@Before
public void setUp() throws Exception {
if (!(driverType.equalsIgnoreCase("IEXPLORER"))&&(checkMethod)) {
driver = new InternetExplorerDriver();
}
}
@After
public void tearDown() throws Exception {
if (!(driverType.equalsIgnoreCase("IEXPLORER"))&&(checkMethod)&&(terminateDriver)) {
terminateDriver=false;
checkMethod=false;
driver.quit();
}
}
...
@Test //9
public void e_sign_file() throws Exception {
if (driverType.equalsIgnoreCase("IEXPLORER")) {
user.should_be_visible_service_entrance_page();
user.should_be_visible_console_ppu_page(login2, password2);
user.should_be_signed_file(urlApprovalRoutePage);
}
else {
driver.get("HOST/access.htm");
driver.findElement(By.xpath(".//input[@name='login']")).clear();
driver.findElement(By.xpath(".//input[@name='login']")).sendKeys(login2);
driver.findElement(By.xpath(".//input[@name='password']")).clear();
driver.findElement(By.xpath(".//input[@name='password']")).sendKeys(password2);
driver.findElement(By.xpath(".//form//input[@title='Вход']")).click();
....
}
....
}
Минусы данного решения:
- в случае падения теста под IE остаются всякие незакрытые ресурсы - окна браузера и т.п., которые не дают нормально выполнятся тесту при повторе;
- приходится фактически дублировать весь код теста на чистом WebDriver’е (код в секции else);
- в таком виде не годится для будущего CI (конец этого года примерно, кода наберется много тестов).
Исходя из всего вышеизложенного я и обратился к уважаемым форумчанам за помощью.
Хотелось бы узнать о других вариантах реализации.