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

Матрицата на проследимостта

Накратко: Проследимостта е връзката между изискване, тест и дефект, в двете посоки. Матрицата е таблица: изискванията са редове, тестовете колони, а отметката казва „този тест проверява това изискване“. Празният ред е непокрито изискване, празната колона е тест без изискване, а два теста с еднакви отметки често проверяват едно и също.

Проблем

Кой тества срока на кода?

Две седмици преди есенната кампания маркетингът пита: „Кодът ЕСЕН10 изтича на 31 октомври. Проверено ли е, че на 1 ноември не важи?“

QA има 40 теста за промо кодовете. Кой от тях проверява срока? Някой отваря папката и започва да чете. След час отговорът е „май никой“. Пет теста проверяват 10-те %, три проверяват намалените продукти, а за срока няма нито един.

Тестовете са били там, но никой не е можел да каже какво покриват.

Идеята

Проследимост

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

Връзката между тези три се казва проследимост (traceability). Тя се следи в двете посоки:

  • Напред: от изискването към тестовете. Пита „проверено ли е това?“. Така маркетингът щеше да получи отговор за минута.
  • Назад: от теста или дефекта към изискването. Пита „защо съществува този тест?“ и „кое правило счупва този дефект и колко е важно?“.

Изискването „Кодът има срок“ има номер, И-4. Тестът има номер, Т-12. Дефектът има номер, Д-31. Проследимостта е записът кой номер с кой е свързан.

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

ISTQB CTFL v4.0.1 (раздел 1.4.4) нарича това проследимост между тестовата основа (test basis: изискванията, сторитата, критериите) и тестовите материали (testware: тестовете, резултатите, дефектите). Според програмата добрата проследимост позволява да се оцени покритието, помага за анализа на въздействието при промени, прави отчетите по-разбираеми и улеснява одитите.

В BABOK v3 на IIBA проследяването е задача от областта Requirements Life Cycle Management: Trace Requirements. Там връзките са и между самите изисквания: кое от кое е изведено (derive), кое от кое зависи (depends), кое решение кое изискване удовлетворява (satisfy) и кой тест го потвърждава (validate). Тук гледаме главно последната.

IREB CPRE също разглежда проследимостта в главата за управлението на изискванията: назад към източника (кой го е поискал и защо) и напред към това, което следва от него (дизайн, код, тестове).

Идеята

Матрицата

Най-простият запис е таблица. Изискванията са редове, тестовете са колони, а отметката значи „този тест проверява това изискване“. Това е матрицата на проследимостта (traceability matrix).

Т-1 Т-2 Т-3 Т-4
И-1 10 % отстъпка ✓ ✓
И-2 не за намалени продукти ✓
И-3 една платена поръчка ✓
И-4 срок
  • Т-1: тениска за 20,00 € с ЕСЕН10, 18,00 €.
  • Т-2: тениска за 20,00 € и дънки в намаление за 40,00 € с ЕСЕН10, отстъпката е 2,00 €.
  • Т-3: втори опит със същия код, „Кодът вече е ползван“.
  • Т-4: лоялен клиент, тениска за 20,00 €, 19,00 €.

Таблицата се чете за секунди. Т-2 проверява две изисквания: това е нормално. Редът на И-4 е празен. Колоната на Т-4 също. Това са двете дупки, които матрицата показва веднага.

Дефектите се връзват към същите номера: „Д-31: изтеклият код се приема, И-4“. На работа тази таблица живее в инструмента за управление на тестовете или в обикновена електронна таблица. Идеята е една.

Идеята

Какво показва матрицата

Три неща се виждат с поглед:

  • Непокрито изискване: празен ред. Нищо не проверява правилото. Ако го счупиш, никой тест няма да падне.
  • Тест без изискване: празна колона. Или изискването липсва в списъка (лоялността я има в магазина, но не и тук), или тестът проверява нещо, което никой не е поискал. И в двата случая някой трябва да реши.
  • Дублирано покритие: два теста с еднакви отметки, които проверяват едно и също. „Количка за 35,00 €“ и „Количка за 20,00 €“ са по едно и също правило и дават един и същ отговор. Единият не носи нищо ново, а се поддържа като другия.

Внимание при дублите: еднаквите отметки са само подсказка. „Количка за 49,99 €“ е на същия ред като „Количка за 20,00 €“, но не е дубъл. 49,99 € е точно под границата, а там живеят грешките.

Делът на изискванията с поне един тест е покритието на изискванията (requirements coverage). Четири изисквания, три с тест: 75 %. В третия урок на модула ще видиш защо 100 % не значи „добре проверено“.

Пробвай

Прочети матрицата

1. Редът на „И-4: Кодът има срок“ е празен: нито една отметка. Какво значи това?
2. Колоната на „Т-9: Плащане с карта: поръчката става платена“ е празна. Кое е най-доброто следващо действие?
3. Тестът „Тениска за 20,00 € и дънки в намаление за 40,00 € с ЕСЕН10: отстъпката е 2,00 €“ има отметка на два реда. Грешка ли е?
4. Тестът „Количка за 120,00 €: доставката е безплатна“ се проваля. По матрицата кое изискване е засегнато?

Пробвай

Матрицата на промо кода

Отбележи кой тест кое изискване проверява. После виж какво е останало без връзка.

Тестове

  • Т-1: Тениска за 20,00 € с ЕСЕН10: 18,00 €.
  • Т-2: Тениска за 20,00 € и дънки в намаление за 40,00 € с ЕСЕН10: отстъпката е 2,00 €.
  • Т-3: Мария е платила поръчка с ЕСЕН10. В нова поръчка въвежда ЕСЕН10: „Кодът вече е ползван“.
  • Т-4: Лоялен клиент, тениска за 20,00 €: 19,00 €.
  • Т-5: Мария е въвела ЕСЕН10, но не е платила. В нова поръчка кодът важи.

Натисни клетката, където тестът проверява изискването; отново, за да махнеш връзката. Стрелките местят между клетките, Space или Enter отбелязва.

ИзискванияТ-1: Тениска за 20,00 € с ЕСЕН10: 18,00 €.Т-2: Тениска за 20,00 € и дънки в намаление за 40,00 € с ЕСЕН10: отстъпката е 2,00 €.Т-3: Мария е платила поръчка с ЕСЕН10. В нова поръчка въвежда ЕСЕН10: „Кодът вече е ползван“.Т-4: Лоялен клиент, тениска за 20,00 €: 19,00 €.Т-5: Мария е въвела ЕСЕН10, но не е платила. В нова поръчка кодът важи.Покрито от
И-1 Промо кодът дава 10 % отстъпка.0
И-2 Промо кодът не важи за намалени продукти.0
И-3 Кодът се ползва в една платена поръчка. Втори опит: „Кодът вече е ползван“.0
И-4 Кодът има срок. След него: „Кодът е изтекъл“.0
Проверява00000

Идеята

Кой поддържа матрицата

Матрицата струва нещо само ако е вярна. Затова тя се пише заедно с тестовете, а не накрая:

  • Изискването получава номер, когато влезе в списъка.
  • Тестът получава номер и отметка към изискването, когато се напише. Тест без отметка е сигнал, не завършена работа.
  • Дефектът получава номера на теста и на изискването, когато се запише.

Номерата трябва да са стабилни. Ако И-4 утре стане И-7, всички връзки се объркват. Затова номерът не се преизползва, дори когато изискването се махне.

Анализаторът отговаря за изискванията и номерата им, а QA за тестовете и връзките им. Но матрицата е обща: от нея и собственикът вижда какво е проверено.

Упражнение

Матрицата на доставката

1. Доставката и количката. Пет изисквания, седем теста.

Отбележи връзките. После намери двата теста, които проверяват едно и също, и отбележи единия като излишен.

Тестове

  • Т-1: Количка за 49,99 €: доставката е 4,90 €.
  • Т-2: Количка за 50,00 €: доставката е безплатна.
  • Т-3: В количката има 9 тениски. Добавяне на още 2 се отказва, остават 9.
  • Т-4: Количка за 35,00 €: доставката е 4,90 €.
  • Т-5: Количка без продукти: поръчката се отказва.
  • Т-6: Количка за 20,00 €: доставката е 4,90 €.
  • Т-7: Плащане с карта: поръчката става платена.

Натисни клетката, където тестът проверява изискването; отново, за да махнеш връзката. Стрелките местят между клетките, Space или Enter отбелязва.

ИзискванияТ-1: Количка за 49,99 €: доставката е 4,90 €.Т-2: Количка за 50,00 €: доставката е безплатна.Т-3: В количката има 9 тениски. Добавяне на още 2 се отказва, остават 9.Т-4: Количка за 35,00 €: доставката е 4,90 €.Т-5: Количка без продукти: поръчката се отказва.Т-6: Количка за 20,00 €: доставката е 4,90 €.Т-7: Плащане с карта: поръчката става платена.Покрито от
И-1 Доставката е безплатна при поръчка от 50,00 € включително.0
И-2 Под 50,00 € доставката е 4,90 €.0
И-3 Празна количка не се поръчва.0
И-4 В количката има най-много 10 бройки от продукт.0
И-5 Клиентът вижда цената на доставката в количката, преди да плати.0
Проверява0000000
Кои тестове са излишни (повтарят друг тест)?

Тест

Провери се

1. Какво е проследимостта?
2. Шест изисквания, пет от тях имат поне един тест. Какво е покритието на изискванията?
3. Два теста имат отметки на едни и същи редове. Какво е най-вероятно?
4. Кое от тези матрицата НЕ може да покаже?
5. Дефектът „Доставката е 4,90 € при поръчка точно 50,00 €“ се свързва с теста, който го е хванал, и с изискването. Защо?

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