Поддержка и тестирование программных модулей
Практическая работа. Тестирование «чёрным ящиком»
Изучайте требования к программе, составляйте тест-кейсы и проверяйте её поведение, не анализируя исходный код. Ответы записывайте прямо на странице. В конце сохраните заполненную работу в PDF.
Принцип тестирования «чёрным ящиком»
Тестирование «чёрным ящиком» — проектирование проверок по требованиям к программе, её входным данным и ожидаемому поведению без опоры на внутреннее устройство кода. Тестировщику важно установить, делает ли система то, что должна делать.
Представьте автомат продажи билетов. Вы выбираете количество билетов, оплачиваете и получаете чек. Для проверки этого поведения знать алгоритм расчёта внутри автомата необязательно.
Требование → входные данные → действие программы → результат Пример: покупатель вводит 2 билета Ожидаемое поведение: система рассчитывает цену двух билетов
У приложения для входа задано требование: при верных логине и пароле открывается личный кабинет, при неверном пароле появляется сообщение «Неверный пароль».
1. Составьте два теста: для успешного входа и для неверного пароля.
2. Для каждого укажите входные данные и ожидаемый результат.
3. Объясните, почему для этих проверок не нужен исходный код.
Требования, тест-кейсы и ожидаемый результат
Требование описывает, как система должна работать. Тест-кейс фиксирует условия, входные данные, шаги выполнения и ожидаемый результат. После запуска появляется фактический результат, который сравнивают с ожидаемым.
| Поле тест-кейса | Пример |
|---|---|
| ID | TC-01 |
| Условие | Пользователь находится на форме входа |
| Входные данные | Верный логин и верный пароль |
| Шаги | Заполнить поля и нажать «Войти» |
| Ожидаемый результат | Открылся личный кабинет |
| Фактический результат / статус | Заполняют после выполнения: Passed или Failed |
Статус Passed означает, что фактический результат совпал с ожидаемым; Failed — что обнаружено расхождение.
Требование: название проекта должно содержать от 3 до 15 символов включительно. При другой длине система выводит «Недопустимая длина».
Составьте два полных тест-кейса: один с допустимым названием, другой — с недопустимым. Укажите ID, исходное условие, данные, действие и ожидаемый результат. Фактический результат пока неизвестен — не придумывайте его.
Классы эквивалентности
Разбиение на классы эквивалентности — способ разделить входные данные на группы, для которых система, по требованиям, должна вести себя одинаково. Вместо проверки каждого числа выбирают представителя каждой группы.
Пример: программа принимает только целые значения оценки от 0 до 100 включительно. Оценки 0–59 означают «Не сдал», а 60–100 — «Сдал». Остальные значения отклоняются с сообщением «Ошибка ввода».
| Класс значений | Поведение программы | Пример теста |
|---|---|---|
| Целые ниже 0 | Ошибка ввода | −5 |
| 0–59 | Не сдал | 35 |
| 60–100 | Сдал | 80 |
| Целые выше 100 | Ошибка ввода | 110 |
| Не целое число | Ошибка ввода | «abc» |
Требование: автомат принимает целое количество товаров от 1 до 10 включительно. Если количество меньше 1, больше 10 или введено не целое число, программа отвечает «Ошибка».
1. Выделите все классы эквивалентности по допустимости значения.
2. Для каждого класса подберите хотя бы один тест.
3. Укажите ожидаемый результат для каждого теста.
Анализ граничных значений
Ошибки особенно часто встречаются на границе допустимого диапазона. Например, программист мог случайно заменить «не меньше» на «строго больше».
Если допустимый возраст — от 18 до 65 лет включительно, полезны тесты на самих границах, непосредственно перед ними и сразу после них:
Нижняя граница: 17 | 18 | 19 Верхняя граница: 64 | 65 | 66 17 — недопустимо; 18 — допустимо; 19 — допустимо 64 — допустимо; 65 — допустимо; 66 — недопустимо
Требование: программа принимает целый вес посылки от 2 до 25 кг включительно. При допустимом весе выводится «Принято», иначе — «Ошибка веса».
1. Подберите шесть граничных значений (по три около каждой границы).
2. Для каждого запишите ожидаемый ответ программы.
3. Объясните, какую ошибку может обнаружить тест ровно на 25 кг.
Негативное тестирование и некорректный ввод
Позитивные тесты проверяют ожидаемую работу с правильными данными. Негативные тесты проверяют реакцию на данные или действия, которые не соответствуют требованиям: пустые поля, неверные форматы, символы, слишком длинные значения.
Пример требования: код подтверждения состоит ровно из 6 цифр от 0 до 9. Пробелы, буквы и другие символы запрещены.
«123456» — допустимое значение «12345» — слишком короткое «1234567» — слишком длинное «12A456» — содержит букву «12 456» — содержит пробел «» — пустая строка
Требование: логин состоит от 6 до 12 символов включительно и содержит только английские буквы A–Z, a–z и цифры 0–9. При нарушении любого правила выводится «Некорректный логин»; допустимый логин принимается.
Подготовьте один позитивный и пять негативных тест-кейсов. Негативные проверки должны охватывать разные нарушения требований, а не пять одинаковых вариантов.
Таблицы решений: проверяем сочетания условий
Некоторые функции зависят сразу от нескольких условий. Таблица решений помогает не забыть комбинации входных параметров и соответствующие действия.
Пример: заказ отправляется, только если он оплачен и товар есть на складе.
| Оплачен? | Товар в наличии? | Ожидаемый результат |
|---|---|---|
| Нет | Нет | Не отправлять |
| Нет | Да | Не отправлять |
| Да | Нет | Не отправлять |
| Да | Да | Отправить |
Даже если несколько сочетаний дают одинаковый результат, они могут быть полезны как отдельные тесты.
Требования для стоимости доставки:
- Если сумма заказа от 3000 ₽ включительно — доставка 0 ₽.
- Если заказ меньше 3000 ₽, но покупатель имеет статус VIP — доставка 100 ₽.
- Если заказ меньше 3000 ₽ и покупатель не VIP — доставка 300 ₽.
1. Составьте таблицу для четырёх сочетаний условий «заказ от 3000 ₽?» и «VIP?».
2. Для каждого сочетания выберите конкретную сумму заказа и ожидаемую стоимость доставки.
Тестирование переходов между состояниями
Иногда результат зависит не только от текущего ввода, но и от предыдущих действий. Например, аккаунт может быть разблокирован, иметь одну или две неудачные попытки или перейти в состояние блокировки.
Правила учебной системы ввода PIN-кода:
- После трёх неверных вводов подряд аккаунт блокируется; уже на третьей ошибке выводится «Заблокировано».
- Верный PIN до блокировки даёт доступ и сбрасывает счётчик ошибок.
- После блокировки система отвечает «Заблокировано», даже если введён верный PIN.
- Разблокировка производится только администратором; в наших сценариях её не происходит.
0 ошибок → 1 ошибка → 2 ошибки → Блокировка
\ \ \
верно верно верно
↘ ↓ ↙
Доступ + сброс к 0 ошибкам
Для каждой последовательности запишите ответ системы после каждого ввода и конечное состояние:
Сценарий A: неверный → неверный → неверный → верный.
Сценарий Б: неверный → неверный → верный → неверный → неверный.
Считайте, что в начале каждого сценария счётчик ошибок равен нулю, аккаунт разблокирован. При неверном PIN до блокировки появляется «Неверный PIN»; при верном до блокировки — «Доступ разрешён».
Проверки файлов и форматов
Для проверки загрузки файла тестировщик ориентируется на требования: разрешённые форматы, допустимый размер и поведение при ошибке. Одно лишь правильное расширение файла не гарантирует его корректное содержимое, поэтому дополнительные проверки могут быть нужны по спецификации.
Требования учебной системы: разрешены файлы формата PNG и JPG размером от 1 000 000 до 5 000 000 байт включительно. Во всех остальных случаях приложение выдаёт «Файл отклонён», для допустимого файла — «Файл принят». Для заданий считаем формат известным и корректным по содержимому.
Разработайте шесть тест-кейсов для загрузки файла. Обязательно проверьте:
- один корректный PNG;
- один корректный JPG;
- размер на 1 байт меньше минимума;
- точно максимальный размер;
- на 1 байт больше максимума;
- запрещённый формат при допустимом размере.
У каждого теста укажите формат, размер в байтах и ожидаемый результат.
Практический тренажёр: найдите расхождение
Ниже находится учебная программа, которую следует проверить методом «чёрного ящика». Вы видите только её входы и выход. Функция рассчитывает стоимость доставки по требованиям, которые даны ниже.
Проверка стоимости доставки
Приложение запускается прямо в браузере и не требует подключения к интернету. Оно может содержать дефект — проверяйте по требованиям, а не по предположениям.
1. Выполните не менее восьми проверок тренажёра. Используйте границы 3000 ₽, 0 ₽ и 20 000 ₽, оба статуса пользователя и хотя бы один некорректный ввод.
2. Для каждого теста запишите входные данные → ожидаемый результат → фактический результат → Passed/Failed.
3. Если найдёте расхождение, запишите точный ввод, на котором оно воспроизводится.
Как оформить найденный дефект
Если фактический результат отличается от требования, это повод зарегистрировать дефект. В хорошем отчёте другой человек сможет повторить проблему.
| Поле | Что указать |
|---|---|
| Название | Кратко описать неправильное поведение |
| Предусловия | С какого состояния начинали проверку |
| Шаги воспроизведения | Точные действия и данные |
| Ожидаемый результат | Как должно быть по требованиям |
| Фактический результат | Что программа показала в действительности |
| Серьёзность | Как дефект влияет на работу пользователя, с кратким обоснованием |
На основе тестов из задания 9 оформите один отчёт о расхождении, если оно обнаружено. Если ни одно расхождение не найдено, напишите, какие данные вы проверяли и как будете расширять набор тестов.
Самостоятельное проектирование набора тестов
Представьте новую систему бронирования билетов. Исходный код неизвестен; доступна только спецификация.
1. Создайте не менее восьми тест-кейсов для этой системы.
2. Проверьте допустимые и недопустимые классы количества, обе границы, а также покупки с картой и без карты.
3. Для каждого случая запишите входные данные и точную ожидаемую сумму или «Ошибка».
4. Объясните, почему выбранных проверок больше, чем двух.
Контрольные вопросы
Ответьте кратко, своими словами. Приведите примеры из выполненных заданий.
- Что является главным источником для выбора проверок при тестировании «чёрным ящиком»?
- Чем ожидаемый результат отличается от фактического?
- Зачем делить входные значения на классы эквивалентности?
- Почему значения около границ особенно важны?
- Когда удобна таблица решений, а когда — тестирование переходов состояний?
- Какая информация нужна, чтобы другой тестировщик смог воспроизвести дефект?
Перед сдачей работы
Нажмите «Отправить работу — сохранить PDF». В появившемся окне печати выберите «Сохранить как PDF». Все введённые ответы полностью попадут в документ.
Терминология и методики: ISTQB Certified Tester Foundation Level, v4.0.1, разделы 4.1–4.2. Примеры, требования и тренажёр разработаны специально для учебной работы.