Подробно все базовые определения и понятия тестирования, а также разновидности и классы тестирования будут разобраны на примерах в отдельном разделе. В этой же статье будут рассмотрены только основные моменты, на которые стоит обратить особое внимание и сфокусироваться при подготовке к собеседованию: "Что такое тестирование ПО?" "Чем тестированеие отличается от QA?" "Что такое валидация и верификация и какая между ними разница?" "Какие бывают виды и типы тестирования?"
1. В первую очередь от претендента на позицию тестировщика ждут, что он знает что-такое тестирование. Определений тестирования множество, например, оно может быть таким:
- Тестирование ПО – это анализ и исследование программного продукта с целью выявления возможных ошибок, а также оценки и демонстрации того, что продукт соответствует требованиям заказчика
Или таким:
- Тестирование ПО – проверка реального поведения программного продукта на соответствие заявленным требованиям
Можно использовать любое из этих определений (или какое-то другое), главное - это понимание вопроса. Если кандидат цитирует книжные определения не вполне их понимая, это сразу заметно. Поэтому гораздо лучше будет сформулировать все своими словами.
2. Многие интервьюеры интересуются, в чем отличие тестирования от QA. При ответе на этот вопрос лучше всего вспомнить и описать общую картину процесса обеспечения качества продукта. Есть 3 основных уровня:
- Самый верхний – QA (Quality Assurance), обеспечение качества продукта путем выстраивания и оптимизации процессов как в команде тестирования, так и во взаимодействии ее с другими командами и ролями. Это стратегические задачи по обеспечению качества продукта на всех этапах его жизненного цикла от проектирования (тестирование требований), до сопровождения (обеспечение необходимых характеристик продукта при хранении, транспортировке, применении и т.п.).
- QC (Quality Control), является частью QA, это контроль качества продукта\поставки\сборки путем планирования, документирования, проведения и анализа результатов тестирования. Это тактика тестирования продукта.
- Тестирование (в свою очередь является частью QC) – это непосредственно выполнение тестов с целью нахождение проблем и ошибок в ПО.
Здесь также важно показать свой взгляд на этот вопрос и сформулировать различия своими словами
3. Часто на интервью встречаются вопросы про различие верификации и валидации продукта:
- Верификация – это подтверждение, что были выполнены все требования предъявляемые к ПО.
- Валидация – это проверка того, что ПО соответствует потребностям пользователей и его можно использовать в реальной жизни.
Другими словами: верификация показывает, что у нас есть все необходимые компоненты продукта, он соответствует всем заявленным требованиям, а валидация показывает, что продукт может быть применен в тех условиях и таким образом, как этого ожидал пользователь\заказчик.
4. Также важно представлять какие бывают классы, виды и типы тестов, зачем они необходимы. Это нужно знать, чтобы общаться с будущими коллегами по команде на одном языке и понимать какие проверки нужны в том или ином случае. Далее приведу некоторые основные виды тестирования, которые необходимо знать и различать:
- По объекту тестирования: функциональное и нефункциональное:
- Функциональное тестирование – проверка того, что продукт выполняет свое прямое назначение, предоставляет функции, требуемые заказчиком\пользователями.
- Нефункциональное тестирование – это проверка качественных характеристик продукта: скорости работы, надежности, безопасности и т.п. Нефункциональное тестирование делиться на (приведу основные виды):
- Тестирование производительности
- Конфигурационное тестирование
- Юзабилити-тестирование
- Тестирование пользовательского интерфейса
- Тестирование безопасности
- Тестирование совместимости
- По изолированности компонент: системное, интеграционное, модульное. Можно сказать, что это классификация по уровню, по масштабности тестирования:
- Мы можем проверять работоспособность ПО на уровне одного отдельного программного модуля\блока – это модульное тестирование.
- Можно проверять взаимодействие нескольких модулей друг с другом через какой-либо интерфейс – это интеграционное тестирование.
- Самый большой масштаб, это системное тестирование – проверка работоспособности смей системы \ всего продукта в целом.
- По версии функционала: тестирование новой функциональности и регрессионное тестирование:
- С одной стороны мы можем проверять новые функции, которые включены в последнюю сборку продукта
- С другой – проводить регрессионное тестирование, т.е. проверять что функционал из предыдущих версий не пострадал после внедрения нового. Понятие и цели регрессионного тестирования – являются важным и частым вопросом на интервью
- По ожидаемому результату: позитивное и негативное тестирование:
- Позитивное тестирование – проверки, цель которых получить положительный результат, правильную отработку системы
- Негативное тестирование – проверка сценариев, когда действие не может быть выполнено системой, анализ того, как система реагирует на ошибки и некорректные запросы
- По уровню знаний системы: тестирование методом черного, белого или серого ящика:
- Метод тестирования черного ящика – это проверка ПО с точки зрения внешнего мира, когда внутреннее устройство продукта неизвестно. В данном случае мы сосредоточены на проверке функционалиности продукта
- Метод тестирования белого ящика – проверка реализации ПО, когда мы представляем его внутреннюю структуру, имеем доступ к коду
- Метод тестирования серого ящика – комбинация первых двух видов. При данном подходе мы концентрируемся на конечной функциональности ПО, но знаем его внутреннюю реализацию, что дает больше идей о том, как этот продукт тестировать
- По степени автоматизации: ручное и автоматизированное тестирование:
- Во первых, здесь нужно объяснить разницу между этими видами тестирования, что просто: ручное – выполняется вручную, автоматизированное – с использованием средств автоматизации, программных средств (т.е. одна программа тестирует другую)
- Во вторых, часто требуется объяснить, когда выгодна, не выгодна автоматизация или невозможна автоматизация
- По уровню планирования: тестирование по тестовым кейсам и исследовательское тестирование
- В первом случае мы заранее планируем какие проверки будем выполнять и готовим их в виде тестовых кейсов\тестовых сценариев.
- Во втором – мы исследуем продукт в «свободном плавании», выполняем те проверки и в той последовательности, которые кажутся необходимыми в данный момент времени.
В данном вопросе главное – суметь объяснить на примерах назначения и различия видов тестирования. Очень важно помнить и понимать, что все эти виды и типы тестирования не обязательно являются взаимоисключающими, их нельзя перечислить в один ряд через запятую. Это скорее взгляд с разных точек зрения на то, как тестировать и что тестировать. Поэтому, например, функциональное тестирование может быть: в рамках белого и черного ящика; можно проводить его вручную, а можно использовать автоматизацию; мы можем проверять позитивные или негативные функциональные сценарии; можно проверять функционал проходя по тестовым сценариям или без них и т.д. С остальными видами дело обстоит также.
Список требований к тестировщику ПО