Вступление
00:00:00Сегодняшнее видео посвящено собеседованию на должность менеджера по автоматизации QR-кодов среднего звена. Ведущий также упоминает их чат в Telegram, где они общаются с подписчиками и помогают друг другу.
Начало
00:00:36Саша рассказывает о своем прошлом и о том, почему он выбрал сферу тестирования. Он делится своим опытом работы инженером по чрезвычайным ситуациям и тем, как он наткнулся на тестирование. Саша находит тестирование интересным, потому что оно предлагает больше креативности по сравнению с разработкой, допускает различные способы реализации и вызывает меньше стресса.
В чем суть тестирования приложения
00:04:10Тестирование приложений необходимо для обеспечения разработки высококачественного продукта, отвечающего требованиям пользователей. Тестируя приложение на всех этапах его разработки, мы можем выявить и устранить любые проблемы или баги до того, как они превратятся в дорогостоящие проблемы в процессе производства. Она включает в себя различные типы тестирования, такие как модульные, интеграционные, системные и модульные тесты.
Белый ящик
00:07:11Важность доступа к коду Наличие доступа к коду позволяет нам писать автоматизированные тесты и понимать функциональность на более глубоком уровне. Это полезно для запроса конкретных изменений у разработчиков и понимания того, как работают определенные функции.
Выявление ошибок в компонентах "Что вы делаете, когда обнаруживаете ошибку?" - В этой главе рассматривается, как мы определяем, с какой стороны (frontend или backend) произошла ошибка, учитывая все возможные факторы, такие как полнота данных. Кроме того, в нем обсуждается создание задач для разработчиков и привлечение тестировщиков вручную к проверке исправлений.
Как тестируют API и UI
00:09:57Спикер рассказал о процессе тестирования как интерфейсных, так и серверных компонентов. Он упомянул, что если тест не автоматизирован, то обычно выполняется ручное тестирование путем проверки различных аспектов приложения с помощью таких инструментов, как Postman или Swagger. Преимущество этих инструментов заключается в том, что они позволяют разработчикам делать запросы в режиме реального времени и видеть ответы. Кроме того, переменные могут использоваться для динамического заполнения параметров запроса.
Из чего состоит HTTP запрос
00:12:06HTTP-запрос состоит из версии, метода и заголовков. Наиболее часто используемые заголовки включают User Agent для идентификации устройства, отправляющего запрос, и коды состояния, такие как 200 для успешных запросов или 404 для ресурса, который не найден.
Разница между POST и GET запросом
00:14:08Основное различие между запросом POST и запросом GET заключается в том, что у первого есть тело, а у второго - нет. В запросе GET вся информация передается в открытом формате, что ограничивает ее длину. Кроме того, запросы GET всегда кэшируются в Интернете, что делает их менее безопасными для передачи конфиденциальных данных, таких как учетные данные для входа в систему.
Можно ли в GET запрос поместить тело
00:15:26Можем ли мы включить тело в запрос GET? Теоретически, можно включить тело в запрос GET. Однако, сможем ли мы отправить текст сообщения или нет, зависит от того, как реализовано наше веб-приложение. Если приложение позволяет отправлять тела в запросах GET, то это возможно. Но в соответствии с общепринятыми правилами и практиками, через строку URL обычно передаются только параметры.
Что происходит при выполнении несанкционированного запроса GET? "Если мы отправляем несанкционированный запрос GET на определенный адрес без аутентификации, обычно возвращаемый код состояния будет равен 400 Неверный запрос".
Как достать ссылку из редиректа 301
00:16:57Чтобы извлечь ссылку из 301-го редиректа, нам нужно найти метод под названием "Местоположение". Этот метод обычно содержит конечный URL-адрес назначения, по которому будет происходить перенаправление.
Работа с запросами в Java
00:17:55В этой главе мы обсудим использование библиотек для отправки HTTP-запросов в Java. Мы исследуем популярную библиотеку под названием Retrofit и ее преимущества перед ручной обработкой запросов. Модификация упрощает процесс, позволяя нам отправлять короткие запросы GET вместо написания длинного кода. Он широко используется и обеспечивает удобство при работе с API или тестировании приложений.
Как работать со списком из Json ответа
00:20:01Чтобы работать со списком из ответа JSON, вы можете просто получить список объектов. Вы можете создать список этих объектов и получить доступ к их свойствам, используя точечную нотацию. Например, если вы хотите извлечь определенный массив или класс из списка, вы можете указать его по имени, разделенному запятыми.
Как отфильтровать объекты из списка
00:21:18Чтобы отфильтровать объекты из списка, вы можете проверить, превышает ли возраст каждого пользователя 18 лет. Просматривая список, вы можете идентифицировать и включить в него только тех пользователей, возраст которых соответствует этому условию.
Java Stream Api
00:22:06Java Stream API - это мощный инструмент для обработки коллекций данных в стиле функционального программирования. Это позволяет выполнять операции с потоками элементов, такие как фильтрация, сопоставление и уменьшение. Потоки вычисляются медленно и могут быть распараллелены для повышения производительности.
HashMap
00:22:26Хэш-карта и ее действия Хэш-карта выполняет промежуточные и конечные действия. Промежуточные действия используются для преобразования элементов коллекции, в то время как терминальные действия ничего не возвращают, но выполняют определенные операции с каждым элементом. Наиболее распространенным вариантом использования является перебор каждого элемента в коллекции и выполнение с ним определенного действия.
Использование "Хэш-карты" "Хэш-карта" обычно используется для эффективного хранения пар ключ-значение. Это позволяет нам хранить уникальные ключи с соответствующими значениями, где добавление другого ключа заменит предыдущее значение, связанное с этим ключом.
RestAssured извлечь ответ через jsonPath().get()
00:24:21При использовании RestAssured мы можем извлечь данные ответа с помощью метода JSONPath().get(). Это позволяет нам извлекать определенные поля или значения из объекта response. Тип возвращаемых данных зависит от того, как они структурированы в ответе. Например, если поле содержит объект, то возвращаемое значение также будет объектом.
Как проверить 10 полей из ответа
00:26:43Чтобы проверить, содержит ли ответ все необходимые поля, вам нужно всего лишь проверить в общей сложности 10 полей. Вы можете создать класс с этими 50 полями или, например, если они хранятся в массиве и в нем всего 10 элементов. Это один объект, представляющий эти поля, и, используя этот объект, вы можете проверить его свойства на ожидаемый результат. Вы хотите вызвать тестовый метод для каждого поля; например, вы могли бы сделать его параметризованным. Итак, вот что я предлагаю: извлеките каждое поле с помощью 'get'. Например, если мы стерилизуем объект и проверяем каждое поле по отдельности. Теперь позвольте мне рассказать вам о чем-то, что называется "мягкое утверждение". Возможно, оно вам тоже знакомо, поскольку часто используется. Но есть одна вещь: представьте, что из наших десяти протестированных полей второе сразу же выходит из строя без дальнейших проверок, потому что оно вышло из строя. В таких случаях, когда логика продолжается даже после возникновения сбоев во время тестирования, вы можете вызвать другой метод, который выполняет полную проверку по всем желаемым полям, и использовать его для получения более информативных отчетов.
Как сравнить 2 pojo класса
00:29:37Чтобы сравнить два зарегистрированных пользовательских класса POJO, нам нужно убедиться, что отправленные нами данные совпадают с полученными. Если бы мы создали отдельные классы для каждого поля, было бы трудно точно сравнить их. Однако, если метод 'equals' не переопределен в классе и остается по умолчанию, сравнение этих классов приведет к некорректным сравнениям. Даже если содержимое обоих классов всегда идентично, они будут выглядеть по-разному, поскольку рассматриваются как разные объекты.
Как из Set достать элемент
00:31:07В этой главе мы обсудим, как получить доступ к элементам набора. Мы сравниваем наборы и списки и исследуем метод "get", доступный для списков. Однако прямого метода "get" для наборов не существует. Чтобы извлечь элемент из набора, мы можем использовать итераторы или проверить, существует ли элемент в наборе, используя условия.
Что такое API
00:32:02API, или интерфейс прикладного программирования, - это протокол, который обеспечивает связь между клиентом и сервером. Он служит архитектурным стилем, использующим JSON.
Можно ли в SOAP отправить JSON
00:32:40Отправка JSON в SOAP Можем ли мы отправить JSON в SOAP? Да, можно отправлять данные в формате JSON с использованием протокола SOAP. Однако SOAP в основном поддерживает XML в качестве формата сообщений.
"Вдохнуть жизнь" в архитектуру "Можем ли мы вдохнуть жизнь в архитектуру, рассматривая ее как тело запроса? Нет, это невозможно. Целью архитектурного проекта является определение структуры и компонентов системы; он не обладает способностью представлять или содержать живые существа."
Ограничения поддерживаемых форматов Почему SOAP поддерживает только определенные форматы, такие как XML? Поддерживаемые форматы определяются на основе отраслевых стандартов и совместимости с существующими системами. Хотя другие форматы могут быть технически осуществимы, они могут не соответствовать этим соображениям.
Что отвечает за авторизацию
00:33:31После первоначальной авторизации существует компонент, ответственный за обработку последующих авторизаций. Этот компонент, известный как "хедер", играет решающую роль в управлении процессом авторизации.
Как не дублировать код с авторизацией
00:33:56Дублирование кода и авторизация Чтобы избежать дублирования кода при авторизации, мы можем создать метод или класс, который обрабатывает процесс авторизации. Таким образом, нам не нужно повторять шаги аутентификации в каждом тесте. Мы можем либо создать отдельный метод для авторизации, либо добавить его как часть класса, если это необходимо. Делая это, мы устраняем ненужное повторение кода и повышаем эффективность тестирования.
Оптимизация логики "токена" Оптимизация логики "токена" включает в себя извлечение процесса извлечения токена перед запуском тестов. Например, вместо того, чтобы ежедневно генерировать статический токен в каждом тестовом примере, мы можем определить его как постоянное значение, используемое во всех тестах. Такой подход уменьшает избыточность и обеспечивает согласованное поведение во время тестирования, сохраняя при этом надлежащую аутентификацию с использованием файлов cookie.
Рекомендации по тестированию пользовательского интерфейса: элементы DOM и XPath При выполнении тестирования пользовательского интерфейса решающее значение имеет понимание таких понятий, как "элементы DOM". Это компоненты, представляющие веб-страницы, которые позволяют осуществлять вертикальную прокрутку содержимого посредством взаимодействия с пользователем. XPath - еще один важный инструмент для определения местоположения определенных элементов на веб-страницах во время тестирования.
Разница между css и xpath
00:36:02Основное различие между CSS и XPath заключается в том, что селектор CSS не может перемещаться вверх с помощью родительских селекторов, в то время как XPath поддерживает все оси. Однако эффективность обоих методов в большинстве случаев одинакова.
Разбить страницу на Page Object
00:37:13Шаблон объекта страницы - это способ организации веб-страниц в повторно используемые компоненты. Каждый компонент представляет определенный элемент или группу элементов на странице, например строку поиска или виджет погоды. Разбив главную страницу на более мелкие компоненты, мы можем взаимодействовать с ними по отдельности и выполнять такие действия, как поиск. Взаимодействие между этими компонентами облегчается веб-драйвером, который создает сеансы и отправляет команды браузеру удаленно.
Можно ли добавить Header к WebDriver
00:38:51В этой главе мы обсудим, возможно ли добавлять заголовки в WebDriver. Мы исследуем, существуют ли какие-либо ограничения при отправке запросов и можно ли настроить пользовательские заголовки для различных целей.
С чем сложным сталкивался в UI
00:40:03Спикер столкнулся с трудностями при работе с недоступными страницами и пустыми таблицами во время тестирования. Они столкнулись с проблемами, связанными с ожиданием обработки результатов поиска, что привело к сбоям тестирования.
Flaky тесты
00:41:21Слоеные тесты нестабильны и ненадежны. С ними может быть трудно справиться, но перезапуск их - хороший вариант. Используя тестовые флаги, мы можем контролировать статус тестов и соответствующим образом обрабатывать сбои. В нашем проекте для управления процессом тестирования используются скрипты Jenkins и Groovy.
Фидбек
00:44:43Ключевые понятия в автотестировании Основная идея этой главы заключается в том, что автотестирование требует глубоких знаний и понимания различных методов тестирования, таких как тестирование "белого ящика" и тестирование "черного ящика". Докладчик также упоминает о важности хорошего понимания языка программирования Java, в частности таких понятий, как потоки и фильтрация.
Подготовка к собеседованию по автотестированию "Подготовка к собеседованию по автотестированию" фокусируется на необходимых навыках и знаниях, необходимых для успешного прохождения собеседования. Докладчик подчеркивает важность знания распространенных проблем при автотестировании, таких как обработка исключений или использование функциональных интерфейсов. Кроме того, они упоминают, что практический опыт работы с такими фреймворками, как Selenium, может быть полезен во время собеседований.