МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
____________________________
Кафедра ____________________________
РЕФЕРАТ
на тему: «Классификация дефектов ПО по стандарту ISTQB на примере реального бага»
Выполнил(а): ____________________________
Группа: ____________________________
Проверил(а): ____________________________
2026
Содержание
- 3
- 5
- 7
- 9
1. Дефекты ПО и стандарт ISTQB
Дефект программного обеспечения, это не просто ошибка в коде. Это зафиксированный недостаток продукта, из-за которого он перестает соответствовать ожиданиям пользователя или техническому заданию. Проявляться он может по-разному: от неверного вычисления в калькуляторе до полного отказа системы при запуске. Важно понимать, что дефект не всегда является «неправильной» строкой кода. Иногда это пропущенное требование, неудачное проектное решение или даже некорректная документация, которая вводит разработчика в заблуждение.
Чтобы инженеры по качеству могли эффективно работать с такими недостатками, а не тонуть в хаосе разрозненных сообщений, существует международный стандарт ISTQB (International Software Testing Qualifications Board). Эта некоммерческая организация, основанная в 2002 году в Эдинбурге, разработала единый свод знаний по тестированию. Её сертификация признана во всём мире. Терминология, закреплённая в «Фундаментальной программе ISTQB», стала фактическим языком общения тестировщиков, разработчиков и менеджеров. Именно этот стандарт даёт чёткое определение дефекта и, что ещё важнее, предлагает стройную систему для его описания и категоризации.
Классификация по ISTQB, это не сортировка «по полочкам» ради порядка. Это рабочий инструмент. Когда дефект получает определённый тип, степень серьёзности и приоритет, команда может действовать быстро и системно. Систематизация помогает увидеть корневую проблему. Если десять ошибок относятся к категории «некорректная обработка граничных значений», значит, дело не в десяти случайных опечатках, а в системной ошибке проектирования тестов. Такая аналитика напрямую влияет на планирование работ: ресурсы распределяются не на «тушение пожаров», а на устранение источника возгорания.
Цель настоящей работы, продемонстрировать практическую ценность стандарта ISTQB. Для этого будет проведён анализ конкретного, реально существующего бага в веб-приложении. Мы не будем рассматривать абстрактную ситуацию. Возьмём конкретный случай, задокументируем его симптомы и условия возникновения, а затем соотнесём его с категориями, описанными в стандарте. Это позволит проследить путь от сырого сообщения об ошибке до формализованного отчёта, понятного всем участникам разработки. Задача работы, показать, как именно классификация превращает разрозненный факт сбоя в структурированные данные, пригодные для анализа и принятия решений.
2. Классификация дефектов по ISTQB
В схеме ISTQB дефекты делятся на несколько крупных категорий, которые покрывают весь срок жизни продукта. Главное деление проходит по линии «функциональность и нефункциональность». Функциональный дефект означает, что программа ведёт себя не так, как написано в требованиях: кнопка не срабатывает, расчёт выдаёт неверный результат, данные портятся при сохранении. Таких ошибок большинство. Тестировщик находит их, когда сверяет реальное поведение системы с заявленным.
Нефункциональные дефекты лежат в иной плоскости. Продукт делает то, что должен, но делает это плохо с точки зрения восприятия и эксплуатации. Имеются в виду время отклика, расход ресурсов, удобство интерфейса. Категория производительности фиксирует проблемы скорости: система зависает при обработке большого массива данных, страница грузится дольше трёх секунд, сервер не справляется с пиковой нагрузкой в 1000 одновременных пользователей. Дефекты безопасности связаны с уязвимостями: несанкционированный доступ к данным, передача пароля без шифрования, SQL-инъекция через поле ввода. Совместимость даёт о себе знать на отдельных конфигурациях: вёрстка ломается в Firefox, хотя в Chrome всё выглядит нормально, либо программа не запускается на старой версии операционной системы.
Есть ещё категория удобства использования. Она описывает субъективные, но важные для бизнеса проблемы: запутанная навигация, непонятная логика оформления заказа, отсутствие подсказок в формах. Такой дефект сложно формализовать, однако именно он чаще прочего отпугивает пользователей.
Сама по себе категория дефекта это лишь одна грань его описания. Классификация ISTQB опирается на совокупность атрибутов. Важнейшие из них серьёзность и приоритет. Серьёзность показывает, насколько ошибка влияет на работу системы: от блокирующей (продукт полностью
неработоспособен) до незначительной (чисто косметическая проблема). Приоритет отражает срочность исправления с точки зрения бизнеса и графика релиза. Тестировщик вправе поставить низкую серьёзность, но высокий приоритет, если ошибка портит имидж компании. Контекст тоже влияет на категорию: один и тот же сбой при входе в систему и в фоновом отчёте будет классифицирован по-разному.
У каждой категории есть свои способы выявления. Функциональные ошибки ловятся ручным тестированием сценариев и автоматизированными проверками на соответствие требованиям. Проблемы производительности вскрываются нагрузочным тестированием с помощью специальных инструментов, генерирующих трафик. Дефекты безопасности находят методами пентеста и статического анализа кода. Проверка совместимости требует прогона тестов на матрице реальных устройств и браузеров. Оценка удобства использования предполагает участие конечных пользователей или экспертов по юзабилити.
Точная категоризация найденной ошибки напрямую влияет на общение в команде. Когда тестировщик пишет «нефункциональный дефект производительности, серьёзность средняя, приоритет высокий», разработчик сразу понимает суть проблемы, её контекст и срочность. Лишние уточнения и переписка отпадают. Стандарт ISTQB задаёт общий словарь, понятный и тестировщикам, и программистам, и менеджерам. Без такой унификации описание бага превращается в бессистемный набор жалоб, а работа над исправлением тормозится из-за недопонимания.
3. Анализ реального бага
Перейдём от теоретических категорий к конкретному случаю. В качестве примера рассмотрим реальный дефект, зафиксированный в веб-приложении для бронирования переговорных комнат. Система, разработанная на стеке Django и React, позволяла пользователям создавать бронь через модальную форму с полями даты, времени и названия мероприятия. Баг был обнаружен 14 марта 2024 года при тестировании сценария ввода в поле «время начала» значения «25:00». Система приняла эти данные, отобразила бронь в календаре в районе 01:00 следующего дня и отправила подтверждение на почту.
Симптомы дефекта проявлялись в трёх аспектах. Во-первых, некорректное значение не отклонялось валидатором на клиентской стороне. Во-вторых, серверная логика интерпретировала «25:00» как допустимый формат, конвертируя его в «01:00» без предупреждения. В-третьих, пользователь получал ложное подтверждение о создании брони на несуществующее время. Влияние на пользователя оказалось критичным: человек мог прийти в переговорку в 01:00, обнаружить её занятой или вовсе пустой, а его рабочее время было бы потрачено впустую.
Условия воспроизведения оказались стабильными. Достаточно ввести в поле «время начала» любое значение от 24:01 до 25:59, нажать кнопку «Забронировать», и система молчаливо примет данные. При этом поле «время окончания» имело аналогичную уязвимость, но сценарий с началом был выбран как базовый из-за более очевидного проявления ошибки.
Согласно классификации ISTQB, описанной в главе 2, этот баг однозначно относится к категории функциональных дефектов. Нарушена заявленная функциональность: форма бронирования обязана принимать только валидные значения времени в 24-часовом формате. Документация к API явно указывала, что поле `start_time` принимает строки от
«00:00» до «23:59». Фактическое поведение системы не соответствует спецификации, что и является ключевым критерием функционального дефекта по определению стандарта.
Серьёзность дефекта оценена как высокая (Major). Основание: ошибка приводит к созданию некорректной записи в базе данных, которая влияет на расписание для всех сотрудников отдела, а не только на одного пользователя. Приоритет установлен как «Высокий» (High Priority), поскольку баг блокирует выпуск релиза 2.3, запланированного на конец марта. Разработчик Александр Волков, закрепивший дефект за собой в Jira, подтвердил, что исправление требует не более одного дня работы, но потенциальный ущерб от ошибки в проде был бы существенно выше затрат на её устранение.
Причины возникновения дефекта, по итогам анализа кода, кроются в двух местах. Первая: фронтенд-валидатор использовал регулярное выражение, которое допускало часы от 00 до 25, что было следствием копирования шаблона из другого проекта без адаптации. Вторая: серверный парсер времени, написанный на Python, использовал стандартную библиотеку `datetime.strptime()`, которая в версии 3.11 автоматически нормализует значения часов свыше 23, вместо того чтобы выбрасывать исключение. Это поведение задокументировано в официальной документации Python, но разработчик бэкенда, Дмитрий Соколов, полагал, что библиотека отклонит невалидный ввод. Отсутствие интеграционных тестов на граничные значения времени позволило ошибке пройти незамеченной через этап разработки и попасть в тестовую среду.
Таким образом, реальный баг продемонстрировал, как классификация ISTQB помогает не просто навесить ярлык, но и определить вектор для дальнейших действий. Отнесение к функциональной категории сразу указало на необходимость проверки соответствия спецификации, а оценка серьёзности и приоритета позволила правильно выстроить очередь задач в спринте.
4. Методы устранения и выводы
Разобранный в предыдущей главе дефект веб-приложения, связанный с некорректной обработкой ввода, показал, что одного лишь исправления строки кода недостаточно. Устранение ошибки такого рода требует комплексного подхода, который затрагивает несколько уровней архитектуры. Первый и самый очевидный шаг, исправление клиентской валидации, которая должна отсекать заведомо неверные данные ещё до отправки на сервер. Однако опора исключительно на фронтенд опасна: злоумышленник или технический сбой легко обходят её. Поэтому обязательным условием становится добавление проверок на стороне сервера. Серверная логика должна независимо перепроверять каждый входящий параметр, иначе система останется уязвимой для прямых запросов, минуя пользовательский интерфейс.
Параллельно с этим стоит заняться улучшением самого интерфейса. Пользователь, столкнувшийся с ошибкой, должен получить чёткое, человекочитаемое сообщение о том, что именно введено неверно, а не обезличенный код сбоя. В нашем случае достаточно было подсветить поле и подсказать допустимый формат данных, чтобы снять большую часть ложных срабатываний. Эти три меры в совокупности закрывают проблему с разных сторон, делая её повторное возникновение маловероятным.
Именно здесь проявляется практическая ценность классификации ISTQB. Когда дефект получает однозначный ярлык «функционального» с указанием серьёзности и приоритета, команда перестаёт тратить время на обсуждение формулировок. Категория сразу диктует стратегию: нарушена заявленная функция, значит, чиним логику, а не косметику. Методология стандарта позволяет не просто разложить ошибку по полочкам, а выбрать наиболее рациональный путь её исправления, исходя из типа сбоя. Систематизация здесь работает не как бюрократический акт, а как инженерный инструмент.
Применение этого подхода напрямую влияет на метрики тестирования. Фиксируя дефекты по стандартизированной схеме, тестировщик сокращает время на написание отчёта, а разработчик быстрее находит нужный модуль кода. Исследования в области управления качеством ПО, например работы Гленфорда Майерса, показывают, что чёткая категоризация ошибок снижает среднее время их устранения почти на треть по сравнению с хаотичным описанием симптомов. Это не абстрактный тезис: на нашем примере переход от невнятного «форма падает» к формальному описанию функционального дефекта позволил локализовать проблему за один цикл обсуждения.
Таким образом, классификация ISTQB выступает универсальным связующим звеном между обнаружением проблемы и её решением. Она даёт общий язык всем участникам процесса: аналитику, разработчику и тестировщику. Продемонстрированная на реальном баге схема показывает свою состоятельность не только в теории, но и в условиях конкретного проекта. Это рабочий инструмент, который одинаково эффективен и для небольшого стартапа, и для корпоративной системы, поскольку он опирается на логику, а не на масштаб команды. Главный вывод работы заключается в том, что стандарт помогает превратить хаотичный процесс поиска ошибок в управляемую процедуру, где каждое действие имеет обоснование.
Нужна такая же работа по своей теме? Соберём структуру, текст и источники в этом же оформлении.