Назад к вопросам
Middle
71
questionbank

Как можно проверить кастомные ошибки в процессе тестирования?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Проверка кастомных ошибок включает анализ их появления, содержания и поведения в различных сценариях.

Этапы тестирования кастомных ошибок:

  1. Анализ требований. Понимание, какие кастомные ошибки ожидаются, при каких условиях они должны возникать и какая информация должна содержаться.
  2. Тест-дизайн. Создание тестовых сценариев, целенаправленно вызывающих кастомные ошибки. Это могут быть:
    • Ввод некорректных данных.
    • Попытка выполнения запрещенных операций.
    • Имитация сбоев внешних систем.
    • Нагрузочное тестирование для выявления ошибок, связанных с производительностью.
  3. Выполнение тестов. Выполнение разработанных сценариев и фиксация фактического поведения системы.
  4. **Верификация.`Проверка соответствия фактического поведения ожидаемому по следующим критериям:
    • Корректность появления: Ошибка возникла именно в тот момент и при тех условиях, которые описаны в требованиях.
    • Содержание сообщения об ошибке: Соответствие текста сообщения требованиям, наличие необходимой информации (например, код ошибки, описание проблемы, рекомендации).
    • Локализация: Проверка корректности перевода сообщений об ошибках, если приложение многоязычное.
    • Форматирование: Визуальное представление ошибки (формат текста, цвет, расположение) соответствует дизайну или требованиям.
    • Логирование. Проверка наличия информации об ошибке в логах системы.
    • Обработка: Поведение системы после возникновения ошибки (например, возврат к предыдущему состоянию, блокировка дальнейших действий).
    • **Безопасность.`Убедиться, что сообщение об ошибке не содержит конфиденциальной информации.
  5. Автоматизация. Автоматизация проверки возникновения и содержания кастомных ошибок.

Примеры подходов к автоматизации:

  • Парсинг ответов API. Анализ JSON/XML ответов для проверки кодов статуса и содержания ошибок.
    import requests
    
    url = "http://your_api/endpoint"
    data = {"invalid_field": "value"}
    
    try:
        response = requests.post(url, json=data)
        response.raise_for_status() # Проверка на HTTP ошибки (4xx, 5xx)
        # Дополнительная логика для проверки кастомных ошибок в теле ответа
        if response.status_code == 400 and "error_code" in response.json():
            assert response.json()["error_code"] == "INVALID_INPUT", "Incorrect error code"
            assert "Invalid data provided" in response.json()["message"], "Incorrect error message"
        else:
            assert False, f"Unexpected status code: {response.status_code} or response body"
    
    except requests.exceptions.HTTPError as e:
        print(f"HTTP error occurred: {e}")
    except Exception as e:
        print(f"Other error occurred: {e}")
    
  • Проверка элементов UI. Автоматизация взаимодействия с UI и проверка отображения сообщений об ошибках пользователю.
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.junit.Assert;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    public class CustomErrorTest {
    
        private WebDriver driver;
    
        @Before
        public void setUp() {
            // Установка пути к драйверу браузера
            System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
            driver = new ChromeDriver();
        }
    
        @Test
        public void testInvalidLoginError() {
            driver.get("http://your_app/login"); // URL страницы логина
    
            // Ввод некорректных данных
            WebElement usernameField = driver.findElement(By.id("username"));
            WebElement passwordField = driver.findElement(By.id("password"));
            WebElement loginButton = driver.findElement(By.id("loginButton"));
    
            usernameField.sendKeys("invalid_user");
            passwordField.sendKeys("wrong_password");
            loginButton.click();
    
            // Проверка появления сообщения об ошибке
            WebElement errorMessageElement = driver.findElement(By.cssSelector(".error-message")); // Селектор элемента с сообщением об ошибке
            Assert.assertTrue("Error message is not displayed", errorMessageElement.isDisplayed());
            Assert.assertEquals("Incorrect error message text", "Invalid credentials", errorMessageElement.getText());
        }
    
        @After
        public void tearDown() {
            if (driver != null) {
                driver.quit();
            }
        }
    }
    
  • Анализ логов сервера/приложения. Использование инструментов для мониторинга и анализа логов на предмет появления конкретных сообщений об ошибках или кодов.

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

Используйте различные окружения (dev, staging, production) для проверки поведения ошибок в разных конфигурациях.