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

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

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

Avatar for Moscow Python Meetup

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 часов