Приветствие
00:00:00Сегодня Геннадий Чур проводит техническое собеседование на должность старшего инженера по обеспечению качества автоматизации в компании Test Soft. Арина Левадная, инженер стартапа, также пройдет собеседование на должность automation Java. Они обсуждают свое местоположение и погодные условия: Геннадий живет и работает в Москве; Арина живет в Белграде.
Знакомство
00:00:55Процесс собеседования Процесс собеседования разделен на несколько частей: сначала вы рассказываете о своем предыдущем опыте, достижениях и карьерных ожиданиях. Затем идет техническая часть для оценки ваших навыков в области технологий, связанных с проектами. Наконец, у вас есть возможность задавать вопросы.
Текущая роль и опыт В настоящее время работает инженером в стартапе, разрабатывающем искусственный интеллект для обеспечения качества на крупном предприятии. Предыдущие должности включали автоматизацию тестирования на различных должностях с опытом решения проблем тестирования и руководства командами во время отсутствия.
Проблемы, с которыми приходится сталкиваться Одна из сложных задач заключалась в работе с неудачными автоматическими тестами, где параметризация была ключом к сокращению числа сбоев с 6000+ до 150-200 с течением времени. Также столкнулись с трудностями, связанными с асинхронными взаимодействиями при интерфейсном тестировании, которые требовали инновационных решений без легкодоступных ресурсов или поддержки.
Планы на будущее и технический опыт "Приоритизация автоматизированного тестирования" рассматривается в планах на будущее из-за большого опыта работы с регрессионными тестами, но также из-за открытости к изучению новых подходов, таких как использование Docker, основанных на прошлом опыте самостоятельного решения сложных технических задач.
Отличие микросервисов от монолита в тестировании
00:10:50Архитектура микросервисов Архитектура микросервисов предполагает разделение проекта на независимые функциональные блоки, что обеспечивает более быструю доставку обновлений и улучшений. Однако тестирование микросервисов сопряжено со сложностями из-за их индивидуального взаимодействия и отдельных требований к тестированию.
Проблемы при тестировании микросервисов Тестирование микросервисов сопряжено с такими проблемами, как управление отдельными инфраструктурами для каждой службы, решение сложных межсервисных взаимодействий и обновление изменений API для нескольких служб. Эти проблемы требуют специального отслеживания и координации для обеспечения плавной интеграции в рамках проекта.
Интеграционное и контрактное тестирование
00:13:39Интеграционное и контрактное тестирование столкнулось с такими проблемами, как взаимодействие микросервисов друг с другом. Тестирование это было больше похоже на интеграционное тестирование, особенно учитывая особенности тестирования этого взаимодействия.
Асинхронное взаимодействие Kafka
00:14:23В нашем проекте у нас было больше проверок на асинхронное взаимодействие с использованием Kafka. Мы использовали Kafka для асинхронного взаимодействия и могли напрямую видеть очередь сообщений в нашей системе ведения журнала. Были проведены автоматические тесты, чтобы убедиться, что сообщения поступили в очередь, были действительными и успешно покинули очередь.
Работа с RabbitMQ
00:15:49RabbitMQ используется для тестирования очередей. Важно иметь практический опыт и теоретические знания о различных типах очередей, таких как способ хранения сообщений в очереди и роли отправителей и получателей сообщений.
Как тестировать Rest API
00:16:43Основные отличия и детали тестирования REST API, включая стресс-тестирование для оценки поведения кандидата. Подчеркивает важность практического опыта и теоретических знаний в проектных задачах.
Статус коды
00:19:10Код состояния, который мы получаем, не соответствует ожидаемому, за исключением двух-четырех-шести и пяти. Существуют другие типы кодов состояния, которые не начинаются с 1 или 3, если они начинаются с "da" или "resta". Во-первых, существует множество кодов состояния, начинающихся с сотен, таких как hundred и hundreds.
POST vs PUT vs PATCH POST vs PUT vs PATCH
00:19:34Тремя основными HTTP-методами являются GET, POST и PATCH. Они служат разным целям: POST используется для создания ресурса, PUT используется для полного обновления ресурса, а PATCH используется для частичного обновления ресурса. Различия заключаются в том, как они модифицируют ресурсы и какое удобство они предлагают для использования сервисов.
Идемпотентность
00:20:46Идемпотентность относится к свойству определенных HTTP-методов, при котором повторение запроса не изменяет состояние ресурса. GET является идемпотентным, поскольку он извлекает данные без изменения состояния сервера. POST, с другой стороны, не является идемпотентным, поскольку он создает новые ресурсы или изменяет существующие.
REST vs SOAP, RESTFUL принципы
00:22:48Основное различие между REST и SOAP заключается в том, что в REST должен быть создан новый ресурс. В SOAP тело может быть только XML, в то время как в REST оно также может быть HTML. Кроме того, существуют различия в форматах взаимодействия и ответов.
Ожидания в Selenium
00:24:44Разработчикам была поставлена задача протестировать пользовательский интерфейс, включая добавление книг в корзину и переход на страницу оплаты. Они столкнулись со счетчиком, который появляется на 1-3 секунды перед отображением следующей страницы. Для фронт-энд тестирования рассматривались различные фреймворки, такие как Selenium и Cypress.
Локаторы
00:26:58Локаторы - это способ дождаться появления элемента в пользовательском интерфейсе. Существует несколько методов использования локаторов, в зависимости от конкретного случая. Разработчики часто используют разные подходы, основанные на их потребностях и возможностях фреймворка.
Подпишись на бусти
00:27:44Подпишитесь на busti, где мы подробно рассмотрим использование специальных CSS-локаторов или X-локаторов. Присоединяйтесь к сообществу, которое предоставляет рекомендации по обучению, созданию резюме, пониманию путей поступления на работу для младших сотрудников, получению дорожных карт развития, увеличению возможностей получения дохода для опытных сотрудников за счет совмещения должностей и поиска удаленной работы.
Локаторы
00:28:20Присоединяйтесь к сообществу сознательных и меркантильных людей. В некоторых случаях может не существовать единого способа сделать что-либо в CSS-фреймворках; в рамках одного фреймворка можно использовать несколько методов. Иногда на странице доступен только один класс CSS.
Родительский элемент Xpath
00:29:28Когда нам нужно найти определенный элемент без уникальных идентификаторов, мы можем использовать отношение "родитель-дочерний элемент" в XPath. Сначала определив местоположение соседнего элемента с идентификатором, а затем перейдя вверх к его родительскому элементу, мы можем эффективно найти нужный дочерний элемент.
Page object
00:31:16Когда у нас много локаторов, например, сотни или тысячи, управлять ими становится сложно. Использование шаблона объекта страницы помогает эффективно организовать и хранить все эти локаторы для автоматизации.
Page elements
00:32:23Промежуточные уровни в нашем продукте зависят от его сложности. Например, мы используем такие объекты, как верхние и нижние колонтитулы и панели, которые отображаются на каждой странице. Понятие "тема страницы" для меня ново; я слышал только об "элементе страницы". В этом случае рекомендуется либо использовать самый популярный термин, либо перечислить все синонимы.
BDD
00:33:10Элементы BDD подобны героям и могут использоваться в тестах. Используя объект 'P', сценарии пишутся на основе событий и ожидаемых результатов. BDD эффективен при определении относительно небольших сценариев без сложного ветвления.
Принципы ООП
00:35:10Проект ООП: Плюс или минус, для меня это скорее плюс. Я хотел поговорить о вашем опыте программирования; насколько я понимаю, вашим основным языком является...
Абстрактный класс
00:35:29Парадигмы объектно-ориентированного программирования В Java объектно-ориентированное программирование (ООП) включает концепции наследования, инкапсуляции и полиморфизма. Эти парадигмы активно используются в тестировании и разработке для создания дочерних классов с определенными методами.
Абстрактные классы против интерфейсов Абстракция необходима для сосредоточения внимания на важных аспектах кода. Абстрактные классы описывают структуру объекта, в то время как интерфейсы описывают только объекты без подробностей реализации. Наследование от абстрактных классов наследует все от одного класса или, возможно, другого объекта; тогда как наследование от интерфейсов только описывает объекты без их реализации.
Класс Object
00:39:34В Java есть базовый класс под названием "Object", который содержит фундаментальные методы. Все остальные классы наследуют эти методы, такие как String 'Get CL', 'sh' и 'equals'. Это похоже на CSP, имеющий базовый класс с именем object с соответствующими унаследованными методами.
Коллекции
00:40:12Коллекции в Dzhave организованы в иерархию, с различными уровнями и интерфейсами, имеющими свои собственные реализации.
Полиморфизм
00:41:00Полиморфизм имеет свои дальнейшие реализации. Почему все сделано таким образом, что мы не используем реализации напрямую, а скорее используем их со стороны интерфейса? Есть ли какое-либо преимущество в таком подходе? Почему именно со стороны интерфейса? Мы уже можем задействовать все методы базового интерфейса, используя какой-нибудь cat, и можем ли мы создать нашу собственную реализацию на основе существующего интерфейса?
Практическое задание
00:41:49Практическое задание с существующими коллекциями Задача предполагает работу с существующими коллекциями и написание кода для практической задачи в среде IDE. Ситуация заключается в назначении задачи на написание реализации для работы с дробями, включая числитель и знаменатель.
Модульное тестирование и проверка кода Член команды получил задание, но ушел в отпуск, поэтому ответственность за проверку кода ложится на кого-то другого. Существуют ограничения, которые необходимо учитывать в ходе проверки, такие как покрытие отрицательных значений и обеспечение соблюдения контракта.
Отладка метода сложения дробей В видео обсуждаются проблемы отладки, связанные с методом сложения дробей, когда тесты завершаются неудачей из-за неправильных вычислений. В нем рассматривается добавление дополнительных тестовых примеров для положительных / отрицательных сценариев наряду с обработкой нулевых знаменателей.
Обработка исключений в тестовых примерах В этой главе основное внимание уделяется добавлению обработки исключений в тестовые примеры при работе с нулевыми знаменателями или входными данными, выходящими за пределы диапазона, такими как отрицательные числа или недопустимые типы данных.
Проверка типа данных и граничные условия Заключительная глава посвящена проверке типов данных (например, строк), используемых в методах, при рассмотрении граничных условий, таких как нулевые знаменатели, пределы диапазона, преобразования типов (например, из int в string), границы эквивалентности классов и т.д.
Переполнение Integer
00:56:10Целочисленные типы данных в Java имеют максимальный диапазон, обычно до 2^31 - 1 или 2^63 - 1. Если число превышает этот диапазон, это может привести к неожиданным отрицательным значениям из-за переполнения целых чисел. Чтобы справиться с этим, нам нужно проверить и предотвратить переполнение, сверив входные данные с ожидаемым диапазоном.
Обработка исключений
00:58:09Обработка исключений При умножении чисел мы можем столкнуться с исключением, если результат превышает определенный предел. Это может привести к переполнению и получению отрицательных чисел, которые должны обрабатываться в коде как исключения.
Тестирование и заключение Важно рассмотреть различные тестовые примеры для обработки исключений и убедиться, что учтены все возможные результаты. Процесс тестирования должен включать тщательную проверку вычислений, чтобы предотвратить появление любых неожиданных результатов.
Ошибки после релиза
01:01:10После выпуска могут появиться неработающие ссылки и другие проблемы. Важно своевременно устранять любые ошибки, обнаруженные после выпуска.
CI/CD
01:02:19Использование флагов функций для альфа- и бета-тестирования, организация процессов тестирования локально, подключение выходных данных тестов к серверному ресурсу компании, создание планов сборки с контролем версий.
Bash скрипты
01:04:56В Jenkins вы можете использовать пользовательские скрипты Bash для выполнения таких задач, как перемещение файлов в определенные папки. Опыт написания таких скриптов ценен для серверных операций. Доступ к полным правам администратора для файла в системах Unix может быть достигнут с помощью команды "CH Mod" с параметрами, определяющими доступ пользователя или группы и операции.
SQL
01:06:32Работа с SQL-командами Спикер обсуждает использование SQL-команд для чтения и записи данных, делится своим опытом работы с реляционными базами данных и приводит пример запроса, включающего две таблицы.
Понимание группировки и объединения в SQL Докладчик объясняет концепции группировки, объединения, левого соединения, внутреннего соединения, правого соединения, полного соединения, перекрестного соединения в SQL. Они также упоминают агрегатные функции, такие как среднее значение (AVG), минимум (MIN), максимум (MAX), сумма (SUM) для выполнения вычислений над данными.
Вопросы о работе
01:11:03Возможности карьерного роста Компания предлагает различные возможности карьерного роста, в том числе возможность продвинуться от инженера среднего звена до старшего инженера с помощью анализа эффективности и индивидуальной постановки целей. Доступны внутренние и внешние учебные курсы, а также возможность менять проекты, технологии или специализацию.
Методы тестирования Методы тестирования варьируются в зависимости от потребностей проекта; некоторые проекты требуют немедленного написания тестов, в то время как другие используют автоматизированные тесты. Процесс зависит от того, внедрены ли существующие процессы или требуется настройка для новых проектов. Инженеры могут свободно предлагать изменения или обсуждать модификации со своими командами.
Технологический стек Основной технологический стек включает Java, Python, JavaScript/TypeScript; в зависимости от конкретных требований проекта могут использоваться дополнительные стеки. Также существует потенциал для развития навыков в области облачных технологий в рамках различных проектов внутри компании.
Сбор и использование показателей Подход "Сдвиг влево" был реализован при переходе от монолитной архитектуры к модели микросервисов, что привело к повышению эффективности и укреплению репутации в организациях-клиентах.
Стандартизация процессов Существуют стандартизированные циклы выпуска, но они могут быть изменены в зависимости от динамики команды; каждая команда имеет свою собственную структуру, адаптированную в соответствии с их уникальными потребностями.
Матрица компетенций Путь продвижения "Младший, средний и старший персонал, главный выдающийся инженер" существует не только в инженерном деле, но и в других областях, таких как архитектура.
Подведение итогов
01:25:51Обратная связь и благодарность Кандидат выражает благодарность за возможность пройти собеседование, обсуждает возможность общения в будущем и подчеркивает важность обратной связи. Упоминает подготовленную речь, в которой продемонстрированы навыки решения проблем.
Достижения и опыт Обсуждаются достижения в наставничестве, адаптации, регрессионном анализе, опыте реализации технических проектов. Особое внимание уделяется стратегиям экономии времени за счет эффективного анализа дефектов.
Оценка мягких навыков Оценка мягких навыков, включая уровень уверенности при ответе на технические вопросы, и предложения по повышению уверенности в себе. Рекомендации по повышению уровня уверенности для лучшей работы на собеседованиях.
Обратная связь по технической оценке Оценка "соответствия кандидата", основанная на ответах на конкретные технические вопросы; советует повысить уверенность в себе, более уверенно демонстрируя имеющийся опыт.
Личные соображения Учитывает влияние баланса между работой и личной жизнью при оценке предложений о работе; подчеркивает личный выбор как важный фактор в процессе выбора компании