Существует ли неявная альтернатива функциям dependOnMethods TestNG? (запуск тестов в зависимом порядке)

Пусть у нас есть следующие тесты TestNG:

@Test 
public void Test1() {

}

@Test (dependsOnMethods={"Test1"}) 
public void Test2() {

}

@Test (dependsOnMethods={"Test2"}) 
public void Test3() {

}

Тесты служат функциональными комплексными тестами webui (с Selenium Webdriver). Каждый метод тестирования — это шаг в контексте длинного сценария e2e.

Как мы можем реорганизовать тесты, чтобы сделать их более читабельными? Лучшим решением может быть удаление всех этих параметров «dependsOnMethods» в аннотации и неявное предоставление этой функциональности «dependsOnMethods». Вопрос как? Ожидания в порядке приоритета:

  • Найдите решение, поддерживающее TestNG
  • Оставьте TestNG, но задействуйте любой другой инструмент, например. легко? используя groovy вместо java... Могу ли я использовать группы TestNG с easyb? Возможно ли, чтобы easyb не в стиле bdd, а в стиле "junit", например:

учитывая «пользователь вошел в систему и установил экспертный режим», {

//... setup, a la @BeforeClass 

}

затем "пользователь может включить бла-бла-бла" {

//... 

}

затем "пользователь может проверить poo poo poo" {

//... 

}

затем "пользователь сохраняет изменения" {

//... 

}

затем "пользователь отменяет изменения", {

// Tear Down, a la @AfterClass 

}

Есть ли какие-либо проблемы с тем, что вы просто начинаете писать другие тестовые классы в groovy в том же проекте Java?

  • Убрать TestNG, но использовать что? Функция групп TestNG - нужна.

Одним из безумных решений может быть - сломать все и перейти к Фукидиду. Но это не вариант в моем случае.

PS Я знаю, что зависимые тесты — это «плохая практика». Но я считаю, что «само тестирование зависимостей» также является хорошим моментом в автоматизации...


person yashaka    schedule 10.10.2013    source источник
comment
Я не понимаю проблемы. Что плохого в наличии нескольких dependsOnMethods? Я лично считаю, что это вполне читабельно   -  person Nathan Merrill    schedule 10.10.2013


Ответы (2)


Да... есть альтернатива использованию зависит от... НЕ ДЕЛАЙТЕ ЭТОГО!

Как я уже ответил здесь...< /а>

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

Хорошая архитектура тестирования требует, чтобы каждый метод был САМОДОСТАТОЧНЫМ и не зависел от завершения других тестов перед продолжением. Почему? Потому что, скажем, Тест 2 зависит от Теста 1. Допустим, Тест 1 не пройден. Теперь Тест 2 не пройден. причина была.

Я бы порекомендовал вам, сэр, создать самодостаточные, поддерживаемые и короткие тесты.

Это отличное чтение, которое поможет вам в ваших начинаниях: http://www.lw-tech.com/q1/ug_concepts.htm

person ddavison    schedule 10.10.2013
comment
Я полностью понимаю вашу идею. У меня есть отдельные наборы, где тесты предельно чисты и самодостаточны. Но я подумал, что есть место в мире QA Automation, где также могут существовать «зависимые» тесты. Что, если цель состоит в том, чтобы протестировать сами «зависимости»? В этом и заключался смысл этих «сквозных функциональных тестов» с точки зрения пользователя. Когда, например. пользователь включает и настраивает какую-то службу на одной веб-странице, затем переходит на другую и пытается настроить другую службу, но терпит неудачу только из-за этой зависимости, установленной на первых «шагах». Разве это не хорошая идея, чтобы проверить? - person yashaka; 11.10.2013
comment
Я понимаю, что все нужно тестировать на своих местах в самом начале. И такие сервисы нужно тестировать на юнит- и интеграционном уровне, с соответствующими тестами с сервисами-заглушками/мок/фейками и т.д. Но что, если на текущем этапе проекта этим никто не будет заниматься среди разработчиков? Что, если эти сервисы аппаратно-зависимы, а на аппаратной части - их тоже никто не будет тестировать :) Все, что у меня сейчас есть - это эмулировать реальный пользовательский сценарий со всеми зависимостями, которые он может сделать, чтобы иметь хоть какие-то тесты автоматизации, которых не будет. очень точный, но, по крайней мере, послужит хорошим набором дымовых CI. - person yashaka; 11.10.2013
comment
Тем не менее, спасибо за ваше замечание. Я это знал, но иногда просто не мог уделить должного внимания теме в данном контексте. Я явно должен потратить больше времени, чтобы просмотреть все и попытаться уменьшить количество зависимостей. - person yashaka; 11.10.2013

Оставьте TestNG, но задействуйте любой другой инструмент, например. легко? используя groovy вместо java... Могу ли я использовать группы TestNG с easyb? Можно ли easyb не в стиле bdd, а в стиле 'junit'

Это выбор, который я использовал.

У вас не будет групп, подобных testng, с easyb (по крайней мере, из коробки), и я пока не нашел способа «анотировать» easyb/groovy «методы тестирования».

Но теперь у меня есть:

  • неявные зависимые методы. Хотя они не полностью зависимы - если некоторые методы будут «отключены», следующие все равно будут выполняться. Но моя фактическая цель может быть достигнута: поскольку тестовый файл представляет собой отличный скрипт, все «тестовые методы» будут выполняться в том порядке, в котором они написаны. Если вам нужно отключить какой-либо «метод тестирования», вы можете просто прокомментировать его код — это отключит выполнение теста и покажет его как «ожидающий» в отчете.
  • тестовые методы имеют удобочитаемые названия.

Вот как могут выглядеть тесты:

beforeAllSetup()

before "each method setup", {
  //implementation
}
after "each method tear down", {
  //...
}

it "first test this", {
  //...
}

it "this will be shown as pending in the report", /*{
  //...
}*/

it "then test this", {
  //...
}

afterAllTearDown()
person yashaka    schedule 18.10.2013