Middle QA [95] Flashcards

1
Q

Назовите обязанности QA.

Теория

A
  • Планирование качества
  • Контроль качества (QC)
  • Управление качеством проекта
  • Аудит и оценка качества

Основные аспекты:

  • Планирование качества: Определение стандартов качества, которых должен достичь продукт, и разработка планов по их достижению.
  • Контроль качества (QC): Практические действия и процедуры, направленные на обнаружение дефектов в продукте или процессе. QC часто путают с QA, но контроль качества фокусируется на обнаружении и исправлении проблем, в то время как оно направлено на предотвращение их возникновения.
  • Управление качеством проекта: Включает в себя планирование, организацию, мониторинг и корректировку действий и процессов, чтобы обеспечить достижение требований к качеству.
  • Аудит и оценка качества: Регулярные проверки и оценки процессов и продуктов на соответствие установленным стандартам и требованиям.

https://easyoffer.ru/question/7831

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что знаете о тестировании нагрузки?
В каком случае следует проводить такое тестирование?
На каком этапе готовности продукта?

A

Тестирование нагрузки (Load Testing) - это процесс проверки производительности и стабильности системы при нагрузке, близкой к максимально возможной. Цель тестирования нагрузки - определить, как система реагирует на увеличение нагрузки и обеспечить ее способность эффективно обрабатывать ожидаемую рабочую нагрузку.

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

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

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

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

GPT-3.5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Что такое таблица решений/decision table и как ее можно использовать?

A

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

Какие возможны сценарии:
1. Правильный логин и правильный пароль.
2. Правильный логин, неправильный пароль.
3. Неправильный логин, правильный пароль.
4. Неправильный логин, неправильный пароль.

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

Однако, может быть так, что система выдает разные сообщения в зависимости от того, на каком этапе была допущена ошибка, скажем: invalid login, invalid password. Соответственно, групп потребуется больше, а таблица станет обширнее.

Этот метод хорош тем, что он показывает сразу все возможные сценарии в форме, понятной даже неспециалисту.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что может быть критериями запуска и завершения тестирования?

A

Критерии входа: Критерии входа содержат обязательные элементы, которые должны быть выполнены перед началом тестирования.
1. Выход билда для тестирования
2. 100% требований и мокапов утверждены и проверены

Критерии выхода: Критерии выхода определяют элементы, которые должны быть выполнены до завершения тестирования.
1. Выполнение более 80 % запланированных на итерацию тест-кейсов
2. Исправлено 100% критических багов
3. Автоматизированно 80% регрессионных тест-кейсов

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

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

A

Интеграция тестовой документации в проект является важным этапом в управлении тестированием и обеспечивает понимание требований к качеству продукта. Ниже представлены некоторые варианты интеграции тестовой документации в проект и инструменты для работы с ней:

  1. Использование систем управления тестированием: такие системы, как TestRail, Zephyr, HP ALM, позволяют управлять тестовой документацией, создавать тест-планы, запускать тесты, отслеживать результаты и формировать отчеты. Они обеспечивают централизованное хранение тестовой документации и улучшают процессы тестирования.
  2. Использование инструментов тест-менеджмента в рамках CI/CD пайплайнов: интеграция тестовой документации в процессы непрерывной интеграции и развертывания (CI/CD) позволяет автоматизировать запуск тестов, отслеживать результаты и получать быструю обратную связь о качестве кода.
  3. Использование систем управления версиями и коллаборации: такие инструменты, как Git, GitLab, GitHub, позволяют хранить тестовую документацию вместе с кодовой базой проекта, следить за изменениями, проводить код-ревью и совместную работу над тестами.
  4. Использование шаблонов тестовых сценариев и документации: создание шаблонов для тестовых сценариев, тест-кейсов и другой тестовой документации упростит и стандартизирует процесс их создания. Шаблоны могут включать необходимую информацию, форматирование и структуру, что поможет улучшить понимание и использование тестовой документации.
  5. Создание вики-страниц и документации внутри проекта: использование вики-страниц или инструментов для совместной работы, таких как Confluence, Google Docs, Notion, позволяет создавать и хранить тестовую документацию внутри проекта, делиться ею с членами команды и обеспечивать доступ к актуальной информации.
  6. Использование специализированных инструментов для автоматизации тестирования: инструменты для автоматизации тестирования, такие как Selenium, JUnit, TestNG, PyTest, позволяют писать тесты в виде кода, что обеспечивает легкость поддержания, повторное использование и интеграцию тестов в процесс разработки.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Как организовать сквозное тестирование (e2e)?

A

Сквозное тестирование (End-to-end, E2E, Chain testing) — это вид тестирования, используемый для проверки программного обеспечения от начала до конца, а также его интеграцию с внешними интерфейсами. Цель сквозного тестирования состоит в проверке всего программного обеспечения на предмет зависимостей, целостности данных и связи с другими системами, интерфейсами и базами данных для проверки успешного выполнения полного производственного сценария.

Наряду с программной системой тестирование также обеспечивает проверку пакетной обработки и обработки данных из других вышестоящих и нижестоящих систем. Отсюда и название «End-to-End». Сквозное тестирование обычно проводится после функционального и системного тестирования. Для его проведения используются реальные данные и тестовая среда для имитации рабочего режима.

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

Процесс сквозного тестирования:
* Основные виды деятельности, связанные со сквозным тестированием:
* Изучение требований к сквозному тестированию;
* Настройка тестовой среды и требования к оборудованию/программному обеспечению;
* Описание всех процессов системы и ее подсистем;
* Описание ролей и ответственности для всех систем;
* Методология и стандарты тестирования;
* Сквозное отслеживание требований и разработка тест-кейсов;
* Входные и выходные данные для каждой системы.

https://habr.com/ru/companies/otus/articles/681066/

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Какие тест-кейсы можно сделать для тестирования баз данных?

A
  1. Проверка доступности базы данных: попытка подключиться к базе данных с помощью правильных и неправильных учетных данных.
  2. Проверка создания, обновления и удаления записей в базе данных.
  3. Тестирование уникальности ключей и индексов в базе данных.
  4. Проверка корректности запросов SQL, включая SELECT, INSERT, UPDATE, DELETE.
  5. Тестирование производительности базы данных: измерение времени выполнения запросов и загрузки данных.
  6. Проверка резервного копирования и восстановления базы данных.
  7. Тестирование совместимости базы данных с различными версиями операционных систем и других программ.
  8. Проверка безопасности базы данных: аутентификация, авторизация, шифрование данных.
  9. Тестирование масштабируемости базы данных: обработка большого объема данных и одновременных запросов.
  10. Проверка интеграции базы данных с другими системами и приложениями.

GPT-3.5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Приведите примеры подходов для тестирования локализации.

A

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

Примеры аспектов тестирования локализации:
1. Перевод интерфейса и документации: Проверка правильности перевода всех элементов интерфейса, сообщений об ошибках, справочной документации и т.д. Важно, чтобы перевод не только был грамматически правильным, но и соответствовал контексту использования.
2. Адаптация культурных особенностей: Учет культурных норм и ценностей. Например, изображения и цвета в интерфейсе должны быть приемлемы для культуры целевой локали.
3. Форматы данных: Валидация корректного отображения и обработки локальных форматов дат, времени, валют, адресов, телефонных номеров и пр.
4. Сортировка данных: Проверка корректности сортировки данных, учитывая особенности алфавита и правила сортировки в целевой локали.
5. Поддержка правильного отображения и ввода текста: Особенно это касается языков, использующих нелатинские алфавиты или имеющих особенности, такие как направление письма справа налево.

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

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

https://easyoffer.ru/question/7814

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Что такое A/B тестирование?

A

A/B тестирование - это метод маркетингового исследования, с помощью которого две (или более) версии веб-страницы, приложения или другого продукта сравниваются непосредственно друг с другом. Один и тот же пользовательский контингент разделяется на две группы: контрольную (A) и экспериментальную (B). Группа A видит оригинальную версию продукта, в то время как группа B видит модифицированную версию. После этого собираются данные о поведении пользователей и производятся статистические анализы для определения того, какая версия дала лучший результат.

A/B тестирование позволяет определить, какие изменения в продукте приводят к улучшению конверсии, увеличению продаж или другим ключевым показателям. Оно также позволяет снять сомнения относительно дизайна, контента или других элементов продукта, основанные на данных и фактах, а не на предположениях.

GPT-3.5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Что такое mock/stub?Какие знаете инструменты для работы с ними?

A

Mock на английском значит «имитация», «подделка». Принцип его работы простой: если нужно тестировать функцию, то всё, что не относится к ней самой (например, чтение с диска или из сети), можно подменить макетами-пустышками. При этом тестируемые функции не нужно адаптировать для тестов: Mock подменяет объекты в других модулях, даже если код не принимает их в виде параметров. То есть, тестировать можно вообще без адаптации под тесты.

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

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

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

Некоторые инструменты для работы с mock и stub в Python:
1. unittest.mock (встроенный модуль в стандартную библиотеку Python) - используется для создания mock-объектов для тестирования.
2. pytest-mock - плагин для pytest, который предоставляет удобные возможности для создания mock-объектов.
3. MagicMock - класс из модуля unittest.mock, который позволяет создавать mock-объекты с помощью удобного API.
4. patch - декоратор из модуля unittest.mock, который позволяет подменять импортированные объекты в тестируемом коде на mock-объекты.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Когда необходимо использовать технику Pairwise?

A

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

Pairwise тестирование применяется в следующих случаях:
1. Когда есть большое количество параметров, которые взаимодействуют друг с другом, и тестирование всех комбинаций является непрактичным.
2. Когда важно обнаружить дефекты, связанные с взаимодействием различных параметров (например, конфликты в настройках, неправильное поведение при определенных комбинациях параметров).
3. Когда необходимо оптимизировать процесс тестирования, уменьшив количество тестов, но сохраняя при этом покрытие всех возможных комбинаций параметров.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Что такое fuzz-тестирование и где его используют?

A

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

Fuzz-тестирование используют в следующих случаях:
1. В области кибербезопасности - для поиска и исправления уязвимостей в программном обеспечении, таких как буферные переполнения, ошибки в обработке данных и другие виды атак.
2. В тестировании сетевых протоколов - для проверки корректности работы протоколов, анализа их устойчивости к некорректным или манипулированным данным.
3. В разработке и тестировании встраиваемого программного обеспечения - для проверки работы в различных условиях и обработки разнообразных входных данных.
4. В тестировании API и веб-приложений - для проверки надежности приложений, исследования возможных слабых мест и обнаружения ошибок в обработке входных данных.

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

GPT-3.5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Что такое Regexp?

A

Regexp (Regular Expressions) - это последовательность символов, которая определяет шаблон поиска и сопоставления строк в тексте. Regexp представляют собой мощный инструмент для работы с текстовыми данными, позволяя осуществлять гибкий и эффективный поиск, сопоставление, фильтрацию и замену строк.

С помощью Regexp можно создавать шаблоны, которые могут содержать символы-джокеры (wildcards), специальные символы и квантификаторы для определения структуры и формата строки, которую нужно найти или изменить. Например, можно использовать Regexp для поиска email-адресов, url-ссылок, номеров телефонов, дат, различных форматов текста и т.д.

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

GPT-3.5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Как меняется стоимость дефекта при тестировании программного обеспечения?

A

Стоимость дефекта при тестировании программного обеспечения может изменяться в зависимости от этапа, на котором дефект был обнаружен и исправлен. Общепринято, что чем позже дефект обнаружен и исправлен, тем выше его стоимость. Вот некоторые основные принципы изменения стоимости дефекта при тестировании ПО:

  1. На ранних этапах жизненного цикла разработки и тестирования стоимость дефекта обычно невелика, так как обнаружение и исправление дефекта на этом этапе занимают меньше времени и ресурсов.
  2. Стоимость дефекта начинает возрастать по мере продвижения по жизненному циклу разработки: на этапе тестирования, во время эксплуатации и после выпуска продукта.
  3. На этапе тестирования стоимость дефекта может увеличиться из-за необходимости проведения дополнительных тестов, перепроектирования функционала или увеличения объема работ по исправлению дефекта.
  4. Стоимость дефекта для пользователя конечного продукта становится наивысшей, так как обнаружение и исправление проблемы после выпуска программы требует значительных ресурсов, времени и может негативно повлиять на репутацию компании.

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

GPT-3.5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Каковы пути анализа бизнеса клиента?Как определить целесообразность того или иного функционала?

A

Для анализа бизнеса клиента и определения целесообразности функционала необходимо провести следующие шаги:

  1. Проведение исследования рынка и конкурентов: изучение спроса, текущих тенденций на рынке, анализ конкурентов и их предложений поможет понять, какие функциональные возможности будут востребованы у клиентов.
  2. Проведение анализа потребностей и целей клиента: необходимо определить основные потребности и цели клиентов, выявить их ожидания от продукта или услуги. Это поможет сфокусироваться на том функционале, который действительно будет ценен для клиентов.
  3. Создание пользующих функций: определение функционала, который принесет максимальную пользу пользователям и повысит их удовлетворение от продукта или услуги.
  4. Оценка стоимости и рисков: анализ ожидаемого дохода от функционала и его стоимости, а также оценка возможных рисков помогут определить целесообразность внедрения функционала.
  5. Проведение тестов и сбор обратной связи: внедрение функционала в тестовое окружение и сбор обратной связи от пользователей поможет понять, насколько функционал действительно ценен и эффективен для клиентов.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Назовите последовательность выполнения CI/CD процесса на проекте.

A

CI/CD (Continuous Integration/Continuous Delivery) - это методология разработки программного обеспечения, которая включает в себя автоматизацию процессов интеграции кода, тестирования и развертывания приложения. Ниже представлена общая последовательность выполнения CI/CD процесса на проекте:

  1. Написание кода: Разработчики пишут код для новых функций или улучшения существующего функционала.
  2. Контроль версий: Код хранится в системе контроля версий, такой как Git, и обновляется при необходимости.
  3. Очистка кода и коммит: Разработчики проводят код-ревью, вносят необходимые исправления и комитят изменения в репозиторий.
  4. Запуск CI пайплайна: При каждом коммите кода запускается процесс непрерывной интеграции (CI) - автоматический запуск сборки, тестирования кода, статических анализаторов и других проверок.
  5. Автоматическое тестирование: Выполняются автоматизированные тесты, включая модульные тесты, интеграционные тесты, сквозные тесты и другие виды тестирования.
  6. Статический анализ кода: Производится анализ кода на наличие ошибок, стилевых нарушений и других потенциальных проблем.
  7. Запуск CD пайплайна: После успешного завершения CI процесса, начинается процесс Continious delivery/integration (CD) - автоматизированное развертывание приложения в тестовом или предпродуктивном окружении.
  8. Тестирование в окружении: Проводятся функциональные тесты, интеграционные тесты и другие виды тестирования в новом окружении для проверки работоспособности системы в целом.
  9. Ручное тестирование: Проводится вручную тестирование для проверки работы приложения на предмет пользовательского опыта и других факторов, которые могут быть протестированы только вручную.
  10. Утверждение версии: После успешного прохождения всех этапов тестирования и проверок, версия приложения утверждается для релиза.
  11. Релиз: Проводится автоматическое или ручное развертывание приложения в продуктивное окружение.
  12. Мониторинг и обратная связь: После релиза проводится мониторинг работоспособности системы и сбор обратной связи от пользователей для последующей аналитики и улучшения процесса разработки.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Какое должно быть процентное соотношение между положительным и отрицательным тестированием на проекте?

A

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

  1. Положительное тестирование (positive testing): при положительном тестировании проверяется корректность работы приложения при вводе правильных данных и ожидаемое поведение системы. Обычно доля положительного тестирования на проекте составляет примерно 70-80%.
  2. Отрицательное тестирование (negative testing): отрицательное тестирование подразумевает проверку реакции системы на некорректные данные или нестандартные сценарии. Доля отрицательного тестирования на проекте обычно составляет около 20-30%.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Какой вид тестирования более целесообразно проводить до релиза?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Есть ли разница между bug leakage и bug release?

A

Да, есть разница между терминами “bug leakage” и “bug release” в контексте тестирования программного обеспечения:

  1. Bug Leakage (утечка дефектов) - это ситуация, когда дефекты или ошибки не были обнаружены и исправлены в процессе тестирования, и они “утекают” в продукционную среду. Это означает, что дефект прошел через все этапы разработки, тестирования, контроля качества и был обнаружен конечным пользователем. Bug Leakage указывает на недостаточное покрытие тестирования, недостаточное качество тестирования или возможные проблемы в процессе разработки.
  2. Bug Release (выпуск дефекта) - это процесс, когда дефект обнаружен и зафиксирован, но выпущен в продукционную среду без исправления. Это может произойти из-за планирования релиза, отсутствия времени на исправление дефекта, недооценки важности дефекта или других причин. Bug Release указывает на неустойчивость или недостатки процесса управления ошибками.

Таким образом, разница между bug leakage и bug release заключается в том, что bug leakage связан с недостатками тестирования, которые позволяют дефектам “утекать” в продукционную среду, в то время как bug release означает выпуск дефекта в продакшен без исправления. Для успешного управления дефектами и обеспечения качества ПО необходимо разработать эффективные стратегии обнаружения, исправления и предотвращения ошибок, а также непрерывно улучшать процессы тестирования и контроля качества, чтобы минимизировать риски bug leakage и bug release в процессе разработки программного обеспечения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Может ли быть ситуация, когда критерии завершения (exit criteria) не выполнены?Что должно происходить в этом случае?

A

Да, ситуация, когда критерии завершения (exit criteria) не выполнены, может возникнуть в процессе тестирования проекта. Критерии завершения обычно определяются заранее и описывают условия, которые должны быть выполнены, чтобы считать этап тестирования завершенным успешно. Если критерии завершения не выполнены, это может указывать на недостаточное качество продукта или тестирования.

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

  1. Анализ причин: Изучить причины, по которым критерии завершения не были выполнены. Это может быть вызвано ошибками в процессе разработки, неэффективными тестами, изменениями требований и другими факторами.
  2. Корректировка плана тестирования: Пересмотреть и корректировать план тестирования, учитывая выявленные недостатки и проблемы, чтобы улучшить качество тестов и обеспечить выполнение критериев завершения.
  3. Дополнительное тестирование: Провести дополнительные тесты для устранения недостатков и проверки соответствия критериям завершения. Это может включать разработку новых тестов, повторное тестирование или углубленное исследование проблем.
  4. Коммуникация с командой разработки: Уведомить команду разработки о не выполнении критериев завершения, обсудить причины и совместно найти решения: Работа с командой разработки для поиска решений проблемы и предложения методов улучшения процесса разработки и тестирования, чтобы избежать подобных ситуаций в будущем.
  5. Отчетность и отслеживание: Следить за выполнением плана действий по исправлению проблемы, отслеживать прогресс и состояние исправлений. Важно регулярно сообщать стейкхолдерам о текущем состоянии и демонстрировать продвижение в решении проблемы.
  6. Повторный анализ: После внесения коррективов и дополнительного тестирования провести повторный анализ, чтобы убедиться, что критерии завершения в конечном итоге будут выполнены.

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

GPT-3.5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Что мы должны покрывать тест-кейсами, а что считается избыточными затратами времени и денег?Когда нецелесообразно писать тест-кейсы?

A

То, что стоит покрывать тест-кейсами:
1. Критически важные функции: Тестирование основных и критически важных функций приложения.
2. Чаще всего используемые сценарии: Тестирование наиболее часто используемых сценариев пользователей.
3. Регрессионное тестирование: Тестирование для обеспечения сохранения корректности приложения после внесения изменений.
4. Проверка функциональности: Проверка функциональности, обработка ошибок и граничные случаи.

Что может считаться избыточным и нецелесообразным:
1. Избыточное покрытие: Написание слишком многих тест-кейсов для одного и того же функционала.
2. Неправильное приоритизирование: Тестирование менее значимых функций, которые редко используются.
3. Дублирование тестов: Написание повторяющихся тест-кейсов, проверяющих один и тот же функционал.
4. Тесты на незначимые детали: Тестирование незначительных или маловероятных кейсов использования, которые не влияют на ключевую функциональность приложения.
5. Тестирование тривиальных сценариев: Тестирование очевидных и простых сценариев, где результаты предсказуемы и маловероятно появление ошибок.
6. Тестирование в неосведомленности: Написание тест-кейсов без обширного понимания специфики продукта, требований и основных потребностей пользователей.

Когда нецелесообразно писать тест-кейсы:
1. При недостаточности времени и ресурсов: В случаях, когда у проекта ограниченные сроки и бюджет, стоит концентрировать усилия на более важных аспектах тестирования.
2. Для малозначительных или временных продуктов: Для прототипов, временных проектов или небольших экспериментальных продуктов может быть излишне тратить время на разработку тест-кейсов.
3. При необходимости автоматизации: Возможно, при автоматизации тестирования некоторые ручные тест-кейсы могут быть излишними, особенно если они не критически значимы. При этом, следует приоритизировать автоматизацию критически важных тестов.

GPT-3.5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Для какого функционала труднее всего написать тест-кейсы?

A

Написание тест-кейсов может быть сложным и трудоемким процессом, особенно для следующих видов функционала:

  1. Сложная логика бизнес-процессов: Когда бизнес-процессы в приложении имеют высокую степень сложности, интеграции между различными системами или вовлекают множество действий и промежуточных состояний, написание тест-кейсов для такого функционала может быть сложным из-за необходимости покрыть все возможные сценарии использования.
  2. Взаимодействие с внешними системами: Тестирование функционала, который взаимодействует с внешними API, веб-сервисами, базами данных или другими сторонними системами, может создать сложности из-за необходимости учитывать различные варианты ответов и сценарии взаимодействия.
  3. Графический пользовательский интерфейс (GUI): Написание тест-кейсов для сложных пользовательских интерфейсов с множеством элементов, динамическими контроллами, сложной структурой и визуальным поведением может быть трудной задачей из-за необходимости учесть различные состояния интерфейса и пользовательские действия.
  4. Многоплатформенное и кросс-браузерное тестирование: Если продукт поддерживает работу на разных платформах (Windows, macOS, Linux) или браузерах (Chrome, Firefox, Safari, IE), написание тест-кейсов для обеспечения совместимости и корректной работы на всех платформах может быть сложным из-за необходимости убедиться, что все функциональные возможности работают корректно на каждой из платформ.
  5. Тестирование масштабируемости и производительности: Проведение тестирования на масштабируемость приложения и его производительность в условиях различных нагрузок и объемов данных может быть сложным из-за необходимости моделировать и тестировать различные сценарии и объемы данных для обеспечения стабильной работы системы в условиях роста нагрузки.
  6. Тестирование безопасности: Написание тест-кейсов для проверки безопасности приложения может быть сложным из-за необходимости покрыть различные аспекты безопасности, такие как проверка защищенности передачи данных, аутентификация и авторизация, защита от внедрения вредоносного кода и многие другие аспекты безопасности.

Claude 3

  1. Непредсказуемое или случайное поведение: Функционал, который включает в себя элементы случайности, непредсказуемости или зависит от внешних факторов (например, генерация случайных чисел, динамическое ценообразование, рекомендательные системы), может быть трудно протестировать из-за сложности воспроизведения и проверки ожидаемых результатов.
  2. Обработка ошибок и исключений: Тестирование различных сценариев ошибок, граничных значений, некорректных входных данных и обработки исключений может быть трудоемким процессом, требующим продумывания множества возможных вариантов и комбинаций.
  3. Асинхронные и параллельные операции: Функционал, который включает асинхронные операции, многопоточность или параллельную обработку данных, может быть сложно протестировать из-за необходимости учитывать различные сценарии выполнения, синхронизацию и возможные состояния гонки (race conditions).
  4. Интеграция с устаревшими или недокументированными системами: Если приложение интегрируется с устаревшими системами, для которых отсутствует полная документация или поддержка, написание тест-кейсов может быть затруднено из-за недостатка информации о поведении и ограничениях этих систем.
  5. Функционал, зависящий от времени или расписания: Тестирование функционала, который зависит от определенных временных интервалов, расписаний или периодических событий (например, ежедневные отчеты, уведомления, автоматические операции), может быть сложным из-за необходимости настройки тестовой среды для имитации временных условий и обеспечения корректности результатов в зависимости от времени.
  6. Функционал, связанный с безопасностью и конфиденциальностью: Написание тест-кейсов для проверки механизмов безопасности, таких как шифрование данных, управление доступом, аутентификация и авторизация, может быть сложным процессом из-за необходимости учитывать различные сценарии атак, уязвимости и соответствие стандартам безопасности.
  7. Сложный пользовательский интерфейс с динамическим контентом: Тестирование пользовательского интерфейса, который включает динамически генерируемый контент, всплывающие окна, анимации или сложные взаимодействия, может быть трудоемким из-за необходимости учитывать различные состояния интерфейса и возможные варианты взаимодействия пользователя.
  8. Функционал, связанный с большими объемами данных: Тестирование функционала, который работает с большими объемами данных (например, импорт/экспорт данных, аналитические отчеты, обработка больших файлов), может быть сложным из-за необходимости подготовки тестовых данных, настройки тестовой среды и обеспечения корректности результатов при работе с большими наборами данных.
  9. Функционал, зависящий от сторонних сервисов: Если приложение использует сторонние сервисы или API (например, платежные системы, геолокационные сервисы, социальные сети), написание тест-кейсов может быть затруднено из-за необходимости учитывать возможные сбои, задержки или изменения в работе этих сервисов, а также необходимости настройки тестовой среды для имитации их поведения.
  10. Функционал, связанный с локализацией и интернационализацией: Тестирование приложения, которое поддерживает несколько языков и региональных настроек, может быть сложным из-за необходимости проверки корректности перевода, форматирования дат, чисел, валют, а также учета культурных особенностей и специфических требований для разных регионов.

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

  1. Функционал, связанный с аппаратным обеспечением: Если приложение взаимодействует с различными аппаратными устройствами (например, принтеры, сканеры, датчики, специализированное оборудование), написание тест-кейсов может быть сложным из-за необходимости учитывать различные конфигурации оборудования, драйверы и возможные сценарии сбоев.
  2. Функционал, связанный с искусственным интеллектом и машинным обучением: Тестирование систем, использующих алгоритмы искусственного интеллекта и машинного обучения, может быть особенно сложным из-за непредсказуемости результатов, необходимости проверки качества обучающих данных, а также оценки эффективности и корректности работы моделей машинного обучения.

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

GPT-3.5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Как посчитать Cyclomatic complexity?

A

Cyclomatic complexity (цикломатическая сложность) - это метрика, которая оценивает сложность кода путем подсчета количества независимых путей выполнения в коде. Высокая цикломатическая сложность может свидетельствовать о сложности кода, возможных ошибках и слабых местах в программе.

Для расчета цикломатической сложности используется формула, предложенная Томасом МакКейбом в 1976 году:

M = E - N + 2P,

где:

  • M - цикломатическая сложность,
  • E - количество рёбер (ветвей) в графе потока управления (развилки, циклы),
  • N - количество узлов (конечных точек) в графе потока управления,
  • P - количество компонент связности графа потока управления.

Шаги по расчету цикломатической сложности:

  1. Постройте граф потока управления для метода или функции. На графе узлы обозначают начало и окончание метода, а также управляющие структуры, такие как условные операторы и циклы.
  2. Подсчитайте количество рёбер (E) и узлов (N) на графе.
  3. Определите количество компонент связности (P) графа потока управления, то есть количество независимых путей выполнения.
  4. Подставьте значения E, N и P в формулу для вычисления цикломатической сложности по формуле M = E - N + 2P.

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

  • Mенее или равно 10: Низкая сложность, считается, что код легко поддается тестированию.
  • 11-20: Средняя сложность, вероятно, потребуется дополнительное тестирование для полного охвата всех ветвей.
  • Более 20: Высокая сложность, код достаточно сложен и может потребовать значительных усилий для тестирования.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

В чем основная разница между defect detection percentage и defect removal efficiency?

A

Defect Detection Percentage (DDP) и Defect Removal Efficiency (DRE) - это две различные метрики, используемые в области тестирования программного обеспечения для оценки эффективности процесса тестирования и управления качеством. Вот основные различия между ними:

  1. Defect Detection Percentage (DDP):
    - DDP измеряет процент дефектов, обнаруженных на определенном этапе жизненного цикла разработки или тестирования.
    - Эта метрика показывает долю всех дефектов, обнаруженных на конкретном этапе (например, во время тестирования), относительно общего количества дефектов, выявленных за всё время разработки.
    - DDP помогает оценить эффективность процесса тестирования и обнаружения дефектов на конкретном этапе.
  2. Defect Removal Efficiency (DRE):
    - DRE измеряет процент дефектов, которые были успешно исправлены и удалены из продукта, относительно общего количества дефектов, обнаруженных в продукте.
    - Эта метрика показывает эффективность процесса исправления дефектов и удаления их из продукта.
    - DRE помогает оценить качество процесса исправления дефектов и поддержания продукта без ошибок.

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

GPT-3.5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Какие модели risk-based testing вы знаете?

A

Тестирование рисков (Risk-Based Testing) — это подход к тестированию ПО, при котором приоритеты в тестировании устанавливаются на основе оценки рисков. Это означает, что внимание и ресурсы сосредотачиваются прежде всего на тех частях системы, которые несут наибольший риск возникновения серьёзных проблем или ошибок, влияющих на работоспособность продукта и удовлетворённость пользователя. Подход позволяет оптимизировать процесс тестирования, обеспечивая наибольшую эффективность при ограниченных ресурсах.

Основные этапы:

  1. Идентификация рисков: Определение потенциальных угроз для проекта, которые могут включать технические аспекты (например, сложность реализации определённой функции), а также факторы, связанные с бизнес-целями (например, важность функции для клиента).
  2. Анализ и оценка рисков: Оценка вероятности возникновения каждого риска и степени его воздействия на проект. Это помогает определить приоритеты для тестирования.
  3. Планирование тестирования: Разработка стратегии и плана тестирования, в котором тест-кейсы распределяются с учётом установленных приоритетов риска.
  4. Выполнение тестирования: Тестирование программного обеспечения с акцентом на области, представляющие наибольший риск.
  5. Мониторинг и контроль: Отслеживание процесса тестирования и внесение корректировок в план в соответствии с изменениями в проекте и повторной оценкой рисков.
  6. Анализ результатов: Оценка результатов тестирования и определение, как риски были снижены до приемлемого уровня.

Преимущества:

Фокус на критически важных аспектах: Тестирование сосредотачивается на наиболее важных с точки зрения бизнеса и технической сложности функциях.
Эффективное использование ресурсов: Ресурсы для тестирования распределяются таким образом, чтобы максимизировать покрытие наиболее рискованных областей при ограниченных времени и бюджете.
Улучшение качества продукта: Снижение рисков, связанных с программным обеспечением, ведёт к повышению общего качества продукта.
Повышение удовлетворённости клиентов: Защита от потенциальных проблем, которые могли бы наиболее негативно сказаться на пользовательском опыте.
Тестирование рисков требует тщательной подготовки и глубокого понимания как бизнес-целей проекта, так и технических аспектов программного обеспечения. Это позволяет оптимизировать процесс тестирования и обеспечивает создание качественного продукта, соответствующего ожиданиям клиентов.

https://easyoffer.ru/question/7932

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Что такое тестирование API?Какими инструментами пользуются для его выполнения?

A

API тестирование — это процесс проверки Application Programming Interfaces (APIs) на корректность работы, безопасность, производительность и надежность. Он представляет собой набор определений и протоколов для создания и интеграции программного обеспечения, позволяя различным приложениям взаимодействовать друг с другом без необходимости знать детали их реализации.

Основные аспекты:

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

Преимущества:

Раннее обнаружение ошибок: Данное тестирование позволяет идентифицировать проблемы на раннем этапе разработки, что упрощает и удешевляет их исправление.
Автоматизация: Большинство таких тестов можно автоматизировать, что ускоряет процессы тестирования и повышает их эффективность.
Языконезависимость: Может проводиться независимо от языка программирования приложения, так как API предоставляет стандартизированный интерфейс доступа.
Точное тестирование: Позволяет точно проверить бизнес-логику приложения, минуя пользовательский интерфейс.

Существует множество инструментов для автоматизации тестирования API, включая:

Postman: Для его разработки и тестирования, поддерживающий множество функций для отправки запросов и анализа ответов.
SoapUI: Для тестирования веб-сервисов, поддерживающий как REST, так и SOAP API.
Swagger или OpenAPI: Для его документирования, которые также могут быть использованы для создания живых интерфейсов для тестирования.
Apache JMeter: Для тестирования производительности, который также может быть использован для функционального тестирования API.
API тестирование является ключевой частью обеспечения качества программного обеспечения, позволяя гарантировать, что интерфейсы, через которые взаимодействуют различные части системы или разные системы, работают корректно и надежно.

https://easyoffer.ru/question/7854

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Какая разница между Scrum и Kanban?

A

Scrum и Kanban — это две популярные гибкие (Agile) методологии управления проектами, применяемые для оптимизации процесса разработки продукта и повышения его эффективности. Несмотря на общую цель улучшения гибкости и адаптивности процессов, эти методологии имеют ряд ключевых различий:

Scrum

  • Итерационный подход: Разбивает процесс разработки на фиксированные временные интервалы, называемые спринтами (обычно от 2 до 4 недель), в конце каждого из которых команда должна предоставить потенциально готовый продукт.
  • Роли: В нем определены специфические роли: Скрам-мастер (Scrum Master), Владелец Продукта (Product Owner) и Команда разработки (Development Team).
  • События: Предусматривает регулярные события, такие как Планирование Спринта (Sprint Planning), Ежедневный Скрам (Daily Scrum), Обзор Спринта (Sprint Review) и Ретроспектива Спринта (Sprint Retrospective).
  • Артефакты: Ключевые артефакты в Scrum включают Бэклог Продукта (Product Backlog), Бэклог Спринта (Sprint Backlog) и Инкремент (Increment).

Kanban

  • Непрерывный поток: В отличие от итерационного подхода Scrum, он сосредоточен на непрерывном потоке задач через различные стадии процесса разработки. Это позволяет команде более гибко реагировать на изменения.
  • Визуализация работы: Основной инструмент управления в Kanban — это доска Kanban, которая визуализирует весь рабочий процесс и задачи на разных этапах выполнения.
  • Ограничение количества работ в процессе: Он вводит ограничения на количество задач, которые могут находиться на каждом этапе процесса одновременно (WIP-лимиты), что помогает улучшить фокус и снизить время выполнения задач.
  • Без строгих ролей и событий: Он менее формален по сравнению со Scrum и не предписывает строгих ролей и регулярных событий.

Основные различия

  • Структура и гибкость: Scrum предлагает более структурированный подход с чёткими ролями и регулярными событиями, в то время как Kanban обеспечивает большую гибкость без строгих временных рамок и специфических ролей.
  • Подход к планированию: Scrum делит проект на спринты с фиксированными целями и длительностью, тогда как Kanban фокусируется на непрерывном потоке работ и позволяет изменять приоритеты задач в любой момент.
  • Ограничения и оптимизация процесса: Kanban акцентирует внимание на ограничении количества задач в работе и оптимизации существующих процессов, в то время как Scrum стремится к постоянному улучшению через ретроспективу и адаптацию процессов разработки.
  • Выбор между Scrum и Kanban зависит от специфики проекта, готовности команды к определённой степени формализации, а также от текущих бизнес-целей и задач. В некоторых случаях команды могут сочетать элементы обеих методологий для создания гибридного подхода, который лучше всего отвечает их нуждам.

https://easyoffer.ru/question/7891

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Что такое performance testing?Какими инструментами пользуются для его выполнения?

A

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

Для выполнения Performance testing используются различные инструменты и программное обеспечение, предназначенные для нагрузочного тестирования, стресс-тестирования, тестирования производительности и масштабируемости системы. Некоторые из популярных инструментов для выполнения Performance testing включают:

  1. Apache JMeter: Мощный инструмент с открытым исходным кодом для проведения нагрузочного тестирования и анализа производительности веб-приложений и сервисов.
  2. LoadRunner: Коммерческое решение HP для проведения нагрузочного тестирования и анализа производительности веб-приложений, мобильных приложений, серверов и других компонентов систем.
  3. Gatling: Инструмент с открытым исходным кодом для проведения стресс-тестирования, нагрузочного тестирования и анализа производительности веб-приложений.
  4. Apache Benchmark (ab): Утилита командной строки для Apache для проведения простых Load testing и оценки производительности веб-серверов.
  5. WebLOAD: Комплексное коммерческое решение для проведения нагрузочного тестирования веб-приложений, мобильных приложений и API, а также для оценки производительности системы под различными условиями нагрузки.
  6. NeoLoad: Еще одно популярное коммерческое решение для проведения нагрузочного тестирования, стресс-тестирования и анализа производительности веб-приложений и серверов.
  7. Locust: Инструмент с открытым исходным кодом для проведения нагрузочного тестирования и анализа производительности веб-приложений с использованием Python.
  8. BlazeMeter: Облачное решение для проведения тестирования производительности, включая нагрузочное тестирование, стресс-тестирование и мониторинг в реальном времени.
  9. IBM Rational Performance Tester: Коммерческое решение для проведения нагрузочного тестирования и анализа производительности веб-приложений, серверов и других систем.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Что такое load и stress testing?Какими инструментами пользуются для их выполнения?

A

Load testing и stress testing - это два типа нагрузочного тестирования, которые используются для оценки производительности и устойчивости системы под разными уровнями нагрузки.

  1. Load testing (нагрузочное тестирование):
    Load testing проводится для оценки производительности системы при определенном уровне нагрузки, обычно близком к предполагаемой нагрузке в реальных условиях использования. Цель load testing - выявить, как система будет работать при нормальной или пиковой нагрузке, определить время отклика, пропускную способность, использование ресурсов и другие важные показатели.
  2. Stress testing (стресс-тестирование):
    Stress testing - это форма нагрузочного тестирования, которое проверяет стабильность системы при высоких нагрузках или в условиях, когда нагрузка превышает пределы, определенные для нормальной работы системы. Цель stress testing - определить пределы и устойчивость системы, выявить ее поведение при стереженных условиях и проверить способность восстановления после перегрузок.

Для проведения load и stress testing используются различные инструменты и программное обеспечение, включая:

  1. Apache JMeter: Мощный инструмент для проведения нагрузочного тестирования, включая load testing и stress testing.
  2. LoadRunner: Коммерческое решение HP для создания и проведения нагрузочных тестов различной сложности, включая stress testing.
  3. Gatling: Инструмент с открытым источником для проведения stress testing
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Что такое contract testing?

A

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

Что такое контрактное тестирование?
Контрактное тестирование – это метод, при котором каждое приложение проверяется отдельно для проверки точки интеграции. Другими словами, это процесс тестирования, который анализирует, следуют ли точки интеграции стандартному контракту или соглашению в высокораспределенной среде.

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

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

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

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

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

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

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

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

Преимущества контрактного тестирования

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

Вот некоторые из них:

  • Облегчает независимые релизы и уверенную непрерывную доставку.
  • Такие тесты выполняются быстро и требуют минимального обслуживания, что приводит к высокой рентабельности инвестиций. Поскольку разработчики могут легко и оперативно экспериментировать с различными тестами, понимать различные требования и определять конечные точки, это избавляет их от длительных процессов и многократного возвращения назад.
  • Еще одним фактором, способствующим высокой скорости, является возможность создания изолированной среды кодирования вместо развертывания среды разработки.
  • Контрактные тесты повторяемы и хорошо масштабируемы.
  • Потребители могут легко понять поведение сервиса с помощью макетов и тестов, которые облегчают обучение. Это также снижает затраты на инфраструктуру и эксплуатационные расходы. К тому же, поскольку старые версии сервисов всегда под рукой, тестирование новых улучшений не потребует дополнительных затрат.
  • Тесты могут запускаться на реальных и макетных системах для проверки соответствия ответов и сертифицирования совершенно новых контрактов.
  • Контрактное тестирование сокращает продолжительность цикла обратной связи, устраняя время ожидания результатов регрессии. Благодаря изолированной среде разработчики могут быстро обнаружить проблемы бизнес-процессов и функциональностьи.
  • Можно легко повторно использовать тестовые случаи и артефакты, что способствует ускорению сроков выполнения тестов для различных сценариев тестирования.
  • Перед отправкой кода контрактные тесты запускают на машинах разработчиков, чтобы выявить локальные ошибки.
  • Контрактное тестирование позволяет точно определить, какие поля интересуют пользователей, и удалить неиспользуемые. В результате добавление новых полей в API провайдера оказывается довольно простым и не затрагивает пользователя.

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

  • Потребитель: од потребителем обычно понимается клиент, который желает получать данные по контракту между двумя объектами. Этот компонент инициирует HTTP-запрос для другого компонента.
  • Поставщик: Под ним понимается организация, подобная API, предлагающая на сервере данные, необходимые клиенту. Провайдер отвечает за ответ на инициированный потребителем HTTP-запрос.
  • Файл контракта: Файл контракта – это файл, содержащий JSON-ответы и запросы в потребительских тестах в сериализованной форме.
  • Соглашение об оказании услуг: Это обязательство со стороны поставщика услуг, которое обещает возвращение определенного ответа, как только потребитель выполнит запрос.

Когда использовать контрактное тестирование?
Контрактное тестирование дает наилучшие результаты, когда тестировщики используют его в совместимых средах, таких как API. Конкретные зависимости и информация зависят от сервисов, которые следует искать после выполнения проверки на выполнимость. С его помощью тестируется точка интеграции между различными сервисами, такими как микросервисы, API и т.д.

Наиболее распространенные варианты его использования включают:

  • Мониторинг рабочего процесса потребителя на предмет нарушений.
  • Определение наличия ошибок или дефектов в конфигурации сервиса.
  • Поддержание безопасности соединений даже при изменении конфигурации сервиса производителем.

Типы контрактного тестирования
Существует два основных типа контрактных тестов – тесты, ориентированные на потребителя, и тесты, ориентированные на поставщика. Давайте рассмотрим оба типа.

  • Ориентированные на потребителя (Consumer-driven): Под этим понимается паттерн, в котором тестируются только те части коммуникации, которые реально использует потребитель. То есть поведение поставщика, не используемое текущими потребителями, может изменяться, не вызывая никаких сбоев в тестах.
  • Управляемые поставщиком(Provider-driven): Подразумевает использование метода в контексте приложения одного поставщика, а не интеграции. В этом случае под контрактным тестированием обычно понимается процесс, обеспечивающий соответствие поведения поставщика хорошо документированному контракту. Например, это может быть документ OpenAPI.

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

https://qarocks.ru/contract-testing-tutorial/

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Расскажите о ритуалах, ценностях и ролях в Scrum.

A

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

Ритуалы Scrum включают в себя:

  1. Спринт (Sprint): это фиксированный временной интервал (обычно от 1 до 4 недель), в течение которого команда работает над определенным объемом работы.
  2. Планирование спринта (Sprint Planning): совместное собрание команды для определения целей и задач, которые будут выполнены в течение спринта.
  3. Каждодневное стендап-собрание (Daily Standup): короткое ежедневное совещание, где каждый член команды отчитывается о своем прогрессе, проблемах и планах на день.
  4. Обзор спринта (Sprint Review): совместное собрание команды и заказчика для демонстрации выполненной работы и обсуждения результатов.
  5. Ретроспектива спринта (Sprint Retrospective): совместное собрание команды для обсуждения прошлого спринта, выявления проблем и поиска способов улучшения процесса.

Ценности Scrum включают в себя:

  1. Прозрачность: все участники команды должны быть открытыми и честными друг с другом.
  2. Инспекция: команда должна регулярно проверять свой прогресс и результаты работы.
  3. Адаптация: команда должна быть готова к изменениям и быстро реагировать на новые обстоятельства.

Роли Scrum включают в себя:

  1. Product Owner: ответственный за определение требований к продукту и приоритизацию задач.
  2. Scrum Master: ответственный за поддержку команды в применении методологии Scrum и устранение препятствий.
  3. Разработчики (Developers): члены команды, ответственные за выполнение задач и достижение целей спринта.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Как выбор методологии может отразиться на качестве разработки?

A

Выбор методологии разработки может значительно повлиять на качество процесса и результата разработки. Вот несколько способов, как различные методологии могут отразиться на качестве разработки:

  1. Agile методологии, такие как Scrum или Kanban, обеспечивают гибкость и адаптивность в процессе разработки. Это позволяет команде быстро реагировать на изменения требований или обстоятельств, что способствует созданию более качественного продукта.
  2. Waterfall методология, хотя она менее гибкая, может быть полезна в случаях, когда требования к продукту четко определены и стабильны. Это может способствовать более строгому контролю над процессом разработки и уменьшению рисков.
  3. Lean методология направлена на минимизацию потерь и оптимизацию процесса разработки. Это может привести к улучшению качества продукта за счет постоянной оптимизации процесса и устранения ненужных действий.
  4. DevOps методология объединяет разработку и операции, что способствует улучшению качества продукта за счет автоматизации тестирования, развертывания и мониторинга.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Нулевой спринт в Scrum.Для тестирования есть задание под названием «Настройка среды».Что здесь нужно делать?

A

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

Задание “Настройка среды” в нулевом спринте обычно включает в себя следующие шаги:

  1. Установка и настройка необходимых инструментов разработки и тестирования, таких как IDE (среда разработки), система управления версиями кода, средства автоматизации тестирования и т.д.
  2. Создание рабочих окружений для команды разработчиков и тестировщиков, включая настройку доступов, установку необходимого софта и т.д.
  3. Подготовка тестовых данных и сред для проведения тестирования, включая базы данных, тестовые сценарии и т.д.
  4. Определение процессов работы команды, установка правил и ролей в проекте, обучение команды основам методологии Scrum и других необходимых аспектов.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

Расскажите, как вы будете строить и внедрять стратегию автоматизации тестирования.

Selenium

A

Пиздец

https://youtu.be/Q9Q-JhgogTM

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

Как взаимодействуют клиентская библиотека Selenium, драйвер браузера и сам браузер?

Selenium

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Для чего используют browser capabilities, arguments и options?

Selenium

A

Browser capabilities, arguments и options в Selenium используются для настройки и управления поведением браузера при выполнении автоматизированных тестов. Давайте рассмотрим каждый из них:

  1. Browser capabilities (возможности браузера): это набор параметров и свойств, которые определяют характеристики браузера, такие как версия, операционная система, разрешение экрана, поддерживаемые технологии и т.д. Browser capabilities позволяют указать требуемые характеристики браузера для запуска тестов.
  2. Browser arguments (аргументы браузера): это дополнительные параметры командной строки, которые передаются при запуске браузера. С помощью browser arguments можно настроить различные параметры браузера, такие как отключение уведомлений, блокировка изображений, изменение языка интерфейса и т.д.
  3. Browser options (опции браузера): это специфические настройки браузера, которые позволяют управлять его поведением во время выполнения тестов. Например, с помощью browser options можно задать параметры загрузки страницы, управлять кэшированием, установить размер окна браузера и т.д.

Использование browser capabilities, arguments и options в Selenium позволяет точно настроить окружение выполнения тестов, что помогает обеспечить стабильность и надежность автоматизированных тестов на различных конфигурациях браузеров и операционных систем.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

Что такое iframe и как с ним работать в Selenium?

Selenium

A

Iframe (Inline Frame) - это HTML-элемент, который позволяет встраивать один HTML-документ в другой. Если на веб-странице присутствует iframe, то содержимое iframe будет загружаться внутри основного документа.

Для работы с iframe в Selenium необходимо выполнить следующие шаги:

  1. Найти iframe элемент с помощью метода find_element_by_tag_name(“iframe”) или других методов поиска элементов.
  2. Переключиться на контекст iframe с помощью метода switch_to.frame(iframe_element), где iframe_element - найденный элемент iframe.
  3. После выполнения действий внутри iframe, переключиться обратно на основной контекст страницы с помощью метода switch_to.default_content().

Пример работы с iframe в Selenium Python:
~~~
from selenium import webdriver

driver = webdriver.Chrome()
driver.get(“https://www.example.com”)

Найти iframe элемент
iframe = driver.find_element_by_tag_name(“iframe”)

Переключиться на контекст iframe
driver.switch_to.frame(iframe)

Выполнить действия внутри iframe
element_inside_iframe = driver.find_element_by_id(“element_id”)
element_inside_iframe.click()

Переключиться обратно на основной контекст страницы
driver.switch_to.default_content()

driver.quit()
~~~

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

Как обрабатывать браузерные сообщения (alerts)?

Selenium

A

Браузерные сообщения, такие как alert, confirm и prompt, могут появляться на веб-страницах для запроса подтверждения действия пользователя или ввода данных. Selenium предоставляет специальные методы для работы с этими браузерными сообщениями.

Для обработки браузерных сообщений в Selenium Python используются следующие методы:

  1. switch_to.alert - этот метод позволяет переключиться на активное браузерное сообщение.
  2. alert.text - с помощью этого метода можно получить текст сообщения.
  3. alert.accept() - метод для подтверждения (нажатия на кнопку “OK”) браузерного сообщения.
  4. alert.dismiss() - метод для отклонения (нажатия на кнопку “Cancel”) браузерного сообщения.
  5. alert.send_keys(text) - метод для ввода текста в поле браузерного сообщения (только для prompt).

Пример обработки браузерного сообщения типа alert в Selenium Python:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.example.com")

Нажать на кнопку, которая вызывает браузерное сообщение
button = driver.find_element_by_id("alert_button")
button.click()

Переключиться на активное браузерное сообщение
alert = driver.switch_to.alert

Получить текст сообщения и вывести его
print(alert.text)

Подтвердить браузерное сообщение (нажать "OK")
alert.accept()

driver.quit()

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

В selene:
browser.driver().switch_to.alert.accept()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

Что такое Appium?

Selenium

A

Appium - это бесплатный и открытый инструмент для автоматизации тестирования мобильных приложений на различных платформах, таких как iOS, Android и Windows. Appium позволяет разработчикам и тестировщикам создавать и запускать автоматизированные тесты для мобильных приложений, используя стандартные интерфейсы и API, что делает его универсальным инструментом для тестирования приложений на различных устройствах.

Основные особенности Appium:

  1. Кроссплатформенность: Appium поддерживает автоматизацию тестирования на различных платформах, включая iOS, Android и Windows.
  2. Использование стандартных API: Appium использует стандартные интерфейсы и API для взаимодействия с мобильными приложениями, такие как WebDriver protocol, что упрощает написание тестов.
  3. Поддержка различных языков программирования: Appium поддерживает несколько языков программирования, таких как Java, Python, JavaScript, Ruby и другие, что позволяет разработчикам использовать знакомый им язык для написания автоматизированных тестов.
  4. Интеграция с различными инструментами: Appium интегрируется с популярными инструментами для управления тестами, такими как Selenium, что облегчает создание и управление тестовыми сценариями.
  5. Поддержка устройств с и без Jailbreak/Root: Appium позволяет автоматизировать тестирование как на устройствах с Jailbreak/Root, так и на устройствах без них.

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

38
Q

Что такое Electron-based applications?Как использовать Selenium и Appium для их тестирования?

Selenium

A

Electron-based applications - это приложения, которые созданы с использованием Electron framework. Electron - это фреймворк для разработки кроссплатформенных десктопных приложений, который позволяет использовать веб-технологии (HTML, CSS, JavaScript) для создания приложений, работающих как нативные на различных операционных системах, таких как Windows, macOS и Linux.

Для тестирования Electron-based приложений можно использовать Selenium и Appium. Вот как можно использовать эти инструменты для тестирования таких приложений:

  1. Selenium:
    • Для тестирования веб-части Electron-based приложения (например, встроенного браузера) можно использовать Selenium WebDriver с соответствующими драйверами (например, ChromeDriver или FirefoxDriver).
    • Для запуска тестов с Selenium на Electron-based приложении необходимо убедиться, что веб-часть приложения доступна через URL или локальный файловый путь.
  2. Appium:
    • Для тестирования нативной части Electron-based приложения на мобильных устройствах можно использовать Appium.
    • Для этого необходимо настроить Appium для работы с соответствующими мобильными драйверами (например, AndroidDriver или IOSDriver) и указать путь к исполняемому файлу Electron-based приложения.
    • Appium позволяет взаимодействовать с нативными элементами пользовательского интерфейса приложения на мобильных устройствах и выполнять различные действия, такие как ввод текста, нажатие кнопок и другие.

Таким образом, Selenium и Appium могут быть использованы для тестирования как веб-части, так и нативной части Electron-based приложений на различных платформах, обеспечивая широкие возможности автоматизации тестирования и обеспечивая высокое качество и стабильность приложений.

39
Q

Как взаимодействовать с запросами, отправляемыми из браузера.

Selenium

A

Для взаимодействия с запросами, отправляемыми из браузера при использовании Selenium, часто требуется симулировать или перехватывать эти запросы. Для этого можно использовать различные инструменты и подходы в зависимости от ваших конкретных потребностей. Вот несколько распространенных способов:

  1. Использование браузерных DevTools:
    Многие браузеры (например, Chrome, Firefox) предоставляют инструменты разработчика (DevTools). Вы можете воспользоваться функциональностью DevTools, чтобы проверить сетевые запросы, отправляемые из вашего браузера во время работы тестов.
  2. Использование браузерных расширений:
    Есть расширения браузера, такие как “Proxy SwitchyOmega” для Chrome или “FoxyProxy Standard” для Firefox, которые позволяют перенаправлять трафик через прокси-серверы. Это позволит вам управлять и перехватывать сетевые запросы.
  3. Использование инструментов для перехвата запросов:
    Можно использовать инструменты для перехвата запросов, такие как Fiddler, Charles Proxy, Burp Suite и другие. Эти инструменты могут помочь вам анализировать и изменять сетевой трафик, проходящий через браузер.
  4. Использование Selenium WebDriver:
    Selenium WebDriver может не обладать встроенными функциями для работы с сетевым трафиком напрямую. Однако, в зависимости от вашего языка программирования, вы можете использовать библиотеки для перехвата и анализа сетевых запросов (например, в Python - requests, aiohttp) вместе с Selenium для анализа или модификации запросов.

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

40
Q

Как взаимодействовать с cookies, LocalStorage и SessionStorage?

Selenium

A

Для взаимодействия с cookies, LocalStorage и SessionStorage при использовании Selenium, вам потребуется использовать специальные методы и инструменты для доступа к этим элементам в браузере.

  1. Cookies:
    Получение всех cookies:cookies = driver.get_cookies()Добавление нового cookie:driver.add_cookie({'name': 'cookie_name', 'value': 'cookie_value'})Удаление cookie по имени:driver.delete_cookie('cookie_name')Удаление всех cookies:driver.delete_all_cookies()
  2. LocalStorage:
    Получение значения по ключу:value = driver.execute_script("return localStorage.getItem('key')")Установка значения:driver.execute_script("localStorage.setItem('key', 'value')")Удаление значения по ключу:driver.execute_script("localStorage.removeItem('key')")
  3. SessionStorage:
    Получение значения по ключу:value = driver.execute_script("return sessionStorage.getItem('key')")Установка значения:driver.execute_script("sessionStorage.setItem('key', 'value')")Удаление значения по ключу:driver.execute_script("sessionStorage.removeItem('key')")

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

41
Q

Что такое и чем отличаются виртуальная машина, симулятор и эмулятор?

Тестовая инфраструктура

A

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

  1. Виртуальная машина:
    Что это: Виртуальная машина (Virtual Machine) — это программное обеспечение, которое эмулирует работу физического компьютера и позволяет запускать на нем операционные системы или приложения в изолированной среде.
    Отличительные особенности: Виртуальные машины позволяют запускать несколько виртуальных экземпляров операционных систем на одном физическом компьютере. Они обеспечивают изоляцию между виртуальными машинами и хост-системой, что делает их полезными для тестирования, разработки и обеспечения безопасности.
  2. Симулятор:
    Что это: Симулятор (Simulator) — это программное обеспечение, которое моделирует поведение устройства, процесса или системы без реального исполнения всех аспектов их функционирования.
    Отличительные особенности: Симуляторы используются для создания моделей для обучения, тренировки или тестирования без необходимости наличия реального оборудования. Они могут упрощать или абстрагировать некоторые аспекты для повышения производительности.
  3. Эмулятор:
    Что это: Эмулятор (Emulator) — это программное обеспечение, которое имитирует работу аппаратного обеспечения или других систем с точностью до низкоуровневых деталей, чтобы обеспечить полную совместимость.
    Отличительные особенности: Эмуляторы используются для запуска программного обеспечения или игр, разработанных для одной платформы, на другой. Они имитируют аппаратное обеспечение и окружение, что позволяет передавать данные и сигналы, как если бы они работали на реальном оборудовании.

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

42
Q

Что такое контейнер и чем он отличается от виртуальной машины?

Тестовая инфраструктура

A

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

Контейнер:
1. Контейнер - это легковесная единица программного обеспечения, которая упаковывает код и все его зависимости, позволяя приложению быстро и надежно работать в разных вычислительных средах.
2. Контейнеры используют ядро операционной системы хоста и изолируют процессы приложения на уровне операционной системы, используя такие механизмы, как пространства имен (namespaces) и cgroups.
3. Контейнеры разделяют ядро операционной системы хоста, что делает их более легковесными и быстрыми в запуске по сравнению с виртуальными машинами.
4. Контейнеры обеспечивают согласованность среды выполнения приложений, так как они упаковывают все необходимые зависимости внутри контейнера.
5. Примеры технологий контейнеризации: Docker, LXC, rkt.

Виртуальная машина:
1. Виртуальная машина (VM) - это эмуляция физического компьютера, которая работает на физическом оборудовании с помощью гипервизора.
2. Каждая виртуальная машина включает полную операционную систему, виртуальные ресурсы (CPU, память, диски) и необходимые приложения.
3. Виртуальные машины обеспечивают полную изоляцию на уровне оборудования, так как каждая VM работает на своей собственной виртуализированной аппаратной платформе.
4. Виртуальные машины обычно требуют больше ресурсов (CPU, память, дисковое пространство) по сравнению с контейнерами, так как каждая VM включает полную операционную систему.
5. Виртуальные машины обеспечивают высокий уровень безопасности и изоляции, так как каждая VM работает независимо от других VM и хостовой системы.
6. Примеры технологий виртуализации: VMware, VirtualBox, Hyper-V, KVM.

Основные различия:
1. Уровень виртуализации: контейнеры виртуализируют на уровне операционной системы, в то время как виртуальные машины виртуализируют на уровне оборудования.
2. Размер и производительность: контейнеры легковесны и быстрее запускаются, в то время как виртуальные машины требуют больше ресурсов и времени для запуска.
3. Изоляция: виртуальные машины обеспечивают полную изоляцию на уровне оборудования, в то время как контейнеры обеспечивают изоляцию на уровне процессов.
4. Совместимость: виртуальные машины могут запускать разные операционные системы, в то время как контейнеры должны использовать ту же операционную систему, что и хостовая система.

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

43
Q

Как используются виртуальные машины и контейнеры в автоматизации?

Тестовая инфраструктура

A

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

44
Q

Что такое IaaS и PaaS?Приведите примеры.

Тестовая инфраструктура

A

IaaS (Infrastructure as a Service) и PaaS (Platform as a Service) являются моделями облачных вычислений, которые предоставляют различные уровни абстракции и управления для разработки, развертывания и управления приложениями и инфраструктурой.

  1. IaaS (Infrastructure as a Service):
    IaaS предоставляет виртуальные вычислительные ресурсы, такие как виртуальные машины, хранилище данных, сетевые ресурсы и т.д. на облачной платформе. Пользователи могут управлять этой инфраструктурой через интерфейс управления облаком, оплачивая только за использованные ресурсы.

Примеры IaaS-провайдеров:
- Amazon Web Services (AWS)
- Microsoft Azure
- Google Cloud Platform (GCP)
- IBM Cloud
- DigitalOcean

Пример использования IaaS: Компания арендует виртуальные машины и хранилище данных на AWS для хранения и обработки данных своего веб-приложения.

  1. PaaS (Platform as a Service):
    PaaS предоставляет платформу и инфраструктуру для разработки, тестирования и развертывания приложений без необходимости управления инфраструктурой. PaaS обеспечивает среду выполнения приложений, базы данных, средства разработки и другие сервисы, упрощая процесс разработки и развертывания приложений.

Примеры PaaS-провайдеров:
- Heroku
- Microsoft Azure App Service
- Google App Engine
- AWS Elastic Beanstalk
- IBM Cloud Foundry

Пример использования PaaS: Разработчик может загрузить свое приложение на платформу Heroku, где автоматически масштабируется и управляется инфраструктура, предоставляет автоматическую масштабируемость и управление ресурсами, что позволяет сосредоточиться на разработке приложения, а не на управлении инфраструктурой.

45
Q

Что такое Configuration Management?

Тестовая инфраструктура

A

Configuration Management (управление конфигурациями) - это процесс управления изменениями в конфигурации программного обеспечения или системы. Он включает в себя управление изменениями, версиями, конфигурациями и артефактами, связанными с разработкой и эксплуатацией программного обеспечения.

Основные цели Configuration Management включают:

  1. Обеспечение стабильности и надежности конфигурации системы.
  2. Управление изменениями и версиями компонентов программного обеспечения.
  3. Поддержание целостности и согласованности различных компонентов системы.
  4. Упрощение и автоматизация процесса развертывания и обновления системы.
  5. Обеспечение безопасности и соблюдения стандартов безопасности.

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

Configuration Management является важным аспектом в области качества программного обеспечения, поскольку обеспечивает стабильность, надежность, безопасность и упорядоченность в процессе разработки, тестирования и эксплуатации системы.

46
Q

Что такое Provisioning?

Тестовая инфраструктура

A

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

Provisioning включает в себя создание, конфигурацию, установку и предоставление ресурсов в соответствии с требованиями приложения или системы. Процесс provisioning может быть автоматизирован с использованием специализированных инструментов и технологий, таких как Ansible, Terraform, Chef, Puppet и другие.

Примеры ресурсов, которые могут быть предоставлены и настроены в процессе provisioning:

  1. Виртуальные машины на облачной платформе.
  2. Сетевые настройки, включая настройку маршрутизации и брандмауэров.
  3. Установка и настройка необходимого программного обеспечения.
  4. Предоставление доступа к базам данных и другим хранилищам.
  5. Настройка мониторинга и журналирования.

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

47
Q

Какие команды Linux Shell вам известны?Как с помощью команд Linux Shell найти лог-файл и строчку с ошибкой в файле?

Тестовая инфраструктура

A

pwd - вывести текущую (рабочую) директорию.

date - вывести текущую дату и время системы.

w – показывает кто авторизован в системе.

ls – вывести содержимое директории.

cd – изменить текущую директорию.

mkdir – создать директорию.

rm – удалить файл.

cp – копировать файл или директорию.

mv – переместить или переименовать файл или директорию.

cat – вывести содержимое файла(или файлов).

tail – вывести последние измененные строки файла.

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

ps – вывести список процессов.

kill - послать сигнал процессу. По умолчанию посылается сигнал SIGTERM, который завершает процесс.

ssh - openSSH SSH клиент, позволяет подключаться к удаленному хосту.

scp - копировать файлы между хостами (для этого используется ssh).

rsync - также для синхронизации директорий между хостами можно использовать rsync (-a — archive mode, позволяет скопировать полностью всё содержимое директории «как есть»,

v — вывод на консоль дополнительной информации).

echo - вывести на экран строку текста.

48
Q

Какие команды Windows CMD вам известны?Как с помощью команд Windows CMD найти IP-адрес машины?

Тестовая инфраструктура

A

Некоторые из команд, доступных в командной строке (CMD) Windows, включают следующие:

  1. ipconfig: Эта команда позволяет просмотреть сведения о сетевых адаптерах на компьютере, включая IP-адрес, шлюз по умолчанию, маску подсети и другую информацию.
  2. ping: С помощью команды ping можно проверить доступность удаленного узла в сети по его IP-адресу.
  3. nslookup: Позволяет запросить DNS-сервер для получения информации об IP-адресе для указанного доменного имени.
  4. netstat: Команда позволяет просмотреть сведения о сетевых соединениях, портах и других сетевых статистиках на компьютере.

Чтобы найти IP-адрес машины с помощью командной строки Windows CMD, выполните следующие действия:

  1. Откройте командную строку (CMD).
  2. Введите команду ipconfig и нажмите Enter.
  3. В списке сетевых адаптеров найдите активное соединение сетевого адаптера, для которого вы хотите узнать IP-адрес.

IP-адреса будут отображены в следующих полях:
- IPv4-адрес - это основной IP-адрес для вашего устройства.
- IPv6-адрес - это IP-адрес IPv6 для вашего устройства, если он настроен.

49
Q

Что такое SSH и как им воспользоваться?

Тестовая инфраструктура

A

test_chat_bot, [15.04.2024 17:34]
Некоторые из команд, доступных в командной строке (CMD) Windows, включают следующие:

  1. ipconfig: Эта команда позволяет просмотреть сведения о сетевых адаптерах на компьютере, включая IP-адрес, шлюз по умолчанию, маску подсети и другую информацию.
  2. ping: С помощью команды ping можно проверить доступность удаленного узла в сети по его IP-адресу.
  3. nslookup: Позволяет запросить DNS-сервер для получения информации об IP-адресе для указанного доменного имени.
  4. netstat: Команда позволяет просмотреть сведения о сетевых соединениях, портах и других сетевых статистиках на компьютере.

Чтобы найти IP-адрес машины с помощью командной строки Windows CMD, выполните следующие действия:

  1. Откройте командную строку (CMD).
  2. Введите команду ipconfig и нажмите Enter.
  3. В списке сетевых адаптеров найдите активное соединение сетевого адаптера, для которого вы хотите узнать IP-адрес.

IP-адреса будут отображены в следующих полях:
- IPv4-адрес - это основной IP-адрес для вашего устройства.
- IPv6-адрес - это IP-адрес IPv6 для вашего устройства, если он настроен.

test_chat_bot, [15.04.2024 17:35]
SSH (Secure Shell) - протокол, который обеспечивает шифрованное сетевое соединение для безопасного доступа к удаленным системам и управления ими. SSH позволяет защищенно передавать данные между клиентом и сервером, обеспечивая конфиденциальность и целостность информации.

Для использования SSH вам понадобится доступ к командной строке (CLI) и установленный SSH-клиент (например, OpenSSH, PuTTY или другие).

Чтобы подключиться к удаленной машине с помощью SSH, выполните следующие шаги:

  1. Откройте командную строку (CLI) на вашем компьютере.
  2. Введите команду для установки SSH-соединения с удаленной машиной. Пример команды: ssh username@remote_host.
    • username - ваше имя пользователя на удаленной машине.
    • remote_host - IP-адрес или доменное имя удаленной машины.
  3. При первом подключении к удаленной машине вас могут запросить ввести пароль.
  4. Если пароль введен правильно, вы будете успешно подключены к удаленной машине через SSH.

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

50
Q

Что такое скрипты bash и batch?Зачем их используют?

Тестовая инфраструктура

A

Скрипты Bash и Batch - это файлы, содержащие серию команд для выполнения в командной строке (CLI) операционных систем Linux (Bash) и Windows (Batch), соответственно. Скрипты позволяют автоматизировать выполнение повторяющихся задач, управлять процессами и выполнением команд, и выполнять скриптовое программирование.

Bash-скрипты:
Bash (Bourne Again SHell) - это командный интерпретатор Unix-подобных систем, таких как Linux и macOS. Bash-скрипты обычно имеют расширение .sh и могут содержать команды командной строки Linux/Unix, условия, циклы, переменные и другие конструкции скриптового языка.

Batch-скрипты:
Batch - это командный интерпретатор Windows, который используется для написания и запуска пакетных файлов (batch-файлов). Batch-скрипты обычно имеют расширение .bat или .cmd и могут содержать команды командной строки Windows, вызов других программ и скриптов, управление переменными и т.д.

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

  1. Управление процессами и командами: Скрипты позволяют управлять выполнением команд, создавать условия и циклы, обрабатывать входные данные и т.д.
  2. Конфигурация и настройка: Используя скрипты, пользователи могут создавать скрипты для настройки и конфигурации системы, установки приложений, настройки сети, создания резервных копий, обновления программного обеспечения и многих других операций.
  3. Повышение производительности: С помощью скриптов можно создавать оптимизированные процессы выполнения задач, ускорять рутинные операции и повышать эффективность работы системы.
  4. Тестирование и отладка: Скрипты могут использоваться для тестирования и отладки программного обеспечения, автоматизации тестовых сценариев, анализа логов и т.д.

В целом, использование скриптов Bash и Batch обеспечивает эффективное управление, автоматизацию, настройку и оптимизацию процессов в операционных системах Linux и Windows.

51
Q

Какие статус-коды ошибок бывают?Может сервер отправить код 400, если проблема на его стороне?

Интернет

A

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

1xx: Информационные

100 Continue: Промежуточный ответ, указывающий, что начальная часть запроса принята и клиент может продолжать отправку данных.
101 Switching Protocols: Сервер соглашается переключить протоколы в соответствии с запросом клиента, отправленным в заголовке Upgrade.

2xx: Успешные

200 OK: Стандартный ответ для успешных HTTP-запросов. Ресурс успешно обработан и передан в теле ответа.
201 Created: Запрос был успешно выполнен, и в результате был создан новый ресурс.
204 No Content: Запрос успешно обработан, но в ответе нет содержимого.

3xx: Перенаправления

301 Moved Permanently: Запрашиваемый ресурс был окончательно перемещен на URL, указанный в заголовке Location. Клиент должен использовать этот новый URL в будущем.
302 Found: Запрашиваемый ресурс временно находится по другому URI, указанному в заголовке Location.
304 Not Modified: Ресурс не был изменен с момента последнего запроса клиента, использующего условные заголовки типа If-Modified-Since или If-None-Match.

4xx: Ошибки клиента

400 Bad Request: Сервер не может обработать запрос из-за неверного синтаксиса.
401 Unauthorized: Для доступа к запрашиваемому ресурсу требуется аутентификация.
403 Forbidden: Сервер понял запрос, но отказывается его авторизовать.
404 Not Found: Запрашиваемый ресурс не найден на сервере.
405 Method Not Allowed: Метод, указанный в запросе, не поддерживается для данного ресурса.

5xx: Ошибки сервера

500 Internal Server Error: Общая ошибка сервера, когда сервер сталкивается с непредвиденными обстоятельствами.
501 Not Implemented: Сервер не поддерживает функциональные возможности, необходимые для обработки запроса.
502 Bad Gateway: Сервер, выступая в роли шлюза или прокси, получил неверный ответ от вышестоящего сервера.
503 Service Unavailable: Сервер временно не может обработать запрос из-за перегрузки или технического обслуживания.
504 Gateway Timeout: Шлюз или прокси-сервер не получил вовремя ответ от вышестоящего сервера для завершения запроса.

Эти статусные коды являются частью протокола HTTP и используются веб-серверами для коммуникации с клиентами (например, веб-браузерами) о состоянии и результатах обработки их запросов.

51
Q

Как происходит авторизация на сервере?

Интернет

A

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

Процесс авторизации на сервере обычно включает следующие шаги:

  1. Идентификация пользователя: Пользователь указывает свои учетные данные (логин и пароль) или выполняет другие методы аутентификации для идентификации себя перед сервером.
  2. Проверка аутентификационных данных: Введенные пользователем данные сравниваются с данными, хранящимися на сервере. Это может включать проверку пароля или ключей, связанных с учетной записью пользователя.
  3. Предоставление доступа: Если аутентификационные данные верные, сервер предоставляет доступ пользователю к необходимым ресурсам, сервисам или функционалу.
  4. Управление привилегиями: После успешной авторизации пользователь может получить различные уровни доступа в зависимости от своих прав и привилегий.

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

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

52
Q

Какая разница между авторизацией и аутентификацией?

Интернет

A

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

  1. Аутентификация (Authentication):
    • Определение: Аутентификация - это процесс проверки подлинности пользователя, подтверждение его личности или подлинности устройства (например, компьютера, мобильного устройства и т.д.).
    • Цель: Убедиться, что пользователь или устройство действительно тот, кем он себя представляет.
    • Пример: Ввод логина и пароля, использование биометрических данных (например, скан пальца или распознавание лица), использование ключей SSH и сертификатов.
  2. Авторизация (Authorization):
    • Определение: Авторизация - это процесс предоставления прав доступа к определенным ресурсам или функциям после успешной аутентификации пользователя или устройства.
    • Цель: Управление доступом пользователя к ресурсам в соответствии с его правами и привилегиями.
    • Пример: После успешной аутентификации, система определяет, какие ресурсы и функции пользователь имеет право использовать (например, чтение, запись, удаление файлов, доступ к определенным каталогам и т.д.).

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

53
Q

Как протестировать адаптивную верстку?

Интернет

A

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

  1. Ответственный дизайн на различных устройствах: Проверьте, как отображается ваш веб-сайт или приложение на различных устройствах, таких как компьютеры, планшеты, смартфоны. Измените размер окна браузера или поверните устройство, чтобы увидеть, как адаптивный дизайн реагирует на изменения экрана.
  2. Инструменты разработчика в браузере: Используйте встроенные инструменты разработчика в веб-браузерах, такие как Google Chrome DevTools или Firefox Developer Tools, чтобы имитировать различные устройства и разрешения экрана. Вы можете проверить CSS медиазапросы, расположение элементов на странице и другие аспекты адаптивной верстки.
  3. Тестирование на реальных устройствах: Позвивите тестировать вашу адаптивную верстку на реальных устройствах, чтобы убедиться, что верстка выглядит и ведет себя правильно на разных платформах. Вы можете использовать свои собственные устройства или эмуляторы устройств.
  4. Онлайн-сервисы для тестирования адаптивности: Существует множество онлайн-сервисов и инструментов для тестирования адаптивности веб-сайтов, таких как BrowserStack, Responsinator, Responsive Design Checker и др. Эти серввисы помогут вам проверить работу вашего сайта на различных устройствах и разрешениях экрана, что позволит выявить и исправить проблемы с адаптивным дизайном.
  5. Тестирование скорости загрузки: При тестировании адаптивной верстки также важно учитывать скорость загрузки страницы на различных устройствах. Используйте инструменты, такие как Google PageSpeed Insights или GTmetrix, чтобы оценить производительность вашего сайта на разных устройствах и разрешениях.
  6. Тестирование интерактивности и функциональности: Убедитесь, что все интерактивные элементы и функциональность вашего сайта работают корректно на разных устройствах. Проверьте работу меню, кнопок, форм, слайдеров и других элементов интерфейса.
  7. Тестирование с помощью реальных пользователей: Наконец, проведите тестирование с участием реальных пользователей, которые будут использовать ваш сайт на различных устройствах и дадут обратную связь о визуальном оформлении, удобстве использования и функциональности.

С помощью этих подходов и инструментов вы сможете эффективно протестировать адаптивную верстку вашего веб-сайта и обеспечить хорошее пользовательское впечатление на всех типах устройств.

53
Q

Как выполнить Debug странички в браузере?

Интернет

A

Для выполнения отладки (Debug) веб-страницы в браузере следуйте этим шагам:

  1. Открытие инструментов разработчика:
    В большинстве современных веб-браузеров для отладки предоставляются инструменты разработчика. Чтобы открыть их, нажмите F12 (или Ctrl+Shift+I) на клавиатуре. В Chrome: Меню -> Дополнительные инструменты -> Инструменты разработчика. В Firefox: Меню -> Веб-консоль. В Safari: Меню -> Разработка -> Показать консоль JavaScript.
  2. Вкладка “Console” (Консоль):
    В этой вкладке отображаются сообщения об ошибках JavaScript, вывод консольных команд и другая отладочная информация. Вы можете использовать команды console.log() для вывода отладочных сообщений в консоль.
  3. Вкладка “Sources” (Исходники):
    Здесь вы можете просмотреть исходный код веб-страницы, устанавливать точки останова (breakpoints) для отладки JavaScript кода, шагать по коду (Step Over, Step In, Step Out), просматривать переменные и многое другое.
  4. Отладка CSS:
    Во вкладке “Elements” (Элементы) вы можете редактировать CSS стили непосредственно на странице, а также просматривать примененные стили, определенные классы и атрибуты элементов.
  5. Отладка сети:
    Используйте вкладку “Network” (Сеть) для просмотра входящих и исходящих запросов на ресурсы, включая запросы к серверу, загрузку файлов, время отклика и другие сетевые аспекты вашей веб-страницы.
  6. Отладка производительности:
    В некоторых инструментах разработчика, таких как Chrome DevTools, есть вкладка “Performance” (Производительность), которая позволяет проанализировать производительность веб-страницы, выявить узкие места и оптимизировать работу страницы.
  7. Использование точек останова (breakpoints):
    Установка точек останова в JavaScript коде позволяет вам приостановить выполнение скрипта на определенной строке кода и изучить текущее состояние переменных и объектов.
  8. Отслеживание событий:
    Используйте инструменты разработчика для отслеживания событий (Events) на странице, такие как клики мыши, нажатия клавиш, загрузки ресурсов и других взаимодействий пользователя с веб-страницей.

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

54
Q

Каковы основные виды уязвимости веб-приложений?

Интернет

A

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

  1. Injection уязвимость: SQL Injection, XSS (Cross-Site Scripting), LDAP Injection, XML Injection. Эти уязвимости возникают, когда злоумышленник внедряет зловредный код или команды во входные данные, используемые для выполняемых запросов и скриптов.
  2. Уязвимости аутентификации и управления сеансами: Недостатки в механизмах проверки подлинности и управления сеансами могут привести к возможности перехвата сеансов, форсирования сеанса, утечки информации и другим атакам.
  3. Уязвимости авторизации: Недостаточные механизмы управления доступом могут привести к несанкционированному доступу к защищенным ресурсам и операциям.
  4. Уязвимости кросс-сайтовой запросы (CSRF): Атаки CSRF могут привести к выполнению нежелательных действий от имени аутентифицированного пользователя.
  5. Уязвимости некорректной конфигурации: Недостатки в конфигурации сервера, базы данных, файлов и других компонентов могут привести к несанкционированному доступу и утечке информации.
  6. Уязвимость небезопасного хранения данных: Хранение конфидененциальной информации в незашифрованном виде или с использованием слабых методов шифрования может привести к утечке данных при атаке злоумышленников.
  7. Уязвимость межсайтового скриптования (XSS): Атаки XSS возникают, когда злоумышленник встраивает вредоносный скрипт на веб-страницу, который запускается у других пользователей и может использоваться для выполнения различных атак.
  8. Уязвимости веб-служб и API: Недостатки в API и веб-службах могут привести к возможности атак на их доступность, конфиденциальности или целостности, а также к раскрытию конфиденциальных данных.
  9. Уязвимости перенаправления и открытого перенаправления: Атаки перенаправления и открытого перенаправления могут использоваться для обмана пользователей и перенаправления их на вредоносные сайты.
  10. Уязвимости небезопасного загрузки файлов: Недостаточный контроль загружаемых файлов может привести к возможности загрузки и выполнения вредоносного контента или утечке конфиденциальных данных.

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

Дополнительно: https://owasp.org/www-project-top-ten/

54
Q

Что такое WebSocket и как проверить обрыв соединения?

Интернет

A

WebSocket - это протокол передачи данных в реальном времени между клиентом и сервером через постоянное двунаправленное соединение. WebSocket обеспечивает более эффективное и надежное соединение в сравнении с традиционными методами, такими как HTTP-запросы.

Для проверки обрыва соединения в WebSocket вы можете выполнить следующие действия:

  1. Следить за событиями onopen, onclose, onerror в JavaScript:
    В вашем коде на стороне клиента (веб-приложения) установите обработчики событий для событий onopen, onclose и onerror. Событие onclose будет вызвано при закрытии соединения с сервером, а событие onerror может указывать на возникшие ошибки в процессе соединения.
    Пример использования событий:
    ~~~
    websocket.onopen = function(event) {
    console.log(“WebSocket connection opened”);
    };websocket.onclose = function(event) {
    console.log(“WebSocket connection closed”, event.code, event.reason);
    };websocket.onerror = function(event) {
    console.error(“WebSocket error:”, event);
    };
    ~~~
  2. Мониторинг соединения на сервере:
    На стороне сервера вы можете реализовать механизм мониторинга активности клиентов и обработки обрыва соединения со стороны клиента. В зависимости от вашего серверного приложения (например, на основе Node.js, Python, Java и т.д.) рассмотрите возможности мониторинга и управления состоянием WebSocket соединения.
  3. Использование инструментов разработчика браузера:
    В инструментах разработчика веб-браузера (например, Chrome DevTools) можно проверить состояние WebSocket соединения. Вы можете перейти на вкладку “Network” (Сеть) и отфильтровать запросы по протоколу WebSocket. Здесь вы сможете увидеть статус соединения, отправленные и полученные сообщения, а также обнаружить любые проблемы или обрывы соединения.
  4. Мониторинг логов на сервере:
    Ведите журналы или логи на сервере, которые отражают состояние и события WebSocket соединения. Это поможет вам отслеживать обрывы соединения, ошибки и другие события.
  5. Тестирование автоматизированными средствами:
    Используйте специализированные инструменты для тестирования WebSocket соединений, такие как WebSocket testing tools или библиотеки для юнит-тестирования WebSocket-соединений.

Проверка обрыва соединения в WebSocket важна для обеспечения стабильности и надежности передачи данных между клиентом и сервером в реальном времени.

55
Q

Какие инструменты тестирования Web performance client-side знаете?

Интернет

A

Существует множество инструментов для тестирования производительности веб-приложений на стороне клиента (client-side), которые помогают измерить и оптимизировать загрузку страниц, производительность динамического контента, отрисовку элементов, время отклика и другие аспекты производительности. Некоторые из популярных инструментов включают:

  1. Google PageSpeed Insights: Инструмент от Google, который анализирует производительность веб-страницы и предлагает рекомендации по улучшению скорости загрузки и оптимизации производительности.
  2. Lighthouse: Встроенный инструмент в Google Chrome DevTools, который проводит аудит производительности веб-страницы, включая анализ скорости загрузки, доступности, SEO и других аспектов.
  3. WebPageTest: Онлайн-сервис, который позволяет проводить тесты производительности веб-страницы, включая загрузку страницы, анализ времени отклика, скорость загрузки элементов и многое другое.
  4. Pingdom Website Speed Test: Инструмент, который позволяет тестировать скорость загрузки веб-страницы, анализировать производительность и получать детальные отчеты о времени загрузки и производительности различных элементов страницы.
  5. GTmetrix: Еще один популярный сервис для тестирования производительности веб-страниц, который предоставляет отчеты о скорости загрузки, оптимизации изображений, кэшировании, использовании скриптов и стилей и других аспектах производительности.
  6. SpeedCurve: Инструмент для непрерывного мониторинга производительности веб-приложений и отслеживания изменений во времени, позволяющий идентифицировать узкие места и проводить анализ производительности.
  7. Browser Developer Tools: Встроенные инструменты разработчика в веб-браузерах, такие как Google Chrome DevTools, позволяют анализировать производительность в реальном времени, измерять время загрузки ресурсов, обнаруживать узкие места производительности и оптимизировать код.
  8. Sitespeed.io: Инструмент для автоматизированного тестирования производительности веб-сайтов, который предоставляет детальные отчеты о скорости загрузки, производительности CSS и JavaScript, изображений, кэшировании и других аспектах.

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

56
Q

Какая разница между методами GET и POST?

Интернет

A

GET и POST являются двумя наиболее распространёнными методами HTTP, используемыми для отправки запросов на сервер. Они играют ключевую роль в обмене данными между клиентом (например, веб-браузером) и сервером. Несмотря на то, что оба метода служат для передачи данных, между ними есть ряд фундаментальных различий:

  1. Назначение и использование:
    GET обычно используется для запроса данных от сервера. Параметры запроса кодируются в URL, что делает их видимыми в адресной строке браузера. Это удобно для сохранения или закладок URL, но не подходит для передачи конфиденциальной информации.
    POST используется для отправки данных на сервер для обработки. Например, при отправке формы на веб-странице. Данные, отправляемые этим методом, включаются в тело запроса, что делает их невидимыми в адресной строке.
  2. Ограничения данных:
    GET имеет ограничения на длину данных, поскольку вся информация находится в URL. Размер URL ограничен (ограничение может варьироваться в зависимости от браузера и сервера), что ограничивает количество данных, которые можно отправить.
    POST не имеет ограничений на размер данных, что позволяет отправлять большие объёмы информации.
  3. Безопасность:
    GET менее безопасен по сравнению с POST, потому что данные видны в URL, и они могут быть сохранены в истории браузера или логах сервера.
    POST более безопасен, так как данные не отображаются в URL и не сохраняются в истории браузера.
  4. Кеширование и история браузера:
    GET может кешироваться браузерами и серверами, а URL с GET-параметрами может быть сохранён в истории браузера, что упрощает повторный доступ к тем же ресурсам.
    POST запросы, как правило, не кешируются и не сохраняются в истории браузера, что делает их менее удобными для повторного использования, но более подходящими для передачи данных, которые не должны быть легко доступны или кешированы.
  5. Идемпотентность:
    GET считается идемпотентным, что означает, что повторение одного и того же GET-запроса будет иметь тот же эффект, что и его однократное выполнение.
    POST не идемпотентен, так как повторная отправка одного и того же POST-запроса может привести к повторной обработке данных на сервере (например, дважды разместить заказ).

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

57
Q

Какая разница между методами PUT и PATCH?

Интернет

A

Методы PUT и PATCH являются распространенными методами HTTP, которые используются для изменения или обновления ресурсов на сервере в веб-разработке. Вот основные различия между методами PUT и PATCH:

  1. PUT:
    • Описание: Метод PUT используется для обновления целого ресурса на сервере или создания нового ресурса, если он не существует. При использовании метода PUT, клиент отправляет полное представление (полные данные) ресурса для замены существующего ресурса на сервере.
    • Идемпотентность: Метод PUT является идемпотентным, что означает, что повторное выполнение запроса не должно оказывать влияния на состояние сервера.
    • Пример использования: PUT /users/1 - обновить данные пользователя с идентификатором 1.
  2. PATCH:
    • Описание: Метод PATCH используется для частичного обновления или изменения существующего ресурса на сервере. При использовании метода PATCH, клиент отправляет только измененные данные или часть ресурса для обновления.
    • Идемпотентность: Метод PATCH не является идемпотентным, поскольку повторный запрос с теми же данными может привести к различным результатам в зависимости от текущего состояния ресурса на сервере.
    • Пример использования: PATCH /users/1 - обновить только поля пользователя с идентификатором 1.

Таким образом, основное различие между методами PUT и PATCH заключается в том, что PUT используется для полного замены ресурса, в то время как PATCH используется для частичного обновления ресурса.

58
Q

Какие знаете снифферы?

Интернет

A

Снифферы (сетевые анализаторы) - это инструменты, которые используются для мониторинга и анализа сетевого трафика, перехвата и прослушивания пакетов данных, передаваемых по сети. Некоторые из популярных снифферов включают:

  1. Wireshark: Это один из самых известных и мощных снифферов с открытым исходным кодом. Wireshark позволяет анализировать пакеты данных, протоколы сети, выводить статистику и трафик, а также поддерживает фильтрацию и декодирование различных протоколов.
  2. Tcpdump: Это утилита командной строки для мониторинга и захвата сетевого трафика в реальном времени. Tcpdump позволяет просматривать и анализировать пакеты данных, фильтровать вывод и обеспечивает широкий спектр параметров для настройки захвата пакетов.
  3. Microsoft Network Monitor: Сниффер, разработанный Microsoft для сбора, анализа и отображения сетевого трафика на системах Windows. Этот инструмент предоставляет подробную информацию о пакетах данных, а также позволяет создавать и применять фильтры.
  4. Tshark (Wireshark командная строка): Командная строка Wireshark, которая предоставляет возможность мониторинга сетевого трафика из командной строки. Tshark предлагает те же функции и возможности анализа пакета данных что и Wireshark, но без графического интерфейса, что удобно для автоматизированных скриптов и задач.
  5. Ettercap: Сниффер и инструмент прослушивания сетевого трафика, который также предоставляет возможности перехвата паролей, анализа протоколов и проведения атак в локальной сети.
  6. Fiddler: Инструмент для мониторинга и отладки сетевого трафика в веб-приложениях, который обеспечивает анализ HTTP- и HTTPS-трафика, сниффинг запросов и ответов, а также поиск проблем в веб-разработке.
  7. Burp Suite: Набор инструментов для тестирования безопасности веб-приложений, который включает сниффер прокси-сервер, позволяющий анализировать и изменять трафик между клиентом и сервером для обнаружения уязвимостей.
  8. Capsa Network Analyzer: Многофункциональный сетевой анализатор трафика, который предлагает подробный мониторинг и анализ пакетов данных, статистику сетевого трафика, анализ производительности и другие функциональности.

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

59
Q

Какая разница между DROP и TRUNCATE?

Интернет

A

DROP и TRUNCATE - это две команды SQL, используемые для удаления данных из таблицы в базе данных, но они выполняют это действие по-разному:

  1. DROP:
    • Описание: Команда DROP используется для удаления всей таблицы из базы данных. При выполнении команды DROP, вся структура таблицы, данные, связанные индексы, ключи и другие зависимости удаляются, и таблица перестает существовать в базе данных.
    • Использование: Пример использования команды DROP: DROP TABLE table_name;.
  2. TRUNCATE:
    • Описание: Команда TRUNCATE также удаляет все строки из таблицы, но оставляет саму структуру таблицы, индексы, ключи и другие свойства без изменений. При выполнении TRUNCATE данные удаляются, но их можно восстановить, но таблица остается существующей в базе данных.
    • Использование: Пример использования команды TRUNCATE: TRUNCATE TABLE table_name;.

Основные различия:

  1. Удаление данных: DROP удаляет как данные, так и структуру таблицы, в то время как TRUNCATE удаляет только данные, но сохраняет структуру таблицы.
  2. Восстановление данных: После использования DROP данные и структура таблицы будут окончательно удалены и не могут быть восстановлены без резервного копирования. По сравнению с этим, при использовании TRUNCATE данные могут быть восстановлены путем восстановления точки восстановления или из резервной копии данных.
  3. Скорость выполнения: TRUNCATE в общем случае быстрее, чем DROP, потому что он просто удаляет только данные из таблицы, а DROP удаляет как данные, так и структуру таблицы, что может занимать больше времени из-за необходимости перестроения объектов базы данных.
  4. Сброс идентификаторов: При использовании TRUNCATE идентификаторы строк (например, автоинкрементные значения) обычно сбрасываются до начального значения, в то время как при использовании DROP, идентификаторы могут быть потеряны полностью.
  5. Требования к правам доступа: Для выполнения DROP обычно необходимы более высокие привилегии, чем для выполнения TRUNCATE. В зависимости от конкретного сервиса и базы данных, пользователь может не иметь привилегий на выполнение DROP, но иметь их на выполнение TRUNCATE.

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

60
Q

Что такое case function?

Интернет

A

Функция CASE в языке SQL (Structured Query Language) используется для выполнения условных операций и возвращения значения в зависимости от заданного условия. CASE может использоваться для создания условий и выбора различных значений, основанных на конкретных условиях или критериях.

Синтаксис функции CASE выглядит примерно следующим образом:
~~~
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2

ELSE default_result
END
~~~

  • condition1, condition2, и т.д. это условия, которые проверяются.
  • result1, result2, и т.д. - значения, которые возвращаются, если соответствующее условие истинно.
  • default_result - значение, возвращаемое, если ни одно из условий не истинно.

Пример использования функции CASE для создания столбца с различными значениями в SQL запросе:

SELECT 
    column_name,
    CASE
        WHEN condition1 THEN result1
        WHEN condition2 THEN result2
        ELSE default_result
    END AS new_column_name
FROM table_name;

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

61
Q

Что такое collation?

Интернет

A

Collation (кодировка) в базах данных относится к правилам сортировки, сравнения и упорядочивания символов, используемых для работы с текстовыми данными. Кодировка определяет, каким образом символы и строки будут сравниваться и сортироваться в базе данных.

Основные аспекты кодировки включают в себя:

  1. Сравнение строк: Кодировка определяет правила, по которым сравниваются символы и строки. Например, кодировка определяет, будут ли символы регистро-зависимыми или регистро-независимыми при сравнении строк.
  2. Сортировка данных: Кодировка определяет порядок, в котором будут упорядочены строки при сортировке данных. Например, некоторые кодировки могут учитывать специфические порядки сортировки для различных языков или регионов.
  3. Сравнение символов: Кодировка также определяет способ сравнения специальных символов, чисел и других символов, которые могут использоваться в данных.

Примеры распространенных кодировок в базах данных включают utf8, utf8unicodeci, latin1, cp1251 и другие. При создании базы данных или таблицы необходимо выбрать соответствующую кодировку в зависимости от требований к работе с текстовыми данными (например, язык, регистр символов, специальные символы и т.д.).

62
Q

Что такое схема GraphQL?

Интернет

A

GraphQL - это язык запросов и среда выполнения, разработанные компанией Facebook, которые обеспечивают эффективное и гибкое взаимодействие между клиентом и сервером. Схема GraphQL определяет структуру данных, которые могут быть запрошены и возвращены через API на сервере.

Основные концепции и принципы схемы GraphQL включают:

  1. Типы данных: GraphQL определяет явные типы данных, которые могут быть запрошены и возвращены через API. Например, строки, числа, булевы значения, объекты и другие пользовательские типы данных могут быть определены в схеме GraphQL.
  2. Поля и связи: Схема GraphQL определяет доступные поля для каждого типа данных, а также связи между различными типами данных. Это позволяет клиентам запросить только необходимые данные и получить связанные данные с помощью одного запроса.
  3. Операции и точки входа: В схеме GraphQL определяются операции, которые клиент может выполнять, такие как запросы (query), мутации (mutation) для внесения изменений данных и подписки для потоковой передачи данных.
  4. Директивы: GraphQL поддерживает использование директив для управления запросами и изменения поведения схемы. Директивы позволяют динамически изменять запросы и манипулировать данными.
  5. Управление версиями и эволюция схемы: Схема GraphQL поддерживает эволюцию, позволяя добавлять новые типы данных, поля и операции без нарушения обратной совместимости, что делает развитие и поддержание API более гибкими и удобными для разработчиков.
  6. Интерактивная документация: GraphQL обычно предоставляет интерактивную документацию (часто называемую “GraphiQL”), которая помогает разработчикам исследовать схему и выполнять запросы к API прямо из браузера.
  7. Оптимизация запросов: Благодаря возможности клиентам точно указывать какие данные им нужны, GraphQL помогает избежать проблемы “излишней множественности запросов” (over-fetching) и “недостаточной множественности запросов” (under-fetching), что способствует оптимизации производительности при работе с API.

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

63
Q

Объясните разницу между OLTP и OLAP.

Интернет

A

OLTP (Online Transaction Processing) и OLAP (Online Analytical Processing) - это два основных типа систем обработки данных, используемых в области баз данных и аналитики. Вот основные различия между OLTP и OLAP:

  1. OLTP (Online Transaction Processing):
    • Назначение: OLTP предназначена для обработки повседневных операций и транзакций, таких как добавление, обновление и удаление данных в реальном времени. Эти системы ориентированы на быструю обработку транзакций и поддержание актуальных данных.
    • Характеристики: Основные характеристики OLTP включают высокую производительность, короткие транзакции, низкую латентность и высокую доступность.
    • Примеры использования: Системы банковских транзакций, онлайн магазины, системы управления складом и другие приложения, где важна быстрая и надежная обработка транзакций.
  2. OLAP (Online Analytical Processing):
    • Назначение: OLAP предназначена для аналитической обработки и агрегации данных для проведения сложных аналитических операций, например, построение отчетов, анализ трендов, многомерный анализ и прогнозирование.
    • Характеристики: OLAP обычно характеризуется мощной аналитикой, агрегацией данных, возможностью многомерного анализа и построения срезов данных.
    • Примеры использования: Аналитические системы, комплексный анализ бизнес-показателей, системы дашбордов и отчетности, системы для принятия управленческих решений и стратегического планирования.
  3. Различия:
    • Тип операций: OLTP обрабатывает оперативные транзакции и операции записи, в то время как OLAP работает с аналитическими операциями и операциями чтения и агрегации.
    • Структура данных: В OLTP данные обычно организованы в операционных базах данных с нормализованной структурой, в то время как в OLAP данные часто денормализованы и представлены в многомерной модели.
    • Требования к производительности: OLTP ориентирована на высокую производительность и быструю обработку транзакций в реальном времени, в то время как OLAP может работать с большими объемами данных, предоставляя мощные возможности анализа и обработки.
    • Использование: OLTP применяется для повседневной операционной деятельности и транзакций, в то время как OLAP используется для аналитического анализа и предоставления информации для организации и принятия стратегических решений.

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

63
Q

Вспомните разные типы репликации в SQL Server?

Интернет

A
  1. Snapshot Replication - используется для создания точечного снимка данных в определенный момент времени. Данные копируются целиком при каждом обновлении.
  2. Transactional Replication - копирует изменения данных в реальном времени. Транзакции передаются одной базе данных на другую.
  3. Merge Replication - совмещает изменения данных с нескольких источников в одной базе данных. Используется для работы с высоконагруженными системами.
  4. Peer-to-Peer Replication - обеспечивает синхронизацию данных между несколькими серверами без мастер-слейв архитектуры.
  5. Bi-Directional Replication - позволяет синхронизировать данные между двумя базами данных таким образом, чтобы изменения в любой из них могли быть отражены в другой.
64
Q

Что вы понимаете под Self Join?Приведите примеры.

Интернет

A

Self Join - это тип операции объединения таблицы, при которой таблица объединяется сама с собой. Self Join используется, когда нужно соединить строки из одной таблицы с другими строками этой же таблицы.

Пример Self Join:

Предположим, у нас есть таблица сотрудников (Employees), в которой есть колонки EmployeeID и ManagerID. ManagerID указывает на ID руководителя этого сотрудника.

SELECT e1.EmployeeID, e1.EmployeeName, e2.EmployeeName AS ManagerName
FROM Employees e1
JOIN Employees e2 ON e1.ManagerID = e2.EmployeeID;

В этом примере мы используем Self Join, чтобы получить имена сотрудников и их руководителей из одной таблицы сотрудников. Мы соединяем таблицу Employees саму с собой, чтобы сопоставить EmployeeID с ManagerID и получить имя сотрудника и имя его руководителя.

65
Q

Что такое cursor и как им пользоваться?

Интернет

A

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

Для работы с курсором в SQL Server необходимо выполнить следующие шаги:

  1. Определить и создать курсор с помощью оператора DECLARE CURSOR, указав запрос или хранимую процедуру, возвращающую набор данных.
  2. Открыть курсор с помощью оператора OPEN.
  3. Извлечь данные из курсора с помощью оператора FETCH, который может быть использован в цикле для доступа к каждой строке.
  4. Обработать данные из курсора.
  5. По завершении работы с курсором, закрыть курсор с помощью оператора CLOSE и освободить память, используемую курсором с помощью оператора DEALLOCATE.

Пример использования курсора:

DECLARE @CustomerId INT
DECLARE @CustomerName NVARCHAR(50)

DECLARE customer_cursor CURSOR FOR
SELECT CustomerID, CustomerName
FROM Customers

OPEN customer_cursor

FETCH NEXT FROM customer_cursor INTO @CustomerId, @CustomerName

WHILE @@FETCH_STATUS = 0
BEGIN
    PRINT 'Customer ID: ' + CAST(@CustomerId AS NVARCHAR) + ', Customer Name: ' + @CustomerName
    FETCH NEXT FROM customer_cursor INTO @CustomerId, @CustomerName
END

CLOSE customer_cursor
DEALLOCATE customer_cursor

Этот пример демонстрирует использование курсора для выборки данных из таблицы Customers и вывода информации о каждом клиенте.

66
Q

Что необходимо проверить при тестировании мобильного приложения?

Mobile

A

Работа с функциями телефона:

  • GPS: Проверка корректности работы геолокационных функций в приложении, включая тестирование в реальных условиях перемещения.
  • Видео/фото: Тестирование интеграции приложения с камерой устройства, включая съемку, обработку и загрузку контента.
  • Размер экрана, разрешение, ориентация (акселерометр): Убедиться, что приложение адаптировано для разных размеров экранов, поддерживает различные разрешения и корректно отзывается под портретную и ландшафтную ориентацию устройства.
  • Работа с жестами: Проверка управления приложением через стандартные жесты, такие как тапы, свайпы, зум и прочие.
  • Другие функции телефона: Тестирование интеграции приложения с такими функциями, как Bluetooth, NFC, звонки, SMS и другие.

Работа с производительностью:

  • Скорость/отзывчивость: Оценка времени реакции приложения на действия пользователя и общую производительность.
  • Загрузка оперативной памяти: Мониторинг использования RAM приложением и его влияние на работу устройства.
  • Зависимость от заряда батареи: Анализ потребления энергии приложением и его влияние на время работы устройства от батареи.
  • Запуск с внутренней памяти / с флеш-накопителя: Проверка работы приложения при установке в основную память и на внешний носитель.

Тестирование установки:

  • Установка: Проверка процесса установки и первоначальной настройки приложения.
  • Удаление: Тестирование полного удаления приложения без оставления “хвостов” данных.
  • Переустановка: Проверка корректности повторной установки приложения.
  • Обновление: Тестирование процесса обновления приложения и его совместимости с предыдущими версиями данных и настройками.

Тестирование прерываний:

  • Исходящие/входящие вызовы: Проверка поведения приложения при получении и совершении вызовов.
  • Всплывающие окна/уведомления: Тестирование реакции приложения на системные уведомления или всплывающие окна других приложений.
  • Прерывания при разрядке/подзарядке: Проверка реакции приложения на изменение состояния заряда батареи.
  • Сворачивание/разворачивание приложения: Тестирование перехода приложения в фоновый режим и обратно.

Интернет:

  • Тип соединения (Wi-Fi, 3g, 4g, 5g): Тестирование работы приложения в различных типах сетевых соединений.
  • Качество соединения: Проверка стабильности приложения при изменении качества сети.
  • Потеря связи: Тестирование поведения приложения при внезапных обрывах соединения.
  • Изменение типа соединения: Проверка адаптивности приложения к переходу между различными типами сетевых соединений (например, с Wi-Fi на мобильные данные).

Дополнительные примеры для тестирования:

  • Мультиязычность: Проверка работы приложения на различных языковых настройках устройства.
  • Совместимость с аксессуарами: Тестирование совместной работы приложения с внешними аксессуарами, такими как умные часы, фитнес-браслеты.
  • Мультимедиа: Тестирование функций воспроизведения аудио и видео внутри приложения.
  • Интеграция с социальными сетями: Проверка возможностей авторизации через социальные сети и обмена контентом.
  • Безопасность: Проверка на уязвимости, такие как утечки данных, неправильное хранение чувствительной информации, и внедрение вредоносного кода.

https://stepik.org/lesson/1036761/step/3?auth=login&unit=1045246

67
Q

Что такое Manifest.xml в .apk файле и какие данные там указывают?

Mobile

A

Manifest.xml - это файл манифеста в формате XML, который содержит информацию о приложении Android, упакованном в .apk файл.

В файле манифеста указывается следующая информация:
1. Название приложения и пакет приложения
2. Иконка приложения
3. Версия приложения
4. Права доступа приложения к различным функциям устройства (например, доступ к камере или контактам)
5. Компоненты приложения, такие как активности, сервисы, приемники и провайдеры контента
6. Основные и опциональные компоненты приложения
7. Конфигурация и настройки приложения
8. Интенты, определяющие, какие действия могут быть выполнены приложением
9. Метаданные приложения

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

68
Q

Что такое режим разработчика Do not keep activities?

Mobile

A

Режим разработчика “Do not keep activities” (Не сохранять активности) - это одна из опций, доступных в меню разработчика на устройствах Android. Когда этот режим включен, система Android не сохраняет состояние активности (Activity) после того, как она становится невидимой или неактивной.

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

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

69
Q

Как происходит перехват трафика http/https для мобильных устройств?

Mobile

A

Перехват трафика HTTP/HTTPS для мобильных устройств может происходить несколькими способами, как легальными, так и незаконными. Ниже приведены основные методы перехвата трафика:

  1. Использование Прокси-серверов: В целях отладки и анализа трафика разработчики и тестировщики могут использовать прокси-серверы, такие как Charles Proxy или Fiddler. Через настройку мобильного устройства на использование указанного прокси, весь HTTP/HTTPS трафик будет направляться через него, где его можно анализировать и отлавливать.
  2. Использование Специализированных ПО: Существуют различные специализированные программы, такие как Wireshark или Burp Suite, которые могут перехватывать трафик на уровне сети или приложения.
  3. Использование MITM-атак: Хакеры могут проводить Man-In-The-Middle атаки (MITM), используя специальное программное обеспечение или устройство, чтобы перехватывать и анализировать трафик между устройством и сервером. Это позволяет им получить доступ к конфиденциальной информации, такой как логины, пароли и персональные данные.
  4. Незаконный доступ к сети: Некоторые злоумышленники могут пытаться установить фальшивые точки доступа Wi-Fi или использовать другие методы для перехвата трафика без ведома пользователей.

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

70
Q

В каком виде хранятся данные в мобильных приложениях локально?

Mobile

A

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

  1. Файловая система: Данные могут храниться в файлах (текстовых, JSON, XML и др.), которые сохраняются на устройстве. Например, может быть использована файловая система устройства для хранения изображений, аудиофайлов, кэш-файлов и других данных.
  2. SQLite база данных: SQLite - это компактная встроенная реляционная база данных, которая часто используется для хранения структурированных данных в мобильных приложениях. Она позволяет эффективно хранить и получать данные путем выполнения SQL-запросов.
  3. Shared Preferences: Этот механизм используется для хранения настроек и малых объемов данных в форме пар ключ-значение. Например, здесь могут храниться настройки приложения, настройки пользователя, ранее введенные данные и т.д.
  4. Библиотеки для хранения структурированных данных: Для хранения более сложных данных, таких как списки, коллекции и объекты, могут использоваться специализированные библиотеки, например, Realm или Room (часть архитектуры Jetpack).
  5. Внешние хранилища: Данные также могут храниться во внешних источниках, таких как серверы, облачные сервисы или встроенные хранилища (например, Firebase, AWS, Google Cloud). Приложение может отправлять данные на удаленный сервер для хранения и последующего получения по запросу.
  6. Cache: Данные могут временно храниться в кэше приложения для повышения производительности и ускорения доступа к ним. Кэширование часто используется для хранения изображений, статических данных и другой информации, которая может быть загружена повторно без запроса к серверу.

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

71
Q

Как тестировать миграцию локальных данных?

Mobile

A

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

  1. Создание тестовых данных: Перед проведением тестирования миграции локальных данных необходимо создать набор тестовых данных, который позволит проверить процесс миграции от старой версии базы данных к новой. Тестовые данные должны быть представлены различными типами данных, содержать все возможные сценарии использования и быть репрезентативными для реальных данных приложения.
  2. Разработка автоматизированных тестов: Разработка автоматизированных тестов позволит упростить и ускорить процесс тестирования миграции локальных данных. Автоматизированные тесты могут включать в себя проверку всей логики миграции данных, корректность преобразования данных, целостность данных, а также проверку правильности работы приложения после миграции.
  3. Тестирование отдельных компонентов: При тестировании миграции локальных данных важно провести тестирование каждого компонента, связанного с процессом миграции, таких как схема базы данных, запросы SQL, обработка данных и т.д. Это позволит выявить возможные проблемы и ошибки на раннем этапе.
  4. Тестирование сценариев использования: Для эффективного тестирования миграции локальных данных необходимо также проверить различные сценарии использования приложения после миграции. Это включает проверку работы всех функций приложения, доступ к данным, отображение информации и любые другие функциональные аспекты, которые могут быть затронуты процессом миграции.
  5. Ручное тестирование: Помимо автоматизированных тестов, важно также провести ручное тестирование миграции локальных данных. Ручное тестирование позволяет выявить потенциальные проблемы, которые могут быть упущены автоматизированными средствами, а также проверить пользовательский опыт и интерфейс приложения.
  6. Тестирование на различных устройствах и платформах: При тестировании миграции локальных данных необходимо убедиться, что процесс миграции работает корректно на различных версиях устройств и операционных систем, а также на разных разрешениях экранов и поддерживаемых языках.

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

72
Q

Каковы основные компоненты Android-приложений (активити/фрагмент/сервис/интент-фильтр)?

Mobile

A

Основные компоненты Android-приложений включают в себя активити (Activity), фрагменты (Fragment), сервисы (Service) и интент-фильтры (Intent Filters). Вот краткое описание каждого компонента:

  1. Activity (Активити): Активити представляют собой основные элементы пользовательского интерфейса в Android-приложениях. Они представляют отдельный экран с которым пользователь может взаимодействовать. Активити могут содержать различные виджеты, элементы управления и логику приложения.
  2. Fragment (Фрагмент): Фрагменты представляют собой дополнительные модули интерфейса, которые могут быть повторно использованы и встраиваться в активити. Фрагменты облегчают создание модульного и адаптивного пользовательского интерфейса, а также управление жизненным циклом компонента.
  3. Service (Сервис): Сервисы представляют фоновые задачи и процессы, которые могут работать независимо от пользовательского интерфейса. Они могут выполнять длительные операции, взаимодействовать с сетью, управлять аудио или обрабатывать другие фоновые задачи.
  4. Intent Filter (Интент-фильтр): Интент-фильтры позволяют приложению объявлять, какие действия или типы данных оно может обрабатывать. Они используются для определения, какие компоненты приложения могут быть запущены или активированы через интент (намерение). Интенты играют важную роль в коммуникации между различными компонентами Android-приложений и могут использоваться для запуска активити, запуска сервиса, отправки широковещательных сообщений и других действий.

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

73
Q

Опишите жизненный цикл активити.

Mobile

A

Жизненный цикл Activity в Android состоит из ряда состояний, которые определяются событиями, происходящими с Activity во время его работы. Вот основные состояния и методы жизненного цикла Activity:

  1. onCreate(): Метод вызывается при создании Activity. Здесь обычно инициализируются ресурсы, устанавливаются интерфейс и связи с базой данных.
  2. onStart(): Метод вызывается, когда Activity видна пользователю, но еще не в фокусе. Здесь проводятся подготовка к отображению активности.
  3. onResume(): Метод вызывается, когда Activity находится в фокусе и можно начинать взаимодействие с пользователем. Это состояние, когда Activity может принимать ввод от пользователя.
  4. onPause(): Метод вызывается, когда другая Activity становится на передний план (Activity теряет фокус), но она еще видна пользователю. Здесь обычно сохраняют состояние и приостанавливают анимации или другие процессы, требующие ресурсов.
  5. onStop(): Метод вызывается, когда Activity становится невидимой пользователю. Здесь происходит освобождение ресурсов.
  6. onDestroy(): Метод вызывается перед тем, как Activity будет полностью уничтожена. Здесь следует освободить все ресурсы, которые памятся или могут привести к утечке памяти.

Activity может также переходить из состояния onPause() в onResume() (если Activity снова становится видимой пользователю), а также из состояния onStop() в onRestart() (если Activity снова становится видимой после полной остановки).

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

74
Q

Что такое истоки памяти?Как найти?

Mobile

A

Истоки памяти (Memory Leaks) - это ситуация в программировании, когда приложение не освобождает память корректно после использования, что приводит к постепенному увеличению использования памяти и, в конечном итоге, к утечкам памяти. Источниками утечек памяти могут быть некорректное управление памятью, циклические ссылки, утечки контекста и другие проблемы в коде приложения.

Чтобы найти источники утечек памяти в приложении, можно использовать различные инструменты и подходы:

  1. Профилирование памяти: Используйте инструменты профилирования памяти, такие как Android Profiler в Android Studio или другие сторонние инструменты, чтобы анализировать использование памяти в реальном времени и выявлять потенциальные утечки.
  2. Heap дампы: Запускайте и анализируйте heap дампы (захват памяти в определенный момент времени) с помощью инструментов, таких как MAT (Eclipse Memory Analyzer Tool) или Android Debug Bridge (adb), чтобы определить, какие объекты занимают больше всего памяти и что может привести к утечкам.
  3. Анализ кода: Внимательно просмотрите свой код и ищите потенциальные проблемы, например, недостаточное закрытие ресурсов, утечки памяти в асинхронных операциях, сохранение ссылок на неиспользуемые объекты и т.д.
  4. Использование инструментов статического анализа кода: Используйте инструменты статического анализа кода, такие как Lint в Android Studio, которые могут помочь выявить потенциальные проблемы в коде, включая утечки памяти.
  5. Проверка жизненного цикла объектов: Проследите за жизненным циклом объектов в приложении и убедитесь, что каждый объект корректно уничтожается после использования, чтобы избежать утечек памяти.
  6. Тестирование на реальных устройствах: Проводите тестирование на различных устройствах, запускайте приложение в течение длительного времени и мониторьте использование памяти, чтобы выявить источники утечек.

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

75
Q

Как протестировать билд на Android?

Mobile

A

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

  1. Ручное тестирование:
    - Установите полученный APK-файл приложения на устройство и протестируйте его вручную.
    - Проверьте основные функции и сценарии использования приложения на разных устройствах и разрешениях экранов.
    - При обнаружении ошибок или недочетов, составьте отчет о проблемах для исправления разработчиками.
  2. Автоматизированное тестирование:
    - Используйте инструменты автоматизированного тестирования, такие как Espresso, Appium, UI Automator или Robolectric для написания и запуска тестов на устройствах или эмуляторах.
    - Автоматизируйте проверку основных функций приложения, UI компонентов, взаимодействия с сервером, обработку данных и другие сценарии.
    - Оцените покрытие кода автоматизированными тестами и удостоверьтесь, что они покрывают основные функциональности приложения.
  3. Тестирование на различных устройствах:
    - Проведите тестирование на различных моделях устройств (смартфоны, планшеты) с различными версиями Android и разрешениями экранов.
    - Убедитесь, что приложение работает корректно на устройствах с раз - доступом к сети разного типа (Wi-Fi, мобильная сеть) и в различных условиях связи.
  4. Тестирование производительности:
    - Проведите тестирование производительности приложения, проверьте скорость загрузки, отклик при взаимодействии с пользователем, использование ресурсов устройства и другие аспекты производительности.
    - Используйте инструменты профилирования, такие как Android Profiler, для анализа использования памяти, процессора и других ресурсов в реальном времени.
  5. Тестирование безопасности:
    - Проведите тестирование на уязвимости и утечки данных приложения, проверьте безопасность передачи и хранения информации.
    - Убедитесь, что приложение соответствует стандартам безопасности Android и не представляет угрозы для конфиденциальности пользовательских данных.

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

76
Q

Что такое Testflight?Как тестировать с его помощью?

Mobile

A

TestFlight - это платформа бета-тестирования приложений для устройств iOS, разработанная Apple. С помощью TestFlight разработчики могут распространять бета-версии своих приложений среди тестировщиков и получать обратную связь для улучшения качества приложения перед его выпуском в App Store.

Для тестирования с помощью TestFlight необходимо выполнить следующие шаги:

  1. Загрузка приложения на TestFlight: Разработчик должен использовать Apple Developer Account для загрузки приложения на TestFlight. Приложение будет доступно для тестирования только после одобрения и публикации разработчиком.
  2. Приглашение тестировщиков: Разработчик может отправить приглашения на участие в бета-тестировании через TestFlight. Тестировщики получат приглашение по электронной почте и смогут загрузить приложение из TestFlight на свои устройства.
  3. Тестирование приложения: Тестировщики могут установить бета-версию приложения через TestFlight и протестировать его на своих устройствах. Они могут отправлять обратную связь, замечания и ошибки через TestFlight, чтобы разработчики могли вносить исправления и улучшения в приложение.
  4. Управление тестированием: Разработчики могут использовать TestFlight для управления бета-тестированием, анализа использования приложения тестировщиками, отслеживания обратной связи и отправки обновлений приложения для тестирования.

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

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

77
Q

Как работает Android?Какая у него архитектура?

Mobile

A

Android - операционная система, разработанная компанией Google для мобильных устройств, таких как смартфоны и планшеты. Android работает на базе ядра Linux и предоставляет разработчикам и пользователям богатый набор функций и возможностей. Вот основные принципы работы и архитектура Android:

  1. Виртуальная машина Dalvik и ART: Android приложения выполняются в специальной виртуальной машине Dalvik (до версии Android 4.4) или ART (начиная с Android 5.0), что позволяет приложениям работать на различных устройствах, независимо от аппаратной части. Это также обеспечивает безопасность и изоляцию приложений друг от друга.
  2. Архитектура приложений: Приложения в Android разрабатываются с использованием компонентов, таких как Activity, Fragment, Service, Content Provider и Broadcast Receiver. Каждый компонент выполняет определенные функции и помогает взаимодействовать с пользователем и другими приложениями.
  3. Ядро Linux: Android основана на ядре Linux, что обеспечивает высокую стабильность, безопасность и производительность системы. Ядро Linux обрабатывает аппаратные ресурсы устройства, такие как дисплей, камера, сенсоры, сеть и другие.
  4. Фреймворк приложений: Android предоставляет разработчикам широкий набор API и инструментов для создания разнообразных приложений, включая доступ к аппаратным ресурсам устройства, управление UI элементами, работу с базами данных, управление сетевым взаимодействием, обработку мультимедийных данных, обеспечение безопасности и многое другое.
  5. Слой приложений и системы: Android состоит из слоя приложений (приложения, пользовательский интерфейс) и слоя системы, который обеспечивает базовые функции уровня операционной системы, такие как управление ресурсами устройства, диспетчеризацию задач, работы с памятью и файловой системой.
  6. Процесс управления жизненным циклом: Android использует уникальное управление жизненным циклом компонентов приложений, а также специальные методы и события, чтобы обеспечить эффективное управление ресурсами и состоянием приложений.

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

78
Q

Как происходит деплой IOS/AOS?

Mobile

A

Деплой приложений на платформах iOS (Apple) и Android (Google) осуществляется с использованием соответствующих магазинов приложений - App Store для iOS и Google Play для Android. Вот общий процесс деплоя приложений на обеих платформах:

Деплой на iOS (App Store):
1. Регистрация в Apple Developer Program: Разработчик должен иметь аккаунт в Apple Developer Program, чтобы получить доступ к инструментам разработки приложений и возможность публикации в App Store.

  1. Создание и подготовка приложения: Разработчик должен создать приложение, протестировать его на устройствах iOS, убедиться в соответствии правилам App Store и подготовить все необходимые материалы (скриншоты, описание, ключевые слова).
  2. Создание и отправка настройки профиля: Разработчик создает профиль устройства и подписывает приложение перед отправкой в App Store через Xcode (интегрированная среда разработки iOS).
  3. Подача заявки на публикацию: Разработчик загружает приложение в iTunes Connect, заполняет метаданные (название, описание, скриншоты), устанавливает цену (если не бесплатное) и подает заявку на публикацию.
  4. Рецензирование и публикация: Apple проходит процедуру рецензирования для проверки соответствия правилам и политике App Store. После прохождения рецензии приложение публикуется в App Store.

Деплой на Android (Google Play):
1. Регистрация в Google Play Developer Console: Разработчик должен зарегистрироваться в Google Play Developer Console, чтобы получить доступ к инструментам разработки приложений для Android и возможность публикации в Google Play Store.

  1. Подготовка приложения: Создайте и подготовьте ваше приложение для публикации, удостоверьтесь, что оно соответствует требованиям Google Play Policies и протестировано на совместимость с различными устройствами Android.
  2. Загрузка приложения в Google Play Console: Загрузите собранный APK-файл вашего приложения в Google Play Console, предоставьте необходимые метаданные (название, описание, иконка, скриншоты, ключевые слова), установите цену (если нужно) и отправьте приложение на публикацию.
  3. Обзор и публикация: Google проводит автоматическую проверку безопасности и соответствия приложения правилам Google Play. После успешного завершения проверки, ваше приложение становится доступным для загрузки и установки из Google Play Store.

Оба процесса имеют свои особенности и требования, но в общем деплой приложений на iOS и Android основывается на подготовке приложения, соблюдении правил и политик магазинов приложений, загрузке и публикации через соответствующие консоли разработчиков.

78
Q

Что делать, если разработчик не соглашается, что заведенный баг действительно является багом?А если в требованиях использована неоднозначная формулировка?Если бизнес-аналитик, PM и представитель клиента сейчас недоступны, чтобы подсказать?Как можно предотвратить такую ситуацию?

Практические задания

A
  1. Обращаемся к требованиям в документации
  2. Обращаемся к аналитику, PM\PO или представителю клиента для уточнения формулировки
  3. Обращаемся к тим-лиду QA или разработки или к своему руководителю

Вводим тестирование требований и ревью требований. Тестирование должны проводить сами аналитики

Для предотвращения подобных ситуаций:

  1. Четкое определение критериев бага: С участием команды определите четкие критерии, по которым проблема может быть классифицирована как баг. Это поможет избежать неоднозначных ситуаций в будущем.
  2. Установление процедур урегулирования споров: Убедитесь, что с командой установлены четкие процедуры разрешения спорных ситуаций, включая коммуникацию с другими членами команды или руководством, если требуется дополнительное утверждение.
  3. Регулярное обучение и обмен опытом: Регулярное обучение и обмен опытом с членами команды помогут укрепить понимание общих критериев багов и улучшат коммуникацию в команде.
  4. Понимание целей продукта: Понимание целей и потребностей пользователей продукта поможет определить, какие проблемы действительно важны и должны быть рассмотрены как баги.
  5. Регулярное обсуждение и принятие обратной связи: Регулярное обсуждение в команде и принятие обратной связи от всех участников процесса разработки поможет улучшить взаимопонимание и избежать недопониманий или конфликтов в процессе выявления и исправления багов.
79
Q

Сложилась ситуация, когда команда тестирования не успевает закончить свою работу в дедлайн.Как правильно поступать в этом случае?А если релиз передвинуть нельзя?А если никакие фичи из релиза убрать нельзя?

Практические задания

A
  1. Передвигается релиз
  2. Из релиза исключатся непротестированные фичи
  3. Выбираются самые критичные тест-кейсы и проверяются только они
80
Q

Что делать, если проект уже начался, а QA-инженер там начал работать только когда начали разрабатываться бизнес-фичи?Какие этапы тестирования теперь нужно наверстать и нужно ли это?Как это сделать максимально грамотно без ущерба для загрузки по тестированию новых фич?Какие риски имеет позднее вовлечение QA-инженера в разработку?

Практические задания

A

Когда QA-инженер начинает работать на проекте поздно, после того как начали разрабатываться бизнес-фичи, возникает несколько проблем и рисков. Однако, есть стратегии, которые могут помочь наверстать упущенное время и минимизировать риски:

Этапы тестирования для наведения порядка:

  1. Анализ проекта: Проведите обзор уже разработанных бизнес-фич, верифицируйте требования и понимание функционала приложения.
  2. Создание тест-плана и тест-кейсов: На основе собранной информации разработайте тест-план и тест-кейсы для тестирования уже реализованных функций.
  3. Выполнение регрессионного тестирования: Проведите регрессионное тестирование, чтобы убедиться, что изменения в новых фичах не повлияли на уже существующий функционал.
  4. Тестирование интеграции: Проведите тестирование интеграции для проверки взаимодействия между новыми и существующими фичами.
  5. Приоритизация тестирования: Определите приоритеты тестирования и сосредоточьтесь на наиболее важных для проекта областях.

Риски позднего вовлечения QA-инженера:

  1. Недостаточное покрытие тестирования: Позднее вовлечение QA-инженера может привести к недостаточному покрытию тестирования, что повышает риск обнаружения проблем в более поздние стадии разработки или даже после выпуска продукта.
  2. Ошибки и дефекты: Недостатки в спецификациях или разработке могут остаться незамеченными без своевременного тестирования, что может привести к возникновению проблем и дефектов в конечном продукте.
  3. Отсутствие обратной связи: Позднее вовлечение QA-инженера может означать, что важные обратные связи или рекомендации по улучшению могут быть упущены.

Меры для минимизации рисков:

  1. Коммуникация и сотрудничество: Установите открытую и эффективную коммуникацию между командами разработки и тестирования, чтобы обеспечить понимание всех областей проекта.
  2. Использование автоматизации: Используйте инструменты автоматизации тестирования для быстрого запуска тестов и обнаружения проблем, а также повторного выполнения тестов при необходимости.
  3. Непрерывное тестирование: Внедрите принципы Continuous Testing для раннего и непрерывного тестирования приложения на всех этапах разработки.
  4. Обратная связь и обучение: Обеспечьте обратную связь между разработчиками, QA-инженером и остальными членами команды, а также обеспечьте обучение и совместное обсуждение технических аспектов.
81
Q

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

Практические задания

A
82
Q

Написать предельные значения для ввода в форму оплаты товара на сайте.

Практические задания

A
83
Q

Как проверить, что данные отправились на сервер, если у нас нет доступа к бэкенду?

Практические задания

A
84
Q

Есть метод POST, который регистрирует нового пользователя на сайте, есть тело запроса, содержащее данные о почте, телефоне, имени пользователя и адресе проживания.Какие кейсы для проверки можете привести?

Практические задания

A
85
Q

На что следует акцентировать внимание при автоматизации методов API?Что следует проверять?

Практические задания

A
86
Q

Вам необходимо сделать Regression Testing за два дня. Как вы это сделаете, если Regression Run охватывает 1000 тест-кейсов?

Практические задания

A
87
Q

Вы тестируете логин-форму, вводите логин и пароль, нажимаете кнопку логин и ничего не происходит.Ваши действия?

Практические задания

A
88
Q

Есть веб-приложение интернет-магазина (регистрация, логин, поиск товаров, корзина и покупки).Веб-приложение поддерживает следующие браузеры: Chrome, Safari, Edge.У нас есть ограниченное время на тестирование.Расскажите, как вы будете проверять приложение?

Практические задания

A