Перейти к содержимому

Аудит и оптимизация QA-процессов
онлайн, начало 24 декабря
Автоматизация функционального тестирования
онлайн, начало 27 ноября
Логи как инструмент тестировщика
онлайн, начало 30 ноября
Тестирование REST API
онлайн, начало 30 ноября

aleksSB

Регистрация: 07 апр 2020
Offline Активность: 20 апр 2020 07:10
-----

Мои темы

Грамотно ли я написал тестовый фреймворк на java? (нужна критика)

07 апреля 2020 - 21:57

Цель - в качестве практики написать тестовую модель по UI почты маил ру и автоматизировать подходящие под это дело тесты. Надо набивать руку, т.к. скоро намечается работа на должности автотестера.
Стек - java+seleniumWebDriver+pageObject+testng
Пока только 3 тестика написал, и нужно понять, архитектурно и синтаксически правильно ли я всё делаю, чтобы можно было продолжать.
 
Что планирую добавить и какие проблемы решить:
  1. Убрать Thred.sleep-ы, корректно обработать ожидания появления/скрытия элементов
  2. Написать более интуитивно понятные названия методов, переменных.
  3. Вынести некоторые захардкоженные значения.
  4. Добавить какой нибудь конфигуратор отчетов - allure, например.
  5. Добавить в итоговой реализации cucumber.
Вопросы следующие:
1. Правильно ли я применил паттерн Page Object в принципе? Возможно, какие-то недочеты есть?
2. При создании письма на странице с общим списком писем всплывает попап нового письма. Он как бы находится на странице с общим списком писем, но также это сам по себе значительный элемент с большим кол-вом тестов. Поэтому я вынес его, как отдельную страницу. Это правильно? Или нужно было создать внутренний класс этого попапа в EmailsListPage (классе страницы с общим списком писем)?
3. Я узнаю на какой странице нахожусь по следующему явному ожиданию, который я добавил в конструктор каждой страницы. Правильно ли это?
new WebDriverWait(driver, 10)
                .until(ExpectedConditions.presenceOfElementLocated(title));
4. Во многих случаях я возвращаю объект страницы. Не избыточно ли это? Насколько я понимаю, драйвер и без этого понимает, что на странице произошли изменения, т.е. мне не нужно присваивать переменной страницы, с которой я буду работать дальше, возвращенный методом объект страницы.
public EmailsListPage deleteEmail () {
        driver.findElement(contextMenuDelete).click();
        return new EmailsListPage(driver);
    }
    @Test
    public void deleteEmail() throws InterruptedException{
        EmailsListPage emailsListPage = new EmailsListPage(driver);
        int emailsCountBefore = emailsListPage.getCountEmailList();
        emailsListPage.rightClickByEmail(emailsListPage.getEmailList(), 0);
        <b>emailsListPage.deleteEmail();</b>
        Thread.sleep(1000);
        int emailsCountAfter = emailsListPage.getCountEmailList();
        Assert.assertTrue((emailsCountBefore-1) == emailsCountAfter);
    }
5. В тестах, собственно, указал тестовые методы с помощью аннотаций @Test. Соответственно подготовительные действия перед каждым тестом я пометил с помощью @BeforeTest и @AfterTest соответственно. Но при запуске всего класса с тестами в таком случае @BeforeTest происходит однократно и все тесты одновременно в этом окне пытаются выполниться. Почему так может происходить? (проблема решилась тем, что фикстуры пометил как @BeforeMethod и @AfterMethod )
6. Какие нибудь тестовые данные (ссылки, названия кнопок, названия страниц и тд) наверняка можно вынести в какие-нибудь property файлы. Вот как это к проекту присобачить? Чтобы доставать из файлика, например, по getProperty(baseUrl) данные.
7. Этой строке место в классе с тестами? Может это можно указать где-то в настройках проекта?
System.setProperty("webdriver.chrome.driver", "src\\main\\resources\\chromedriver.exe");
8. Планирую реализовать тестики и использовать окружение, библиотеки, инструменты максимально близкие к тем, что используются на реальных проектах. Что тут еще можете посоветовать, к чему стремиться? Стек точно java+selenium+pageObject+testNG+allure. Селениду позже буду осваивать.
9. Возможно еще есть какие-то архитектурные или синтаксические недочеты? Может что-то куда-то вынести можно или нужно?
 
Спасибо за ответы!

Яндекс.Метрика
Реклама на портале