S — Single Responsibility Principle(Принцип единой ответственности)

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

Несколько примеров того, как вы можете это применить:

Объектная модель страницы:

  • Создайте отдельный класс для каждой страницы, например HomePage, LoginPage, OrdersPage и т. д. Вместо объединения всех локаторов страниц в один класс «PageObject», распределите их между отдельными классами, ответственными за соответствующие страницы.

  • Для больших страниц рассмотрите возможность разбить их на более мелкие PageFragments, такие как заголовок, таблица, нижний колонтитул и т. д.

Каждая функциональность должна иметь отдельный тестовый класс:

  • Это гарантирует, что каждый класс тестирования предназначен для тестирования определенной функции или функциональности.

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

// Принцип единой ответственности (SRP) 
// Пример: создание отдельных тестовых классов для каждой функции или 
пользовательской истории 
{
    [Test]
    public void UserCanLoginSuccessfully()
    {
        // Логика тестирования для функциональности входа в систему
    }
}

public class ShoppingCartTest
{
    [Test]
    public void UserCanAddItemToCart()
    {
        // Логика тестирования для добавления товаров в корзину
    }
}

public class CheckoutTest
{
    [Test]
    public void UserCanCheckoutSuccessfully()
    {
        // Логика тестирования для функциональности оформления заказа
    }
}

Пользовательский класс WebdriverFactory: мы можем настроить каждую реализацию WebDriver и добавить расширения для конкретных веб-драйверов.

public class WebDriverFactory
    {
        private IWebDriver Driver;

        public IWebDriver InitDriver(AppiumLocalService appiumLocalService, EnvironmentConfig environmentConfig)
        {
            switch (platformName)
            {
                case PlatformName.Web:
                    switch (browserName)
                    {
                        case BrowserName.FireFox:
                            // Добавить параметры браузера Firefox
                            break;

                        case BrowserName.Chrome:
                            // Добавить параметры браузера
                            break;
                    }
                    break;
            }
            return Driver;
        }  
   }

Вспомогательные классы:

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

  • Например, наличие разных вспомогательных классов для FileHelpers, DatabaseHelpers, CsvHelpers, JsonHelpers и т. д.

Один метод должен отвечать только за одно действие :

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

Last updated

Was this helpful?