Your AI powered learning assistant

Пробное собеседование по автоматизации SDET|QA - более 5 лет опыта

Introduction

00:00:00

Введение в пробное интервью с Акшаем, который имеет большой опыт в Java, технологиях пользовательского интерфейса, базах данных и программировании. Основное внимание уделяется проведению пробного интервью в Naveen Automation Labs.

Resume

00:01:00

Опыт и ответственность Навин и Акшай обсуждают опыт Акшая в качестве аналитика по тестированию автоматизации с пятилетним опытом работы в банковской сфере. Он работал над различными инструментами, такими как Selenium, Java, Maven, Cucumber, TestNG для автоматизированного тестирования. Его текущий проект включает автоматизацию настольного приложения на основе критериев приемлемости пользовательских историй.

Функциональное тестирование и автоматизация Акшай занимается как функциональным тестированием, так и автоматизацией. Он поддерживает функциональную команду во время регрессионных сценариев или во время развертывания, создавая ручные тест-кейсы, выполняя их вручную или с помощью автоматизированных средств. В своей нынешней команде он является единственным ресурсом для автоматизированного тестирования.

Критерии завершения истории пользователя В своем трехнедельном цикле спринта, использующем портал Azure DevOps для ежедневных действий, как только функциональные тестировщики закрывают историю пользователя после завершения своих тестов в соответствии с критериями приемлемости, указанными в истории пользователя; затем со стороны Akshay они открывают новые технические истории, определяя, какие регрессионные тестовые примеры следует рассмотреть для автоматизации.

User Story

00:05:57

Автоматизировать максимальное количество сценариев из истории пользователя непросто, особенно для сложных приложений. Если автоматизация не может быть завершена в течение спринта, история пользователя остается открытой и переносится на следующий спринт в зависимости от емкости.

Sprint Backlog

00:06:41

Журнал невыполненных работ спринта включает функциональное тестирование, автоматизацию и ожидающие публикации. Если автоматизация не завершена в текущем спринте, она должна быть приоритетной для следующего спринта, чтобы избежать конфликтов с существующим кодом во время производственного развертывания.

Importance of Automation

00:08:11

Важность автоматизации и регрессионного тестирования имеет решающее значение для завершения пользовательских историй. Без автоматизации команда не сможет запустить пользовательскую историю в производство, даже если ручное тестирование завершено. Важно подчеркнуть важность автоматизации при решении проблем и ошибок, которые могут возникнуть в будущих спринтах.

Definition of Done

00:09:22

Определение done (DoD) устанавливает правила, когда пользовательская история считается завершенной. Оно должно включать критерии автоматизации, чтобы гарантировать, что охвачены все аспекты, такие как функциональное тестирование и исправления ошибок. Без пунктов автоматизации в DoD пользовательская история не должна помечаться как выполненная.

Automation in Agile

00:11:46

В гибкой среде вопросы автоматизации и контроля качества поднимаются во время ретроспективного совещания sprint. Именно здесь инженер по контролю качества выделяет моменты с точки зрения автоматизации, чтобы сделать приложение более надежным и эффективным. Окупаемость инвестиций (ROI) автоматизации имеет решающее значение при непрерывном внедрении, поскольку она экономит время, затраты и помогает продуктам быстрее выходить на рынок.

Return of Investment

00:14:27

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

What will you prefer

00:15:10

Выбор между присоединением к проекту с нулевым процентом автоматизации или к сформированной команде с существующей автоматизацией. Предпочтение первому из-за возможности личностного и технического роста, начиная с нуля, привлекая заинтересованные стороны и обучаясь выбору инструментов и технологий.

Factors to consider

00:18:04

Учитывайте область применения, идентификацию объекта, использование приложения и рекомендуемые действия при определении того, какие тестовые примеры или варианты использования являются наилучшими кандидатами для автоматизации. Область применения относится к актуальности с производственной точки зрения; идентификация объекта оценивает, насколько легко можно идентифицировать объекты; использование оценивает взаимодействие клиента с приложением; и, наконец, принятие решения о частичной автоматизации, полной автоматизации или ее отсутствии на основе этих факторов.

Scope

00:19:28

Модуль scope охватывает функциональное тестирование, идентификацию объектов и использование модулей. В нем также рассматривается, следует ли внедрять частичную автоматизацию, полную автоматизацию или не использовать автоматизацию вообще.

Criteria

00:19:59

Повторяющиеся задачи для нескольких продуктов и пользователей отнимают много времени, особенно при регрессионном тестировании. Автоматизация может упростить эти задачи, такие как развертывание и тестирование конкретных тестовых примеров.

Language

00:20:48

Докладчик использует Java для автоматизации и знаком с основными терминами Java.

Polymorphism

00:21:13

Полиморфизм в Java относится к способности одного объекта принимать множество форм. При полиморфизме во время компиляции мы присваиваем ссылку на базовый класс и создаем объект, в то время как полиморфизм во время выполнения включает в себя приведение сверху, где мы создаем объект дочернего класса и присваиваем его ссылке на родительский класс.

Top Casting

00:23:41

Приведение сверху включает в себя создание объекта дочернего класса и присвоение ему ссылочной переменной родительского класса. Однако вызов методов, специфичных для дочернего класса, с использованием этой ссылочной переменной запрещен, поскольку родительские классы не могут наследовать свойства от своих дочерних классов.

Down Casting

00:25:33

Нисходящее приведение невозможно в объектно-ориентированных сценариях, поскольку мы не можем создать объект родительского класса и назначить его ссылке на дочерний класс.

Class Cast

00:26:04

В объектно-ориентированном программировании приведение классов позволяет нам присвоить объект родительского класса ссылочной переменной дочернего класса. Однако попытка приведения несовместимого типа приведет к исключению ClassCastException во время выполнения. Эта концепция отражает сценарии реального мира и является неотъемлемой частью полиморфизма.

Hashmap

00:27:38

HashMap - полезная структура данных в системах автоматизации, особенно для Selenium. Она используется для хранения файлов свойств в виде пар ключ-значение, таких как имена браузеров и порты.

Properties File

00:28:56

Конференция будет записана, и обсуждение включает использование файла свойств в Selenium для хранения тестовых данных. Также рассматривается чтение определенных элементов и значений из массива JSON с использованием HashMap.

API Response Points

00:30:15

Ключи в хэш-карте позволяют легко извлекать значения, например, для точек автоматизации пользовательского интерфейса или рабочего стола. Например, если в определенном местоположении возникают случайные ошибки из-за неверного pin-кода, эти ошибки можно сохранить вместе с pin-кодом в виде пар ключ-значение с помощью хэш-карты. Кроме того, переменные класса класса POJO также могут быть сохранены и к ним можно легко получить доступ с помощью хэш-карт.

Hashmap vs Hash Table

00:31:28

Разница между hashmap и hash table заключается в их потокобезопасности и синхронизации. HashMap не синхронизирован, что означает, что если один поток изменяет объект, другие потоки могут не увидеть новые изменения. С другой стороны, Hashtable одновременно синхронизирован и потокобезопасен, позволяя всем потокам получать доступ к изменениям данных во время выполнения. Несмотря на это, HashMap может быть быстрее из-за своей несинхронизированной природы.

Synchronization

00:33:25

Хэш-таблица работает быстрее, чем hashmap, потому что она поддерживает синхронизацию и потокобезопасна. Каждый поток будет синхронизирован, обеспечивая правильное распределение памяти.

Stack Overflow

00:34:28

Понимание ошибки переполнения стека В Java ошибка переполнения стека возникает, когда размер стека становится полным из-за бесконечного цикла или программы без условия остановки. Это приводит к тому, что JVM выдает ошибку "переполнение стека", которая не перехватывается с помощью try-catch и ее следует избегать.

Сборщик мусора и управление памятью Сборщик мусора работает только с памятью кучи, а не со стековой памятью. Он отвечает за восстановление неиспользуемых объектов из памяти кучи.

Завершить метод в обработке исключений Метод "finalize" используется при обработке исключений, чтобы гарантировать, что определенный код всегда выполняется, независимо от того, возникает исключение или нет. Это часть обработки исключений, где он будет выполняться независимо от того, были ли выброшены или перехвачены исключения.

Finalize

00:36:33

Метод finalize является частью класса object и используется для операций закрытия, когда объект недоступен или если ни один живой поток не может получить к нему доступ. Метод finalize будет выполнен самое большее только один раз. Если дочерний класс переопределил метод finalize, сборщик мусора вызовет этот метод; в противном случае он этого не сделает.

Final Keyword

00:39:24

Ключевое слово final может использоваться для переменных, классов или методов. При использовании с переменной оно предотвращает изменение значения во всей программе. При применении к классу оно запрещает наследование этого класса. И когда он используется для метода в классе, он запрещает переопределять этот метод в дочерних классах.

Practical Example

00:40:19

При разработке фреймворка использование закрытого конструктора для классов может предотвратить создание объектов вне класса. Это позволяет лучше контролировать создание экземпляров объектов и доступ к методам внутри класса. Кроме того, это позволяет скрывать данные и абстрагироваться, ограничивая прямой доступ к переменным-членам.

Class

00:42:42

В Java существуют классы с закрытыми конструкторами, которые нельзя создать. Например, класс String имеет закрытый конструктор по умолчанию и требует вызова параметризованного конструктора для создания объекта.

Page Object Model

00:43:43

В объектной модели страницы мы используем вызов по ссылке для обработки веб-элементов в классах страниц для различных операций со страницами.

Selenium Utilities

00:44:44

В Selenium общие операции, такие как отправка текста и нажатие кнопок, могут быть инкапсулированы в класс utilities. Этот класс содержит методы для выполнения этих общих операций непосредственно с веб-элементами. Кроме того, класс utilities может включать действия исполнителя JavaScript, которые работают для всех веб-элементов.

Pass web element

00:47:28

При передаче веб-элемента вы сначала создаете элемент, а затем используете его для таких действий, как щелчок. Однако использование локатора покупки позволяет click решать, с каким элементом взаимодействовать, на основе локатора. Передача веб-элементов упрощает обслуживание, поскольку изменения нужно вносить только в класс страницы, где упоминается указатель by.

Pass by locator

00:48:38

При использовании "по локатору" в методах передавайте только ссылку, а не жестко закодированные значения. В классе page сохраняйте идентификаторы или XPaths для элементов и принимайте решение о действиях по щелчку на основе "по локатору". Предпочитаю создавать веб-элементы заранее и передавать их для выполнения операций.

Pass by locator improvements

00:49:18

Передача указателя By вместо его создания и сопровождения может привести к повышению производительности, обработке ошибок, исключений и синхронизации. Такой подход позволяет избежать обращения к серверу или создания веб-элемента до времени выполнения.

Page Factory pattern

00:50:10

Шаблон фабрики страниц используется с аннотацией @findBy для создания локаторов с использованием XPath, CSS, ID и name.

How to create custom exception

00:50:54

Чтобы создать пользовательское исключение в Java, нам нужно создать класс, который расширяет либо класс Exception, либо класс Throwable. Внутри этого класса мы переопределяем метод toString класса Object и возвращаем пользовательскую строку, представляющую исключение, которое мы хотим сгенерировать.

How to handle custom exception

00:51:30

Чтобы обрабатывать пользовательские исключения, создайте класс, расширяющий Exception, или класс Throwable. Переопределите метод toString, чтобы вернуть описательное сообщение для исключения. Используйте блок try-catch в методах, где могут возникать исключения, и перехватывайте пользовательское исключение по его определенному имени.

How to throw custom exception

00:53:42

Использование ключевого слова throw для создания и обработки пользовательских исключений в блоке try-catch. Блок catch будет обрабатывать наше пользовательское исключение только в том случае, если оно указано как первое исключение в иерархии блоков catch.

Can I write a try block without catch block

00:54:25

Вы не можете написать блок try без блока catch, потому что для каждого блока try, в котором мы генерируем какое-либо исключение, нам нужен какой-либо блок catch для обработки исключения.

Can I write a try block with finally

00:54:46

Блок try может быть создан с помощью дескриптора finally без блока catch. Ключевое слово finally гарантирует, что код внутри конечного блока будет выполнен независимо от того, возникает исключение или нет.

Can I create a trap loss without catch

00:55:10

Создание потери в ловушке без использования блока catch и прямое определение блока finally является неизученным подходом. Необязательно использовать блок catch, но необходимо включить блок finally, если вы хотите выполнить этот метод.

Tell me in Selenium

00:55:42

Selenium 4 представляет относительные локаторы - новую концепцию в автоматизированном тестировании.

How will you handle a complex web table

00:56:11

Работа со сложной веб-таблицей требует понимания структуры и данных внутри нее. Это включает в себя идентификацию элементов, использование селекторов XPath или CSS для определения местоположения определенных ячеек и извлечение соответствующей информации для дальнейшей обработки.

How will you select the checkbox

00:56:23

Чтобы обработать сложную веб-таблицу и установить флажок, мы можем написать метод, который принимает имя сотрудника в качестве входных данных. Используя динамический XPath, мы выполняем итерацию по каждой строке таблицы, используя цикл for или расширенный цикл for. Разбивая XPath на части before и after, мы используем экспертные локаторы, такие как forward sibling, чтобы найти и щелкнуть флажок на основе структуры веб-таблицы.

Why are you breaking the exponential part

00:57:32

Разбиение экспоненциальной части перед экспортом важно для обработки новых строк, добавляемых в таблицу. Это предотвращает сбой жестко запрограммированного экспорта при добавлении новых строк.

Why are you going with the row and column number

00:57:53

Использование номеров строк и столбцов является подходом по умолчанию, но его можно упростить, напрямую используя имя сотрудника и применяя концепцию предшествования.

Indexing concept

00:58:05

Концепция индексации предполагает использование имени сотрудника для перехода к его определенному столбцу, а затем перехода от этого столбца. Это позволяет нам получать доступ к данным без необходимости явных индексов, просто следуя "дорогам", основанным на именах сотрудников.

For loop

00:58:31

Используйте цикл for и средство поиска экспертов, чтобы установить флажок на основе имени контакта или сотрудника. Избегайте обхода всей строки, напрямую добавляя имя сотрудника в этом конкретном эксперте, устраняя необходимость в другом цикле for.

CSS selector

00:59:27

CSS-селекторы и обход Селекторы CSS в CSS имеют концепцию прямого обхода с использованием родительских и дочерних отношений, но обратный обход обычно не используется.

Архитектура Selenium WebDriver Selenium 4 удалил протокол JSON wire, присутствующий в Selenium 3. Архитектура предполагает прямое взаимодействие клиентских библиотек с драйверами браузера без необходимости в отдельном протоколе.

Преимущества и недостатки одноэлементного шаблона Шаблон Singleton создает один объект с глобальным доступом к другим классам, сокращая использование памяти. Однако это может привести к проблемам синхронизации во время параллельного тестирования из-за того, что несколько потоков обращаются к одному и тому же методу.

Инструменты отчетности для автоматизации тестирования "Отчет об объеме" предпочтителен для понимания командой автоматизации результатов тестового примера, в то время как "Отчет в формате PDF", сгенерированный из отчета об объеме, используется для общения с заинтересованными сторонами из-за его представления на высоком уровне.