Жизнь без QA: Как тестируют в Uploadcare или pytest на все случаи жизни

Жизнь без QA: Как тестируют в Uploadcare или pytest на все случаи жизни

Андрей Барышников (Uploadcare, Software Engineer) @ Moscow Python Meetup 68

"Мой доклад будет посвящен опыту Uploadcare в развитии своей тестировочной инфраструктуры.

В Uploadcare существует множество связанных и не очень приложений которые обеспечивают работу всего сервиса. Чтобы понимать, что что-то сломалось или корректно работает мы используем: интеграционные тесты, unit-тесты, функциональные тесты, bdd и e2e тестирование, тестирования БД. Все это мы делаем без отдела QA и с помощью Pytest. Мы не гордимся тем, что у нас нет отдела QA, но гордимся тем, что в любой момент времени мы можем сказать, что что-то сломалось или работает корректно.

Я хотел бы рассказать о нашем опыте построения инфраструктуре тестов, проблемах с которыми мы столкнулись, решениях которые мы использовали и нюансах о которых мы узнали".

Видео: http://www.moscowpython.ru/meetup/68/life-without-qa/

53b0434aded1fb944ec3037c382158c1?s=128

Moscow Python Meetup

September 26, 2019
Tweet

Transcript

  1. Или pytest на все случаи жизни Жизнь без QA: как

    тестируют в Uploadcare Андрей Барышников
 ab@uploadcare.com
  2. “Архитектура”

  3. “Дымовые” и интеграционные и тесты

  4. Когда запускать тесты •smoke тесты каждые - 15 минут •Интеграционные

    тесты - каждый час •Тяжелые тесты или использующие внешние API - каждые 4 часа •После деплоя приложения запускаются тесты интеграции этого приложения •Когда хочется :)
  5. CI и уведомления о тестах

  6. pytest feature: marks

  7. Артефакты тестирования https://clc.to/debug-requests

  8. Проблемы: flaky, retry, $ Повторы проваленных тестов - pytest-rerunfailures

  9. Функциональные и юнит тесты: переход к pytest

  10. Производительность и профилирование тестов • N самых медленных тестов: pytest

    --durations=N • Ищите и блокируйте запросы в интернет в тестируемом коде • Отключайте сигналы и “тяжелые функции” • Повторно используйте фикстуры внутри тест-кейсов • Используйте транзакции в тестах • Следите за изолированность тестов и фикстур • Распараллеливание через xdist
  11. BDD, E2E тестирование внешних API Проблемы с внешними API: •

    Часто меняются без уведомлений • Настройки приложений кто-то может поменять • API может “упасть”, status page - OK Что хотелось от тестов:
 • Реже менять тесты под изменения API • Тестировать “живое” API • Мокать и проверять вызовы, смотреть логи http запросов • Знать величину покрытия кода
  12. BDD, E2E и использование внешних API

  13. Проблемы с BDD E2E - Очень долго - Палки в

    колеса велосипеда от сервисов: прокси, капча - Selenium - боль
  14. Тестирование БД • Проверка целостности бекапа, полного восстановления • Проверка

    статистических показателей таблиц и индексов • Прогон ~ 13 часов
  15. Пишите тесты :)