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. Основы программирования на Python

f-строки

F-строки (f-strings) - это механизм форматирования строк в Python, введенный в Python 3.6 и более поздних версиях. Они предоставляют удобный способ вставлять значения переменных и выражений непосредственно в строки, делая код более читаемым и экономя время на конкатенации строк и преобразовании данных в строки.

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

  1. Вставка значения переменной в строку:

name = "Alice"
age = 30
message = f"My name is {name} and I am {age} years old."
print(message)
# Результат: "My name is Alice and I am 30 years old."
  1. Вычисление выражения и вставка результата в строку:

x = 5
y = 3
result = f"The sum of {x} and {y} is {x + y}."
print(result)
# Результат: "The sum of 5 and 3 is 8."
  1. Использование методов объекта внутри f-строки:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        return f"Hello, my name is {self.name} and I am {self.age} years old."

alice = Person("Alice", 30)
message = alice.greet()
print(message)
# Результат: "Hello, my name is Alice and I am 30 years old."

F-строки делают код более читаемым и удобным для подстановки переменных и выражений в строки. Они являются мощным инструментом для форматирования строк и предоставляют более современный и удобный способ, чем старые методы форматирования, такие как оператор % или метод str.format().

PreviousОтличия reverse() от reversed(), sort() от sorted(), copy() от deepcopy()NextИзменяемые и неизменяемые типы данных

Last updated 1 year ago

Was this helpful?