Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Жизнь без 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/

Moscow Python Meetup

September 26, 2019
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

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

    тестируют в Uploadcare Андрей Барышников
 [email protected]
  2. Когда запускать тесты •smoke тесты каждые - 15 минут •Интеграционные

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

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

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

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

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