Верификация программного обеспечения. Дефекты

Содержание

Слайд 2

Agenda Что такое дефекты Как описывать дефекты Регистрация в багтрекере Тестирование

Agenda

Что такое дефекты
Как описывать дефекты
Регистрация в багтрекере
Тестирование

Слайд 3

Что такое дефект Дефект – невыполнение требования, связанного с предполагаемым или

Что такое дефект

Дефект – невыполнение требования, связанного с предполагаемым или установленным

условием
Дефект является основным продуктом, который производят тестировщики, точнее его формальное описание, с которым в дальнейшем будут работать программисты, аналитики, тестировщики и т. д.
Слайд 4

Кто пишет баги Любой человек, который обнаружил, что программа работает неправильно

Кто пишет баги

Любой человек, который обнаружил, что программа работает неправильно может

написать баг-репорт:
Тестировщики
Разработчики
Сотрудники службы поддержки
Заказчики
Конечные пользователи
Слайд 5

Defects Написание хороших баг-репортов – это основная работа тестировщика

Defects

Написание хороших баг-репортов – это основная работа тестировщика

Слайд 6

Отчет об ошибке Это технический документ, в котором описывается ошибка для

Отчет об ошибке

Это технический документ, в котором описывается ошибка для того,

чтобы:
Сообщить об обстоятельствах и последствиях проблемы
Приоритизировать баг для исправления
Помочь программисту найти причину ошибки и починить ее
Слайд 7

Отчет об ошибке – один из наиболее важных результатов проведения тестирования.

Отчет об ошибке – один из наиболее важных результатов проведения

тестирования.
И это то, по чему оценивают работу тестировщиков.

Отчет об ошибке

Слайд 8

Основная цель написания бага Основная цель написания баг-репорта: чтобы ошибка была

Основная цель написания бага

Основная цель написания баг-репорта: чтобы ошибка была исправлена
Об

этом надо помнить всегда …
Слайд 9

Каким должно быть описание дефекта Описание дефекта должно быть “хорошим”… То

Каким должно быть описание дефекта

Описание дефекта должно быть “хорошим”… То есть

это описание, которое:
Привлекает внимание менеджмента и других заинтересованных лиц
Может быть направлено непосредственно разработчикам
Но главное – по которому исправляют дефект
Слайд 10

Что даёт хорошее описание? Индикатор качественного описания дефекта это: Понятность для

Что даёт хорошее описание?

Индикатор качественного описания дефекта это:
Понятность для руководства
Полезность

для разработчиков
Сжатость жизненного цикла дефекта от обнаружения до закрытия. Уменьшая количество циклов отправки описания на уточнение в тестирование
Слайд 11

Слайд 12

Слайд 13

Обязательные атрибуты ID Приложение, модуль Версия программы (номер билда), в котором

Обязательные атрибуты

ID
Приложение, модуль
Версия программы (номер билда), в котором найдена ошибка
Заголовок
Severity

(важность)
Описание, шаги воспроизведения
Ожидаемый результат
Текущий результат
Слайд 14

Идентификатор ID (идентификатор) Уникальный... Может формироваться автоматически... Может быть числовым, а может строиться по другим правилам...

Идентификатор

ID (идентификатор)
Уникальный...
Может формироваться автоматически...
Может быть числовым, а может

строиться по другим правилам...
Слайд 15

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

Приложение, модуль

Поле, содержащее информацию о том, где ошибка была найдена.

Упрощает управление багами.
Слайд 16

Билд, в котором найдена ошибка Номер версии (сборки программного продукта или

Билд, в котором найдена ошибка

Номер версии (сборки программного продукта или

модуля), где ошибка зафиксирована

Информация очень полезна для того, чтобы легче было ошибку найти и починить

Слайд 17

Заголовок Заголовок – краткое описание проблемы. Не должно быть бесполезным Должно

Заголовок

Заголовок – краткое описание проблемы.
Не должно быть бесполезным
Должно

быть уникальным (хотя не всегда это получается)
Должно давать понимание проблемы
Плохой заголовок : “Невозможно сохранить запись”
Слайд 18

Severity Severity (важность) – атрибут, характеризующий степень воздействия, которое оказывает ошибка

Severity

Severity (важность) – атрибут, характеризующий степень воздействия, которое оказывает ошибка на

функционирование системы или работу пользователя.
Примеры severity :
Blocker (опционально)
Critical
Major
Normal
Minor
Слайд 19

Blocker (блокирующая ошибка) Ошибка, делающая невозможным запуск программы или дальнейшую работу

Blocker (блокирующая ошибка)

Ошибка, делающая невозможным запуск программы или дальнейшую работу

с программой
Ошибка, которая ведет к невозможности тестирования определенной функциональности, требуемой дизайном системы для текущей стадии разработки
Нереализованная функциональность, требуемая дизайном системы для текущей стадии разработки
Слайд 20

Critical (критическая ошибка) Ошибка, вызывающая нарушение работоспособности операционной системы (регистр, системные

Critical (критическая ошибка)

Ошибка, вызывающая нарушение работоспособности операционной системы (регистр, системные

файлы и т.п.).
Ошибка, вызывающая нарушение целостности структуры БД или потерю данных в некоторых таблицах.
Падение приложения.
Слайд 21

Major (важная) Воспроизводимый сбой, который появляется только после определенных шагов. Сбой,

Major (важная)

Воспроизводимый сбой, который появляется только после определенных шагов.

Сбой, который проявляется часто, не имеет очевидных условий появления, но не приводит к зависанию программы или ошибке защиты памяти.
Непредвиденное использование программой системных ресурсов.
Игнорирование настроек безопасности и прав доступа.
Неверное отображение элементов пользовательского интерфейса для проектов, основанных на WEB-технологии
Слайд 22

Medium (Normal) Появление неверных сообщений или отсутствие необходимых сообщений. Неверное отображение

Medium (Normal)

Появление неверных сообщений или отсутствие необходимых сообщений.
Неверное отображение

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

Minor Косметика. Неудобство. Орфографические ошибки.

Minor

Косметика.
Неудобство.
Орфографические ошибки.

Слайд 24

Текстовое поле, в котором пользователь детально описывает ошибку “Шаги воспроизведения” (steps

Текстовое поле, в котором пользователь детально описывает ошибку
“Шаги

воспроизведения” (steps to reproduce) – это чаще всего нумерованный список инструкций, которые надо выполнить, чтобы ошибка появилась.

Описание, шаги воспроизведения

Слайд 25

Ожидаемый результат (expected result) – крайне полезная информация . Тестировщик обязан

Ожидаемый результат (expected result) – крайне полезная информация .
Тестировщик

обязан при написании баг- репорта описать, какое поведение программы ожидается .
Эта информация может быть частью поля description (“Описание”) .
Замечание : в некоторых случаях это не очевидно бывает сделать

Ожидаемый результат

Слайд 26

Тестировщик описывает, как программа ведет себя в текущем состоянии. Часто идет

Тестировщик описывает, как программа ведет себя в текущем состоянии.

Часто идет как продолжение steps to reproduce и может быть его частью.
Важное замечание: Иногда трудно описать словами текущий результат, поэтому допускается ссылка на attachment.

Текущий результат (actual result)

Слайд 27

Priority Билд, в котором ошибка починена Конфигурация Метод тестирования при каком

Priority
Билд, в котором ошибка починена
Конфигурация
Метод тестирования

при каком найдена
Стабильность воспроизведения
Ссылка на тест кейс(ы), ссылка на требование(ия)
Автор
История
Комментарии
Аттачмент
И так далее ...

Что ещё?

Слайд 28

Priority Priority (приоритет) – характеризует важность ошибки с точки зрения разработчиков

Priority

Priority (приоритет) – характеризует важность ошибки с точки зрения разработчиков и

характеризует порядок, в каком баги должны быть исправлены :
Immediate
High
Medium
Low
Слайд 29

Текущий статус Значение “Текущий статус” напрямую завязано со списком допустимых статусов

Текущий статус

Значение “Текущий статус” напрямую завязано со списком допустимых статусов в

системе учета ошибок.
Типичные значения :
Created
Assigned
Fixed (Resolved)
Verified
Reopened
Deferred (Postopened, Later)
etc…
Слайд 30

Билд, в котором ошибка починена Эта информация важна тестировщику, когда баг починен и его надо перепроверять.

Билд, в котором ошибка починена

Эта информация важна тестировщику, когда баг

починен и его надо перепроверять.
Слайд 31

Конфигурация Конфигурация, на которой была воспроизведена ошибка. Иногда, когда ошибка проявляется

Конфигурация

Конфигурация, на которой была воспроизведена ошибка.
Иногда, когда ошибка проявляется на определенных

конфигурациях, незаполненное или неправильно заполненное поле приводит к тому, что ошибка не будет починена вовремя, или не будет починена вовсе.
Обычно указывается :
Операционная система
Браузер
Версии MS Office
и так далее ...
Слайд 32

Метод тестирования, при каком найдена ошибка Примеры возможных значений: Ручное тестирование

Метод тестирования, при каком найдена ошибка

Примеры возможных значений:
Ручное тестирование (manual

testing)
Автоматическое функциональное тестирование
Автоматическое нагрузочное тестирование
Code Review
Найдено заказчиком
Слайд 33

Стабильность воспроизведения Значение в этом поле показывает частоту воспроизведения бага Обычно

Стабильность воспроизведения

Значение в этом поле показывает частоту воспроизведения бага
Обычно

это выбор из двух значений : “Всегда” и “Иногда”
Аксиома : ошибки, которые проявляются “иногда” – тоже нужно документировать. Так как, если это проявилось у тестировщика, то это может проявиться и у пользователя.
Слайд 34

Ссылка на тест кейс или на требование Это поле чаще всего

Ссылка на тест кейс или на требование

Это поле чаще всего

присутствует в интегрированных системах управления разработкой ПО.
Возможность хранить связи упрощает процесс оценки качества продукта, так как если есть требование, на которое разработан тест кейс, и есть открытый баг репорт, то это означает, что это требование или не реализовано, или реализовано с ошибкой.
Слайд 35

Автор Автор баг-репорта: человек, нашедший (или занесший) ошибку в систему учета.

Автор

Автор баг-репорта: человек, нашедший (или занесший) ошибку в систему учета.

Обычно он является primary contact для ответа на любые вопросы, которые могут возникнуть у других людей, которые будут работать с этим багом впоследствии.
Обычно (но не всегда!) автор бага потом и перепроверяет, как разработчик починил ошибку.
Слайд 36

История Вести историю изменений, переходов баг-репорта из статуса в статус бывает

История

Вести историю изменений, переходов баг-репорта из статуса в статус бывает очень

полезно.
Многие системы позволяют редактировать баги после их написания. Для этих событий полезно вести историю.
Логирование переходов делается автоматически, если используется хорошая баг- трекинговая система.
Слайд 37

Комментарии Вспомогательное поле, может быть полезно для общения членов команды.

Комментарии

Вспомогательное поле, может быть полезно для общения членов команды.

Слайд 38

Attachment Возможность использовать этот атрибут есть в абсолютном большинстве баг-трекинговых систем.

Attachment

Возможность использовать этот атрибут есть в абсолютном большинстве баг-трекинговых систем.
Эта

возможность очень полезна, так как она дает для менеджмента проекта и разработчиков больше возможностей для качественной починки багов.
Скрины
Логи
Данные
Архивы баз данных
Слайд 39

ЖИЗНЕННЫЙ ЦИКЛ ДЕФЕКТА

ЖИЗНЕННЫЙ ЦИКЛ ДЕФЕКТА

Слайд 40

Жизненный цикл дефекта состоит из состояний, в которые дефект переходит от

Жизненный цикл дефекта состоит из состояний, в которые дефект переходит от

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

Жизненный цикл дефекта

Слайд 41

NEW DECLINED FIXED POSTPONED REOPENED ASSIGNED CLOSED Жизненный цикл дефекта

NEW

DECLINED

FIXED

POSTPONED

REOPENED

ASSIGNED

CLOSED

Жизненный цикл дефекта

Слайд 42

Отчет, который говорит ни о чем : “Оно не работает! ”,

Отчет, который говорит ни о чем : “Оно не работает! ”,

“У меня упал компьютер” ...
Отчет, который не имеет смысла.
Отчет, в котором не написано достаточной информации для понимания того, что за ошибка была.
Отчет, который содержит недостоверную информацию.
Отчет, который содержит грамматические и орфографические ошибки. А также отчеты, которые написаны на сленговом языке !!!

Что такое «плохой» баг-репорт?

Слайд 43

Для того, чтобы написать хороший отчет Вам необходимо : Объяснить, как

Для того, чтобы написать хороший отчет Вам необходимо :
Объяснить, как воспроизвести

проблему. Надо предоставить всю необходимую информацию, чтобы разработчик смог воспроизвести ошибку. И как следствие – исправить
Описывайте все в деталях. Описывайте состояние, которое вы видите, а также состояние, которые Вы хотели бы видеть. Пишите шаги воспроизведения.
Делайте отчет простым для понимания. Не допускайте оЧепЯток. Используйте простой язык для описания проблем, делайте максимально точные описания.
Дайте ссылки на требования или функциональные спецификации, описывающие ожидаемое поведение системы.

Рекомендации, как надо описывать проблемы

Слайд 44

Слайд 45

Записать Фамилию, Имя, e-mail, логин Получить приглашение по почте и зарегистрироваться

Записать Фамилию, Имя, e-mail, логин
Получить приглашение по почте и зарегистрироваться на

teamer.ru
Сообщить о регистрации для получения доступа к проекту
Тестировать ‘Треугольник’ и добавлять баги в проект (можно на английском)

Практика

Слайд 46

Equilateral – равносторонний Isosceles – равнобедренный Scalene – неравносторонний Not a triangle – не треугольник

Equilateral – равносторонний
Isosceles – равнобедренный
Scalene – неравносторонний
Not a triangle – не

треугольник
Слайд 47

10 ПОЛЕЗНЫХ СОВЕТОВ ПО ОПИСАНИЮ ДЕФЕКТОВ

10 ПОЛЕЗНЫХ СОВЕТОВ ПО ОПИСАНИЮ ДЕФЕКТОВ

Слайд 48

Нужно знать, что происходит с тестируемой системой Тогда можно понять и

Нужно знать, что происходит с тестируемой системой
Тогда можно понять

и описать первые признаки проявления ошибки

1 - Структурируй

Слайд 49

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

Нужно проверять воспроизводимость ошибки перед её описанием.
Если не воспроизводится

снова, то, конечно, тоже писать, но указав, что воспроизводится нестабильно.
Хорошее правило – сделать 3 попытки перед написанием.

2 - Воспроизводи

Слайд 50

Постарайся воспроизвести в изменённых условиях , например, в другой конфигурации. Это

Постарайся воспроизвести в изменённых условиях , например, в другой конфигурации.

Это поможет разработчику быстрее и правильнее определить источник ошибки.

3 - Выделяй, Изолируй

Слайд 51

Постарайся определить, свойственна ли обнаруженная проблема другим функциям системы. Можно ли

Постарайся определить, свойственна ли обнаруженная проблема другим функциям системы.
Можно

ли найти более серьёзное проявление этой проблемы?

4 - Обобщай

Слайд 52

Проверь, появилась ли подобная ошибка при проведении этого же теста ранее.

Проверь, появилась ли подобная ошибка при проведении этого же теста

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

5 - Сравнивай

Слайд 53

Указывай в первых строках дефекта резюме дефекта, все самое критичное в

Указывай в первых строках дефекта резюме дефекта, все самое критичное

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

6- Резюмируй, Оценивай воздействие

Слайд 54

Уменьшай объем описания Перечитай первый (черновой) вариант описания Сфокусируйся на посторонних

Уменьшай объем описания
Перечитай первый (черновой) вариант описания
Сфокусируйся на

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

7 - Конденсируй

Слайд 55

В дополнение к устранению лишней информации нужно пройтись по описанию дефекта

В дополнение к устранению лишней информации нужно пройтись по описанию

дефекта и определить, нет ли возможности неверного понимания написанного.
Нечёткие, субъективные и вводящие в заблуждение слова и фразы нужно избегать.
Цель – чёткие и неопровержимые утверждения и факты.

8 - Устраняй неоднозначность

Слайд 56

Будь беспристрастен в своем описании. Не атакуй разработчика. Не критикуй обнаруженную

Будь беспристрастен в своем описании.
Не атакуй разработчика.
Не критикуй обнаруженную ошибку.
Попытка

сострить или сарказм может породить неприязнь со стороны разработчика и отвлечёт внимание от цели улучшить качество продукта.

9 - Уравновешивай

Слайд 57

Отправь описание дефекта одному или нескольким коллегам на ревью. Ревьюер может

Отправь описание дефекта одному или нескольким коллегам на ревью.
Ревьюер может внести

свои предложения или задать уточняющие вопросы.
Возможно даже, что оспорит , что описанное поведение является ошибочным.
Команда тестирования должна посылать максимально лучшее описание дефекта, созданное, конечно, в разумные временные рамки, в зависимости от приоритета и степени воздействия дефекта.

10 - Оценивай

Слайд 58

Описывайте баг, как только вы его нашли, не оставляйте на “потом”.

Описывайте баг, как только вы его нашли, не оставляйте на “потом”.

Если будете ждать, значит, есть вероятность, что что-то значимое забудется. Кроме того, написав баг СЕЙЧАС, вы уверены, что информация будет раньше доступна для всех, и не будет излишних потерь времени.
Старайтесь найти наиболее значимые последствия ошибки. Исследуйте последствия, к которым приводит найденная вами ошибка. Иногда проблемы, которые кажутся незначительными на первый взгляд, становятся багами высшего приоритета...
Если разработчик не может вопроизвести баг –помогите ему, покажите, как он воспроизводится на вашей машине.

Рекомендации, как надо описывать проблемы (продолжение)

Слайд 59

События, описанные ниже, могут помешать своевременному исправлению ошибки : Программист не

События, описанные ниже, могут помешать своевременному исправлению ошибки :
Программист не может

воспроизвести ошибку данных в отчёте (например, недостаточно корректно описаны шаги для воспроизведения).
Некорректное определение Severity.
Описание бага отсутствует или некорректное.
Описание ожидаемого результата отсутствует.
Программист не понял баг (тестировщик, к примеру, использовал сленг).
Отсутствие скриншотов.
Создание отчетов о багах с похожими проявлениями.
Критика программиста.
Плохая репутация тестировщика.

Что мешает исправлению ошибок?

Слайд 60

Уменьшает количество отклонений ошибок и переоткрываемых ошибок (declined and reopened defects)

Уменьшает количество отклонений ошибок и переоткрываемых ошибок (declined and reopened defects)
Увеличивает

скорость исправления ошибок и уменьшает стоимость исправления ошибок.
Улучшает имидж тестировщика.
Улучшает отношения между командой тестирования и остальными участниками проекта.

Итог- хороший отчёт...

Слайд 61

Системы отслеживания проблем (СОП) Баг-трекинговые системы Простейший баг лист Bugzilla IBM

Системы отслеживания проблем (СОП)

Баг-трекинговые системы
Простейший баг лист
Bugzilla
IBM Rational СlearQuest

и IBM Rational Suite
Softwise PR-Tracker,
Seapine Test Track Pro
Jira
…etc.
Слайд 62

Простейший баг-лист Баг-лист в табличной форме; Баг-лист (список дефектов) это: Инструмент

Простейший баг-лист

Баг-лист в табличной форме;
Баг-лист (список дефектов) это:
Инструмент для

работы над ошибками
Инструмент для работы над ошибками
Средство оценки текущего качества
Внесение дефекта в лист дефектов:
Вид
Характеристики
Подробное описание
Требуемый результат
Слайд 63

Пример баг-листа (простейшая система)

Пример баг-листа (простейшая система)

Слайд 64

Понятие и назначение системы отслеживания проблем Инструмент управления дефектами (defect management

Понятие и назначение системы отслеживания проблем

Инструмент управления дефектами (defect management tool):

Инструмент, обеспечивающий фиксирование дефектов и изменений, а также поддержку их состояний.
Отчет о проблеме представляет собой первый и наиболее очевидный результат работы тестировщика. Но в то же время он – только начало работы по решению проблемы, и от того, как будет организована эта работа, зависит эффективность всего процесса создания программного продукта.
Автоматизированная СОП решает не только технические вопросы, но и организационные.
Слайд 65

Понятие и назначение СОП Возможности системы: Система является средством отслеживания хода

Понятие и назначение СОП

Возможности системы:
Система является средством отслеживания хода работ;
Система

является средством организации взаимодействия между сотрудниками;
Система отражает производительность работы каждого сотрудника.
Системы автоматизированного отслеживания проблем позволяют резко повысить эффективность взаимодействия сотрудников, в том числе из разных отделов.
Слайд 66

Задачи СОП Каждый, кому следует знать о проблеме, должен узнавать о

Задачи СОП

Каждый, кому следует знать о проблеме, должен узнавать о ней

сразу же после составления отчета.
Ни одна из ошибок не должна остаться неисправленной просто потому что о ней забыли или потому, что так решил разработчик.
Как можно меньше ошибок должно остаться неисправленными из-за проблем взаимодействия сотрудников.
Слайд 67

Некоторые характеристики (параметры) Доступность систем на разных платформах; Различия в standalone

Некоторые характеристики (параметры)

Доступность систем на разных платформах;
Различия в standalone (client-server)

и web решениях;
Поддержка работы с различными базами данных;
Интегрирование в различные инструментальные среды;
Гибкость настройки системы;
Наличие поддержки экспорта/импорта проблем;
Наличие и гибкость системы создания отчетов;
Наличие поддержки формирования электронных извещений по событиям.