cookie

نحن نستخدم ملفات تعريف الارتباط لتحسين تجربة التصفح الخاصة بك. بالنقر على "قبول الكل"، أنت توافق على استخدام ملفات تعريف الارتباط.

avatar

Evgeniy Kornyshev: Automated Testing

Канал про автоматизацию тестирования, преимущественно в стеке Java. Как вкатиться в автоматизацию, подходы и идеи для изучения, наблюдения из области автоматизации и разработки, развитие в менторстве и прочее. Автор: https://t.me/kornyshev_e.

إظهار المزيد
مشاركات الإعلانات
352
المشتركون
لا توجد بيانات24 ساعات
+67 أيام
+1630 أيام

جاري تحميل البيانات...

معدل نمو المشترك

جاري تحميل البيانات...

RestAssured + WireMock Новый небольшой учебный проектик для знакомства с RestAssured и WireMock: с помощью WireMock я мокирую ответ на запрос на эндпоинте на локалхосте с определённым боди, а с помощью RestAssured (и реализации через ApiClient или ApiBuilder класс) я отправляю запрос на этот адрес и проверяю результат. Понятно, что действие само по себе абсолютно бесполезное, но это как будущий скелет для дальнейших изысканий в этом направлении. Тут можно копать в изучение WireMock и настраивать его разными способами. Или можно, например, прикрутить валидацию схемы JSON и проверять её с помощью специальной библиотеки. Ссылка на проект: https://github.com/Kornyshev/restassured-wiremock У проекта есть более нормальный README, но он и так максимально простой.
إظهار الكل...
GitHub - Kornyshev/restassured-wiremock

Contribute to Kornyshev/restassured-wiremock development by creating an account on GitHub.

👍 2
Вопрос про ООП на интервью 📚📌 2-3 последние консультации в формате обсуждения интервью на позиции автоматизации на Java натолкнули написать отдельный пост: как лучше отвечать на вопрос про ООП и принципы этой парадигмы, по моему мнению. Учебные материалы буду прикладывать не свои, а доклады от Антона Семенченко, но опыт прохождения интервью и консультаций - мой. Итак, джунов и мидлов (или вообще всех) спрашивают про саму парадигму и принципы ООП, нужно рассказать либо все принципы коротко, либо более детально 1-2 принципа. И зачастую начинающие отвечают заученными фразами, некоторые не всегда вспоминают 4 принципа (хотя бы 4), а при обсуждении принципов в отдельности - фокусируются на технических деталях реализации в Java. Да, знать технические детали нужно, и тут могут возникать и вопросы, и есть что проверить; есть каверзные вопросы в этой части, ну и просто вопросы, которые нужно задать. Но как мне кажется большим плюсом будет расширение ответа: важно поговорить про смыслы, зачем нужно ООП, что мы абстрагируем или инкапсулируем в классы, зачем нужно полиморфное поведение. В общем желательно не забыть озвучить философский или физический смысл этих концепций (а ещё возможно на контрасте однажды разобраться в других парадигмах и подходах). Получить это понимание можно парой способов (точнее их комбинацией): это могут быть учебные материалы или доклады (например, три видео про ООП от Антона Семенченко), а также собственный опыт и попытки прогнать это знание через собственный опыт (это, конечно, уместно если вы уже работаете в каком-нибудь большом проекте). Не уверен, что со старта легко запомнить и оперировать этими понятиями, но со временем и с усилиями точно можно. Ссылки на видео (три видео подряд): 1. https://youtu.be/Qx0_kFM52oU?si=Dh2lrTPXFDIRnnR_ 2. https://youtu.be/CRt1XtW6-Fs?si=XEdOgvGJpLHabajA 3. https://youtu.be/LeKqHN7l4Yk?si=fmvIVDiMfutDDpqR #oop #theory
إظهار الكل...
Концептуальные основы ООП в Тестировании. Часть 1. Антон Семенченко. Comaqa Spring 2018

При изучении любой дисциплины самое сложное / главное понять основы, базовые принципы, на пальцах, на школьных примерах, затем, на этот металлический каркас можно навесить тонны бетонной практики, получившийся железобетонный монолит станет гарантией практически не ограниченного технического роста специалиста. Звучит самоочевидно, не правда ли ..? И тем не менее, мой субъективный опыт проведения собеседований, а это около ~500 специалистов из стран СНГ, Индии, США в Автоматизации тестирования и сопоставимые цифры в С \ С++ мире, говорит, что даже Senior разработчики в большинстве не понимают «физического смысла» ООП, не могут озвучить базовую формулировку одного из «столпов» - инкапсуляции, хотя знают как на 3 языках, 20 способами, реализовать интерфейс, класс и объект, а вот вырасти дальше уже не могут, и вынужденно в течении 20 лет топчутся на месте. Вот это досадное карьерное недоразумение мы и постараемся исправить. IMHO тема будет интересна / полезна самому широкому кругу слушателей, от молодых специалистов в Ручном тестировании до Архитекторов в Автоматизации, приходите, будет интересно. Ждем всех на наших осенних конференциях: COMAQA Conference Autumn Minsk 2019 http://conference.comaqa.by/ COMAQA Conference Autumn Piter 2019 http://conference.comaqa.ru/2019-autumn-piter Присоединяйтесь к чатам сообщества: COMAQA - telegram:

https://t.me/comaqa

COMAQA - instagram

https://www.instagram.com/comaqa.by

COMAQA - VKontakte

https://vk.com/comaqaby

COMAQA - Facebook

https://www.facebook.com/comaqa.by

Портал сообщества

https://comaqa.by

🔥 7👍 2
Ко мне поступил запрос на изучение RestAssured и в итоге у меня сформировался материал, которым я хочу поделиться. 📚📌 Это почти что мини-курс по RestAssured: с основ (базовая цепочка методов для отправки запроса и валидации ответа) до использования хороших практик по разбиению процесса на несколько слоёв. Что есть в материале: 1. Детальный роадмап с примерами кода прямо в статье и объяснением 2. Постепенное усложнение примеров 3. Пример проекта, где собран весь код из статьи 4. Результирующий проект с тремя тестами, Allure репортом и логированием запросов в репорт 5. Инструкция по интеграции этого проекта с Jenkins и написанию pipeline для запуска тестов 6. Ссылки на видео с YouTube, по которым можно изучить RestAssured Для примера я использую API GitHub, рекомендую использовать собственный токен от какого-нибудь аккаунта, потому что не могу гарантировать постоянную работоспособность собственного токена (он, конечно, от абсолютно левого аккаунта и я легко его публикую, но тем не менее - вдруг я его однажды удалю). Этот материал в большой степени заменяет блоки в онлайн курсах по API тестированию (с практической точки зрения). 🔥 Рекомендую забрать полностью материал себе в собственную базу знаний, это на случай если я что-то сделаю со страницей и ссылка изменится, а я это не проконтролирую. Ссылка на страницу: https://kornyshev-e.notion.site/RestAssured-and-API-testing-mini-course-7501423f66b54bd4b61405358ce88328
إظهار الكل...
RestAssured and API testing: mini-course | Notion

План изучения RestAssured в Java (сгенерирован с помощью ChatGPT, поэтому примеры кода исключительно для ознакомления)

🔥 12
Отличия между методами `Integer.parseInt` и `Integer.valueOf` Вопрос об отличиях между методами `Integer.parseInt()` и `Integer.valueOf()` иногда встречается на собеседованиях по Java. Давайте разберемся, в чем заключается разница между этими двумя методами и когда их следует использовать. 1. `Integer.parseInt()` Этот метод является частью стандартной библиотеки Java и используется для преобразования строки в примитивный тип `int`. Пример использования:
int parsed = Integer.parseInt("15");
Описание: - Возвращает примитивный тип `int`. - В случае, если строка не может быть преобразована в число, будет выброшено исключение `NumberFormatException`. - Метод не кеширует результаты, так как возвращает примитивный тип. Код:
public static int parseInt(String s) throws NumberFormatException {
    // Реализация метода
}
2. `Integer.valueOf()` Этот метод также преобразует строку в число, но возвращает объект типа `Integer`. Пример использования:
Integer valueOf = Integer.valueOf("15");
Описание: - Возвращает объект типа `Integer`. - Метод использует кеширование для значений от -128 до 127, что позволяет улучшить производительность и снизить нагрузку на память. - Если строка не может быть преобразована в число, будет выброшено исключение `NumberFormatException`. Код:
public static Integer valueOf(String s) throws NumberFormatException {
    return Integer.valueOf(parseInt(s));
}
Кеширование:
public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}
Основные отличия: 1. Возвращаемый тип: - `Integer.parseInt` возвращает примитивный тип `int`. - `Integer.valueOf` возвращает объект типа `Integer`. 2. Кеширование: - `Integer.parseInt` не кеширует результаты. - `Integer.valueOf` кеширует значения в диапазоне от -128 до 127. 3. Производительность и память: - `Integer.parseInt` предпочтительнее, если важна производительность и нет необходимости в объекте. - `Integer.valueOf` предпочтительнее, если предполагается частое использование одних и тех же значений в диапазоне от -128 до 127, так как это снижает нагрузку на память за счет кеширования. Когда использовать: - Используйте `Integer.parseInt`, когда вам нужен примитивный тип `int` и вы не хотите создавать дополнительные объекты. - Используйте `Integer.valueOf`, когда вам нужен объект типа `Integer`, особенно если вы работаете с числами в диапазоне от -128 до 127. Пример сравнения:
public class Main {
    public static void main(String[] args) {
        int parsed = Integer.parseInt("15");
        Integer valueOf = Integer.valueOf("15");

        System.out.println("Parsed int: " + parsed);         // Output: 15
        System.out.println("ValueOf Integer: " + valueOf);   // Output: 15
    }
}
Надеюсь, это объяснение помогло вам понять ключевые различия между этими двумя методами. Любопытный факт: меня недавно спросили про эти методы и я плохо ответил, не внятно, в общем - не знал, а ещё и забыл; но прикол в том интервьювер в итоге пояснил мне правильный ответ, который при разборе ошибок оказался далековато от истины. Мораль примерно такова: может и полезно знать ответы на такие вопросы (хотя по существу это знание не очень нужно), но и интервьювер может ввести в заблуждение и ожидать изначально неверный ответ.
إظهار الكل...
👍 7
Возникла некоторая необходимость разобраться в Data Quality Engineering, и решил поделиться материалом. 💾 С помощью ChatGPT и нескольких видео нагенерил основные концепции в этом направлении (ETL Testing, Data Testing, критерии качества данных, какая есть автоматизация в этом направлении и прочее). Вдруг кому-то будет полезно: либо для общего ознакомления с тем, что такое направление существует, или вдруг есть вариант смены проекта. 📚📌 В материале теоретические концепции, skillset + mindset для Data Quality Engineer, некоторые примеры технологий и инструментов (Java, Python, AWS, Azure, GCP), которые встречаются в этой области. Также приложил (и просмотрел) несколько видео с YouTube. https://kornyshev-e.notion.site/Data-Quality-e31b3a6d7417488aa6eccbf26f94adbc
إظهار الكل...
Data Quality | Notion

Skillset + mindset

🔥 3
🚀 Погружаемся в мир брокеров сообщений! Эти инструменты — своего рода посредники между компонентами наших приложений, позволяя им общаться асинхронно. Примеры? Пожалуйста: RabbitMQ, Apache Kafka, ActiveMQ. Они помогают не только асинхронно обрабатывать задачи, но и упрощают масштабирование и обновление приложений. 🔄 Но не всё так радужно, есть и минусы, например, управление может быть сложным, а задержки никто не отменял. 🎓 Теперь о том, как начать изучать Kafka, используя CloudKarafka. Этот сервис предлагает нам удобные бесплатные планы с доступом к нескольким топикам — отличный старт без лишних затрат. Зарегистрировавшись, откройте Java проект и добавьте зависимости Kafka. После этого можно приступать к созданию простых продюсеров и консьюмеров на Java, которые помогут вам отправлять и получать сообщения. 🔧 Практические тесты раскроют все аспекты работы Kafka, открывая дверь к более сложным возможностям, таким как Kafka Streams и безопасность. 🔍 Исследуем Kafka в мире тестирования! Вместе с Kafka Testcontainers можно создать мощное тестовое окружение с использованием Docker. Это идеальное решение для изоляции и управления зависимостями. Интеграция с JUnit и TestNG позволяет автоматизировать тесты, а мониторинг с помощью ELK Stack или Prometheus даст полное представление о производительности и стабильности. Важно не забывать о включении тестов Kafka в ваш CI/CD процесс, чтобы обеспечить непрерывное тестирование и своевременное обнаружение проблем. 🛠 Тестировать данные в топиках Kafka в учебных проектах не очень просто, так как обычно у нас нет доступа к очередям сообщений, поэтому тестирование в этом пункте - это скорее теория, а не практика; здесь можно просто пофантазировать как оно было бы на реальном проекте. Такой подход не только упрощает работу с брокерами и Kafka, но и открывает новые горизонты для разработки и тестирования ваших приложений! 🌟 Более подробно на странице по ссылке: https://www.notion.so/Kafka-introduction-practice-and-testing-212b07f74bc049a98891b6372804847a Также там вы найдёте ссылки на полезные YouTube видео на эту тему. 📹
إظهار الكل...
Kafka (introduction, practice and testing) | Notion

Зачем нужны брокеры сообщений

4🔥 2
Сравнение low-code (Tosca) и Java + Selenium для автоматизированного тестирования 🔍 Рассмотрим два различных подхода к автоматизации тестирования: Tosca как пример безкодового решения и классический стек Java + Selenium. ✨ Tosca предлагает безкодовый подход, который позволяет быстро внедрять тестирование без глубоких знаний в программировании. Это идеально подходит для быстрого старта и компаний, не имеющих большой технической экспертизы. Однако высокая стоимость и ограниченная гибкость могут стать препятствием для многих. P.S. Хотя почитав промо материалы от low-code решений, иногда кажется, что всё таки они кое что умеют - там и встроенные тест менеджмент системы, self-healing тестов на основе AI, прочие AI штуки. В общем в рекламе выглядит интересно, но вспоминаем про гибкость и универсальность; да и прямо скажем нет ощущения, что рынок low-code интереснее. Или я что-то упускаю в своём развитии? 🚀 Java + Selenium обеспечивает высокую гибкость и контроль над тестами, подходит для сложных проектов, требующих детальной настройки. Это решение требует более глубоких технических знаний, но взамен предлагает расширенные возможности интеграции и оптимизации. Long story short: проект на Java - сложно, круто, максимально гибко, можно написать вообще всё (любой код, JS на браузере, скрипты в системе и много разного) 👥 Наличие сильной команды и хороших знаний Java значительно увеличивает потенциал проекта на базе Java и Selenium, делая его более предпочтительным для долгосрочного и масштабируемого решения. Выбор инструмента зависит от ваших нужд, ресурсов и готовности инвестировать в обучение команды. В каждом случае важно взвешивать преимущества и возможные ограничения. Немного более подробно - https://kornyshev-e.notion.site/Low-code-d343d0f41c8648b1a0851eb8fb63cf07 Tosca - инструмент в low-code-no-code мире, но он скорее для примера; сам не очень разбираюсь в этой области так-то.
إظهار الكل...
Low-code решения против проектов на языках программирования | Notion

Сравнение Tosca и Java с Selenium для автоматизированного тестирования основывается на ключевых аспектах, включая возможности, сложность внедрения и использования, а также потенциальные преимущества и ограничения каждого инструмента.

🔥 2
📚➕ Интересный пример решения алгоритмической задачи: нахождение максимальной длины подстроки с уникальными символами - https://youtu.be/kzPUYPfzT9A?si=W7tHG4WwPmiAcZo1 Подобные видео могут оказаться полезными как для действующих специалистов - не много погрузиться в алгоритмы, может однажды и спросят (хотя, конечно, не уверен), так и для обучающихся - если поразбираться в решении различных задач, то можно выработать навык работы с кодом (обход массивов, строк, циклы, различные операции и подсчёты); это часто является проблемой для начинающих специалистов.
إظهار الكل...
Первый Алгоритм Для Изучения в 2024

Разбираем алгоритм, который поможет решать задачи на собеседованиях в крупные айти компании. Подписывайтесь на мой Телеграм канал:

https://t.me/saschalukin

Эта задача на Leetcode:

https://leetcode.com/problems/longest-substring-without-repeating-characters/

00:00 Вступление 00:23 Условие 01:20 Решение перебором 03:59 Быстрое решение 06:37 Код

📚📌 Java Stream API — это мощный инструмент для обработки и трансформации коллекций данных, предоставляющий обширный набор функций для выполнения операций, таких как фильтрация, преобразование, агрегация и многое другое. В основе работы со Stream API лежат функциональные интерфейсы, такие как Predicate, Function, Consumer и Supplier, которые позволяют передавать функции как аргументы. Лямбда-выражения и метод-референсы делают этот процесс более лаконичным и выразительным, упрощая код и делая его более читаемым. Промежуточные операции Stream API, такие как filter(), map(), flatMap(), позволяют создавать цепочки обработки, а терминальные операции, такие как collect(), reduce(), forEach(), завершают их, возвращая результат. Stream API в сочетании с функциональным программированием в Java позволяет легко создавать безопасный и предсказуемый код. Подробнее по этой теме читайте в полной статье: https://kornyshev-e.notion.site/Stream-API-2fd6f9c678f84f57827dff5360c9996c.
إظهار الكل...
Stream API | Notion

Статья о Stream API в Java и функциональном программировании:

👍 5
📚 Mocking (мокирование) — это техника в тестировании программного обеспечения, которая позволяет имитировать поведение зависимых компонентов системы. Используя мок-объекты, тестировщики могут создавать симуляции различных компонентов, таких как API-сервисы, базы данных или сторонние сервисы, без необходимости фактического взаимодействия с ними. Эта техника особенно полезна для: 1. Модульного тестирования: Мокирование помогает изолировать тестируемый компонент, позволяя сосредоточиться на его функциональности, а не на взаимодействии с другими частями системы. 2. Повышения стабильности: Мок-объекты устраняют случайные сбои, вызванные внешними зависимостями, делая тесты более предсказуемыми. 3. Скорости: Благодаря мокированию, тесты могут быть выполнены быстрее, поскольку отсутствует задержка от реальных сетевых запросов или медленных сервисов. 4. Тестирования интеграций: Мокирование позволяет тестировать взаимодействие между компонентами системы, даже если вся система не готова. В целом, мокинг ускоряет разработку и тестирование, делая процесс более контролируемым и стабильным, а также способствует более качественному программному обеспечению. Для подробного изучения мокинга и его применения в различных сценариях, ознакомьтесь с полным текстом статьи https://kornyshev-e.notion.site/Mocking-in-Automated-Testing-180555c0811c4c9ca5ac2185557300ae. ⚓️
إظهار الكل...
Mocking in Automated Testing | Notion

Mocking (мокирование) — это подход в автоматизированном тестировании, позволяющий имитировать поведение различных компонентов приложения. Этот подход помогает тестировщикам создавать и проводить тесты в контролируемой среде, что в свою очередь ускоряет процесс тестирования и повышает его качество. Давайте рассмотрим подробности.

👍 5
اختر خطة مختلفة

تسمح خطتك الحالية بتحليلات لما لا يزيد عن 5 قنوات. للحصول على المزيد، يُرجى اختيار خطة مختلفة.