Привет! Обычно вам заходят посты про unittest-ы вот вам ещё один.
Где и как это применить — подумайте сами, а пока просто интересный пример.
Допустим, у нас есть клиент:
Здесь внутри метода:
- есть логика получения актуального host:
- логика сборки заголовков:
Наша задача — проверить, что всё это правильно собирается и передаётся в HTTPXAsyncTransport.
Но ведь он создаётся прямо внутри метода!
Как же его подменить? 🤔
Вот как можно сделать:
Что происходит:
1. Мы патчим HTTPXAsyncTransport, подсовываем туда Mock
2. Вызываем client.execute(...)
3. Проверяем, что transport действительно получил нужные аргументы
✅ Проверили не только что вызвался метод, но и что внутренняя логика клиента корректно отработала
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Где и как это применить — подумайте сами, а пока просто интересный пример.
Допустим, у нас есть клиент:
class Client:
...
def execute(
self,
query: str,
variables: dict[str, Any] | None = None,
operation_name: str | None = None,
headers: dict[str, Any] | None = None,
**kwargs: Any,
) -> dict[str, Any]:
headers = headers or {}
url = self._get_base_url()
final_headers = self._default_headers()
final_headers.update(headers)
transport = HTTPXAsyncTransport(url=url, headers=final_headers)
result = transport.execute(query, variables, operation_name)
return result
Здесь внутри метода:
- есть логика получения актуального host:
url = self._get_base_url()
- логика сборки заголовков:
final_headers = self._default_headers()
Наша задача — проверить, что всё это правильно собирается и передаётся в HTTPXAsyncTransport.
Но ведь он создаётся прямо внутри метода!
Как же его подменить? 🤔
Вот как можно сделать:
from unittest import patch, Mock
@pytest.fixture
def client() -> Client:
return Client()
@pytest.fixture
def transport():
with patch("lib.client.HTTPXAsyncTransport") as mock_transport:
mock_transport.return_value = Mock()
yield mock_transport
def test_execute(client: Client, transport):
client.execute("query")
assert transport.call_args_list == [
call(
url="https://google.com",
headers={
"Content-Type": "application/json",
"Authorization": "Bearer token",
"User-Agent": "MyApp/1.0"
}
)
]
Что происходит:
1. Мы патчим HTTPXAsyncTransport, подсовываем туда Mock
2. Вызываем client.execute(...)
3. Проверяем, что transport действительно получил нужные аргументы
✅ Проверили не только что вызвался метод, но и что внутренняя логика клиента корректно отработала
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥6
Привет)
Недавно в линке получил интересный комментарий к своему посту относительно генерации кода и качества спеки.
Пост и комменты приложу.
Что вы думаете по этому поводу?
P.S Если вы все таки хотите избавиться от рутины и ускорить свою работу уже скоро старт тренинга professional.
Вот такой инструмент написал один из учеников курса professional
https://t.iss.one/AQA_Engineer/371
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Недавно в линке получил интересный комментарий к своему посту относительно генерации кода и качества спеки.
Пост и комменты приложу.
Что вы думаете по этому поводу?
P.S Если вы все таки хотите избавиться от рутины и ускорить свою работу уже скоро старт тренинга professional.
Вот такой инструмент написал один из учеников курса professional
https://t.iss.one/AQA_Engineer/371
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет!
У меня отличные новости для всех!
Я теперь сотрудничаю со школой QA.GURU и присоединился к преподавательскому составу школы.
Почему с ними?
Потому, что школа основана сильными инженерами, и считается одной из лучших на рынке автоматизации тестирования.
Так вот, в рамках продвинутого курса «Автоматизация тестирования на Python Advanced» я подготовил два новых блока занятий по gRPC:
1️⃣ «GRPC. Разработка серверной части»
2️⃣ «GRPC. Клиентская часть и разработка автотестов»
Почитать подробнее можно в телеграм-канале — QA.GURU
Первое бесплатное занятие уже 24 июля, и вы успеваете записаться. Будет интересно!
Подробная программа курса «Автоматизация тестирования на Python Advanced» на сайте. До встречи на курсе! 🤝
У меня отличные новости для всех!
Я теперь сотрудничаю со школой QA.GURU и присоединился к преподавательскому составу школы.
Почему с ними?
Потому, что школа основана сильными инженерами, и считается одной из лучших на рынке автоматизации тестирования.
Так вот, в рамках продвинутого курса «Автоматизация тестирования на Python Advanced» я подготовил два новых блока занятий по gRPC:
1️⃣ «GRPC. Разработка серверной части»
2️⃣ «GRPC. Клиентская часть и разработка автотестов»
Почитать подробнее можно в телеграм-канале — QA.GURU
Первое бесплатное занятие уже 24 июля, и вы успеваете записаться. Будет интересно!
Подробная программа курса «Автоматизация тестирования на Python Advanced» на сайте. До встречи на курсе! 🤝
Telegram
QA.GURU | Автоматизация, ручное тестирование, карьера в QA
Комьюнити QA-инженеров, практика, обучение и карьерное развитие.
Школа основана QA-инженерами — 3000+ выпускников, больше 5 лет на рынке.
Наши курсы: https://qa.guru
Отзывы: @qa_guru_reviews
Поддержка @qa_guru_support | Чат: @qa_guru_chat
Школа основана QA-инженерами — 3000+ выпускников, больше 5 лет на рынке.
Наши курсы: https://qa.guru
Отзывы: @qa_guru_reviews
Поддержка @qa_guru_support | Чат: @qa_guru_chat
🔥13
Привет, как я уже говорил мне тут хейтеры, немного "поднасрали", поэтому хочется перепостить посты без какашек))
Ну и будет полезно повторить материал)
Под одним из постов меня попросили рассказать о принципах SOLID.
Исходя из моего опыта, построение архитектуры фреймворка — тема довольно шаблонная, и особо упарываться над какими-то моментами не стоит. Средняя подготовка автоматизатора обычно ниже, чем у разработчика, поэтому главное, чтобы тесты писались — и желательно писались быстро. Тем не менее, применение некоторых принципов SOLID может помочь избежать проблем с поддержкой кода.
🔍 Почему SOLID важен в автоматизации?
Ключевые моменты:
- SOLID делает код более гибким, переиспользуемым и удобным для поддержки.
- Автотесты часто страдают от «спагетти-кода» — SOLID снижает этот риск.
- Принципы применимы к хелперам, API-клиентам, обработчикам данных и другим компонентам.
📌 5 принципов SOLID
1️⃣ S – Single Responsibility (Принцип единственной ответственности)
2️⃣ O – Open/Closed (Принцип открытости/закрытости)
3️⃣ L – Liskov Substitution (Принцип подстановки Лисков)
4️⃣ I – Interface Segregation (Принцип разделения интерфейсов)
5️⃣ D – Dependency Inversion (Принцип инверсии зависимостей)
SOLID — это не строгие правила, а гибкие принципы, которые помогают избегать хаоса в коде.
В следующих постах разберём каждый принцип на примерах из автоматизации.
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Ну и будет полезно повторить материал)
Под одним из постов меня попросили рассказать о принципах SOLID.
Исходя из моего опыта, построение архитектуры фреймворка — тема довольно шаблонная, и особо упарываться над какими-то моментами не стоит. Средняя подготовка автоматизатора обычно ниже, чем у разработчика, поэтому главное, чтобы тесты писались — и желательно писались быстро. Тем не менее, применение некоторых принципов SOLID может помочь избежать проблем с поддержкой кода.
🔍 Почему SOLID важен в автоматизации?
Ключевые моменты:
- SOLID делает код более гибким, переиспользуемым и удобным для поддержки.
- Автотесты часто страдают от «спагетти-кода» — SOLID снижает этот риск.
- Принципы применимы к хелперам, API-клиентам, обработчикам данных и другим компонентам.
📌 5 принципов SOLID
1️⃣ S – Single Responsibility (Принцип единственной ответственности)
2️⃣ O – Open/Closed (Принцип открытости/закрытости)
3️⃣ L – Liskov Substitution (Принцип подстановки Лисков)
4️⃣ I – Interface Segregation (Принцип разделения интерфейсов)
5️⃣ D – Dependency Inversion (Принцип инверсии зависимостей)
SOLID — это не строгие правила, а гибкие принципы, которые помогают избегать хаоса в коде.
В следующих постах разберём каждый принцип на примерах из автоматизации.
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9
Media is too big
VIEW IN TELEGRAM
Кстати сегодня первая годовщина моей свадьбы)
Давайте вспомним как это было)
Давайте вспомним как это было)
50🔥23❤8✍2🤔1
Привет)
🔥 Как вы помните в QA.GURU я записал два занятия по gRPC в рамках обновлённого блока занятий по GRPC!
И одним из них QA.GURU — решили поделиться.
Занятие по теме:
«Создание протофайла и генерация серверной части для сервиса photocatalog»
В занятии я пошагово показываю, как создаётся протофайл для нового GRPC-сервиса и как сгенерировать на его основе серверный код.
⭐ Всего на курсе будет 6 занятий от меня по теме GRPC, так что рекомендую не упускать шанс и забирать первое бесплатно!
Ну и было бы приятно получить фидбек)
Так что если хотите:
— Прокачать навык автотестирования
— Разбираться в gRPC и инструментах профессионального уровня
— Работать как инженеры в продакшене
— Уверенно расти в зарплате
Приходите на курс, буду рад вас видеть!▶
И одним из них QA.GURU — решили поделиться.
Занятие по теме:
«Создание протофайла и генерация серверной части для сервиса photocatalog»
В занятии я пошагово показываю, как создаётся протофайл для нового GRPC-сервиса и как сгенерировать на его основе серверный код.
Ну и было бы приятно получить фидбек)
Так что если хотите:
— Прокачать навык автотестирования
— Разбираться в gRPC и инструментах профессионального уровня
— Работать как инженеры в продакшене
— Уверенно расти в зарплате
Приходите на курс, буду рад вас видеть!
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
QA.GURU | Автоматизация, ручное тестирование, карьера в QA
Комьюнити QA-инженеров, практика, обучение и карьерное развитие.
Школа основана QA-инженерами — 3000+ выпускников, больше 5 лет на рынке.
Наши курсы: https://qa.guru
Отзывы: @qa_guru_reviews
Поддержка @qa_guru_support | Чат: @qa_guru_chat
Школа основана QA-инженерами — 3000+ выпускников, больше 5 лет на рынке.
Наши курсы: https://qa.guru
Отзывы: @qa_guru_reviews
Поддержка @qa_guru_support | Чат: @qa_guru_chat
❤7😍1
📌 S – Single Responsibility Principle (SRP)
Принцип единственной ответственности
"Один класс — одна ответственность."
Нарушение этого принципа — одна из самых распространённых проблем в коде. Рассмотрим пример, который прислал мне мой друг.
Самое забавное, что этот код ему помог написать ChatGPT.
На самом деле он пришел с другой проблемой, но я сразу заметил тут несколько проблем и первая, что данный класс SupplyMessageBuilder берет на себя слишком много:
В чём проблема?
Класс `SupplyMessageBuilder` выполняет две задачи:
1. Формирует сообщение (строит JSON).
2. Создаёт Kafka Producer.
Это нарушает SRP, потому что:
- У каждого билдера свой продюссер, и если нужно будет изменить логику Kafka, придется перелопачивать все билдеры.
- Много дублирования, в исходном коде конструктор KafkaProducer заполнялся в каждом билдере.
- Увеличивает риск ошибок при модификации.
- Размазана зона ответственности.
✅ Как исправить?
Разделить ответственности:
1. `SupplyMessageBuilder` – только формирует сообщение.
2. `KafkaProducerManager` – отвечает за работу с Kafka.
Исправленный код:
Теперь каждый класс отвечает только за свою зону ответственности.
1. SupplyMessageBuilder только билдит и валидирует сообщения (для сообщения добавлен Pydantic, но это сюда не стал писать)
2. KafkaProducerManager занимается только отправкой сообщений
3. KafkaProduccer передается как зависимость
Вывод
Соблюдение SRP делает код:
🔹 Чище – проще читать и понимать.
🔹 Гибче – легче вносить изменения.
🔹 Надёжнее – меньше неожиданных багов.
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Принцип единственной ответственности
"Один класс — одна ответственность."
Нарушение этого принципа — одна из самых распространённых проблем в коде. Рассмотрим пример, который прислал мне мой друг.
Самое забавное, что этот код ему помог написать ChatGPT.
На самом деле он пришел с другой проблемой, но я сразу заметил тут несколько проблем и первая, что данный класс SupplyMessageBuilder берет на себя слишком много:
class SupplyMessage:
def __init__(self):
self.site_id = None
self.ml_supplies = []
def __str__(self):
return json.dumps({"SITEID": self.site_id, "MLSUPPLIES": self.ml_supplies}, indent=4)
class SupplyMessageBuilder:
def __init__(self):
self.message = SupplyMessage()
def set_site_id(self, site_id):
self.message.site_id = site_id
return self
def add_ml_supply(self, ml_supply_id, ml_supply_ship_dt):
supply = {
"MLSUPPLYID": ml_supply_id,
"MLSUPPLYSHIPDT": ml_supply_ship_dt,
"ORDERS": [],
}
self.message.ml_supplies.append(supply)
return self
...
@staticmethod
def create_producer():
return KafkaProducer() # Нарушение SRP!
В чём проблема?
Класс `SupplyMessageBuilder` выполняет две задачи:
1. Формирует сообщение (строит JSON).
2. Создаёт Kafka Producer.
Это нарушает SRP, потому что:
- У каждого билдера свой продюссер, и если нужно будет изменить логику Kafka, придется перелопачивать все билдеры.
- Много дублирования, в исходном коде конструктор KafkaProducer заполнялся в каждом билдере.
- Увеличивает риск ошибок при модификации.
- Размазана зона ответственности.
✅ Как исправить?
Разделить ответственности:
1. `SupplyMessageBuilder` – только формирует сообщение.
2. `KafkaProducerManager` – отвечает за работу с Kafka.
Исправленный код:
class SupplyMessageBuilder:
... # Только методы для построения сообщения
def build(self) -> SupplyMessage:
return SupplyMessage.model_validate_json(self.message)
class KafkaProducerManager:
def __init__(self, producer: KafkaProducer)
self.producer = producer
def send_message(self, message: type[BaseModel]):
msg = message.model_dump_json()
return self.producer.send(msg)
Теперь каждый класс отвечает только за свою зону ответственности.
1. SupplyMessageBuilder только билдит и валидирует сообщения (для сообщения добавлен Pydantic, но это сюда не стал писать)
2. KafkaProducerManager занимается только отправкой сообщений
3. KafkaProduccer передается как зависимость
Вывод
Соблюдение SRP делает код:
🔹 Чище – проще читать и понимать.
🔹 Гибче – легче вносить изменения.
🔹 Надёжнее – меньше неожиданных багов.
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
✍1🔥1
"Зеленые плашки "Open to work" и жёсткие вопросы на собеседованиях"
Знаете, последнее время я замечаю всё больше зелёных плашек "Open to work" в LinkedIn.
Мне бы было всё равно, если бы у меня не было друзей и знакомых, которых сократили. У одного моего друга сократили 8 QA из 10.
По сути оставили только 2 Senior'ов, которые выполняют всю работу, остальное оставили на откуп ИИ. Не могу сказать, что считаю это правильным решением.
Но жизнь сейчас такая - бизнес экспериментирует и пытается резать расходы, внедряя ИИ.
Что я заметил последнее время:
• Массовые сокращения QA в IT компаниях
• ИИ автоматизирует простые задачи тестирования
• Остаются только те, кто умеет то, что ИИ пока не может
Поверхностные навыки больше не спасают.
Из моих знакомых оставили только тех, кто реально "усатый" - тех, кто как человек-оркестр может спроектировать качественный и надёжный фреймворк (а не состряпанный ИИ на коленке), настроить CI/CD, уведомления, внедрить паттерны.
Мне недавно друг скинул вопросы для скрининга в Wildberries - там реально жёстко. Спрашивают не только базу вроде типов данных и библиотек, но и паттерны проектирования, декораторы, контекстные менеджеры, асинхронность, с которой 90% тестировщиков даже не сталкивались.
Для Senior'а это база.
Страшно? Должно быть. 😬
Может я конечно нагнетаю, но мне кажется это уже не звоночек, а как говорит мой друг "Колокол", что нужно усиливать экспертизу, не хватать по верхам, а углубляться в то чем ты занимаешься будь это блокчейн, бэкэнд или язык программирования.
Ускоряться и учиться чтобы не оказаться на помойке...
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Знаете, последнее время я замечаю всё больше зелёных плашек "Open to work" в LinkedIn.
Мне бы было всё равно, если бы у меня не было друзей и знакомых, которых сократили. У одного моего друга сократили 8 QA из 10.
По сути оставили только 2 Senior'ов, которые выполняют всю работу, остальное оставили на откуп ИИ. Не могу сказать, что считаю это правильным решением.
Но жизнь сейчас такая - бизнес экспериментирует и пытается резать расходы, внедряя ИИ.
Что я заметил последнее время:
• Массовые сокращения QA в IT компаниях
• ИИ автоматизирует простые задачи тестирования
• Остаются только те, кто умеет то, что ИИ пока не может
Поверхностные навыки больше не спасают.
Из моих знакомых оставили только тех, кто реально "усатый" - тех, кто как человек-оркестр может спроектировать качественный и надёжный фреймворк (а не состряпанный ИИ на коленке), настроить CI/CD, уведомления, внедрить паттерны.
Мне недавно друг скинул вопросы для скрининга в Wildberries - там реально жёстко. Спрашивают не только базу вроде типов данных и библиотек, но и паттерны проектирования, декораторы, контекстные менеджеры, асинхронность, с которой 90% тестировщиков даже не сталкивались.
Для Senior'а это база.
Страшно? Должно быть. 😬
Может я конечно нагнетаю, но мне кажется это уже не звоночек, а как говорит мой друг "Колокол", что нужно усиливать экспертизу, не хватать по верхам, а углубляться в то чем ты занимаешься будь это блокчейн, бэкэнд или язык программирования.
Ускоряться и учиться чтобы не оказаться на помойке...
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8🤔1
Фейковые Senior'ы с ChatGPT vs настоящие эксперты
Иногда получаю такие сообщения от студентов:
"Друзья советуют накрутить опыт в резюме и подготовить отмазки на собеседовании. Говорят, все так делают"
И знаете что? Я это не одобряю, но стоит признать - это правда работает. Я уже стал закрывать на это глаза.
Но многие по этическим и психологическим причинам так делать не хотят. На мой взгляд это правильно, но тут уж каждый сам решает.
Но вот, что происходит на рынке:
🤡 Волна фейковых "экспертов":
- Накрутили опыт в лучшем случае на 2-3 года
- Готовые ответы на типовые вопросы
- ChatGPT помогает на собеседованиях
- Не всем "везет" и попадают в проекты, где коллеги с опытом подвергают критике их решения.
Что дальше? Тем, кому не повезло, начинают больше стрессовать, овертаймить, выгорать и в конечном итоге попадают под сокращение.
На моей практике были подобные кейсы - по итогам ревью таких людей вышвыривали.
Неприятно? Да, причём обеим сторонам: и тем, кто переоценил свои возможности, и тем, кто доверился и не смог разглядеть лже-Senior'а 😅
Особенно критично для тех, кто хочет работать в крупных IT компаниях СНГ. Компаний не так много, но остаётся отметка о "читерстве" в карточке кандидата.
При повторной попытке трудоустройства спустя время довольно высокая вероятность, что с такой пометкой кандидата скорее проскипают.
Реакция работодателей:
- Ужесточают требования в разы
- Копают глубже в технических вопросах
- Дают практические задания на месте
- Требуют показать код, а не рассказать о нём
Результат: Честных специалистов теперь проверяют как потенциальных мошенников.
Зачастую компании повышают планку именно потому, что ищут настоящего Senior'а, который исправит то, что наделал фейковый "эксперт" с ИИ-помощником.
Грустная правда: Пока одни обманывают систему, другие должны доказывать свою компетентность в 10 раз сильнее.
Я иногда думаю - может, зря мы усложняем?
Может, проще накрутить и жить спокойно?
Но потом я слежу за успехами своих студентов и со многими хорошо общаюсь до сих пор, это те которые шли честным путём глубокого изучения. Знаю, что некоторые уже преподают. Естественно есть и те которые получают такие офферы от которых и у меня глаза из орбит вылазят)).
Видимо, правда всё-таки всплывает 💪
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Иногда получаю такие сообщения от студентов:
"Друзья советуют накрутить опыт в резюме и подготовить отмазки на собеседовании. Говорят, все так делают"
И знаете что? Я это не одобряю, но стоит признать - это правда работает. Я уже стал закрывать на это глаза.
Но многие по этическим и психологическим причинам так делать не хотят. На мой взгляд это правильно, но тут уж каждый сам решает.
Но вот, что происходит на рынке:
🤡 Волна фейковых "экспертов":
- Накрутили опыт в лучшем случае на 2-3 года
- Готовые ответы на типовые вопросы
- ChatGPT помогает на собеседованиях
- Не всем "везет" и попадают в проекты, где коллеги с опытом подвергают критике их решения.
Что дальше? Тем, кому не повезло, начинают больше стрессовать, овертаймить, выгорать и в конечном итоге попадают под сокращение.
На моей практике были подобные кейсы - по итогам ревью таких людей вышвыривали.
Неприятно? Да, причём обеим сторонам: и тем, кто переоценил свои возможности, и тем, кто доверился и не смог разглядеть лже-Senior'а 😅
Особенно критично для тех, кто хочет работать в крупных IT компаниях СНГ. Компаний не так много, но остаётся отметка о "читерстве" в карточке кандидата.
При повторной попытке трудоустройства спустя время довольно высокая вероятность, что с такой пометкой кандидата скорее проскипают.
Реакция работодателей:
- Ужесточают требования в разы
- Копают глубже в технических вопросах
- Дают практические задания на месте
- Требуют показать код, а не рассказать о нём
Результат: Честных специалистов теперь проверяют как потенциальных мошенников.
Зачастую компании повышают планку именно потому, что ищут настоящего Senior'а, который исправит то, что наделал фейковый "эксперт" с ИИ-помощником.
Грустная правда: Пока одни обманывают систему, другие должны доказывать свою компетентность в 10 раз сильнее.
Я иногда думаю - может, зря мы усложняем?
Может, проще накрутить и жить спокойно?
Но потом я слежу за успехами своих студентов и со многими хорошо общаюсь до сих пор, это те которые шли честным путём глубокого изучения. Знаю, что некоторые уже преподают. Естественно есть и те которые получают такие офферы от которых и у меня глаза из орбит вылазят)).
Видимо, правда всё-таки всплывает 💪
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍2❤1
"Как я за 5 лет прошёл путь от "боящегося сокращений" QA до разработчика в OZON"
Недавно мой блог вырос, поэтому давайте представлюсь тем, кто меня ещё не знает.
Меня зовут Валерий Меньшиков. И я НЕ учу "основам за 2 месяца".
7 лет назад я вкатился в IT в 28 лет - довольно поздно для айтишника.
5 лет назад я был таким же QA, который боялся потерять работу, тогда я только переехал в Москву.
Как сейчас помню на протяжении испытательного срока регулярно спрашивал своего лида, прохожу ли я испытательный срок или нет.
Потому, что нужно было решать либо съезжать от своего друга и вываливать около 100К за аренду (для 2020 года это много), либо покупать билеты домой)
Я наблюдал, как требования растут каждый день, как одни растут и увеличивают доходы, а других либо годами держат на одной ЗП, либо сокращают, так как они не подходят под высокие требования компании.
Тогда я стал наблюдать: что делают одни и не делают другие.
Я решил не распыляться, а сосредоточиться на ОДНОЙ теме и изучить её МАКСИМАЛЬНО глубоко.
Я упарывался над архитектурой и знанием Python.
Пробовал различные методы построения фреймворков, подсматривал и обкатывал практики других команд.
Один проект с тестами я переписывал и рефакторил 7 раз.
Результат:
- Разработал архитектуру фреймворков автотестирования для более чем сотни микросервисов
- Внедрил паттерны проектирования, которые используют до сих пор
- Настроил CI/CD, которые работают годами (даже после моего ухода)
- Использовал кодогенерацию и резал косты на разработку тестов, когда это ещё не было мейнстримом
- Обучил 100+ студентов (с некоторыми даже работал в одной компании)
- Разработал библиотеки, инструменты генерации кода и микросервис для подготовки тестовых данных.
- Перешёл в разработку - теперь мои скилы помогают не только тестировщикам но и всем питонистам OZONTECH
Секрет: Вместо поверхностного изучения 20 тем я довёл до совершенства одну - API тестирование.
Я агрегировал весь свой опыт и путь за это время и создал систему, которая за 2 месяца превращает обычных QA в незаменимых экспертов.
В мое время НЕ БЫЛО да и ДО СИХ ПОР НЕТ подобных тренингов, которые учат архитекстуре, инфре и разработке инструментов.
А вы готовы потратить 2 месяца вместо 5-7 лет на то, чтобы уверенно чувствовать себя на рынке, больше никогда не бояться сокращений? 🤔
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Недавно мой блог вырос, поэтому давайте представлюсь тем, кто меня ещё не знает.
Меня зовут Валерий Меньшиков. И я НЕ учу "основам за 2 месяца".
7 лет назад я вкатился в IT в 28 лет - довольно поздно для айтишника.
5 лет назад я был таким же QA, который боялся потерять работу, тогда я только переехал в Москву.
Как сейчас помню на протяжении испытательного срока регулярно спрашивал своего лида, прохожу ли я испытательный срок или нет.
Потому, что нужно было решать либо съезжать от своего друга и вываливать около 100К за аренду (для 2020 года это много), либо покупать билеты домой)
Я наблюдал, как требования растут каждый день, как одни растут и увеличивают доходы, а других либо годами держат на одной ЗП, либо сокращают, так как они не подходят под высокие требования компании.
Тогда я стал наблюдать: что делают одни и не делают другие.
Я решил не распыляться, а сосредоточиться на ОДНОЙ теме и изучить её МАКСИМАЛЬНО глубоко.
Я упарывался над архитектурой и знанием Python.
Пробовал различные методы построения фреймворков, подсматривал и обкатывал практики других команд.
Один проект с тестами я переписывал и рефакторил 7 раз.
Результат:
- Разработал архитектуру фреймворков автотестирования для более чем сотни микросервисов
- Внедрил паттерны проектирования, которые используют до сих пор
- Настроил CI/CD, которые работают годами (даже после моего ухода)
- Использовал кодогенерацию и резал косты на разработку тестов, когда это ещё не было мейнстримом
- Обучил 100+ студентов (с некоторыми даже работал в одной компании)
- Разработал библиотеки, инструменты генерации кода и микросервис для подготовки тестовых данных.
- Перешёл в разработку - теперь мои скилы помогают не только тестировщикам но и всем питонистам OZONTECH
Секрет: Вместо поверхностного изучения 20 тем я довёл до совершенства одну - API тестирование.
Я агрегировал весь свой опыт и путь за это время и создал систему, которая за 2 месяца превращает обычных QA в незаменимых экспертов.
В мое время НЕ БЫЛО да и ДО СИХ ПОР НЕТ подобных тренингов, которые учат архитекстуре, инфре и разработке инструментов.
А вы готовы потратить 2 месяца вместо 5-7 лет на то, чтобы уверенно чувствовать себя на рынке, больше никогда не бояться сокращений? 🤔
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24❤1😁1
"От широкого курса к глубокой экспертизе: эволюция REST API Advanced"
Раньше у меня был очень крутой тренинг "Автоматизация тестирования REST & gRPC API".
Он собрал очень большое количество положительных отзывов, был актуален для своего времени. Там было довольно много тем, но не хватало деталей. Тем не менее он подготовил много крутых экспертов.
После этого я решил его усилить: убрать темы, которые были даны поверхностно и требовали более детального изучения, и уделить больше времени одной фундаментальной теме - фреймворку для REST API.
На его архитектуре и подходах может строиться база любого API фреймворка независимо от типа API.
Так появились тренинги "REST API Advanced" и "REST API Professional".
REST API Advanced
🗓 Неделя 1: Введение в автоматизацию тестирования
10 уроков. Повторим основы Python, научимся генерировать простой код, рассмотрим базу API тестирования, напишем первые тесты и настроим автоматический прогон тестов в GitHub.
🗓 Неделя 2: Архитектура и работа с данными
4 урока. Научимся использовать паттерны проектирования для решения наших задач. А также научимся подготавливать тестовые данные и рассмотрим различные виды фикстур.
🗓 Неделя 3: Проверки
7 уроков. Рассмотрим все возможные виды проверок для API, научимся валидировать структуру данных и значения. Мягкие проверки, функции-чекеры, менеджеры контекста. Будем внедрять так, чтобы не засорять код и делать его более читаемым и поддерживаемым.
🗓 Неделя 4: Работа с конфигурациями и репортинг
7 уроков. Завершающая неделя: научимся собирать Docker образы, настраивать пайплайны, дорабатывать сторонние библиотеки, собирать coverage покрытия сервиса автотестами, строить красивые и информативные отчёты. Научимся отправлять отчёты о прохождении тестов в Telegram и перепишем пайплайн для GitLab CI.
Вы создадите production-ready фреймворк с архитектурой уровня энтерпрайз систем. Сможете с нуля настроить CI/CD pipeline с метриками и уведомлениями. Станете тем QA, которого не сократят. Одного моего друга пригласили на Senior позицию, после того как он показал свой проект и рассказал, что и как он сделал.
REST API Professional
Результат: Вы научитесь создавать инструменты, которые делают работу за целые команды.
Пока другие пишут код руками, вы генерируете готовые решения одной командой. Компании будут переманивать вас не за навыки, а за инструменты, которые вы умеете создавать.
Модуль 1: Поговорим, что такое платформа и для чего она нужна
Модуль 2: Научимся управлять зависимостями как профессионалы. Перепишем код, используя асинхронную парадигму, и рассмотрим, для каких задач она применима.
Модуль 3: Научимся поддерживать стандарты и качество кода, разработаем общий пайплайн для контроля качества кода всех проектов, будем использовать линтеры и форматтеры.
Модуль 4: Рассмотрим различные инструменты для генерации структуры проекта и кода. Научимся собирать свои библиотеки и дорабатывать опенсорс инструменты, выдавая стабильный результат в отличие от использования ИИ.
Модуль 5: Соберём CLI инструмент, который генерирует всё: проект, клиенты, тесты, фикстуры.
Завтра расскажу, когда стартует поток 🚀
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Раньше у меня был очень крутой тренинг "Автоматизация тестирования REST & gRPC API".
Он собрал очень большое количество положительных отзывов, был актуален для своего времени. Там было довольно много тем, но не хватало деталей. Тем не менее он подготовил много крутых экспертов.
После этого я решил его усилить: убрать темы, которые были даны поверхностно и требовали более детального изучения, и уделить больше времени одной фундаментальной теме - фреймворку для REST API.
На его архитектуре и подходах может строиться база любого API фреймворка независимо от типа API.
Так появились тренинги "REST API Advanced" и "REST API Professional".
REST API Advanced
🗓 Неделя 1: Введение в автоматизацию тестирования
10 уроков. Повторим основы Python, научимся генерировать простой код, рассмотрим базу API тестирования, напишем первые тесты и настроим автоматический прогон тестов в GitHub.
🗓 Неделя 2: Архитектура и работа с данными
4 урока. Научимся использовать паттерны проектирования для решения наших задач. А также научимся подготавливать тестовые данные и рассмотрим различные виды фикстур.
🗓 Неделя 3: Проверки
7 уроков. Рассмотрим все возможные виды проверок для API, научимся валидировать структуру данных и значения. Мягкие проверки, функции-чекеры, менеджеры контекста. Будем внедрять так, чтобы не засорять код и делать его более читаемым и поддерживаемым.
🗓 Неделя 4: Работа с конфигурациями и репортинг
7 уроков. Завершающая неделя: научимся собирать Docker образы, настраивать пайплайны, дорабатывать сторонние библиотеки, собирать coverage покрытия сервиса автотестами, строить красивые и информативные отчёты. Научимся отправлять отчёты о прохождении тестов в Telegram и перепишем пайплайн для GitLab CI.
Вы создадите production-ready фреймворк с архитектурой уровня энтерпрайз систем. Сможете с нуля настроить CI/CD pipeline с метриками и уведомлениями. Станете тем QA, которого не сократят. Одного моего друга пригласили на Senior позицию, после того как он показал свой проект и рассказал, что и как он сделал.
REST API Professional
Результат: Вы научитесь создавать инструменты, которые делают работу за целые команды.
Пока другие пишут код руками, вы генерируете готовые решения одной командой. Компании будут переманивать вас не за навыки, а за инструменты, которые вы умеете создавать.
Модуль 1: Поговорим, что такое платформа и для чего она нужна
Модуль 2: Научимся управлять зависимостями как профессионалы. Перепишем код, используя асинхронную парадигму, и рассмотрим, для каких задач она применима.
Модуль 3: Научимся поддерживать стандарты и качество кода, разработаем общий пайплайн для контроля качества кода всех проектов, будем использовать линтеры и форматтеры.
Модуль 4: Рассмотрим различные инструменты для генерации структуры проекта и кода. Научимся собирать свои библиотеки и дорабатывать опенсорс инструменты, выдавая стабильный результат в отличие от использования ИИ.
Модуль 5: Соберём CLI инструмент, который генерирует всё: проект, клиенты, тесты, фикстуры.
Завтра расскажу, когда стартует поток 🚀
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9
Про JAVA
Раньше была реклама:
- Я не люблю кошек?
- Вы просто не умеете их готовить!
Так вот! Я не умею их готовить, а мои партнеры QA.GURU умеют и делают это очень вкусно))
Скоро они запускают новый поток курса «Автоматизация тестирования на Java».
Обучаться автоматизации у практикующих опытных инженеров, что может быть круче?
За 4 месяца вы научитесь👇
— Писать код для автотестирования программного обеспечения веб, мобильных приложений и API.
— Управлять процессами автоматизации тестирования на Java и инфраструктурой.
🔥 А ещё успеете:
— Собрать портфолио из 4-х проектов
— Получить диплом «Инженер по автоматизации тестирования на Java»
🔜 Кстати, сегодня, в 20:00 по МСК состоится бесплатное вводное занятие курса Автоматизация тестирования на Java от основателя школы — Станислава Васенкова.
Расширьте свой стек, начните с практического занятия!
Раньше была реклама:
- Я не люблю кошек?
- Вы просто не умеете их готовить!
Так вот! Я не умею их готовить, а мои партнеры QA.GURU умеют и делают это очень вкусно))
Скоро они запускают новый поток курса «Автоматизация тестирования на Java».
Обучаться автоматизации у практикующих опытных инженеров, что может быть круче?
За 4 месяца вы научитесь
— Писать код для автотестирования программного обеспечения веб, мобильных приложений и API.
— Управлять процессами автоматизации тестирования на Java и инфраструктурой.
— Собрать портфолио из 4-х проектов
— Получить диплом «Инженер по автоматизации тестирования на Java»
Расширьте свой стек, начните с практического занятия!
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
QA.GURU | Автоматизация, ручное тестирование, карьера в QA
Комьюнити QA-инженеров, практика, обучение и карьерное развитие.
Школа основана QA-инженерами — 3000+ выпускников, больше 5 лет на рынке.
Наши курсы: https://qa.guru
Отзывы: @qa_guru_reviews
Поддержка @qa_guru_support | Чат: @qa_guru_chat
Школа основана QA-инженерами — 3000+ выпускников, больше 5 лет на рынке.
Наши курсы: https://qa.guru
Отзывы: @qa_guru_reviews
Поддержка @qa_guru_support | Чат: @qa_guru_chat
❤3
Forwarded from QA.GURU | Автоматизация, ручное тестирование, карьера в QA
Что успеете сделать на занятии:
— Напишете первый автотест на Java (даже без опыта в коде).
— Поработаете с Java + Selenide и Java + Playwright.
— Изучите современный стек: UI + API + CI/CD.
— Разберёте мини-проект автотестов с нуля.
Расскажем о развитии в QA:
— Рынок Automation QA: тренды, зарплаты, перспективы.
— Как перейти из manual в automation и увеличить доход в 2 раза.
— Где и как сейчас ищут Automation QA.
Успейте зарегистрироваться и получить карьерный гайд по Java в подарок!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Привет)
Регистрация уже открыта. Готовы стать архитектором фреймворков?
⏰ Через 2 дня стартует новый поток REST API Advanced и REST API Professional
После вчерашнего поста получил много вопросов: "Валерий, когда можно записаться и когда следующий поток?"
Отвечаю: записаться можно до понедельника, 23:00 МСК
следующий поток: в НОЯБРЕ
Что вас ждёт на курсе REST API Advanced:
🎯 5 недель интенсивного обучения
• 28 уроков до production пайплайнов
• Живая обратная связь по каждому домашнему заданию
🎯 Production-ready проект в портфолио
• Фреймворк с паттернами проектирования
• Docker контейнеризация + CI/CD настройка
• Coverage метрики + Telegram уведомления
• GitLab CI пайплайн
🎯 Персональное сопровождение
• Проверяю каждое ДЗ лично
• Консультации в чате курса 24/7
• Хорошо проявившим себя студентам и освоившим программу в срок, рекомендация в OZONTECH.
💎 Для амбициозных: После Advanced можете пройти REST API Professional - научитесь создавать CLI инструменты для генерации проектов одной командой. Это уже уровень "архитектора платформы".
⚡️ Ограничения:
• Максимум 10 участников (качество > количество)
• Для участия нужны базовые знания Python
Цель простая: за 2 месяца сделать из вас того самого QA, которого компании не сокращают, а переманивают.
Максимальный оффер одного из моих выпускников 460К.
И только положительные отзывы от моего обучения.
Готовы присоединиться к экспертам?
Регистрация уже открыта. Готовы стать архитектором фреймворков?
⏰ Через 2 дня стартует новый поток REST API Advanced и REST API Professional
После вчерашнего поста получил много вопросов: "Валерий, когда можно записаться и когда следующий поток?"
Отвечаю: записаться можно до понедельника, 23:00 МСК
следующий поток: в НОЯБРЕ
Что вас ждёт на курсе REST API Advanced:
🎯 5 недель интенсивного обучения
• 28 уроков до production пайплайнов
• Живая обратная связь по каждому домашнему заданию
🎯 Production-ready проект в портфолио
• Фреймворк с паттернами проектирования
• Docker контейнеризация + CI/CD настройка
• Coverage метрики + Telegram уведомления
• GitLab CI пайплайн
🎯 Персональное сопровождение
• Проверяю каждое ДЗ лично
• Консультации в чате курса 24/7
• Хорошо проявившим себя студентам и освоившим программу в срок, рекомендация в OZONTECH.
💎 Для амбициозных: После Advanced можете пройти REST API Professional - научитесь создавать CLI инструменты для генерации проектов одной командой. Это уже уровень "архитектора платформы".
⚡️ Ограничения:
• Максимум 10 участников (качество > количество)
• Для участия нужны базовые знания Python
Цель простая: за 2 месяца сделать из вас того самого QA, которого компании не сокращают, а переманивают.
Максимальный оффер одного из моих выпускников 460К.
И только положительные отзывы от моего обучения.
Готовы присоединиться к экспертам?
🔥7👍3🫡2
Media is too big
VIEW IN TELEGRAM
Почему изучать автоматизацию тестирования нужно именно сейчас?
Всё зависит только от твоего желания.
Существует множество людей, которые становятся жертвами своей собственной лени или страха, находя оправдания и причины, по которым они что-то не могут:
1. У меня недостаточно ресурсов.
2. Я слишком стар(молод)
3. Я только начинаю в области автоматизации.
4. Я не смогу совмещать учёбу и работу.
5. На рынке слишком большая конкуренция.
6. Мне некогда, я хочу не только работать, но и жить.
Так вот, что я хочу сказать.
Когда я начал свое погружение в IT, я находился в откровенной финансовой жопе, порой мне кажется, что это обязательное условие успеха, мне настолько осточертела моя работа, ведь за ПЯТЬ ЛЕТ я получил ОДНО повышение, простите за мой французкий "С лоха на пидораса" и + 1.5 тысячи рублей к окладу.
В магазине меня всегда охватывала паника и включался внутренний калькулятор, чтобы не дай бог взять что-то не из самого необходимого, так как мой бюджет мог посыпаться ко всем чертям.
Мне было 28 лет и я все чаще думал, мне скоро 30 и чего я добился? Ипотеки в районе находящемся на второй строчке снизу по благоприятности, кредита и уровня жизни на грани выживания. И наверное я уже слишком стар для того чтобы пробовать что-то новое.
Мне кажется бог послал мне тогда премию в 12.5 тысяч рублей и выбор, купить наконец себе холодильник, вместо моего старого, купленного на авито за 500 рублей, или рискнуть и попробовать себя в чем то новом, мне хватило смелости выбрать второе. Тогда я приобрел свой первый курс по тестированию.
Каждый вечер после работы я приходил и фигачил домашки по курсу, иногда в тайне от коллег пытался делать что-то на работе, каково было разочарование когда домашки приходилось переделывать иногда по 5-6 раз из-за чего они копились, но в итоге я закончил в первой тройке.
По окончании курсов я был совсем зеленым джуном, а мой город миллионник обрадовал меня наличием АЖ 33 ВАКАНСИЙ вместе с аналитиками разработчиками и тп, я писал письма во все IT компании моего города, чтобы хотя бы иметь возможность попасть на собес.
Иногда моя история мне напоминает какой-то фильм, ведь даже друзья и родственники не верили в успех моего мероприятия, а когда я им еще и сказал, что ЗП на моем новом месте будет даже чуть меньше чем я получаю сейчас, откровенно крутили у виска.
Примерно с того времени я очень сильно набрал темп, я понимал что мои конкуренты студенты технических вузов без сильного обременения в виде семьи или кредитов и гораздо большим количеством времени. Я знал не имею права тормозить, скупал все возможные обучения на которые только хватало денег (слава богу мое первое повышение было спустя 3 месяца), и впихивал в себя знания пачками.
Уже через полтора года, я перерос свой стартовый доход более чем в 5 раз.
Друзья стали прислушиваться к моему мнению и просить советов.
Даже сейчас я разрабатываю платформу для своих студентов, которая включает, базы, брокеры, сервисы, не только чтобы учить, но и для того чтобы держать себя в тонусе и быть крутым специалистом.
Вот так незаметно прошло 7 лет и я уже разработчик, который причесывая свои сеньерные усы раздает советы и учит жизни.
И вот мой главный совет. Не откладывай на завтра, делай и учись сейчас, чтобы получать все плюшки востребованности и хорошей зарплаты уже сейчас.
Не откладывай жизнь.
Если моя история откликнулась - приходи.
У меня есть план, как дойти от твоей точки до экспертизы.
Да, потрудиться придётся.
Но я буду рядом, как был бы рад, чтобы кто-то был рядом со мной 7 лет назад.
Ко мне всегда можно обратиться - я помогаю и не бросаю своих студентов даже после тренингов.
Мы продолжаем общаться, и это здорово.
Давай менять жизни вместе 💪
Всё зависит только от твоего желания.
Существует множество людей, которые становятся жертвами своей собственной лени или страха, находя оправдания и причины, по которым они что-то не могут:
1. У меня недостаточно ресурсов.
2. Я слишком стар(молод)
3. Я только начинаю в области автоматизации.
4. Я не смогу совмещать учёбу и работу.
5. На рынке слишком большая конкуренция.
6. Мне некогда, я хочу не только работать, но и жить.
Так вот, что я хочу сказать.
Когда я начал свое погружение в IT, я находился в откровенной финансовой жопе, порой мне кажется, что это обязательное условие успеха, мне настолько осточертела моя работа, ведь за ПЯТЬ ЛЕТ я получил ОДНО повышение, простите за мой французкий "С лоха на пидораса" и + 1.5 тысячи рублей к окладу.
В магазине меня всегда охватывала паника и включался внутренний калькулятор, чтобы не дай бог взять что-то не из самого необходимого, так как мой бюджет мог посыпаться ко всем чертям.
Мне было 28 лет и я все чаще думал, мне скоро 30 и чего я добился? Ипотеки в районе находящемся на второй строчке снизу по благоприятности, кредита и уровня жизни на грани выживания. И наверное я уже слишком стар для того чтобы пробовать что-то новое.
Мне кажется бог послал мне тогда премию в 12.5 тысяч рублей и выбор, купить наконец себе холодильник, вместо моего старого, купленного на авито за 500 рублей, или рискнуть и попробовать себя в чем то новом, мне хватило смелости выбрать второе. Тогда я приобрел свой первый курс по тестированию.
Каждый вечер после работы я приходил и фигачил домашки по курсу, иногда в тайне от коллег пытался делать что-то на работе, каково было разочарование когда домашки приходилось переделывать иногда по 5-6 раз из-за чего они копились, но в итоге я закончил в первой тройке.
По окончании курсов я был совсем зеленым джуном, а мой город миллионник обрадовал меня наличием АЖ 33 ВАКАНСИЙ вместе с аналитиками разработчиками и тп, я писал письма во все IT компании моего города, чтобы хотя бы иметь возможность попасть на собес.
Иногда моя история мне напоминает какой-то фильм, ведь даже друзья и родственники не верили в успех моего мероприятия, а когда я им еще и сказал, что ЗП на моем новом месте будет даже чуть меньше чем я получаю сейчас, откровенно крутили у виска.
Примерно с того времени я очень сильно набрал темп, я понимал что мои конкуренты студенты технических вузов без сильного обременения в виде семьи или кредитов и гораздо большим количеством времени. Я знал не имею права тормозить, скупал все возможные обучения на которые только хватало денег (слава богу мое первое повышение было спустя 3 месяца), и впихивал в себя знания пачками.
Уже через полтора года, я перерос свой стартовый доход более чем в 5 раз.
Друзья стали прислушиваться к моему мнению и просить советов.
Даже сейчас я разрабатываю платформу для своих студентов, которая включает, базы, брокеры, сервисы, не только чтобы учить, но и для того чтобы держать себя в тонусе и быть крутым специалистом.
Вот так незаметно прошло 7 лет и я уже разработчик, который причесывая свои сеньерные усы раздает советы и учит жизни.
И вот мой главный совет. Не откладывай на завтра, делай и учись сейчас, чтобы получать все плюшки востребованности и хорошей зарплаты уже сейчас.
Не откладывай жизнь.
Если моя история откликнулась - приходи.
У меня есть план, как дойти от твоей точки до экспертизы.
Да, потрудиться придётся.
Но я буду рядом, как был бы рад, чтобы кто-то был рядом со мной 7 лет назад.
Ко мне всегда можно обратиться - я помогаю и не бросаю своих студентов даже после тренингов.
Мы продолжаем общаться, и это здорово.
Давай менять жизни вместе 💪
❤8🔥5👏3