Към съдържанието
wannacode

Дефектите и докладът за тях

Накратко: Докладът за дефект е писмо до човек, който не е видял грешката. Трябва да може да я повтори от първия път: кратки стъпки, очаквано по правилото и получено от системата. Тежестта казва колко вреди дефектът, приоритетът колко бързо да се оправи; двете са преценка и често се разминават.

Проблем

„Доставката не работи“

Тестерът пише в системата за дефекти: „Доставката не работи. Спешно!“ Програмистът пробва количка за 30 € и вижда 4,90 €. Пробва 70 € и вижда 0,00 €. Всичко е наред. Затваря доклада с „не се възпроизвежда“.

Седмица по-късно клиент се оплаква, че е платил доставка за поръчка точно за 50,00 €. Тестерът го е видял първи. Но докладът му не казваше нито сумата, нито какво е очаквал, нито какво е получил.

Идеята

Докладът е писмо до някой, който не е бил там

Докладът за дефект (defect report) има една работа: друг човек да повтори грешката от първия път и да разбере защо е грешка. Затова добрият доклад има:

  • заглавие, което казва грешката: „Доставката е 4,90 € за поръчка точно 50,00 €“, не „Доставката не работи“;
  • стъпки: най-късият път до грешката, с точните данни. Нито една излишна стъпка;
  • очаквано: какво казва правилото. Безплатна доставка;
  • получено: какво направи системата. 4,90 €;
  • среда: версия, браузър, устройство, когато имат значение;
  • тежест и приоритет (следващите карти);
  • връзка към изискването и към тестовия случай, който го е хванал.

Едно нещо доклад не съдържа: кой е виновен. Дефектът е в продукта, не в човека.

По-точно, за любопитните

CTFL v4.0.1, раздел 5.5, дава типичното съдържание на доклада: уникален номер, заглавие с кратко описание, дата, автор и организация, обект на теста и среда, контекст (тестов случай, дейност, техника), описание на отказа, за да може да се възпроизведе и разреши, със стъпки, логове и снимки, очакван и получен резултат, тежест, приоритет, състояние и препратки. Програмата казва и целите: информация за поправката, начин да се следи качеството на продукта и идеи за подобряване на процеса.

Идеята

Жизненият път на един дефект

Докладът не свършва, когато е написан. Той минава през няколко състояния:

  1. Нов: тестерът го пише.
  2. Отворен: на прегледа (triage) екипът приема, че е дефект, и му дава приоритет.
  3. В работа: програмистът търси причината и я поправя.
  4. Поправен: поправката е във версията за тестване.
  5. Проверен: потвърждаващият тест минава, и регресионните около него също.
  6. Затворен.

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

По-точно, за любопитните

Имената на състоянията се различават между екипите и инструментите (Jira, Azure DevOps, GitHub Issues). CTFL не налага определени имена: важното е, че процесът по дефектите е договорен и всеки знае какво значи всяко състояние и кой го сменя.

Пробвай

Подреди пътя

Подреди състоянията на дефекта от доклада до затварянето.

  1. Поправен: поправката е във версията за тестване
  2. Нов: тестерът пише доклада
  3. Затворен
  4. Отворен: на прегледа приемат, че е дефект, и му дават приоритет
  5. В работа: програмистът търси причината и я поправя
  6. Проверен: потвърждаващият тест минава, регресионните също

Идеята

Тежест и приоритет не са едно и също

Двете се бъркат постоянно:

  • Тежестта (severity) е колко вреди дефектът: на клиента, на парите, на данните. Обикновено я предлага тестерът, защото е видял вредата. Скала: критична, висока, средна, ниска.
  • Приоритетът (priority) е колко бързо да се оправи. Решава го бизнесът или продуктовият собственик, защото зависи от плана, от клиентите, от рекламата. Скала: висок, среден, нисък.

Те често се разминават. Правописна грешка в името на магазина вреди малко, но се поправя днес. Грешна годишна справка вреди много, но има 10 месеца до следващата.

И двете са преценка, не факт. Два добри тестера могат да дадат различна тежест, и това е нормално. Важното е да можеш да кажеш защо.

Пробвай

Тежест или приоритет?

1. В името на магазина на началната страница има правописна грешка.
2. Годишната справка на счетоводството дава грешна сума на отстъпките. Тя се пуска веднъж в годината, следващия път след 10 месеца.
3. Никой не може да плати с карта.
4. Подсказката на полето за телефон казва „Въведете телефон“ на английската страница.

Пробвай

Първият доклад

В задачите долу магазинът не е съвсем правилен. Във всяка има по една скрита грешка, нарочно сложена в иначе вярната система. В модула за Gherkin такава версия с една грешка се казва мутант: сценариите ти я хващаха, ако паднат на нея. Тук грешката вече е хваната. Знаеш горе-долу къде е. Твоята работа е докладът.

Как работи задачата:

  • сглобяваш стъпките от речника на функционалността и пишеш стойностите;
  • с Опитай пускаш стъпките на системата с грешката и виждаш какво дава;
  • избираш очаквано (какво казва правилото) и получено (какво видя);
  • даваш тежест и приоритет.

Проверката пуска стъпките ти срещу системата с грешката (там грешката трябва да се появи) и срещу правилната (там не трябва). Заглавието се проверява само отчасти: да не е празно и да не е „не работи“. Тежестта и приоритетът се сверяват с примерния доклад, който виждаш след опита си.

Намери сума, при която грешката се вижда, и напиши доклада.

Хванатата грешка: Безплатна доставка

при поръчки доста под 50 €

Правилото: Доставката е безплатна при поръчка от 50 € включително, иначе е 4,90 €. Празна количка не се поръчва.

Стъпки за възпроизвеждане

  1. Още няма стъпки. Добави ги от речника отдолу.

Стъпките са от речника на функционалността, както в сценариите. Стойностите се пишат в самата стъпка: сумата като 50,00.

Очаквано (какво трябва да стане според правилото)
Получено (какво става в системата с грешката)
Тежест (колко вреди дефектът)
Приоритет (колко бързо да се оправи)

Идеята

Как намираш най-късите стъпки

Видял си грешката след 12 стъпки: добави, махни, смени количеството, сложи код, махни кода. Програмистът не трябва да минава през всичките. Преди да пишеш, стесни:

  • махни стъпка и пробвай пак. Грешката още ли е там? Значи стъпката не трябва;
  • смени една стойност наведнъж. При 30 € грешката я има, при 3 € не: значи е в сумата, и знаеш приблизително къде е границата;
  • запиши точните данни. Не „някаква сума“, а 30,00 €. Не „няколко бройки“, а 8 и после 3.

Това е и разликата между „при мен работи“ и „поправено от първия път“.

Упражнение

Доклади за дефекти

1. Таксата за доставка. Грешката е в цената на платената доставка.

Напиши доклад, по който грешката се оправя от първия път.

Хванатата грешка: Безплатна доставка

в цената на платената доставка

Правилото: Доставката е безплатна при поръчка от 50 € включително, иначе е 4,90 €. Празна количка не се поръчва.

Стъпки за възпроизвеждане

  1. Още няма стъпки. Добави ги от речника отдолу.

Стъпките са от речника на функционалността, както в сценариите. Стойностите се пишат в самата стъпка: сумата като 50,00.

Очаквано (какво трябва да стане според правилото)
Получено (какво става в системата с грешката)
Тежест (колко вреди дефектът)
Приоритет (колко бързо да се оправи)

2. Единадесетата бройка. Грешката е около горната граница на количката.

Напиши доклад, по който грешката се оправя от първия път.

Хванатата грешка: Най-много 10 бройки от продукт

когато количката мине горната граница

Правилото: В количката може да има най-много 10 бройки от един продукт. Добавяне над 10 се отказва със съобщение, а количката остава същата. Добавя се поне 1 бройка.

Стъпки за възпроизвеждане

  1. Още няма стъпки. Добави ги от речника отдолу.

Стъпките са от речника на функционалността, както в сценариите. Стойностите се пишат в самата стъпка: сумата като 50,00.

Очаквано (какво трябва да стане според правилото)
Получено (какво става в системата с грешката)
Тежест (колко вреди дефектът)
Приоритет (колко бързо да се оправи)

3. Отказът, който изпразва. Грешката е в това, което остава в количката след отказ.

Напиши доклад, по който грешката се оправя от първия път.

Хванатата грешка: Най-много 10 бройки от продукт

в това, което остава в количката след отказ

Правилото: В количката може да има най-много 10 бройки от един продукт. Добавяне над 10 се отказва със съобщение, а количката остава същата. Добавя се поне 1 бройка.

Стъпки за възпроизвеждане

  1. Още няма стъпки. Добави ги от речника отдолу.

Стъпките са от речника на функционалността, както в сценариите. Стойностите се пишат в самата стъпка: сумата като 50,00.

Очаквано (какво трябва да стане според правилото)
Получено (какво става в системата с грешката)
Тежест (колко вреди дефектът)
Приоритет (колко бързо да се оправи)

Тест

Провери се

1. Какво трябва да може човекът, който чете доклада?
2. Кой определя приоритета?
3. „Очаквано“ в доклада идва от…
4. Програмистът отхвърля доклада с „при мен работи“. Какво е най-вероятно липсвало?
5. Защо има значение коренната причина на дефекта, след като е поправен?

Създаден от Иво Гергов като част от кампанията на Evo Tech за достъпно обучение по програмиране ·