Жизненный цикл ошибки это

Чтобы отлично понимать статус багов, уметь их быстро и правильно описывать, оформлять и закрывать в системах по отслеживанию ошибок, необходимо знать их жизненный цикл (Defect Lifecycle).

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

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

Чаще всего, «жизнь» дефекта тесно связана с системой управления, выбранной для него. В основном, в такой системе все статусы и действия настроены автоматически, но есть и такие системы, где можно настраивать жизненный цикл дефекта под определенный проект, если это нужно.

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

Статус дефекта

Статус дефекта

Статусы в жизненном цикле дефекта и их обозначение

«New» (новый) – описание дефекта записывается в систему управления впервые.

«Assigned» (назначен) – отчет об ошибке назначен на определенного пользователя.

«Open» (открыт) – пользователь начинает работу с отчетом (анализ и редактирование).

«Fixed» (исправлен) – пользователь внес нужные исправления в код и протестировал их самостоятельно. Отчет со статусом «Исправлен» снова возвращается тестировщику.

«Pending retest» (Тестирование в режиме ожидания) – разработчик исправил баг, предоставил новый код для тестирования.

«Retesting» (повторное тестирование) – тестировщик повторно проверяет код, измененный разработчиком, с целью посмотреть, исправлена ли ошибка.

«Verified» (проверен) – если дефект исправлен, тестировщик ставит данный статус.

«Reopened» (переоткрыт) – если ошибка снова появляется, тестировщик опять перенаправляет ее на разработчика. Дефект проходит те же стадии.

«Closed» (закрыт) – такой статус ставится тестировщиком, если тот уверен, что дефект исправлен и он больше не появляется.

«Duplicate» (дубликат) – когда дефект встречается дважды или есть два дефекта, появившихся вследствие одной проблемы, один из них получает этот статус.

«Rejected» (отклонен) – если с точки зрения разработчика, ошибка не является весомой и она не требует рассмотрения и исправления, он ее отклоняет.

«Deferred» (отсрочен) – в режиме ожидания, что ошибку с таким статусом исправят в других версиях. В основном, дефект получает такой статус по нескольким причинам: низкий приоритет ошибки, недостаток времени, дефект не приведет к значительным сбоям в программе.

«Not a bug» (не является багом) – назначается в том случае, когда функциональные возможности программы меняться не будут. К примеру, заказчик хочет сменить габариты клавиш или цвет продукта — это не ошибка, а просто необходимость внесения поправок в дизайн программы.

Стадии жизненного цикла ошибки

1. Тестировщик обнаруживает дефект.

2. Тестировщик пишет отчет об ошибке в систему управления дефектами (статус New (новый)) и перенаправляет его на разработчика (статус Assigned (назначен)).

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

  • Duplicate (дубликат) – подобный дефект уже существует в системе по отслеживанию ошибок;
  • Rejected (отклонен) – ошибка не требует внесения корректив, поскольку ее влияние на продукт незначительное;
  • Deferred (отсрочен) – корректировку данной ошибки можно осуществить в другой версии программы;
  • Not a bug (не баг) – дефект не есть ошибкой, поэтому вносит коррективы не требуется;
  • Open (открыт) – дефект в процессе исправления;
  • Fixed (исправлен) – код изменен и протестирован разработчиком.

4.Тестировщик повторно проверяет ошибку (статус «Retesting» (повторное тестирование)).

5. Если дефект исправлен, тестировщик его закрывает (статусы «Verified» (проверен), затем «Closed» (закрыт)).

6. Если дефект проявляется и дальше, он опять передается на редактирование разработчику (статусы «Reopened» (переоткрыт), «Assigned» (назначен)) и вновь проходит через каждую стадию цикла.

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

As we know during the development of any software product the development teams follow the Software Development Life Cycle (SDLC) processes. But the development process is not so easy and always runs smoothly. During the development process when a product is being developed different types of defects or bugs arise with the product. So these defects are identified and resolved throughout the development process just to deliver a good quality software product at last. So in this article, we will discuss these bugs in the software development process and how these are identified during software testing, and how these are resolved.

What is a Bug/Defect?

A defect is an error or bug in an application that is created during the building or designing of software and due to which software starts to show abnormal behaviors during its use. So it is one of the important responsibilities of the tester to find as much as defect possible to ensure the quality of the product is not affected and the end product is fulfilling all requirements perfectly for which it has been designed and provide required services to the end-user. Because as much as defects will be identified and resolved then the software will behave perfectly as per expectation.

What is Defect Life Cycle?

In the Software Development Process, Defect Life Cycle is the life cycle of a defect or bug which it goes through covering a specific set of states in its entire life. Mainly bug life cycle refers to its entire state starting from a new defect detected to the closing off of that defect by the tester. Alternatively, it is also called a Bug Life Cycle.

  • The journey of the Defect Cycle varies from organization to organization and also from project to project because development procedures and platforms as well as testing methods and testing tools differ depending upon organizations and projects. 
  • The number of states that a defect goes through also varies depending upon the different tools used and processes followed during the testing of software.
  • The objective of the defect lifecycle is to easily coordinate and communicate the current status of the defect and thus help to make the defect-fixing process efficient. 

Defect Status

Defect status or Bug status is the current state from which the defect is currently going through. The number of states the defect goes through varies from project to project. The below diagram illustrates all the possible states of the defect:

Bug lifecycle

1. New: When any new defect is identified by the tester, it falls in the ‘New’ state. It is the first state of the Bug Life Cycle. The tester provides a proper Defect document to the Development team so that the development team can refer to Defect Document and can fix the bug accordingly.

2. Assigned: Defects that are in the status of ‘New’ will be approved and that newly identified defect is assigned to the development team for working on the defect and to resolve that. When the defect is assigned to the developer team the status of the bug changes to the ‘Assigned’ state.

3. Open: In this ‘Open’ state the defect is being addressed by the developer team and the developer team works on the defect for fixing the bug. Based on some specific reason if the developer team feels that the defect is not appropriate then it is transferred to either the ‘Rejected’ or ‘Deferred’ state.

4. Fixed: After necessary changes of codes or after fixing identified bug developer team marks the state as ‘Fixed’.

5. Pending Request: During the fixing of the defect is completed, the developer team passes the new code to the testing team for retesting. And the code/application is pending for retesting on the Tester side so the status is assigned as ‘Pending Retest’.

6. Retest: At this stage, the tester starts work of retesting the defect to check whether the defect is fixed by the developer or not, and the status is marked as ‘Retesting’.

7. Reopen: After ‘Retesting’ if the tester team found that the bug continues like previously even after the developer team has fixed the bug, then the status of the bug is again changed to ‘Reopened’. Once again bug goes to the ‘Open’ state and goes through the life cycle again. This means it goes for Re-fixing by the developer team.

8. Verified: The tester re-tests the bug after it got fixed by the developer team and if the tester does not find any kind of defect/bug then the bug is fixed and the status assigned is ‘Verified’.

9. Closed: It is the final state of the Defect Cycle, after fixing the defect by the developer team when testing found that the bug has been resolved and it does not persist then they mark the defect as a ‘Closed’ state.

Few More States that also come under this Defect Life Cycle:

1. Rejected: If the developer team rejects a defect if they feel that defect is not considered a genuine defect, and then they mark the status as ‘Rejected’. The cause of rejection may be any of these three i.e Duplicate Defect, NOT a Defect, Non-Reproducible.

2. Deferred: All defects have a bad impact on developed software and also they have a level based on their impact on software. If the developer team feels that the defect that is identified is not a prime priority and it can get fixed in further updates or releases then the developer team can mark the status as ‘Deferred’. This means from the current defect life cycle it will be terminated.

3. Duplicate: Sometimes it may happen that the defect is repeated twice or the defect is the same as any other defect then it is marked as a ‘Duplicate’ state and then the defect is ‘Rejected’.

4. Not a Defect: If the defect has no impact or effect on other functions of the software then it is marked as ‘NOT A DEFECT’ state and ‘Rejected’.

5. Non-Reproducible: If the defect is not reproduced due to platform mismatch, data mismatch, build mismatch, or any other reason then the developer marks the defect as in a ‘Non-Reproducible’ state.

6. Can’t be Fixed: If the developer team fails to fix the defect due to Technology support, the Cost of fixing a bug is more, lack of required skill, or due to any other reasons then the developer team marks the defect as in ‘Can’t be fixed’ state.

7. Need more information: This state is very close to the ‘Non-reproducible’ state. But it is different from that. When the developer team fails to reproduce the defect due to the steps/document provided by the tester being insufficient or the Defect Document is not so clear to reproduce the defect then the developer team can change the status to “Need more information’. When the Tester team provides a good defect document the developer team proceeds to fix the bug.

Defect Lifecycle

Consider the flow chart below to understand the defect lifecycle.

  1. The tester finds a defect.
  2. The defect status is changed to New.
  3. The development manager will then analyze the defect.
  4. The manager determines if the defect is valid or not.
  5. If the defect is not valid then the development manager assigns the status Rejected to defect.
  6. If the defect is valid then it is checked whether the defect is in scope or not. If no then the defect status is changed to Deferred.
  7. If the defect is in scope then the manager checks whether a similar defect was raised earlier. If yes then the defect is assigned a status duplicate.
  8. If the defect is not already raised then the manager starts fixing the code and the defect is assigned the status In-Progress.
  9. Once the defect is fixed the status is changed to fixed.
  10. The tester retests the code if the test is passed then the defect status is changed to closed.
  11. If the test fails again then the defect is assigned status reopened and assigned to the developer.

Defect lifecycle

Benefits of Defect Lifecycle

  • Deliver High-Quality Product
  • Improve Return on Investment (ROI) by Reducing the Cost of Development
  • Better Communication, Teamwork, and Connectivity
  • Detect Issues Earlier and Understand Defect Trends
  • Better Service and Customer Satisfaction

Limitations in Defect Lifecycle

  • Variations of the Bug Life Cycle
  • No Control on Test Environment

Last Updated :
18 Aug, 2023

Like Article

Save Article

Какой же путь проходит баг и какую роль в его жизненном цикле играет тестировщик? Давайте разбираться.

Ошибка, дефект, но чаще всего баг. Именно так называется то, что находят тестировщики в процессе работы.

Определение бага

Bug в переводе означает “жук, насекомое”. Первая ошибка, которая была задокументирована, возникла как раз из-за жука. В середине 40-х годов 20 века ученых Гарвардского университета вызвали для того, чтобы определить причину сбоя в работе вычислительной машины Mark II. Покопавшись в этой громадной куче приборов, соединенных проводами, они обнаружили бабочку, застрявшую между контактами электромеханического реле. Стало ясно, что именно она и явилась причиной сбоя. Одна из сотрудниц университета, Грейс Хоппер, так и сформулировала результат исследований: «неполадку вызвал баг». Извлеченное насекомое было вклеено скотчем в технический дневник, с соответствующей сопроводительной надписью. Ее, как говорят, до сих пор можно увидеть в этом журнале, хранящемся в университетском научном музее.

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

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

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

Что еще интересно, что программ, не содержащих ошибок, не бывает. По статистике на каждую тысячу строк программного кода, который пишут программисты, приходится несколько ошибок, а количество строк в сложном программном обеспечении достигает нескольких миллионов. Поэтому поиск и исправление этих ошибок – очень трудоемкое дело, составляющее до 45% всех затрат на разработку программного обеспечения.

Жизненный цикл бага

Давайте вкратце разберем каждый этап жизненного цикла

Жизненный цикл бага
Жизненный цикл бага
  1. Новый (New) — Тестировщик находит баг, локализует и вносит его в специальную систему, где хранятся баг-репорты. С этого момента баг начинает официально существовать.
    Далее его статус меняется на Отказ (Rejected) или на Назначен (Assigned).
  2. Отказ (Rejected) — пишется комментарий программиста или менеджера о причине reject-a(отклонения). Это может быть некачественное описание дефекта, такой дефект уже существует (дубликат), невозможность воспроизвести дефект. Также это может произойти потому что для заказчика какие-то ошибки перестали быть актуальными. После этого, тестировщик или закрывает дефект (Closed), или дополняет комментарии данного дефекта и переводит дефект заново в состояние Назначен(Assigned).
  3. Назначен (Assigned)— дефект просмотрен и открыт (то есть признан для исправления).
  4. Решен (Fixed) — дефект исправили и он в этом состоянии требует перепроверки тестировщиком.
  5. После проверки ошибки тестировщиком, дефект переводится в состояние Переоткрыт (Re-opened) (если дефект не исправлен или исправлен не полностью) либо в Закрыт (Closed), если ошибка исправлена.

Данную схему можно изобразить в текстовом виде. Вот несколько вариантов прохождения багов (можно просто нарисовать на листочке на собеседовании):
1. Новый (new) —> Отклонен (rejected) —> Закрыт (closed)
2. Новый (new) —> Назначен (аssigned) —> Решен (fixed) —> Закрыт (closed)
3. Новый (new) —> Назначен (аssigned) —> Решен (fixed) —> Закрыт (closed) —> Переоткрыт (re-opend)

Жизненный цикл бага с точки зрения команды

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

Жизненный цикл бага с точки зрения команды
Жизненный цикл бага с точки зрения команды

Сначала тестировщик находит баг. Далее заносит его в систему учета ошибок. После этого программист начинает изучать отчет о дефекте. Именно на этом этапе он решает баг это или нет.

Давайте посмотрим сначала сценарий, в котором разработчик принял баг. Перед ним сразу встает задача пофиксить его, то есть исправить и залить (отдать заново на проверку). Как только разработчик все сделал, баг снова отправляется к тестировщику, который производит тестирование исправлений, а также проверяет смежные участки (регрессионное тестирование).

Если баг больше не воспроизводится, то тестировщик закрывает баг.
Если баг снова воспроизводится, то мы возвращаем его программисту. И снова проходим все шаги, начиная с 3-го шага (рассмотрения проблемы программистом).

Теперь другой сценарий — разработчик не принял баг. Если баг не принят, то разработчик возвращает его нам. Наша задача — рассмотреть проблему. Если баг вернули из-за некорректного описания, то значит переписываем его. Если невозможно воспроизвести дефект, то заново проверяем все шаги, может мы что то упустили при описании. Если разработчик прав и бага нет, то мы закрываем баг. А если баг все же есть, то вносим необходимые коррективы и опять возвращаемся на шаг 3.

***

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

29

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

Значительная (Major). Значительная ошибка – ошибка, при которой часть основной бизнес-логики работает некорректно. Ошибка некритична или есть возможность для работы с тестируемой функцией, используя другие входные точки.

Незначительная (Minor). Незначительная ошибка не нарушает бизнеслогику тестируемой части приложения, очевидная проблема пользовательского интерфейса.

Тривиальная (Trivial). Тривиальная ошибка не касается бизнес-логики приложения, это плохо воспроизводимая проблема пользовательского

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

Также полезно указать приоритет исправления каждого дефекта. · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Приоритет (priority) – это атрибут, указывающий на очеред-

ность выполнения задачи или устранения дефекта.

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Чем выше приоритет, тем быстрее нужно исправить дефект. Например, слово, напечатанное с ошибкой, может иметь самый низкий уровень серьезности, но перед релизом эта ошибка может иметь наивысший приоритет и должна быть экстренно исправлена.

Градация приоритета дефекта может быть следующая:

Высокий (High). Ошибка должна быть исправлена как можно быстрее, т. к. ее наличие является критической для ПО.

Средний (Medium). Ошибка должна быть исправлена, ее наличие не является критичной, но требует обязательного решения.

Низкий (Low). Ошибка должна быть исправлена, ее наличие не является критичной и не требует срочного решения.

За время своей жизни дефекты проходят определенные стадии, которые характеризуются их статусами.

30

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Жизненный цикл бага (bug workflow) – последовательность

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

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Самый простой жизненный цикл (workflow) без применения инструментальных средств: тестировщик приходит к разработчику и просто сообщает об ошибке, но здесь есть риск, что разработчик может забыть про ошибку и не исправить ее. Поэтому обычно в IT-компаниях дефекты документируют в системах учета дефектов (баг-трекинговые системы, bug tracking system, BTS, bug-tracker)

с возможностью общего доступа к ним. Существует множество таких систем, которые позволяют не только создавать задачи, менять их статусы, но и создавать отчеты об инцидентах (баг-репорты, bug report).

На рынке ПО предложено огромное количество bug-tracker, среди них есть и свободно распространяемые и платные.

Например:

Redmine – открытое серверное веб-приложение для управления проектами и задачами (в том числе для отслеживания ошибок).

Bugzilla – свободная система отслеживания ошибок (баг-трекинга) с веб-интерфейсом.

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

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

граммными продуктами, но и в качестве системы учета заявок.

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

31

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Статус (status) – основной атрибут, определяющий текущее

состояние дефекта.

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Статус отражает меру активности бага от начального состояния, когда он еще не подтвержден как баг, до завершения, когда баг исправлен/решен. Набор атрибутов зависит от конкретной BTS, но чаще встречаются следующие:

NEW (Новый). Дефект только что зарегистрирован, в зависимости от анализа дефекта его статус меняется на Отказ или Назначен.

ASSIGNED (Назначен) или OPEN (Открыт). Дефект просмотрен и открыт (можно сказать, признан) для исправления и может быть назначен на другого сотрудника или переведен в состояние NEW.

REOPENED (Открыт заново). Дефект был решен ранее, однако возникла необходимость вернуться к нему (решение было неверным либо неокончательным).

CLOSED (Закрыт). В результате определенного количества циклов баг все-таки окончательно устранен и больше не потребует внимания команды – он объявляется закрытым.

Резолюция – очень важный атрибут, напрямую связанный со статусом, т. е. резолюция – это детализация статуса.

FIXED (Решено) – стандартная резолюция, означающая, что задание выполнено или баг исправлен. После дефект переходит обратно в сферу ответственности тестировщика. Как правило, сопровождается резолюцией, например:

1.Исправлено (исправления включены в версию ХХХ).

2.Дубль (повторяет дефект, уже находящийся в работе).

3.Не исправлено (работает в соответствии со спецификацией, имеет слишком низкий приоритет, исправление отложено до следующей версии и т. п.).

4.Невоспроизводимо (запрос дополнительной информации об условиях, в которых дефект проявляется).

INVALID (Некорректно) – неправильная или некорректная постановка задачи.

WONTFIX (Проблема есть, но решаться не будет) – такая резолюция может быть вынесена в отношении request for enhancement (просьб об

32

усовершенствовании), которые хоть и имеют смысл, являются слишком трудновыполнимыми и не являются обязательными.

DUPLICATE (Дублирует) – описанная проблема уже зарегистрирована в другом баге.

WORKSFORME (А у меня работает…) – не удалось воспроизвести описанную проблему ни эмуляцией сценария, ни анализом кода.

MOVED (Перенесено) – проблема перенесена в иную систему-tracker.

REJECTED (Отказ) сопровождается комментарием программиста или менеджера о причине rejectʼa (отклонения): некачественное описание дефекта, дублирование эффекта, невозможность воспроизвести дефект. После этого тестер или закрывает дефект (Closed), или дополняет комментарии данного дефекта и переводит дефект заново в состояние

Назначен (Open).

PENDING RETEST (Ожидает повторного тестирования). На этом этапе баг-репорт ожидает повторного тестирования.

RETEST (Повторное тестирование). На этом этапе тестировщики проверяют изменения, внесенные разработчиками, и повторно тестируют их.

NOT A BUG (Это не дефект). Баг-репорт может иметь такой статус, например, если клиент попросил внести небольшие изменения в продукт: изменить цвет, шрифт и т. д.

VERIFIED (Проверен). Тестировщик проверяет, действительно ли ответственный разработчик исправил дефект. Если бага больше нет, он

получает данный статус.

Самые простые варианты жизненного цикла багов схематически представлены на рисунке 2.4, а и б.

Каждый дефект имеет ряд обязательных свойств, которые нужно внести в BTS при добавлении данного дефекта. Для этого необходимо написать отчет о дефекте (отчет об инциденте, баг-репорт).

33

Open

Разработчик

Assign to

Тестировщик

Разработчик

Open

Open

Closed

а)

Open

Разработчик

Тестировщик

Разработчик

Resolve

Reopen

Closed

б)

Рис. 2.4 – Жизненный цикл дефекта

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Отчет о дефекте (баг-репорт, bug report) – это документ, описывающий ситуацию или последовательность действий, приведшую к некорректной работе объекта тестирования, с указанием причин и ожидаемого результата.

·· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Видеале описание дефекта должно иметь следующую структуру:

1. Уникальный номер (ID): присваивается автоматически в BTS.

34

2.Краткое название (Title, Summary или Short Description): короткий текст, который помогает сразу понять, что это за дефект.

3.Описание (Description или Summary): полное описание дефекта, включая шаги для воспроизведения.

4.Платформа (Platform): указывается, что используется для запуска программного обеспечения, в частности имя и версия операционной системы; в случае веб-приложения – имя и версия веб-браузера.

5.Шаги по воспроизведению (Steps to reproduce): шаги для воспроизведения дефекта разработчиком.

6.Ожидаемый результат (Expected Result). Что должно произойти, когда вы делаете какое-нибудь действие? Что вы ожидаете?

7.Фактический результат (Actual Result). Результат ошибки. Что случилось на самом деле?

8.Приложения (Attachments): некоторые дефекты сложно описать, поэтому для наглядности к описанию ошибки прилагаются скриншоты, видео или лог-файлы.

9.Серьезность (Severity) описывает влияние ошибки.

10.Приоритет (Priority). С помощью данного свойства определяется очередность исправления данного дефекта программистом.

11.Статус (Status) – состояние отчета об ошибке в любой системе отслеживания багов. Первоначальный статус отчета об ошибке – New. После этого статус может измениться на резолюции Fixed, Verified, Reopen,

Won’t Fix и т. д.

12.Комментарии (Comments) – комментарии к багу.

Часто шаги воспроизведения (Steps to Reproduce), фактический результат (Result) и ожидаемый результат (Expected Result) записывают в описание.

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

· · · · · · · · · · · · · · · · · · · · · · · · · ·

Пример · · · · · · · · · · · · · · · · · · · · · · · · · ·

0000159

Отсутствует контент на странице сайта «Кинополис» на вкладке «Сеансы».

35

Описание

Отсутствие нужной информации на странице сайта https://kino-polis.ru/ приводит к блокировке множества функций сайта, а именно: невозможно выбрать сеанс, забронировать кресло в зале и произвести оплату, т. к. все эти функции недоступны из-за ошибки. Также на странице не прогружается рекламный видеоролик из-за ошибки: Error loading media: File could not be played!.

Шаги по воспроизведению

1.Открыть страницу сайта https://kino-polis.ru/.

2.Перейти на вкладку «Сеансы».

Дополнительные сведения

Фактический результат: отсутствие нужной информации на странице, не-

обходимой для выполнения дальнейших действий.

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

Приоритет

Неотложный

Влияние

Блокирующее

Attachments (рис. 2.5).

Рис. 2.5 – Дефект на странице сайта «Кинополис» на вкладке «Сеансы»

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

36

На базе состояний дефектов в системе учета может быть построено множество отчетов, позволяющих оценивать эффективность как команды разработки, так и команды тестирования (рис. 2.6). Отчет представляет собой некий информационный срез о текущем состоянии базы зарегистрированных багов.

Рис. 2.6 – Статистика в BTS Mantis

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

1.«Одна ошибка – один баг-репорт». Один баг в репорте может помочь избежать дублирования и путаницы.

2.Указывайте сначала глагол. Все глаголы ставьте в неопределенной форме: нажать, открыть, перейти.

3.Пишите без лишних слов, используйте простые конструкции. Давайте скриншотам говорящие заголовки, например «Сортировка.png».

4.Придерживайтесь принципа «Что-Где-Когда». Обязательно приводите ссылку, максимально подробную, на тот раздел, где баг. Но при этом не стоит полагаться только на ссылку, она может сломаться. Пишите и путь к нужному месту по шагам. Если у вас мобильное приложение, то приводите максимум скриншотов на шаги.

37

5.Если баг только для авторизованных пользователей, то обязательно указывайте данные для входа: логин и пароль.

6.Все скриншоты или упоминания о них приводите в нужных местах с названием (см. скрин Сортировка.png) или прямо встраивайте в баг-ра- порт с помощью !Сортировка.png! или #Сортировка.png (так будет сразу ссылка на баг).

7.Не забывайте указывать серьезность и приоритет дефекта.

8.Обезличенность. Когда сообщаете об ошибке, то сообщаете о дефекте программного обеспечения, а не о дефекте разработчика.

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

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

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

1.Назовите виды дефектов и дайте им определения.

2.Какие ошибки чаще всего встречаются в ПО?

3.Чем отличается серьезность от приоритета?

4.После переключения языка сайта на английский текст баннеров на главной странице не переведен. Опишите дефект.

5.Что такое локализация дефекта?

6.Расскажите, как должен быть оформлен дефект и для чего нужна такая четкая последовательность.

7.Опишите жизненный цикл дефекта.

8.Перечислите известные вам системы учета дефектов.

9.Для чего нужен баг-репорт?

10.Что необходимо описать в баг-репорте?

Введение в понятие жизненного цикла дефекта

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

Мы также добавили наиболее часто задаваемые на собеседовании вопросы по жизненному циклу дефекта. Чтобы в нем разобраться, важно знать о различных состояниях дефекта.

С точки зрения реальных сценариев, ошибки/недочеты/неисправности называются багами/дефектами, поэтому можно сказать, что основная цель тестирования – убедиться, что продукт менее подвержен дефектам (отсутствие дефектов – нереалистичная ситуация).

Теперь возникает вопрос, что же такое дефект?

Содержание:

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

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

Рабочий процесс дефекта

Состояния дефекта

Реализация жизненного цикла дефекта

Часто задаваемые вопросы

Дополнительная информация о дефекте

Состояния дефекта

Некорректный и повторяющийся отчет о дефект

Данные о дефекте

Заключение

Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туторилов, задач по автоматизации и книг по QA.

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

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

Дефект возникает, когда разработчик допускает какую-либо ошибку во время проектирования или создания приложения, после чего этот недостаток обнаруживается тестировщиком.

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

Рассмотрим его подробнее.

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

Жизненный цикл дефекта(бага) – это цикл, через который проходит дефект за весь период своего существования, включая его различные состояния. Он начинается с момента обнаружения тестировщиком нового бага, и заканчивается, когда тестировщик закрывает баг, гарантируя, что он не будет воспроизведен снова.

Рабочий процесс дефекта

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

рабочий процесс жизненного цикла бага.

Состояния дефекта

1. Новый (New): Это первое состояние дефекта в его жизненном цикле. Когда обнаруживается любой новый баг, он переходит в состояние “Новый”, а его валидация и тестирование выполняются на более поздних стадиях жизненного цикла.

2. Назначен (Assigned): На этом этапе заведенный впервые дефект передается команде разработчиков. Разработчика-исполнителя назначает руководитель проекта или менеджер команды тестирования .

3. Открыт (Open): Данный статус присваивается дефекту, когда разработчик начинает процесс его анализа и работает над его исправлением, если это необходимо.

Если по мнению разработчика дефект неактуален или некорректен, то он может быть переведен в одно из следующих четырех состояний: “Дубликат”(“Duplicate“), “Отложено” (“Deferred”), “Отклонено” (“Rejected”) или “Не ошибка”(“Not a Bug”) на основании определенных фактов. Позже мы рассмотрим подробнее эти четыре состояния.

4. Исправлен (Fixed): Когда разработчик завершает задачу по исправлению дефекта, внося необходимые изменения в код, он изменяет статус дефекта на “Исправлен”.

5. Ожидание повторного тестирования (Pending Retest): После исправления дефекта разработчик передает его тестировщику для повторного тестирования. Пока этого не произойдет, баг остается в статусе “Pending Retest”.

6. Нужен повторный тест (Retest): На этом этапе тестировщик приступает к повторному тестированию дефекта, чтобы проверить, насколько точно он исправлен разработчиком в соответствии с требованиями.

7. Открыт заново (Reopen): Если в рамках дефекта какая-либо проблема не была исправлена, он снова передается разработчику, а статус дефекта меняется на “Reopen”.

8. Проверен (Verified): Если тестировщик после проведения повторного тестирования считает, что дефект был исправлен, то статус дефекта меняется на “Verified”.

9. Закрыт (Closed): Когда дефект больше не существует и полностью исправлен, тестировщик меняет статус дефекта на “Closed”.

Еще несколько возможных состояний:

  • Отклонен (Rejected): Если разработчик считает дефект некорректным, то он помечается как “Rejected”.
  • Дубликат (Duplicate): Если заведенный баг уже существует или его описание совпадает с любым другим дефектом, то статус меняется на “Duplicate”.
  • Отложенный (Deferred): Если разработчику кажется, что у дефекта не очень высокий приоритет, и он может быть исправлен в следующих релизах, то статус может быть изменен на ‘Deferred”.
  • Не ошибка (Not a Bug): Если дефект никак не влияет на функциональность приложения, то его статус меняется на “Not a Bug”.

Обязательные поля, которые тестировщик заполняет при заведении отчета по любому новому дефекту – Версия сборки (Build version), Программный продукт (Product), Модуль (Module), Серьезность (Severity), Краткое описание (Title) и Шаги воспроизведения (Steps to Reproduce).

В вышеприведенный список можно добавить еще несколько необязательных полей. К ним относятся Имя клиента (Customer name), Браузер (Browser), Операционная система (Operating system), Приложенные файлы (File Attachments).

Следующие поля могут быть либо заполнены, либо остаться пустыми:

Иногда у тестировщика есть право добавлять поля Статус ошибки (Status), Приоритет (Priority) и ‘Назначено на’ (‘Assigned to’). В противном случае QA менеджер сам установит статус и приоритет бага и назначит его соответствующему разработчику модуля.

Рассмотрим следующий цикл дефектов

цикл дефектов

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

После обнаружения баг изучают менеджеры по разработке и тестированию. Они могут установить статус “Open” и передать баг разработчику или отложить до следующего релиза.

Когда ошибка назначается разработчику, он начинает работу над ней. Разработчик может установить следующие статусы ошибки – “Не будет исправлена”(“won’t fix”), “Не удалось воспроизвести”(“Couldn’t reproduce”), “Требуется дополнительная информация”(“Need more information”) или “Исправлена”(“Fixed”).

Если статус ошибки, установленный разработчиком, либо “Need more information”, либо “Fixed”, то QA команда должна отреагировать на это в соответствии с присвоенным ошибке статусом. Если баг исправлен, тестировщик проверяет его и может установить статус “Проверен и закрыт” (“verified closed”) или “Открыт заново”(“Reopen”).

Реализация жизненного цикла дефекта

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

Они заключаются в следующем:

  • Как говорилось ранее, очень важно, чтобы перед началом работы над жизненным циклом дефекта вся команда четко понимала различные состояния дефекта.
  • Жизненный цикл бага должен быть надлежащим образом задокументирован, чтобы избежать путаницы в будущем.
  • Убедитесь, что каждый человек, которому поручена какая-либо задача, связанная с жизненным циклом дефекта, четко понимает уровень своей ответственности для достижения лучших результатов.
  • Каждый участник команды, у которого есть право изменять статус дефекта, должен быть хорошо осведомлен об этом статусе. Также он должен предоставить подробную информацию о присвоенном статусе и причине его присвоения, чтобы каждый, кто работает над этим конкретным дефектом, мог легко понять, почему баг переведен именно в это состояние.
  • С инструментом отслеживания дефектов следует работать осторожно, чтобы поддерживать согласованность между дефектами и, следовательно, в рабочем процессе жизненного цикла дефекта.

Далее рассмотрим вопросы с собеседований на тему жизненного цикла дефекта.

Часто задаваемые вопросы

Вопрос №1: Что такое дефект с точки зрения тестирования ПО?

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

Вопрос №2: В чем основная разница между ошибкой, дефектом и сбоем?

Ответ:

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

Дефект: Это несоответствие между фактическим и ожидаемым поведением приложения на этапе тестирования.

Сбой: Это несоответствие между фактическим и ожидаемым поведением приложения после релиза, обнаруженное клиентом или конечным пользователем.

Вопрос №3: Каков статус дефекта при его первоначальном обнаружении?

Ответ: Когда новый дефект найден, он находится в статусе “New”.

Вопрос №4: Каковы различные состояния дефекта в жизненном цикле, когда он утвержден и исправлен разработчиком?

Ответ: Различные состояния дефекта, в данном случае, это “Новый” (“New”), “Назначен” (“Assigned”), “Открыт” (“Open”), “Исправлен” (“Fixed”), “Ожидает повторной проверки” (“Pending Retest”), “Повторная проверка” (“Retest”), “Проверен” (“Verified”) и “Закрыт” (“Closed”).

Вопрос №5: Что происходит, если тестировщик все еще обнаруживает дефект, который был исправлен разработчиком?

Ответ: Тестировщик может отметить состояние дефекта как “Reopen”, после чего он будет передан разработчику для повторного тестирования.

Вопрос №6: Что такое воспроизводимый дефект?

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

Вопрос № 7: Какой тип дефекта является невоспроизводимым дефектом?

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

Вопрос №8: Что такое отчет о дефектах?

Ответ: Отчет о дефектах – это документ, содержащий информацию о дефектах или багах в приложении.

Вопрос №9: Какие сведения включают в отчет о дефектах?

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

Вопрос №10: Когда дефект переходит в статус ‘deferred’?

Ответ: Это обнаруженный дефект, который считается не столь важным и может быть исправлен в более поздних релизах.

Дополнительная информация о дефекте

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

Состояния дефекта

Исходное состояние Состояние при возврате Состояние при подтверждении
Сбор информации о лице, ответственном за воспроизведение дефекта Дефект отклонен или запрошена дополнительная информация Дефект устранен и должен быть протестирован и закрыт
Статус “открыт” или “новый” Статус “отклонен” или “на уточнении” Статус “решен” и “проверен”

Некорректный и повторяющийся отчет о дефекте

  • Иногда дефекты возникают не из-за кода, а из-за тестовой среды или недопонимания. Такой отчет должен быть закрыт как некорректный (Invalid).
  • В случае дубликата бага один отчет сохраняется, а другой закрывается как дубликат.
  • Менеджер по тестированию отвечает за общее управление дефектами и процессом тестирования, а команда управления дефектами обычно отвечает за отчеты.
  • В команду входят менеджеры по тестированию, разработчики, проджект-менеджеры, продакт-менеджеры и другие заинтересованные стороны.
  • Комитет по управлению дефектами должен определить обоснованность каждого дефекта и решить, когда его исправлять или же отложить до следующего релиза. Чтобы определить это, необходимо рассчитать стоимость, риски и последствия отказа от исправления какого-либо дефекта.
  • Если дефект должен быть исправлен, то необходимо определить его приоритет.

Данные о дефекте

  • Имя автора
  • Вид тестирования
  • Краткое описание проблемы
  • Подробное описание дефекта
  • Шаги для воспроизведения
  • Фаза жизненного цикла
  • ПО, в котором был обнаружен дефект.
  • Серьезность и приоритет
  • Подсистема или компонент, где возник дефект.
  • Деятельность проекта, в ходе которой возник дефект.
  • Тип дефекта
  • Проекты и продукты, в которых существуют проблемы
  • Текущий исполнитель
  • Текущее состояние бага
  • Влияние на проект
  • Риск, потери, возможности и выгоды, связанные с устранением или отказом от устранения дефекта.
  • Даты наступления различных фаз жизненного цикла дефекта.
  • Описание того, как был устранен дефект, и рекомендации по тестированию.
  • Рекомендации

Заключение

Выше было приведено подробное руководство по жизненному циклу дефекта и его управлению.

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

Перевод статьи “What is Defect/Bug Life Cycle in Software Testing? Defect Life Cycle Tutorial”

Понравилась статья? Поделить с друзьями:
  • Жизненный уровень сотрудников отдела возрос ошибка
  • Жизненный уровень населения улучшается ежегодно речевая ошибка
  • Жизненный путь героя тяжел и трагичный исправить ошибку
  • Жизненные ошибки ошибочные мечтания и поступки андрея болконского
  • Жизненные ошибки андрея болконского и пьера безухова