Я хотел бы запустить несколько автоматических тестов для тестирования веб-приложения, в котором обрабатываются рабочие процессы процесса.
Для взаимодействия с самим приложением я уже написал объектную модель страницы, которая использует Selenium. WebDriver для взаимодействия с несколькими компонентами приложения.
А сейчас я собираюсь написать ряд тестов, которые позволят мне запустить ряд автоматических тестов для этого конкретного приложения. И в качестве тестовой среды я хотел бы использовать TestNG.
Но из-за того факта, что тестируемое приложение является приложением рабочего процесса, я обнаружил, что мне всегда нужно прорабатывать определенную часть потока процесса. сначала, чтобы потом выполнить тест.
Пример тестового примера 1: Добавить действие к определенной задаче в досье
- Войти в приложение
- Открыть досье x
- Открыть задачу y в досье x
- Добавить действие z к задаче y в досье x
Пример тестового примера 2: добавить планирование для определенной операции в задаче в досье
- Вход в приложение
- Открыть досье x
- Открыть задание y внутри досье x
- Добавить действие z к заданию y внутри досье x
- Добавьте планирование для операции z
Так что, как вы можете видеть из приведенных выше примеров, мне всегда нужно проработать определенное количество подобных шагов, прежде чем я смогу выполнить фактическое тест.
как Для себя я начал писать классы TestNG. Один для тестового примера 1 и второй для тестового примера 2. Затем в каждом тестовом классе я реализовал несколько методов тестирования, которые соответствуют шагам теста.
См. Пример кода ниже для тестового примера 1:
public class Test_Add_Activity_To_Task_In_Dossier extends BaseTestWeb {
private Dossier d;
private Task t;
@Test
public void login() {
System.out.println("Test step: login");
}
@Test(dependsOnMethods = "login")
public void open_dossier() {
System.out.println("Test step: open dossier");
}
@Test(dependsOnMethods = "open_dossier")
public void open_task() {
System.out.println("Test step: open task");
}
@Test(dependsOnMethods = "open_task")
public void add_activity() {
System.out.println("Test step: add activity");
}
}
А вот пример кода для тестового примера 2:
public class Test_Add_Planning_For_Activity_To_Task_In_Dossier extends BaseTestWeb {
private Dossier d;
private Task t;
@Test
public void login() {
System.out.println("Test step: login");
}
@Test(dependsOnMethods = "login")
public void open_dossier() {
System.out.println("Test step: open dossier");
}
@Test(dependsOnMethods = "open_dossier")
public void open_task() {
System.out.println("Test step: open task");
}
@Test(dependsOnMethods = "open_task")
public void add_activity() {
System.out.println("Test step: add activity");
}
@Test(dependsOnMethods = "add_activity")
public void add_planning() {
System.out.println("Test step: add planning");
}
}
Так что вы уже можете заметить этот вид структурирования тестов не подлежит техническому обслуживанию, так как количество тестовых случаев для написания растет, потому что теперь я всегда повторяю одни и те же шаги сначала, прежде чем подхожу к фактическому тесту, который нужно сделать ...
Поэтому я хотел бы спросить сообщество здесь о том, как можно было бы сделать все более пригодным для повторного использования и избежать многократного повторения шагов в каждом тестовом примере
Все идеи приветствуются !!