20 вопросов на собесе по тестированию “черного ящика”

В этой статье мы рассмотрим некоторые распространенные вопросы на собеседовании, касающиеся тестирования “черного ящика”, и дадим советы, как на них отвечать.

БОЛЬШЕ ВОПРОСОВ С СОБЕСЕДОВАНИЙ В НАШЕМ ТЕЛЕГРАМ КАНАЛЕ QASOBES

1. Что такое тестирование “черного ящика”?

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

2. Чем оно отличается от тестирования “белого ящика” и тестирования “серого ящика”?

“Черный ящик” – это метод тестирования программного обеспечения, при котором тестировщик не имеет доступа к коду программы. “Белый ящик”, наоборот, дает тестировщику доступ к коду, и он может видеть, как программа работает. “Серый ящик” – это нечто среднее, когда тестировщик имеет некоторый доступ к коду, но не полный.

3. Каковы преимущества тестирования “черного ящика” перед другими видами тестирования?

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

4. Каковы ограничения тестирования “черного ящика”?

Тестирование “черного ящика” имеет свои минусы:

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

5. В чем разница между функциональным тестированием и юзабилити-тестированием?

Функциональное тестирование направлено на проверку функциональности системы. Цель – убедиться, что система работает так, как ожидается. А юзабилити-тестирование направлено на проверку удобства использования системы. Цель – убедиться, что система удобна и проста в использовании.

6. Что вы понимаете под интеграционным тестированием “сверху вниз” и “снизу вверх”? Какое из них вы бы выбрали для своего проекта и почему?

Интеграционное тестирование “сверху вниз” начинается с тестирования компонентов самого высокого уровня, а затем переходит к компонентам более низкого уровня. При тестировании “снизу вверх” сперва проверяется функционал системы на самом базовом уровне, а затем тестировщик постепенно переходит к более высокоуровневым компонентам.

Я бы выбрал(а) интеграционное тестирование “снизу вверх” для своего проекта, потому что:

  • Это позволяет тестировать компоненты системы по отдельности.
  • Это упрощает поиск и исправление ошибок в компонентах системы до их интеграции.

7. Можете привести пример использования эквивалентного разбиения при проведении тестирования “черного ящика”?

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

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

8. Почему анализ граничных значений является мощным методом обнаружения ошибок в ПО?

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

9. Что такое тестирование пути и чем оно отличается от тестирования ветвей?

Тестирование пути – это вид тестирования “черного ящика”, который оценивает все возможные пути выполнения кода. Это тестирование всех возможных комбинаций ввода и вывода. Тестирование ветвей проверяет только различные ветви кода (например, if-else, switch-case), а не все пути.

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

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

11. Что вы понимаете под “предугадыванием ошибок”?

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

12. На какие уровни подразделяется тестирование “черного ящика”?

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

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

Цель тестирования производительности – убедиться, что система справится с нагрузкой, которая будет на нее возложена, например, с растущим количеством пользователей или запросов.

14. Считаете ли вы, что использование автоматизированных инструментов тестирования лучше, чем ручное тестирование? Если да, то почему?

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

15. Можете ли вы объяснить, что такое фаззинг, и в каком контексте он полезен?

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

16. Приведите пример популярных open source инструментов для фаззинг-тестирования

Из популярных инструментов с открытым исходным кодом, применяющихся для фаззинг-тестирования, можно назвать American Fuzzy Lop (AFL), Peach Fuzzer и Sulley.

17. Что такое цикломатическая сложность?

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

18. В чем разница между тестированием “белого ящика” и тестированием “черного ящика”?

Тестирование “белого ящика” – это вид тестирования, при котором тестировщик имеет доступ к коду программы, что позволяет ему понимать ее структуру и работу. При тестировании “черного ящика” тестировщик не имеет представления о внутреннем устройстве тестируемой системы.

19. Какие этапы включает в себя тестирование “черного ящика”?

Существует четыре основных этапа тестирования “черного ящика”:

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

20. Что такое покрытие путей и покрытие операторов? Какое из них вы предпочитаете и почему?

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

Перевод статьи «20 Black Box Testing Interview Questions and Answers».

1 комментарий к “20 вопросов на собесе по тестированию “черного ящика””

  1. Пингбэк: Анализ граничных значений

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *