Что такое Hard и Soft Assertions

Что это

Assert, или Assertion, это оператор, который оценивает условие и утверждает, что оно истинно. В автоматизации тестирования такие утверждения («ассерты») используются для проверки того, что тестируемое приложение ведет себя так, как ожидается.

Жесткие и мягкие

Существует два типа утверждений: «жесткие» и «мягкие» (hard- и soft-ассерты).

  • Hard assertions немедленно завершают тест, если условие не выполнено. Это полезно для верификации критически важных условий.
  • Soft assertions не приводят к немедленному завершению теста при невыполнении условия. Вместо этого они регистрируют ошибку и продолжают выполнение теста. Что удобно для проверки некритических условий.

С течением времени в тестовых фреймворках и библиотеках появилась функциональность soft assertion, что облегчило тестировщикам внедрение этого удобнейшего подхода в практику автоматизации. Такие фреймворки, как TestNG, JUnit и различные библиотеки тестирования на JavaScript, имеют встроенную поддержку soft assertion. Playwright также предоставляет такую возможность.

Польза soft assertion в том, что они позволяют проверять несколько условий в одном тесте, не беспокоясь о его преждевременном завершении — что позволяет обнаружить трудно выявляемые ошибки, которые могут быть не обнаружены «жесткими ассертами».

Быстрый пример

Например, тестируется форма логина. Можно использовать hard assertion для проверки того, что и имя пользователя, и пароль заполнены. А можно использовать soft assertion для проверки того, что текст в поле username является реальным именем пользователя. Если поле имени пользователя пустое, hard assertion сработает и завершит выполнение, а soft assertion зарегистрирует баг и выполнение продолжится.

Итак, hard assertion немедленно вызывает исключение, останавливая выполнение теста. Следовательно, в тест-репорте будет зафиксировано только первое сообщение о сбое и больше ничего. Soft assertions не вызовет исключение сразу, а выполнит все шаги до того, как тест упадет. Поэтому в репорт будут включены все сообщения об ошибках.

Пример Soft Assertion в Playwright

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

test('test', async ({ page }) => {
    await page.goto('<https://owasp.org/membership/>');
    const emailAddress = page.locator('[aria-label="Email Address"]')
    expect.soft(await emailAddress.getAttribute('placeholder')).toBe('Member Address'); 
    //Error: expect(received).toBe(expected) // Object.is equality
    await emailAddress.fill('email.testing@gmail.com');
    
    const confirmEmailAddress = page.getByPlaceholder('Confirm Member Email Address')
    expect.soft(await confirmEmailAddress.getAttribute('placeholder')).toBe('Confirm Member Address');
    //Error: expect(received).toBe(expected) // Object.is equality
    await confirmEmailAddress.fill('email.testing@gmail.com');
    
    const companyName = page.getByPlaceholder('Company Name')
    expect.soft(await companyName.getAttribute('placeholder')).toBe('Company Name');
    await companyName.fill('Testing Company');
    
    const memberName = page.locator('[aria-label="Name"]')
    expect.soft(await memberName.getAttribute('placeholder')).toBe('Member Name');
    await memberName.fill('New Member');
  
    expect(test.info().errors).toHaveLength(0);
    //Error: expect(received).toHaveLength(expected)
});

Источник

Автоматизация в Телеграме

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас