Практика: тестирование «чёрным ящиком»
На первой лекции мы разобрали теорию: что такое тестирование, чем оно отличается от отладки, какие бывают виды. Теперь — время практики. Мы возьмём готовую программу «Калькулятор» и попробуем сломать её, используя метод «чёрного ящика».
Цель и задачи
Цель: получить практические навыки тестирования программы методом «чёрного ящика».
Что мы сделаем
- 1 Изучим требования к калькулятору.
- 2 Составим тест-кейсы (проверочные примеры).
- 3 Выполним их на реальной программе.
- 4 Найдём ошибки (если они есть).
- 5 Оформим баг-репорты (отчёты об ошибках).
Что мы тестируем: требования
Перед тестированием всегда нужно понять, что именно должна делать программа. Вот требования к нашему калькулятору.
Что такое тест-кейс
Тест-кейс (test case, «тестовый пример») — это описание проверки: что подаём на вход, что ожидаем получить и при каких условиях.
Пример тест-кейса: сложение
Составим первый тест-кейс для функции сложения.
Таблица тест-кейсов
Все тест-кейсы удобно записывать в таблицу. Вот пример для функции сложения.
Как выполнять тест-кейсы
Выполнять тест-кейсы нужно по шагам. Вот простая инструкция.
- Откройте калькулятор (программу, которую выдал преподаватель).
- Возьмите первый тест-кейс из таблицы.
- Введите значения из столбцов
aиb. - Нажмите кнопку операции (в данном случае «+»).
- Посмотрите на результат.
- Запишите фактический результат в таблицу.
- Сравните его с ожидаемым.
- Если совпало — поставьте
Passed. Если нет —Failed. - Переходите к следующему тест-кейсу.
Что такое баг-репорт
Баг-репорт (bug report, «отчёт об ошибке») — это документ, в котором тестировщик описывает найденный дефект так, чтобы программист мог его воспроизвести и исправить.
Пример баг-репорта
Вот как выглядит правильно оформленный баг-репорт.
Задание 1: сложение и вычитание
Составьте и выполните тест-кейсы для функций сложения и вычитания.
Что нужно сделать
- Придумать минимум 5 тест-кейсов для сложения.
- Придумать минимум 5 тест-кейсов для вычитания.
- Включить в них:
- положительные числа;
- отрицательные числа;
- ноль;
- граничные значения (максимальное и минимальное);
- переполнение.
- Выполнить все тест-кейсы на реальной программе.
- Заполнить таблицу результатов.
Задание 2: умножение и деление
Теперь — умножение и деление. Здесь есть важная особенность: делить на ноль нельзя.
Что нужно сделать
- Придумать 5 тест-кейсов для умножения.
- Придумать 5 тест-кейсов для деления, включая деление на ноль.
- Проверить, что калькулятор:
- правильно умножает положительные и отрицательные числа;
- правильно обрабатывает ноль;
- выдаёт ошибку при делении на ноль.
- Выполнить тест-кейсы и заполнить таблицу.
Задание 3: остаток от деления
Остаток от деления — операция mod. Например, 7 mod 3 = 1, потому что 7 = 3 × 2 + 1.
Что нужно сделать
- Придумать 5 тест-кейсов для остатка от деления.
- Проверить:
- положительные числа;
- отрицательные числа;
- ноль в делимом;
- ноль в делителе (должна быть ошибка).
- Выполнить тест-кейсы.
- Если найдены дефекты — оформить баг-репорты.
Задание 4: граничные значения
Граничные значения — это числа на границе допустимого диапазона. Именно там чаще всего возникают ошибки.
Задание 5: недопустимые значения
Хороший тестировщик проверяет не только «правильные» данные, но и «неправильные».
Что попробовать ввести
- Буквы вместо чисел:
abc + 5. - Спецсимволы:
@#$ + 5. - Пустое поле (ничего не введено).
- Очень длинное число:
99999999999999999999. - Дробное число:
3.5 + 2(если калькулятор целочисленный).
Шаблон для отчёта
Оформите результаты работы в виде отчёта. Вот рекомендуемая структура.
Критерии оценки
Как будет оцениваться практическая работа.
Оценка «4» (хорошо): 14–17 баллов.
Оценка «3» (удовлетворительно): 10–13 баллов.
Советы по тестированию
Несколько практических советов, которые помогут найти больше дефектов.
- Думайте как пользователь. Что бы вы сделали, если бы первый раз увидели эту программу?
- Пробуйте странные комбинации. Например, максимальное число плюс максимальное число.
- Проверяйте границы. Ошибки чаще всего прячутся именно там.
- Не бойтесь «сломать» программу. Это ваша работа.
- Записывайте всё. Даже если кажется, что «это не баг, а фича» — запишите и обсудите с преподавателем.
Итоги практики
Подведём итоги. Вот что вы освоили.
- ✅ Тест-кейс — это описание проверки с входными данными и ожидаемым результатом.
- ✅ Баг-репорт — это описание дефекта с шагами воспроизведения.
- ✅ Граничные значения — числа на границе диапазона — самые «урожайные» на ошибки.
- ✅ Недопустимые значения — буквы, спецсимволы, пустые поля — тоже нужно проверять.
- ✅ Тестирование «чёрным ящиком» — не требует знания кода, но требует внимательности и фантазии.
Домашнее задание
Задания для самостоятельной работы. Первые два обязательны, остальные — для оценки «отлично».
- Дополните таблицу тест-кейсов для деления и остатка от деления до 10 штук на каждую операцию.
- Оформите итоговый отчёт по шаблону.
- Придумайте 3 тест-кейса, которые проверяют работу калькулятора на «нестандартных» данных (например, ввод пробелов, знаков препинания).
- Найдите в интернете пример реального баг-репорта и сравните его со своим.
- Объясните своими словами, почему граничные значения так важны для тестировщика.
Что дальше?
В этом блоке по тестированию у нас ещё несколько материалов.
- Лекция 2: классы эквивалентности и граничные значения (углублённо).
- Лекция 3: тест-кейсы, чек-листы, баг-репорты.
- Практика 2: модульное тестирование в Visual Studio (C#) или pytest (Python).
Спасибо за работу!
🔍
Тестировщик — это не «разрушитель», а «защитник»
Вы находите проблемы до того, как их найдут пользователи. Это делает программы лучше и безопаснее.