Ошибкой или дефектом часто
называют ошибку в программном коде. Это не обязательно совсем ошибка, а скорее
несоответствие фактического результата ожидаемому. Поэтому некоторые компании избегают
термина Ошибка и заменяют его термином баг. То, как должна работать программа,
описывают в требованиях к разработке. В идеальном мире она будет работать
именно так, как её задумали заказчики. Но в реальности можно увидеть не то, что
ожидалось.
В стандарте ISTQB для тестировщиков есть
несколько похожих на ошибку терминов, но все они — скорее следствие дефекта.
Например, сбой — это ситуация, которую вызвал дефект, а ошибка — действие
человека, которое приводит к неправильному результату.
Иногда ошибка все же оказывается в продукте после того, как он попал к
пользователю. Тогда он становится проблемой пользователей и службы технической
поддержки. Такие дефекты часто бывают некритичными: опечатка в описании, форматирование
поехало. Для пользователя это неудобно, но в целом не приводит к серьёзным
последствиям. Но иногда ошибки относятся к архитектуре системы или требованиям.
Их обнаруживают не сразу, и они могут привести к убыткам для бизнеса. Например,
для продукта заложили архитектуру, при которой невозможность конкурентной
работы сотен пользователей. Из-за этого пользователи могут столкнуться с серьезными
проблемами в процессе эксплуатации.
При регистрации ошибки в
первую очередь определяет, к какой части программы он относится. Например:
Вид ошибки — это одна из ключевых его характеристик. Когда понятно, к чему
относится дефект, с ним проще разобраться.
Серьёзность ошибки |
Как влияет на систему |
Немедленная |
Пользователь сообщает о частичной или полной неработоспособности продукта. Проблемы с продуктом не позволяют использовать конкретный функционал, при этом других вариантов решения проблемы не существует, либо они неприменимы в силу высоких затрат по времени и/или деньгам. Возможности перехода на более ранние или поздние версии продукта нет. Ошибка модуля – частый признак немедленной ошибки. К немедленным ошибкам относятся регрессии – то есть потеря функционала относительно предыдущих релизов. |
Желательно быстрее |
Поддерживаемое ПО в целом работает, однако у одного или незначительного числа пользователей наблюдаются проблемы. Работа с Поддерживаемым ПО может продолжаться в штатном режиме. Пользователь задает вопрос по конкретному функционалу продукта, либо не согласен с тем, как работает определенный функционал. Пользователь также может отмечать ухудшение производительности всего или определенного функционала продукта, при условии, что данное ухудшение не вынуждает заказчика выделять существенно большее (в два и более раз) время для выполнения стандартных задач сверх того, что тратилось раньше. |
В плановом порядке |
Работа с продуктом продолжается в штатном режиме. Пользователь обращается с предложением о добавлении новой функции или о доработке существующего функционала. Требуется разъяснение ошибок ПО и/или документации. |
У ошибки есть нулевая
стадия, когда он, как кот Шрёдингера, может быть ошибкой, а может —
просто непониманием со стороны пользователя. Тестировщик сталкивается с чем-то
непонятным в работе системы и начинает разбираться, что произошло. Это
называется локализацией. Её цель — убедиться, что обнаружили именно дефект. Для
этого тестировщик смотрит проектную документацию, ставит эксперименты и узнаёт,
в каких ситуациях воспроизводится дефект и можно ли его как-то обойти. Так выглядит упрощенный жизненный цикл ошибки, но в реальности всё
сложнее. Например, разработчик может вернуть задачу тестировщику, чтобы
уточнить, что нужно сделать, а тестировщик — не закрыть задачу, потому что
разработчик исправил только часть ошибок в коде Пример пути ошибки в 1С:СППР: Для регрессий в наименовании
ошибки надо в начале строки написать – РЕГРЕССИЯ. Если дефект повторится до
выхода очередного релиза, то ошибку переоткрывают (статус Признана). Если после, то его заводят как новую задачу, и он проходит тот же жизненный цикл. В тестировании отчет об
ошибке — это отчёт об ошибке, который заводится в 1С:СППР или 1С:УСП (в т.ч. через отправку email на med@1c.ru). * - обязательные сведения. Поле/сведения Что
содержит Поле
«Наименование*» Суть
проблемы. Должен быть ёмким и понятным. Поле
«Порядок воспроизведения»* Описание
действий, которые нужно совершить, чтобы дойти до воспроизведения ошибки. Фактический
результат* Что
видим после того, как воспроизвели ошибку. Ожидаемый
результат* Что
на самом деле хотели увидеть, как это должно работать по ТЗ. Дополнительная
информация Например,
пояснения от тестировщика: какие способы он ещё пробовал, чтобы воспроизвести
ошибку, и что получилось. Поле
«Обнаружена»* Где
нашли ошибку. Варианты – сборка или дата актуальности хранилища. Второй
вариант используется только в том случае, если ошибка есть исключительно в
хранилище (вновь привнесенная) Приложения Логи,
скриншоты
Хороший отчет об ошибке
приходит с опытом. Вот на что нужно обратить внимание джуну:
Как не стоит писать отчеты об ошибках. Опытный тестировщик в ответ
на такой документ скажет, что отчет об ошибке описан непонятно: что значит
«нельзя сканировать»? В результатах нужно описывать, что происходит, а не то,
чего не происходит. Не хватает информации о том, какие материалы нужно
приложить к такой ошибке, скриншоты или скринкасты Вот как могли бы оформить
эту ошибку более опытные джуны и продвинутые тестировщики. Наименование: [Инвентаризация] В начатой задаче при попытке сканирования
товаров визуально ничего не происходит
Наименование: [Инвентаризация] В начатой задаче сканирование товара не
записывается в задачу, в логах ошибка <Error…>. Совет На основании https://practicum.yandex.ru/blog/chto-takoe-bug-report-kak-ego-sostavit/
В результате локализации может быть два вывода:
Что такое отчет от ошибке
Шаблон отчета об ошибке
Как правильно оформить отчет об ошибке
Отчет об ошибке от опытного джуна или ленивого мидла
Предусловия: Приложение Инвентаризация запущено и активно, открыта
невыполненная задача для инвентаризации
Порядок воспроизведения:
1. Нажать кнопку «Начать».
2. Сканировать товар, присутствующий в задаче и еще не отсканированный.
Фактический результат: при попытке сканирования товара визуально ничего не
происходит. В логах ошибка <Error…> (приложен лог с ошибкой).
Ожидаемый результат: сканирование проходит успешно, в логах нет ошибок,
отсканированный товар записывается в открытую задачу согласно требованиям
(ссылка на требования).
Обнаружена: версия приложения 1.2.21.3.
Срочность: немедленно.
Отчет об ошибке от мидла или сеньора
Предусловия: Приложение Инвентаризация запущено и активно, открыта
невыполненная задача для инвентаризации.
Порядок воспроизведения:
1. Нажать кнопку «Начать».
2. Сканировать любой товар из задачи.
Фактический результат: при попытке сканирования товара сканер пищит (как и
должен), но в задачу сканирование не записывается. В системных логах приложения
ошибка <Error…> (приложен кусок лога с ошибкой). В серверных логах ошибка
<Error…> (приложен кусок лога с ошибкой).
Ожидаемый результат: сканирование проходит успешно, в логах нет ошибок,
отсканированный товар записывается в открытую задачу согласно требованиям
(ссылка на требования).
Доп.информация: если отправить запрос о сканировании не с устройства, а через
эмулятор, то ошибок не возникает, возвращается корректный ответ (приложены
запрос и ответ и логи с эмулятора).
Воспроизводится на тестовом стенде INTG
Обнаружена: версия приложения 1.2.21.3.
Срочность: немедленно.
Все примеры описаны корректно, но видно, как можно подойти к задаче в
зависимости от опыта.
Самый полезный для тестировщика вопрос — «Что если?». На нём завязана вся
локализация. Выдвигайте больше гипотез и проверяйте их с разных сторон.
У начинающих тестировщиков обычно фокус на деталях. Но чтобы прогрессировать,
важно идти от частного к целому и видеть картину шире. При составлении отчета
об ошибке подумайте, как дефект влияет на процессы, функциональность и удобство
пользователя.