QA Theory
  • 🔎README
  • Теория автоматизированного тестирования
    • Общие вопросы
      • Наиболее распространенные шаблоны проектирования в тестировании
      • Какое Главное Различие Между Командами ‘Assert’ и ‘Verify’?
      • В Чём Различие “/” и “//”?
      • В Чём Различие Между ‘Implicit wait’ и ‘Explicit wait’?
      • Какое Различие Между Soft и Hard Assert?
      • Какие команды Linux Shell вам известны?
      • Что такое IaaS и PaaS? Приведите примеры.
      • Как используют виртуальные машины и контейнеры в автоматизации?
      • Что такое контейнер и чем он отличается от виртуальной машины?
      • Что такое PageObject и PageFactory?
      • Что такое драйвер браузера?
      • Какие виды локаторов страницы существуют? Каковы их преимущества и недостатки?
      • Что вы думаете по поводу BDD? Когда следует использовать, а когда будет только хуже?
    • TestNG/JUnit
      • Какие аннотации используются в TestNG/JUnit?
      • Как Пропустить Тестовый Метод в TestNG?
      • Какие assertions есть в TestNG/JUnit?
      • Как выполнять тесты параллельно TestNG/JUnit?
      • Для чего нужны TestNG/JUnit?
    • Selenium
      • Что такое Selenium и зачем его используют?
      • По Вашему Мнению, Каковы Основные Недостатки Selenium?
      • Что такое iframe и как с ним работать в Selenium?
      • Как обрабатывать браузерные сообщения (alerts)?
      • Как взаимодействовать с cookies, LocalStorage и SessionStorage?
      • Как взаимодействовать с запросами, отправляемыми из браузера?
      • Расскажите, как вы будете строить и внедрять стратегию по автоматизации тестирования.
      • Как взаимодействуют клиентская библиотека Selenium, драйвер браузера и сам браузер?
      • Интерфейсы в Selenium
      • Типы навигационных команд Selenium
      • Как найти поврежденные ссылки в Selenium WebDriver?
      • Какую технику следует рассмотреть, используя весь сценарий, если «нет ни frame id, ни frame name»?
      • Какие exceptions может бросить Selenium? Что они означают и как их обрабатывать?
      • Что такое Selenium Grid?
      • Как вы запускаете параллельное выполнение тестов? Что такое ThreadLocal?
      • Какая разница между Action и Actions?
      • Как вычитать данные из динамической веб-таблицы?
      • Что такое Selenium Waits? Какие есть и чем отличаются?
      • Для чего используют JavaScriptExecutor? Приведите примеры.
  • Основы программирования на Python
    • Какие есть методы поиска, сортировки, вставки и удаления? Выбор структур данных
    • SOLID
    • Как устроены множества и словари под капотом?
    • Что из себя представляют range объекты и в чем их отличие от списков?
    • Что такое хэш-таблица, хэш, хэш-функция, хэширование?
    • Модуль collections
    • Какие типы аргументов есть в Python?
    • Способы поиска и обработки текста
    • Конструктор класса
    • static методы и classmethod методы в python, различия между ними и примеры использования
    • Модификаторы доступа в python
    • Для чего нужно превращать метод класса в атрибут
    • Сеттеры и геттеры
    • Что такое type annotation?
    • Как работают dict comprehension, list comprehension и set comprehension?
    • В чем разница в использовании между is и ==?
    • Что такое *args, **kwargs?
    • Функции по работе с json
    • Исключения
    • Встроенные декораторы
    • Абстрактные классы и методы
    • Классы и объекты
    • ООП и его принципы
    • Примеры полиморфизма
    • Статический полиморфизм (перегрузка методов) и Динамический полиморфизм (переопределение методов):
    • Структуры данных
    • Принципы программирования
    • Почему глобальные переменные это плохо?
    • Чем файл .pyc отличается от .py?
    • Контекстный менеджер
    • Литералы в Python
    • Что такое РЕР8?
    • Что такое рекурсия?
    • Что такое строка документации (docstring)?
    • Как убрать из списка дубликат элемента?
    • Как конвертировать список в строку?
    • Функции и их особенности
    • В чем отличие вызова функции с скобками и без?
    • Os и его методы
    • Sys и его методы
    • Что такое срез?
    • Для чего нужен pass в питоне?
    • Работа с регистрами
    • Что такое отрицательный индекс (negative index)?
    • Как работает тернарный оператор
    • self
    • Объясните использование функций help() и dir()
    • Импорты
    • Динамическая и статическая, сильная и слабая , явная и неявная типизации
    • main()
    • Что такое генератор? Разница между генераторами и итераторами?
    • yield
    • Что такое декораторы?
    • Разница между списком и кортежем
    • Пространство имен
    • Лямбда-функции
    • Приведение типов
    • Пакетные менеджеры и виртуальное окружение
    • Встроенные типы данных
    • Boolean и их особенности
    • Словари и их методы
    • Особенности словарей
    • Числа и их методы
    • Особенности чисел
    • Множества и их методы
    • Особенности множеств
    • Строки и их методы
    • Особенности строк
    • Кортежи и их методы
    • Особенности кортежей
    • Списки и их методы
    • Особенности списков
    • Отличия reverse() от reversed(), sort() от sorted(), copy() от deepcopy()
    • f-строки
    • Изменяемые и неизменяемые типы данных
    • super()
    • Встроенные функции
    • __init__.py
    • Компилируемые и интерпретируемые языки программирования
    • Пакеты и модули
  • Основы программирования на Java
    • Проекты в Java
    • Пакеты
    • Абстрактные классы и интерфейсы
    • Отличия компилятора от интерпретатора
    • Изменяемые и неизменяемые типы данных
    • Условные операторы
    • Логические операции
    • Обработка исключений
    • Иерархия исключений
    • Лямбда-выражения
    • Stream API
    • Коллекторы
    • Оператор instanceof
    • Оператор ::
    • Сравнение ссылок
    • Класс Object
    • Вложенные классы
    • Интерфейсы-маркеры
    • Maven: фазы, плагины, зависимости и сборка
    • Типы-обертки (wrapper classes)
    • Коллекции в Java
    • Работа с ArrayList
    • Параметризированные типы в Java – Generics
    • Коллекция HashSet
    • Коллекция HashMap
    • Коллекция LinkedList
    • enum
    • switch
    • Многопоточность
    • Циклы
    • Массивы
    • Класс Arrays
    • Функции
    • Модификаторы методов
    • Видимость переменных
    • ООП в Java
    • Конструкторы
    • Принципы ООП
    • Статические переменные, методы, классы
    • Геттер и сеттер
    • Перегрузка (overloading) и переопределение (overriding)
    • Входная точка для запуска Java-приложений
    • Объявление и инициализация переменных
    • Тип String – строки и текст
    • Работа со строками
    • Форматирование строк
    • Класс StringBuilder
    • Класс StringBuffer
    • Литералы в Java
    • Чтение и запись данных
    • try-with-resources
    • Классы ввода-вывода
    • Экранирование символов
    • Приведение типов
    • Сигнатура метода
    • Ключевое слово void
    • Модификаторы доступа
    • Ключевое слово this
    • Типы данных
  • Теория ручного тестирования
    • Как часто следует проводить регрессионное тестирование продукта?
    • Когда следует делать стресс-тестирование на проектах? От чего отталкиваться, когда строите сценарий
    • Что такое ROI и как его считать?
    • Какие минусы полной автоматизации тестирования?
    • В чем смысл юнит-тестов?
    • Как будете тестировать программу, если для продукта нет документации?
    • Что такое тестирование со смещением влево (Shift left testing)?
    • Как избежать появления регрессивных дефектов?
    • Как провести эстимейт задачи? Каковы техники оценки объема тестирования существуют?
    • Расскажите о метриках качества, которые вы применяли. Зачем они нужны?
    • Как можно подкорректировать флоу разработки, чтобы получать более чистые результаты на выходе...
    • Какую ценность несет анализ результатов тестирования команде и проекту в целом?
    • Как запланировать загруженность команды тестировщиков?
    • Как часто следует ревьюировать тестовую документацию?
    • На основе чего нужно составлять стратегию для проведения тестирования нагрузки?
    • Какие виды рисков существуют? Что такое Mitigation Plan?
    • Когда можно считать, что тестирование окончено?
    • Что такое RCA в тестировании? Нужно ли его проводить?
    • Какие препятствия могут возникнуть в обеспечении качества для Agile Tester?
    • Что такое Definition of Done?
    • Нулевой спринт в Scrum. Для тестирования есть задание под названием «Настройка среды».
    • Расскажите о ритуалах, ценностях и ролях в Scrum.
    • Какая разница между Scrum и Kanban?
    • Что такое load и stress testing? Какими инструментами пользуются для их выполнения?
    • Что такое performance testing? Какими инструментами пользуются для его выполнения?
    • Что такое тестирование API? Какими инструментами пользуются для его выполнения?
    • Какие модели risk-based testing вы знаете?
    • В чем основная разница между defect detection percentage и defect removal efficiency?
    • Для какого функционала труднее всего написать тест-кейсы?
    • Что мы должны покрывать тест-кейсами, а что считается избыточным расходом времени и денег?
    • Может ли быть ситуация, когда критерии завершения (exit criteria) не выполнены? Что должно происходи
    • Есть ли разница между bug leakage и bug release?
    • Какое должно быть процентное соотношение между положительным и отрицательным тестированием на проект
    • Назовите последовательность выполнения CI/CD процесса на проекте.
    • Как меняется стоимость дефекта при тестировании программного обеспечения?
    • Что такое REgexp?
    • Что такое fuzz-тестирование и где его используют?
    • Когда нужно использовать технику Pairwise?
    • Что такое mock/stub? Какие знаете инструменты для работы с ними?
    • Что такое A/B тестирование?
    • Приведите примеры подходов для тестирования локализации.
    • Какие тест-кейсы можно сдать для тестирования баз данных?
    • Что знаете о тестировании нагрузки? В каком случае следует проводить такое тестирование?
    • Что может быть критериями запуска и завершения тестирования?
    • Что такое таблица решений/decision table и как её можно использовать?
    • Smoke и Sanity тестирование
    • Матрица трассировки (матрицы трассируемости, traceability matrix)
    • Что такое End-to-End тест?
    • Дайте определение Entry и Exit Criteria
    • Что такое Bug, Error, Failure, Fault?
    • Приведите примеры серьезного, но не приоритетного бага
    • Какие бывают виды интеграционного тестирования?
    • Что такое исследовательское тестирование?
  • Полезные ссылки
  • Web
    • Что такое клиент-серверная архитектура?
    • Что такое NIC?
    • Для чего нужен протокол RTP?
    • Что такое NAT?
    • Расскажите об алгоритмах шифрования трафика.
    • Какая разница между авторизацией и аутентификацией?
    • Какова разница между методами GET и POST?
    • Какая разница между методами PUT и PATCH?
    • Каковы есть основные виды уязвимости веб-приложений?
    • Что такое WebSocket и как проверить обрыв соединения?
    • Как протестировать адаптивную верстку?
    • Какие статус-коды ошибок бывают? Может ли сервер отправить код 400, если проблема на его стороне?
    • Как выполнить Debug страницы в браузере?
    • Как происходит авторизация на сервере?
    • Что может выступать в роли клиента?
    • Какие протоколы передачи данных знаете?
    • Что такое REST API, SOAP? В чем разница?
    • Какие способы взаимодействия с API существуют? В чем разница между ними?
    • Как можно протестировать API, что там нужно проверять?
    • Как происходит шифрование?
    • Какие знаете форматы передачи данных?
    • Охарактеризуйте каждый класс status code (1хх; 2xx; 3xx; 4xx; 5xx).
    • Какие есть HTTP-методы?
    • Для чего необходимы инструменты разработчика в браузере (Chrome DevTools) и как они помогают в тести
    • Что такое кэш?
    • Что такое сессия?
    • Зачем нужны cookies?
    • Что такое HTML/CSS/JavaScript?
    • Какую структуру имеет веб-страница?
    • Зачем чистить кэш?
    • Для чего в веб-страницах используют JavaScript?
    • Что такое AJAX?
    • Какие отличия между XML и JSON?
    • Как расшифровывается CRUD?
    • Что такое Одностраничное приложение (single page application, SPA)?
    • Отличия монолита от микросервисов, их преимущества и недостатки
    • Что такое идемпотентность?
    • Есть ли тело у get запроса?
    • Можно ли авторизоваться через get запрос?
    • Можно ли удалить ресурс через post запрос?
    • Что такое access token и refresh token, как они работают?
    • Что такое GraphQL ?
    • Что такое jwt токен и как он работает?
  • Базы данных
    • Какие бывают виды баз данных?
    • Что вы понимаете под Self Join? Приведите примеры.
    • Что такое cursor и как им пользоваться?
    • Чем отличаются delete, drop, truncate?
    • Что такое case function?
    • Что такое схема GraphQL?
    • Объясните разницу между OLTP и OLAP.
    • Что такое collation?
    • Операции агрегирования
    • Операции группировки
    • Операции фильтрации
    • Операции объединения
    • Преимущества и недостатки, особенности реляционных и нереляционных баз данных
    • Для чего нужны PRIMARY KEY, FOREIGN KEY?
  • Git
    • Что такое commits, branches в Git?
    • Для чего нужны GitHub, GitLab и другие, базирующиеся на Git, вебхостинги проектов?
    • Что такое Pull Requests?
    • Что такое Cherry-pick?
    • Конфликты слияния
    • Что такое Rebase?
    • Разница rebase и merge
    • Git Flow
    • Что такое Git? Каков принцип его работы?
  • CI
    • Что такое CI/CD? Какие плюсы и минусы этого подхода?
    • Что такое образ?
    • Образ контейнера и контейнер
    • Как создать образ
    • Как запустить контейнер?
    • Как сделать маунт директории хост-машины
    • Как собрать docker compose файл
    • Dockerfile и docker compose
    • Как распространять образы между коллегами (docker registry)
    • Как автоматическое тестирование интегрируется в CI?
    • Job и Pipeline
    • Как настроить Job или Pipeline на знакомом вам CI-инструменте?
    • Какую информацию должен содержать отчет о выполнении автоматических тестов?
  • Mobile
    • Что основное нужно проверить при тестировании мобильного приложения?
    • Что такое Manifest.xml в .apk файле и какие данные там указывают?
    • Как происходит деплой программ IOS/AOS?
    • Как работает Android? Какая у него архитектура?
    • Что такое Testflight? Как тестировать с его помощью?
    • Как протестировать билд на Android?
    • Что такое утечки памяти? Как найти?
    • Опишите жизненный цикл активити.
    • Каковы основные компоненты Android-приложений (активити / фрагмент / сервис / интент-фильтр)?
    • Как тестировать миграцию локальных данных?
    • В каком виде хранятся данные в мобильных приложениях локально?
    • Как происходит перехват трафика http/https для мобильных устройств?
    • Что такое режим разработчика Do not keep activities?
    • Назовите типы мобильных приложений
    • Объясните концепцию дизайна Appium
    • Как я могу запускать тесты Android без Appium?
    • Что нужно проверять при использовании сканера отпечатка/Face ID?
    • Как снять логи с AOS/IOS?
    • Что такое ADB?
    • Каков формат файлов сборок приложений для Android и iOS?
    • Какие версии Android нужно тестировать, если заказчик сказал поддерживать с версии 5.0?
    • Для чего используют browser capabilities, arguments и options?
    • Что такое Electron-based applications? Как использовать Selenium и Appium для их тестирования?
    • Что такое и чем отличаются виртуальная машина, симулятор и эмулятор?
  • Практические задания
    • Написать тестовые наборы данных для поля ввода даты, которое отсеивает юзеров в возрасте до 18 лет
    • Есть веб-приложение интернет-магазина (регистрация, логин, поиск товаров, корзина и покупки)....
    • У вас есть онлайн-калькулятор. Вы вводите 1+1 и получаете 3. Расскажите, как вы будете искать...
    • Есть веб-страница с полями e-mail, password и кнопкой submit. Предположим, что после нажатия кнопки
    • Сформулируйте негативные сценарии для POST-запроса, который создаёт нового пользователя.
    • Есть приложение типа мессенджера, пользователь заходит в чат и отсылает файл ...
    • Вам нужно сделать Regression Testing за два дня. Как вы это сделаете, если Regression Run охватывает
    • Вы тестируете логин-форму, вводите логин и пароль, нажимаете кнопку логин и ничего не происходит...
    • На что следует акцентировать внимание при автоматизации методов API? Что следует проверять?
    • Есть метод POST, который регистрирует нового пользователя на сайте, есть тело запроса, содержащее...
    • Написать предельные значения для ввода в форму оплаты товара на сайте.
    • Протестовать функционал банкомата с помощью техники State Transition Diagram.
    • Как проверить, что данные отправились на сервер, если у нас нет доступа к бэкенду?
    • Веб-страница с полями e-mail, password и кнопкой submit. Назовите отрицательные тест-кейсы
    • Что делать, если разработчик не соглашается, что указанный баг действительно является багом?
    • Как бы вы провели smoke-testing для приложения типа Telegram?
    • Поле username должно быть обязательным, но оно не является обязательным. Приведите пример баг-репорт
    • Как протестировать процесс оплаты в интернет-магазине?
  • Кодовые задачи
    • Нужно вернуть список, который состоит из элементов, общих для этих двух списков.
    • Что покажет код и как его исправить?
    • Последовательность Фиббоначи
    • Если даны две строки needle и haystack, верните индекс первого вхождения needle в haystack или -1,
    • Напишите программу, которая будет повторять слово, разделяя его указанным разделителем, определенное
    • Верните true, если любое значение встречается в массиве хотя бы дважды
    • Напишите функцию, которая переворачивает строку. Входная строка задана в виде массива символов s.
    • В непустом массиве целых чисел nums каждый элемент встречается дважды, кроме одного. Найдите этот ед
    • Дан массив натуральных чисел и его длина.
    • Дан словарь натуральных чисел и его длина.
    • Отсортируйте словарь по значению в порядке возрастания и убывания.
    • Напишите программу для слияния нескольких словарей в один.
    • Найдите три ключа с самыми высокими значениями в словаре
    • Реализуйте функцию convert(), принимающую числовое значение n и возвращающую строку вида "123456 ...
    • Реализуйте функцию merge(), получающую на вход два списка и возвращающую словарь, упорядоченный по
    • Напишите проверку на то, является ли строка палиндромом.
    • Вы принимаете от пользователя последовательность чисел, разделённых запятой. Составьте список и корт
    • Напишите программу, которая принимает имя файла и выводит его расширение. Если расширение у файла оп
    • При заданном целом числе n посчитайте n + nn + nnn.
    • Напишите программу, которая принимает два списка и выводит все элементы первого, которых нет во втор
    • Сложите цифры целого числа.
    • Посчитайте, сколько раз символ встречается в строке.
    • С помощью анонимной функции извлеките из списка числа, делимые на 15.
    • Нужно проверить, все ли числа в последовательности уникальны.
    • Напишите программу, которая принимает текст и выводит два слова: наиболее часто встречающееся и само
    • описать класс Car
Powered by GitBook
On this page

Was this helpful?

  1. Кодовые задачи

Что покажет код и как его исправить?

def extend_list(value, lst=[]):
    lst.append(value)
    return lst


list1 = extend_list(10) 
list2 = extend_list(123, [])
list3 = extend_list('a')

print(list1) # [10, 'a']
print(list2) # [123]
print(list3) # [10, 'a']

Данный код может привести к неожиданным результатам из-за того, что используется изменяемый объект (список) в качестве значения по умолчанию аргумента функции. Пустой список [] в определении функции extend_list становится общим для всех вызовов этой функции, что может привести к нежелательному поведению.

def extend_list(value, lst=None):
    if lst is None:
        lst = []
    lst.append(value)
    return lst

list1 = extend_list(10)
list2 = extend_list(123, [])
list3 = extend_list('a')

print(list1)  # Выведет: [10]
print(list2)  # Выведет: [123]
print(list3)  # Выведет: ['a']

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

PreviousНужно вернуть список, который состоит из элементов, общих для этих двух списков.NextПоследовательность Фиббоначи

Last updated 1 year ago

Was this helpful?