Принципы юнит-тестирования.pdf
5 MB
Друзья, начинаем разбираться как же правильно делать тесты на само деле, принципы unit тестирования для вас 🤗
🔥7❤1
Сегодня я исполнил одну из детский мечт. Я копал яму на экскаваторе. Пусть и ваши мечты сбываются 🔥
❤12🔥1🕊1
Всем привет! 👋
Разбираясь в генерации документации как кода, сгенерировал для Вас сайт с материалами, которые я пишу о системной архитектуре.
🚀 URL: https://luferov.github.io/architecture/
📙 REPO: https://github.com/Luferov/architecture
Сделал на github-pages.
А вообще программисты не любят писать документацию, ну чтож, а как же писать docstring. Вроде писать docstring нормально, docstring на модуль, на класс, на методы, на функции, а потом генерируем на основе mkdocs-string https://mkdocstrings.github.io. А если добавить линтер на докстринги? Получится актуальная документация к актуальному коду.
Как же деплоить свою документацию на основе md файлов, представлено в видео:
- 🚀 YouTube: https://youtu.be/zSmvMXj4154
- 🚀 RuTube: https://rutube.ru/video/private/22a4f0bd5104f8acee9aee9d828a75e6/?p=ZKPoIL9kjmYV7_1hxSmMwg
Разбираясь в генерации документации как кода, сгенерировал для Вас сайт с материалами, которые я пишу о системной архитектуре.
🚀 URL: https://luferov.github.io/architecture/
📙 REPO: https://github.com/Luferov/architecture
Сделал на github-pages.
А вообще программисты не любят писать документацию, ну чтож, а как же писать docstring. Вроде писать docstring нормально, docstring на модуль, на класс, на методы, на функции, а потом генерируем на основе mkdocs-string https://mkdocstrings.github.io. А если добавить линтер на докстринги? Получится актуальная документация к актуальному коду.
Как же деплоить свою документацию на основе md файлов, представлено в видео:
- 🚀 YouTube: https://youtu.be/zSmvMXj4154
- 🚀 RuTube: https://rutube.ru/video/private/22a4f0bd5104f8acee9aee9d828a75e6/?p=ZKPoIL9kjmYV7_1hxSmMwg
GitHub
GitHub - Luferov/architecture: My Own Architecture Style
My Own Architecture Style. Contribute to Luferov/architecture development by creating an account on GitHub.
🔥10❤1
Кто знает что такое Temporal и кто использует? Возможно, я скоро Вас приятно удивлю 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Замечательная приложуха Temporal сегодня все соки из меня выжала, буквально, я уже отчаялся, а потом фаза луны сдвинулась и все заработало. Охеренная инженерия и работа интересная, приходите, у нас весело 💯
Вспоминаю мем:
- вы прекрасно выглядите на 40 лет
- мне 25 😔
Вспоминаю мем:
- вы прекрасно выглядите на 40 лет
- мне 25 😔
💯2
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍6❤1
Кто сегодня на pycon, делитесь инсайдами 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
1️⃣ Тестирование (Testing)
➖ Автоматизированные модульные тесты (TDD).
➖ Приемочные тесты (заказчиком).
2️⃣ Парное программирование (Pair Programming)
➖ Два программиста за одним компьютером: один пишет код ("водитель"), другой анализирует ("наблюдатель").
3️⃣ Непрерывная интеграция (Continuous Integration)
➖ Частое слияние кода в основную ветку (несколько раз в день) с запуском всех тестов.
4️⃣ Рефакторинг (Refactoring)
➖ Постоянное улучшение внутренней структуры кода без изменения внешнего поведения.
5️⃣ Простота дизайна (Simple Design)
➖ Дизайн системы должен быть максимально простым для текущих требований (без избыточности).
6️⃣ Коллективное владение кодом (Collective Code Ownership)
➖ Любой член команды может изменять любой код в проекте в любое время.
7️⃣ Планирование игр (Planning Game)
➖ Короткие итеративные встречи команды и заказчика для оценки, приоритизации задач и планирования релизов.
8️⃣ Короткие циклы выпуска (Small Releases)
➖ Частые поставки работающей системы заказчику (каждые 1–3 недели), начиная с самого ценного функционала.
9️⃣ Метафора системы (System Metaphor)
➖ Общее, простое описание архитектуры системы (например, "конвейер", "магазин"), упрощающее коммуникацию.
🔟 40-часовая рабочая неделя (Sustainable Pace)
➖ Отказ от переработок для поддержания постоянной продуктивности и избежания выгорания.
1️⃣1️⃣ Заказчик рядом (On-Site Customer)
➖ Постоянное присутствие реального представителя заказчика в команде для уточнения требований и приоритетов.
1️⃣2️⃣ Стандарты кодирования (Coding Standards)
➖ Единые, согласованные правила оформления кода, чтобы любой код выглядел так, словно его писал один человек.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
Forwarded from Двач
Зэк стал айтишником прямо в тюрьме: Престон Торп отбывает срок в тюрьме штата Мэн. Он пишет код по 10-15 часов в день и работает тимлидом в стартапе.
🟠 Он попал в тюрьму за участие в ограблении банка в 2014 году;
🟠 Решил не терять время: поступил в университет, учился дистанционно, начал программировать. Его GitHub заинтересовал работодателя;
🟠 Даже фото из камеры на аве в LinkedIn не помешало получить оффер и занять реальную должность в IT;
🟠 Сейчас он отвечает за инфраструктуру, базы данных и управляет командой из семи человек;
🟠 Доступ к интернету у него официальный – администрация зоны разрешила работать удалённо;
🟠 Теперь он учит программировать других заключённых.
Даже он вкатился, а ты чего ждёшь?
Даже он вкатился, а ты чего ждёшь?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Скажем спасибо Роману @romanverial, он поправил мои наработки и они стали еще чище и лучше 💪🔥
🚀 Архитектурный репозиторий: https://github.com/Luferov/architecture
🚀 Сайт с документацией: https://luferov.github.io/architecture/
🚀 Архитектурный репозиторий: https://github.com/Luferov/architecture
🚀 Сайт с документацией: https://luferov.github.io/architecture/
GitHub
GitHub - Luferov/architecture: My Own Architecture Style
My Own Architecture Style. Contribute to Luferov/architecture development by creating an account on GitHub.
❤🔥8🔥2
🔥 Благодаря мне и @allexbelov мы чуть-чуть продвинули FastClean вперед. Из нового:
🚀 убраны лишние методы при вызове API пагинаций
🚀 Репозитории к СУБД postgres теперь разовые на все приложение, а не на request
🚀 Провайдер S3 заменен на нативный aioboto3 вместо minio_async
🚀 Еще добавил пару мелочей
Релиз: https://github.com/Luferov/fast-clean/releases/tag/v1.4.0
🚀 убраны лишние методы при вызове API пагинаций
🚀 Репозитории к СУБД postgres теперь разовые на все приложение, а не на request
🚀 Провайдер S3 заменен на нативный aioboto3 вместо minio_async
🚀 Еще добавил пару мелочей
Релиз: https://github.com/Luferov/fast-clean/releases/tag/v1.4.0
GitHub
Release v1.4.0 · Luferov/fast-clean
v1.4.0 (2025-07-27)
Features
Add aioboto3 instead minio_async, add some cli commands (d16a1b6)
Add project info from toml (2e0d947)
Detailed Changes: v1.3.0...v1.4.0
Features
Add aioboto3 instead minio_async, add some cli commands (d16a1b6)
Add project info from toml (2e0d947)
Detailed Changes: v1.3.0...v1.4.0
❤8
1️⃣ Пишем интеграционные - больше покрытие, тестируем работу API или UseCases.
2️⃣ Что не захватывается интеграционными, пишем UnitTest’ы
3️⃣ В библиотеках, если они у вас есть - пишем только UnitTest’ы
4️⃣ Тестируем вход-выход, а не состояние системы.
5️⃣ Ничего не мокаем, кроме http вызовов в другие сервисы (мокаем https.request), репозиторий не мокаем
6️⃣ Контракты с другими внешними системами не тестируем
7️⃣ Хрупкий тест - плохой тест
8️⃣ Каждый тест должен быть идеимпотентный
9️⃣ Если у вас много сервисов и все они одинаковые, нужно делать общий тулинг для тестов как pytest_plugins
Ну, а вообще, систему без ошибок не написать, но есть и другое правило: нормально делай, нормально будет :)
Каждая новая доработка стремиться замедлить и загасить систему, тесты позволяют этого не допустить 🙏
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7