Поддержка и тестирование программных модулей

Практическая работа. Тестирование «чёрным ящиком»

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

1

Принцип тестирования «чёрным ящиком»

Тестирование «чёрным ящиком» — проектирование проверок по требованиям к программе, её входным данным и ожидаемому поведению без опоры на внутреннее устройство кода. Тестировщику важно установить, делает ли система то, что должна делать.

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

Требование → входные данные → действие программы → результат

Пример: покупатель вводит 2 билета
Ожидаемое поведение: система рассчитывает цену двух билетов
Различие: «белый ящик» строит тесты по структуре программы; «чёрный ящик» — по её заявленным правилам поведения. В этой работе исходный код анализировать не нужно.
Задание 1. Определяем, что проверять

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

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

2

Требования, тест-кейсы и ожидаемый результат

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

Поле тест-кейсаПример
IDTC-01
УсловиеПользователь находится на форме входа
Входные данныеВерный логин и верный пароль
ШагиЗаполнить поля и нажать «Войти»
Ожидаемый результатОткрылся личный кабинет
Фактический результат / статусЗаполняют после выполнения: Passed или Failed

Статус Passed означает, что фактический результат совпал с ожидаемым; Failed — что обнаружено расхождение.

Задание 2. Создаём тест-кейсы по требованиям

Требование: название проекта должно содержать от 3 до 15 символов включительно. При другой длине система выводит «Недопустимая длина».

Составьте два полных тест-кейса: один с допустимым названием, другой — с недопустимым. Укажите ID, исходное условие, данные, действие и ожидаемый результат. Фактический результат пока неизвестен — не придумывайте его.

3

Классы эквивалентности

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

Пример: программа принимает только целые значения оценки от 0 до 100 включительно. Оценки 0–59 означают «Не сдал», а 60–100 — «Сдал». Остальные значения отклоняются с сообщением «Ошибка ввода».

Класс значенийПоведение программыПример теста
Целые ниже 0Ошибка ввода−5
0–59Не сдал35
60–100Сдал80
Целые выше 100Ошибка ввода110
Не целое числоОшибка ввода«abc»
Классы должны быть непересекающимися в пределах выбранного основания разбиения. Важно проверять и допустимые, и недопустимые значения.
Задание 3. Разбиваем значения на группы

Требование: автомат принимает целое количество товаров от 1 до 10 включительно. Если количество меньше 1, больше 10 или введено не целое число, программа отвечает «Ошибка».

1. Выделите все классы эквивалентности по допустимости значения.
2. Для каждого класса подберите хотя бы один тест.
3. Укажите ожидаемый результат для каждого теста.

4

Анализ граничных значений

Ошибки особенно часто встречаются на границе допустимого диапазона. Например, программист мог случайно заменить «не меньше» на «строго больше».

Если допустимый возраст — от 18 до 65 лет включительно, полезны тесты на самих границах, непосредственно перед ними и сразу после них:

Нижняя граница: 17 | 18 | 19
Верхняя граница: 64 | 65 | 66

17 — недопустимо; 18 — допустимо; 19 — допустимо
64 — допустимо; 65 — допустимо; 66 — недопустимо
Для целочисленных входов можно применять проверку трёх значений около границы: граница − 1, сама граница, граница + 1.
Задание 4. Проверяем границы диапазона

Требование: программа принимает целый вес посылки от 2 до 25 кг включительно. При допустимом весе выводится «Принято», иначе — «Ошибка веса».

1. Подберите шесть граничных значений (по три около каждой границы).
2. Для каждого запишите ожидаемый ответ программы.
3. Объясните, какую ошибку может обнаружить тест ровно на 25 кг.

5

Негативное тестирование и некорректный ввод

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

Пример требования: код подтверждения состоит ровно из 6 цифр от 0 до 9. Пробелы, буквы и другие символы запрещены.

«123456»  — допустимое значение
«12345»   — слишком короткое
«1234567» — слишком длинное
«12A456»  — содержит букву
«12 456»  — содержит пробел
«»        — пустая строка
Задание 5. Проектируем негативные тесты

Требование: логин состоит от 6 до 12 символов включительно и содержит только английские буквы A–Z, a–z и цифры 0–9. При нарушении любого правила выводится «Некорректный логин»; допустимый логин принимается.

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

6

Таблицы решений: проверяем сочетания условий

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

Пример: заказ отправляется, только если он оплачен и товар есть на складе.

Оплачен?Товар в наличии?Ожидаемый результат
НетНетНе отправлять
НетДаНе отправлять
ДаНетНе отправлять
ДаДаОтправить

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

Задание 6. Создаём таблицу решений

Требования для стоимости доставки:

  • Если сумма заказа от 3000 ₽ включительно — доставка 0 ₽.
  • Если заказ меньше 3000 ₽, но покупатель имеет статус VIP — доставка 100 ₽.
  • Если заказ меньше 3000 ₽ и покупатель не VIP — доставка 300 ₽.

1. Составьте таблицу для четырёх сочетаний условий «заказ от 3000 ₽?» и «VIP?».
2. Для каждого сочетания выберите конкретную сумму заказа и ожидаемую стоимость доставки.

7

Тестирование переходов между состояниями

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

Правила учебной системы ввода PIN-кода:

0 ошибок → 1 ошибка → 2 ошибки → Блокировка
     \           \           \
     верно       верно       верно
        ↘          ↓          ↙
          Доступ + сброс к 0 ошибкам
Для таких функций одного теста «верный пароль» недостаточно. Необходимо проверять последовательности действий.
Задание 7. Проверяем переходы состояний

Для каждой последовательности запишите ответ системы после каждого ввода и конечное состояние:

Сценарий A: неверный → неверный → неверный → верный.
Сценарий Б: неверный → неверный → верный → неверный → неверный.

Считайте, что в начале каждого сценария счётчик ошибок равен нулю, аккаунт разблокирован. При неверном PIN до блокировки появляется «Неверный PIN»; при верном до блокировки — «Доступ разрешён».

8

Проверки файлов и форматов

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

Требования учебной системы: разрешены файлы формата PNG и JPG размером от 1 000 000 до 5 000 000 байт включительно. Во всех остальных случаях приложение выдаёт «Файл отклонён», для допустимого файла — «Файл принят». Для заданий считаем формат известным и корректным по содержимому.

Задание 8. Комбинируем классы и границы

Разработайте шесть тест-кейсов для загрузки файла. Обязательно проверьте:

  1. один корректный PNG;
  2. один корректный JPG;
  3. размер на 1 байт меньше минимума;
  4. точно максимальный размер;
  5. на 1 байт больше максимума;
  6. запрещённый формат при допустимом размере.

У каждого теста укажите формат, размер в байтах и ожидаемый результат.

9

Практический тренажёр: найдите расхождение

Ниже находится учебная программа, которую следует проверить методом «чёрного ящика». Вы видите только её входы и выход. Функция рассчитывает стоимость доставки по требованиям, которые даны ниже.

Требования к тренажёру: сумма заказа — целое число от 0 до 20 000 ₽ включительно; пустые и нецелые значения недопустимы. Для некорректной суммы программа должна сообщить «Ошибка ввода». Для корректной суммы доставка определяется правилами из задания 6: от 3000 ₽ — бесплатно; до 3000 ₽ для VIP — 100 ₽, для остальных — 300 ₽.

Проверка стоимости доставки

Введите данные и нажмите «Рассчитать доставку».

Приложение запускается прямо в браузере и не требует подключения к интернету. Оно может содержать дефект — проверяйте по требованиям, а не по предположениям.

Задание 9. Выполняем реальные тесты

1. Выполните не менее восьми проверок тренажёра. Используйте границы 3000 ₽, 0 ₽ и 20 000 ₽, оба статуса пользователя и хотя бы один некорректный ввод.
2. Для каждого теста запишите входные данные → ожидаемый результат → фактический результат → Passed/Failed.
3. Если найдёте расхождение, запишите точный ввод, на котором оно воспроизводится.

10

Как оформить найденный дефект

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

ПолеЧто указать
НазваниеКратко описать неправильное поведение
ПредусловияС какого состояния начинали проверку
Шаги воспроизведенияТочные действия и данные
Ожидаемый результатКак должно быть по требованиям
Фактический результатЧто программа показала в действительности
СерьёзностьКак дефект влияет на работу пользователя, с кратким обоснованием
Не путайте наблюдение с догадкой. «Программа показала 300 ₽» — наблюдение. «Программист неправильно написал if» — предположение о реализации; для метода «чёрного ящика» оно не требуется.
Задание 10. Составляем баг-репорт

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

11

Самостоятельное проектирование набора тестов

Представьте новую систему бронирования билетов. Исходный код неизвестен; доступна только спецификация.

Спецификация: пользователь покупает целое количество билетов от 1 до 6. Цена одного билета — 500 ₽. Для владельцев карты участника действует скидка 10% на общую стоимость билетов. При количестве вне диапазона или при нецелом значении программа отвечает «Ошибка» и ничего не рассчитывает.
Задание 11. Итоговый набор тест-кейсов

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

12

Контрольные вопросы

Ответьте кратко, своими словами. Приведите примеры из выполненных заданий.

Задание 12. Закрепление
  1. Что является главным источником для выбора проверок при тестировании «чёрным ящиком»?
  2. Чем ожидаемый результат отличается от фактического?
  3. Зачем делить входные значения на классы эквивалентности?
  4. Почему значения около границ особенно важны?
  5. Когда удобна таблица решений, а когда — тестирование переходов состояний?
  6. Какая информация нужна, чтобы другой тестировщик смог воспроизвести дефект?

Перед сдачей работы

✓ Указаны ФИО, группа и дата.
✓ Заполнены ответы к заданиям 1–12.
✓ В задании 9 записаны ожидаемые и фактические результаты, а не только входные числа.
✓ В тест-кейсах учтены допустимые и недопустимые данные.
✓ При наличии расхождения оформлен воспроизводимый баг-репорт.

Нажмите «Отправить работу — сохранить PDF». В появившемся окне печати выберите «Сохранить как PDF». Все введённые ответы полностью попадут в документ.

Терминология и методики: ISTQB Certified Tester Foundation Level, v4.0.1, разделы 4.1–4.2. Примеры, требования и тренажёр разработаны специально для учебной работы.

Подготовка PDF…