$30 off During Our Annual Pro Sale. View Details »

Организация процесса тестирования. Простые и бы...

Бындюсофт
June 18, 2021
82

Организация процесса тестирования. Простые и быстрые интеграционные тесты на TestHost

Бындюсофт

June 18, 2021
Tweet

More Decks by Бындюсофт

Transcript

  1. С чего всё началось Несколько вопросов, над которыми нужно подумать:

    1. Какие есть сложности для написания автотестов? 2. Что такое интеграционные тесты? … углубившись в эти вопросы, мы подготовили несколько статей и доклад...
  2. 1. Сократить петлю обратной связи между обнаружением бага и разработчиком.

    2. Ускорить поставку новых фич/релизов. 3. Обеспечить высокое качество наших проектов. К чему мы стремимся?
  3. 1. Разработчик убеждается, что его сервис/фича работает (или что ничего

    не сломал), с помощью автоматических тестов, и передает в тестирование не только сервис/фичу, но тесты с тестовой инфраструктурой. Всё готово!
  4. 2. QA, убеждается в наличии необходимой инфраструктуры, ревьюет автоматические тесты

    от разработчика и дополняет их. При необходимости, запрашивает у разработчика недостающую тестовую инфраструктуру или примеры тестов. Проверено и дополнено!
  5. 3. За счёт автоматизации тестирования, QA концентрирует свое внимание на

    глубоком анализе проекта, понимании бизнес-требований, проработке сложных интеграционных сценариев. Подумали о сложном!
  6. 4. В prod сервис/фича выходят с готовыми автоматическими тестами и/или

    зафиксированными ручными сценариями проверки. Передаем в prod!
  7. 5. Для ручных сценариев должны быть определены четкие критерии их

    запуска (периодичность и условия запуска). Помним о повторении!
  8. 1. Тесты должны быть автоматическими. 2. Тесты должны быть стабильными.

    3. Тесты должны быть простыми. 4. Тесты должны быть обоснованными (приносить пользу, а не страдания). Принципы
  9. 1. Стремление создавать тесты в контролируемом окружении, чтобы тесты были

    стабильны. 2. Минимально достаточное количество тестов в неконтролируемом окружении. 3. Готовая инфраструктура для тестов из наших "кубиков". 4. Есть связь между автоматическими тестами и тестовыми сценариями. Что нам может помочь?
  10. 1. Нужно стремиться, чтобы тесты захватывали только ту часть системы,

    которые они проверяют, но не забывать, что тесты должны оставаться простыми. 2. Если вы хотите протестировать сервис, то тестируйте сервис, а если вы тестируете взаимодействие, то тестируйте взаимодействие. 3. Минимально достаточное количество “хрупких” тестов. Немного резюмируя...
  11. Виды автоматизированного тестирования в контексте API: 1. Unit-тесты 2. Тестирование

    слоя интеграции 3. Тестирование API сервиса (RPC, queue consumers) 4. Тестирование взаимодействия сервисов 5. Тестирование контрактов 6. End-to-End тестирование
  12. Что из этого интеграционные тесты? Да почти всё :) 1.

    Unit-тесты 2. Тестирование слоя интеграции 3. Тестирование API сервиса (RPC, queue consumers) 4. Тестирование взаимодействия сервисов 5. Тестирование контрактов 6. End-to-End тестирование
  13. Сложные интеграционники: 1. Unit-тесты 2. Тестирование слоя интеграции 3. Тестирование

    API сервиса (RPC, queue consumers) 4. Тестирование взаимодействия сервисов 5. Тестирование контрактов 6. End-to-End тестирование
  14. Стремимся к простым интеграционникам: 1. Unit-тесты 2. Тестирование слоя интеграции

    3. Тестирование API сервиса (RPC, queue consumers) 4. Тестирование взаимодействия сервисов 5. Тестирование контрактов 6. End-to-End тестирование
  15. End-to-End тестирование 1. Минимально необходимое количество тестов на неконтролируемом окружении

    2. Проверка пути прохождения цепочки микросервисов (все сервисы провзаимодействовали от начала до конца)
  16. Итог: 1. Unit-тесты - контролируемое окружение 2. Тестирование API сервиса

    (RPC, queue consumers) - контролируемое окружение 3. End-to-End тестирование - неконтролируемое окружение
  17. Простой вопрос Почему я уверен, что сервис работает так, как

    задумано? 1. Юнит тесты 2. Проверил в постмане 3. Тестировщик проверил 4. Прод работает 5. Автоматизированные интеграционные тесты
  18. Я задолбался 1. Повторять одни и те же сценарии 2.

    Регресы бьют по самолюбию 3. Возврат к задаче отвлекает 4. Искать изменения в БД и прочих сервисах
  19. TestHost 1. Запуск сервиса в том же процессе, что и

    тесты 2. Получение любых объектов из DI 3. Замена любых объектов в DI 4. Обращение к методам по http
  20. Типичный процесс 1. Пишу новый метод 2. Пишу для него

    тесты 3. Случайно меняю код, пока тесты не начнут проходить 4. Показываю тесты тестировщику, чтобы он знал о проверенных и возможных сценариях 5. Для багов всегда пишу тест раньше исправления
  21. Типичные тесты 1. Замоконы все внешние вызовы кроме БД 2.

    TestHost шарится между тестами 3. Тесты выполняются последовательно 4. Перед каждым тестом очищается контекст в памяти 5. На каждый тест создаётся новый контекст в данных, если это возможно (пользователь и т.д.) 6. Данные готовятся через api, useCase, БД
  22. https://byndyusoft.com Организация процесса тестирования Виды тестирования в контексте API Пример

    тестирования сервиса Что и как можем тестировать в контексте API Спасибо! Мы сделали это вместе.