Основы
Что такое тестирование программного обеспечения?
Это процесс оценки качества программного продукта путем поиска дефектов и проверки соответствия требованиям, чтобы убедиться, что продукт работает так, как ожидалось.-
Каковы основные цели тестирования ПО?
Обнаружение дефектов.
Проверка соответствия требованиям.
Улучшение качества продукта.
Обеспечение надежности и стабильности ПО.
Предотвращение ошибок на более ранних стадиях разработки.
-
Какие основные уровни тестирования существуют?
Модульное тестирование.
Интеграционное тестирование.
Системное тестирование.
Приемочное тестирование.
-
Какие существуют виды тестирования?
Функциональное тестирование.
Нефункциональное тестирование (производительность, безопасность и т. д.).
Ручное и автоматизированное тестирование.
Регрессионное тестирование.
Тестирование совместимости.
-
Чем отличается статическое тестирование от динамического?
Статическое тестирование: Анализ документации, кода и других артефактов без их выполнения (например, ревью кода, проверка требований).
Динамическое тестирование: Выполнение программы для поиска дефектов.
-
Какие артефакты используются в тестировании?
Тест-планы.
Тест-кейсы.
Чек-листы.
Отчеты о дефектах.
Отчеты о тестировании.
-
Что такое позитивное и негативное тестирование?
Позитивное тестирование: Проверка работы системы при вводе корректных данных.
Негативное тестирование: Проверка поведения системы при вводе некорректных или неожиданных данных.
-
Что такое критерии выхода из тестирования?
Это условия, при выполнении которых тестирование считается завершенным. Например:Достигнуто определенное покрытие тестами.
Исправлены критические дефекты.
Завершены все запланированные тестовые сценарии.
-
Какие основные техники проектирования тестов используются?
Эквивалентное разбиение.
Анализ граничных значений.
Попарное тестирование (Pairwise).
Тестирование на основе графов и таблиц решений.
-
Какие этапы включает процесс тестирования?
Анализ требований.
Планирование тестирования.
Разработка тест-кейсов.
Выполнение тестов.
Заведение дефектов.
Анализ результатов тестирования и создание отчетов.
Модульное тестирование
Что такое модульное тестирование?
Модульное тестирование – это процесс проверки отдельных компонентов или модулей программного обеспечения в изоляции для оценки их корректной работы.Какие основные цели преследует модульное тестирование?
Проверка функциональности отдельных частей кода.
Обнаружение ошибок на ранних этапах разработки.
Упрощение рефакторинга и внесения изменений в код.
Повышение качества кода.
Какие инструменты используют для модульного тестирования?
Java: JUnit, TestNG.
Python: unittest, pytest.
JavaScript: Jest, Mocha, Jasmine.
C#: NUnit, MSTest, xUnit.
PHP: PHPUnit.
Что такое мок-объекты?
Мок-объекты – это объекты-заменители, которые имитируют поведение реальных зависимостей, таких как базы данных, API или внешние сервисы. Они помогают изолировать тестируемый модуль.Чем отличается модульное тестирование от интеграционного?
Модульное тестирование проверяет работу отдельных компонентов в изоляции, а интеграционное тестирование проверяет взаимодействие между модулями и их совместную работу.Какие метрики важны в модульном тестировании?
Покрытие кода (coverage).
Количество успешно пройденных тестов.
Время выполнения тестов.
Количество обнаруженных ошибок.
Какими характеристиками должен обладать хороший модульный тест?
Изолированность.
Повторяемость.
Простота.
Быстродействие.
Чёткая проверка ожидаемых результатов.
Как определяется покрытие кода?
Покрытие кода измеряется с помощью инструментов, таких как JaCoCo (Java), Coverage.py (Python) или Istanbul (JavaScript), и показывает процент строк или путей кода, выполненных при запуске тестов.Какие виды модульных тестов существуют?
Позитивные тесты: проверяют работу кода на правильных входных данных.
Негативные тесты: проверяют реакции на некорректные данные.
Граничные тесты: тестируют крайние значения входных данных.
Тесты исключений: проверяют обработку ошибок и исключений.
Почему важно писать модульные тесты? Модульные тесты помогают находить ошибки на ранних стадиях, упрощают процесс разработки, делают код более надёжным, упрощают его модификацию и способствуют автоматизации тестирования.
Интеграционное тестирование
Что такое интеграционное тестирование?
Интеграционное тестирование – это процесс проверки взаимодействия между модулями или компонентами системы для оценки их совместной работы.Какие цели преследует интеграционное тестирование?
Выявление проблем взаимодействия между модулями.
Проверка корректности передачи данных между компонентами.
Убедиться, что интегрированные модули работают как единая система.
Какие стратегии используются в интеграционном тестировании?
Снизу вверх (Bottom-Up): тестирование начинается с низкоуровневых модулей и постепенно поднимается вверх.
Сверху вниз (Top-Down): тестирование начинается с высокоуровневых модулей, постепенно добавляя низкоуровневые.
Большой взрыв (Big Bang): все модули интегрируются и тестируются одновременно.
Смешанный подход (Sandwich): комбинация стратегий "снизу вверх" и "сверху вниз".
Какие инструменты используются для интеграционного тестирования?
Postman, SoapUI – для тестирования API.
Selenium – для тестирования взаимодействия пользовательских интерфейсов.
JUnit, pytest – для тестирования взаимодействия между модулями.
Jenkins – для автоматизации интеграционных тестов.
Чем интеграционное тестирование отличается от модульного?
Модульное тестирование проверяет отдельные модули в изоляции, а интеграционное тестирование фокусируется на проверке взаимодействия между этими модулями.Какие метрики важны в интеграционном тестировании?
Количество выявленных ошибок взаимодействия.
Покрытие интеграции (процент взаимодействий, покрытых тестами).
Время выполнения тестов.
Уровень стабильности при интеграции новых модулей.
Какими характеристиками должен обладать хороший интеграционный тест?
Учитывать реальный сценарий взаимодействия компонентов.
Быть изолированным от внешних зависимостей (если возможно).
Учитывать негативные сценарии и ошибки.
Проверять совместимость данных между модулями.
Какие виды интеграционного тестирования существуют?
Тестирование точек взаимодействия: проверка API, интерфейсов и методов вызова.
Тестирование потоков данных: проверка корректности передачи данных между модулями.
Регрессионное тестирование: проверка, что интеграция новых модулей не нарушает работу существующих.
Как проверить взаимодействие между модулями, зависящими от внешних сервисов?
Используются заглушки (stubs) и мок-объекты для имитации поведения внешних сервисов и снижения зависимости от них.Почему важно проводить интеграционное тестирование?
Интеграционное тестирование помогает обнаружить ошибки взаимодействия между модулями, обеспечивает стабильность всей системы и предотвращает дефекты, которые могут возникнуть в процессе интеграции компонентов.
Системное тестирование
Что такое системное тестирование?
Системное тестирование – это этап тестирования, на котором проверяется полная, интегрированная система для оценки её соответствия установленным требованиям.Какие цели преследует системное тестирование?
Убедиться, что система работает как единое целое.
Проверить соответствие системы функциональным и нефункциональным требованиям.
Обнаружить ошибки, которые не были выявлены на предыдущих этапах тестирования.
Какие виды тестов используются в системном тестировании?
Функциональное тестирование: проверка, соответствует ли система функциональным требованиям.
Нефункциональное тестирование: проверка производительности, безопасности, удобства использования и других аспектов.
Регрессионное тестирование: убедиться, что изменения в системе не привели к новым дефектам.
Какие инструменты используются для системного тестирования?
Selenium, Appium – для автоматизации функциональных тестов.
JMeter, LoadRunner – для тестирования производительности.
OWASP ZAP, Burp Suite – для проверки безопасности.
TestRail, Zephyr – для управления тестовыми сценариями.
Чем системное тестирование отличается от интеграционного?
Интеграционное тестирование фокусируется на проверке взаимодействия между модулями, тогда как системное тестирование проверяет всю систему в целом, включая взаимодействие с внешними системами.Какие метрики важны в системном тестировании?
Количество найденных дефектов.
Покрытие требований тестами.
Уровень соответствия системы нефункциональным требованиям (например, время отклика).
Степень автоматизации тестирования.
Какими характеристиками должен обладать хороший системный тест?
Отражать реальные сценарии использования.
Быть понятным и легко воспроизводимым.
Проверять как функциональные, так и нефункциональные требования.
Покрывать как позитивные, так и негативные сценарии.
Какие виды нефункционального тестирования входят в системное тестирование?
Тестирование производительности: проверка скорости, масштабируемости и стабильности системы.
Тестирование безопасности: оценка устойчивости к атакам и защите данных.
Тестирование удобства использования (usability): проверка, насколько система удобна для конечных пользователей.
Тестирование совместимости: проверка работы системы в разных средах и с разными устройствами.
Какие основные подходы к выполнению системного тестирования существуют?
Ручное тестирование: тестировщики вручную проверяют систему по тестовым сценариям.
Автоматизированное тестирование: использование инструментов для автоматизации повторяющихся тестов.
Сценарное тестирование: проверка системы по заранее разработанным пользовательским сценариям.
Исследовательское тестирование: тестировщик исследует систему без заранее подготовленных сценариев.
Почему важно проводить системное тестирование? Системное тестирование позволяет убедиться, что система работает корректно, удовлетворяет требованиям и готова к использованию конечными пользователями. Оно выявляет критические дефекты перед выпуском продукта, снижая риски.
Нефункциональное тестирование
Что такое нефункциональное тестирование?
Нефункциональное тестирование – это вид тестирования, направленный на проверку нефункциональных характеристик системы, таких как производительность, масштабируемость, надежность, удобство использования и безопасность.Какие цели преследует нефункциональное тестирование?
Оценка качества работы системы в различных условиях.
Проверка соответствия системы нефункциональным требованиям.
Выявление узких мест в производительности, безопасности или удобстве использования.
Какие виды тестов относятся к нефункциональному тестированию?
Тестирование производительности.
Тестирование нагрузки.
Стресс-тестирование.
Тестирование безопасности.
Тестирование удобства использования (usability).
Тестирование совместимости.
Тестирование отказоустойчивости.
Чем нефункциональное тестирование отличается от функционального?
Функциональное тестирование проверяет, что система выполняет свои функции в соответствии с требованиями, а нефункциональное тестирование оценивает, как система работает, включая такие аспекты, как скорость, безопасность и стабильность.Какие инструменты используются для нефункционального тестирования?
Производительность: JMeter, LoadRunner, Gatling.
Безопасность: OWASP ZAP, Burp Suite, Nessus.
Удобство использования: Crazy Egg, Optimal Workshop.
Совместимость: BrowserStack, Sauce Labs.
Стресс-тестирование: Apache JMeter, NeoLoad.
Какие метрики важны в нефункциональном тестировании?
Время отклика (response time).
Пропускная способность (throughput).
Уровень отказов (failure rate).
Уровень безопасности (security score).
Удовлетворенность пользователей (user satisfaction).
Совместимость с разными платформами.
Что такое тестирование производительности?
Тестирование производительности оценивает, насколько эффективно система функционирует под определенной нагрузкой, проверяя такие параметры, как скорость, стабильность и масштабируемость.Что такое нагрузочное тестирование?
Нагрузочное тестирование проверяет, как система работает при увеличении количества пользователей или операций до нормального или близкого к максимальному уровня.Что такое стресс-тестирование?
Стресс-тестирование оценивает поведение системы в экстремальных условиях, например, при превышении пиковых нагрузок или ограниченных ресурсах.Что такое тестирование отказоустойчивости?
Тестирование отказоустойчивости проверяет способность системы продолжать работу при частичных отказах или сбоях компонентов.Что такое тестирование безопасности?
Тестирование безопасности выявляет уязвимости системы, защищенность данных и устойчивость к атакам, таким как SQL-инъекции или атаки на отказ в обслуживании (DoS).Что такое тестирование удобства использования (usability)?
Это тестирование оценивает удобство интерфейса системы, её интуитивность, доступность и удовлетворенность пользователей при использовании.Что такое тестирование совместимости?
Это проверка работы системы в различных средах: операционных системах, браузерах, устройствах и сетевых конфигурациях.Какими характеристиками должен обладать хороший нефункциональный тест?
Быть ориентированным на реальные сценарии использования.
Учитывать как позитивные, так и негативные сценарии.
Проверять поведение системы при различных условиях.
Обеспечивать повторяемость результатов.
Что такое базовое тестирование производительности?
Это начальная проверка системы для установления базовых параметров, таких как среднее время отклика и пропускная способность.Что такое тестирование масштабируемости?
Тестирование масштабируемости оценивает способность системы справляться с увеличением нагрузки путем добавления ресурсов.Что такое тестирование стабильности?
Тестирование стабильности проверяет, как система работает в течение длительного времени под постоянной нагрузкой.Что такое тестирование пиковых нагрузок?
Это тестирование системы при максимальной возможной нагрузке для проверки её работоспособности в таких условиях.Что такое тестирование пользовательского опыта (UX)?
Тестирование UX направлено на оценку восприятия системы пользователями, удобства её использования и соответствия ожиданиям.Почему важно проводить нефункциональное тестирование?
Оно помогает оценить качество работы системы, выявить узкие места, улучшить пользовательский опыт и обеспечить соответствие нефункциональным требованиям.
Нагрузочное тестирование
61. Что такое нагрузочное тестирование?
Нагрузочное тестирование – это тип тестирования, целью которого является проверка работы системы под ожидаемой или повышенной нагрузкой. Оно помогает оценить производительность приложения и выявить возможные узкие места.
62. Чем нагрузочное тестирование отличается от стресс-тестирования?
Нагрузочное тестирование проверяет, как система справляется с ожидаемой нагрузкой.
Стресс-тестирование проверяет поведение системы за пределами её нормальных возможностей, чтобы выявить, где она перестаёт работать.
63. Какие метрики используются в нагрузочном тестировании?
Время отклика (Response Time)
Пропускная способность (Throughput)
Использование ресурсов (CPU, RAM, диск, сеть)
Количество ошибок (Error Rate)
Время выполнения транзакций.
64. Какие инструменты используются для нагрузочного тестирования?
Apache JMeter
LoadRunner
Gatling
Locust
k6
Artillery.
65. Как определить уровень нагрузки для тестирования?
Уровень нагрузки определяется исходя из:
Количества пользователей, активно работающих с системой.
Количества транзакций в секунду.
Типа запросов (например, чтение данных или запись). Анализ реальных данных использования помогает определить эти параметры.
66. Что такое пиковая нагрузка и зачем её тестировать?
Пиковая нагрузка – это максимальная нагрузка, которую система должна выдерживать в течение короткого периода времени. Тестирование пиковой нагрузки необходимо, чтобы убедиться, что система будет стабильно работать в часы наибольшей активности.
67. Какие проблемы можно выявить с помощью нагрузочного тестирования?
Узкие места в производительности.
Нехватка ресурсов (CPU, память).
Проблемы с масштабируемостью.
Ошибки в обработке запросов под нагрузкой.
Долгое время отклика.
68. Что такое базовая линия в нагрузочном тестировании?
Базовая линия – это начальное состояние системы, при котором фиксируются ключевые метрики производительности. Она используется для сравнения результатов других тестов и оценки изменений в системе.
69. Как правильно интерпретировать результаты нагрузочного тестирования?
Результаты интерпретируются с учётом:
Ожидаемой производительности.
Сравнения с базовой линией.
Количества ошибок и времени отклика.
Соответствия требованиям SLA (Service Level Agreement).
70. Какие подходы существуют для проведения нагрузочного тестирования?
Основные подходы:
Пошаговое увеличение нагрузки: постепенное увеличение числа пользователей.
Тестирование с постоянной нагрузкой: проверка стабильности при фиксированной нагрузке.
Стресс-тестирование: проверка системы за пределами её возможностей.
Тестирование на деградацию: измерение производительности при длительном использовании.
Тестирование при отказе компонентов: оценка системы при сбоях отдельных частей.
Мобильное тестирование
Что такое мобильное тестирование?
Мобильное тестирование – это процесс проверки функциональности, производительности, удобства использования и других аспектов мобильных приложений на различных устройствах, операционных системах и сетях.Какие цели преследует мобильное тестирование?
Проверка корректности работы приложения на различных устройствах и платформах.
Оценка удобства использования (usability) для конечных пользователей.
Выявление багов, связанных с производительностью, совместимостью и безопасностью.
Проверка работы приложения в различных сетевых условиях.
Какие виды тестов используются в мобильном тестировании?
Функциональное тестирование.
Тестирование производительности.
Тестирование безопасности.
Тестирование удобства использования (usability).
Тестирование совместимости.
Тестирование на реальных устройствах и эмуляторах.
Тестирование сетевых подключений.
Какие инструменты используются для мобильного тестирования?
Автоматизация тестов: Appium, Selendroid, Espresso.
Тестирование производительности: JMeter, NeoLoad.
Мониторинг крашей: Firebase Crashlytics, BugSnag.
Совместимость: BrowserStack, Sauce Labs.
Сетевые тесты: Charles Proxy, Wireshark.
Какие платформы нужно учитывать при мобильном тестировании?
Основные платформы – iOS и Android. Иногда также учитываются менее популярные ОС, такие как HarmonyOS или KaiOS, если это релевантно для продукта.Чем мобильное тестирование отличается от тестирования веб-приложений?
Большое разнообразие устройств и разрешений экранов.
Различные версии мобильных ОС.
Ограниченные ресурсы устройств (память, процессор).
Учет условий сети (Wi-Fi, 4G/5G, слабый сигнал).
Необходимость тестирования на жесты (тач, свайп, многопальцевые действия).
Какие метрики важны в мобильном тестировании?
Время отклика приложения.
Использование ресурсов устройства (процессор, память, батарея).
Количество багов на устройстве/платформе.
Статистика падений (crash rate).
Уровень покрытия тестами.
Что такое тестирование совместимости в мобильных приложениях?
Это проверка работы приложения на различных устройствах, экранах, версиях ОС, а также его взаимодействия с другими приложениями и системами.Какие основные проблемы могут возникнуть в процессе мобильного тестирования?
Огромное количество устройств и ОС для проверки.
Различия в поведении приложений на реальных устройствах и эмуляторах.
Ограниченные ресурсы для тестирования (время, оборудование).
Сложность моделирования реальных сетевых условий.
Быстро меняющиеся требования и частые обновления ОС.
Почему важно проводить мобильное тестирование? Мобильное тестирование позволяет гарантировать, что приложение работает корректно, удобно для пользователей, не содержит критических ошибок и соответствует ожиданиям рынка, что особенно важно в условиях высокой конкуренции.
Практические вопросы на собеседовании
Как проверить функциональность формы авторизации в мобильном приложении? Проверяйте следующие сценарии:
Ввод правильных данных (позитивный сценарий).
Ввод неверного логина или пароля (негативный сценарий).
Пустые поля.
Проверка блокировки после нескольких неудачных попыток.
Проверка автозаполнения полей.
Работа кнопок "Забыли пароль?" и "Регистрация".
Как протестировать производительность приложения при слабом соединении? Используйте инструменты для симуляции сетевых условий, например, Charles Proxy. Настройте ограничение скорости до 2G/3G и проверьте:
Время загрузки контента.
Корректность обработки ошибок при отсутствии интернета.
Поведение приложения при переподключении.
Как проверить корректность отображения UI на разных устройствах?
Тестируйте на реальных устройствах с различными разрешениями экранов.
Проверьте адаптивность интерфейса в портретной и ландшафтной ориентациях.
Убедитесь, что текст, изображения и кнопки отображаются корректно и не обрезаются.
Как протестировать работу уведомлений?
Разрешите и запретите отправку уведомлений для приложения.
Проверьте получение уведомлений при заблокированном и разблокированном экране.
Нажмите на уведомление и убедитесь, что оно открывает нужный раздел приложения.
Проверьте настройки уведомлений внутри приложения.
Как протестировать работу приложения с камерой?
Проверьте запрос на доступ к камере при первом использовании.
Отключите разрешение для камеры в настройках устройства и проверьте реакцию приложения.
Проверьте, что происходит, если камера занята другим приложением.
Убедитесь, что фото или видео корректно сохраняются.
Как проверить работу приложения при получении звонка?
Запустите приложение, начните выполнение действия, например, загрузку.
Ответьте на входящий звонок.
Проверьте, возобновляет ли приложение свою работу после завершения звонка.
Как протестировать приложение при низком уровне заряда батареи?
Убедитесь, что приложение работает корректно при уровне заряда <10%.
Проверьте, отображаются ли уведомления или предупреждения о низком заряде.
Убедитесь, что фоновые процессы не замедляются.
Как проверить приложение в режиме многозадачности?
Запустите приложение, сверните его и откройте другое приложение.
Вернитесь в тестируемое приложение и убедитесь, что состояние сохранено.
Проверьте, как приложение обрабатывает уведомления в фоне.
Как протестировать приложение в режиме энергосбережения?
Включите энергосберегающий режим на устройстве.
Убедитесь, что приложение работает корректно, но некоторые функции (например, автообновление) могут быть ограничены.
Проверьте, отображает ли приложение уведомления об ограничениях.
Как протестировать устойчивость приложения к утечкам памяти?
Используйте инструменты мониторинга, такие как Android Studio Profiler или Instruments для iOS.
Выполняйте длительные тесты на использование приложения, переключение экранов и работу с большими данными.
Проверьте, не растет ли использование памяти со временем без необходимости.
Как протестировать API-запросы, используемые приложением?
Используйте Postman для отправки запросов.
Проверьте позитивные сценарии (корректные параметры) и негативные (неверные параметры, таймауты, недоступность сервера).
Убедитесь, что приложение корректно обрабатывает ошибки API.
Как проверить процесс установки, обновления и удаления приложения?
Установите приложение, запустите его и проверьте начальную настройку.
Обновите приложение с предыдущей версии и убедитесь, что данные сохраняются.
Удалите приложение и проверьте, что данные полностью очищены.
Как протестировать приложение при перегреве устройства?
Симулируйте перегрев, запустив ресурсоемкие задачи.
Проверьте, как приложение работает в этих условиях, например, снижает ли частоту кадров или предупреждает пользователя.
Как протестировать мультиязычность приложения?
Переключите язык устройства на поддерживаемый приложением.
Проверьте правильность перевода, отображение текста и отсутствие искажений интерфейса.
Убедитесь, что при отсутствии перевода отображается текст на языке по умолчанию.
Как протестировать приложение при одновременном использовании нескольких приложений?
Запустите приложение и несколько других приложений одновременно.
Проверьте, как оно работает при переключении между задачами.
Убедитесь, что приложение не закрывается автоматически при недостатке памяти.
Как протестировать корзину в интернет-магазине?
Добавьте товары в корзину и убедитесь, что они отображаются корректно.
Удалите товар и проверьте обновление итоговой суммы.
Измените количество товара и проверьте перерасчет.
Проверьте, что корзина сохраняется после перезапуска приложения.
Как протестировать граничные условия при вводе данных?
Введите данные максимальной длины, содержащие специальные символы и пробелы.
Проверьте, что система корректно обрабатывает такие данные или сообщает об ошибке.
Попробуйте ввести пустое поле и проверьте обработку.
Как протестировать встроенные покупки?
Проверьте покупку при наличии средств на счете.
Проверьте отказ от покупки до подтверждения.
Попробуйте совершить покупку при недостатке средств и проверьте сообщение об ошибке.
Как протестировать восстановление приложения после сбоя?
Форсируйте сбой приложения через настройки системы.
Перезапустите приложение и убедитесь, что оно восстанавливается в корректном состоянии.
Как протестировать приложение на устройствах с разным объемом памяти?
Запустите приложение на устройствах с минимальным объемом оперативной памяти.
Проверьте производительность, стабильность и обработку ошибок, если памяти не хватает.
Комментарии (4)
boraldomaster
05.01.2025 19:24Часть вопросов тут явно для собеседования на вполне себе разработчика:
Что такое мок-объекты?
Покрытие кода (coverage).
Интеграционное тестирование
djglukbh
05.01.2025 19:24Полная ИИ дичь, сгенеренная ради статьи. Ну и к реальной жизни отношения не имеет. Зная ответы на эти вопросы тестировщиком не станешь.
Самое забавное, что регистрация от 2016, а приглашение от декабря 2024. Привет хабробот от самого хабра
lytican
Хорошая попытка, ChatGPT. Но нет.
П.с.: кто заметил моменты, которые заметил я - просьба не упоминать их.
spooph
А что тут замечать, у этого "автора" абсолютно все "статьи" сгенерированы chatGPT.