Матрицата на проследимостта
Накратко: Проследимостта е връзката между изискване, тест и дефект, в двете посоки. Матрицата е таблица: изискванията са редове, тестовете колони, а отметката казва „този тест проверява това изискване“. Празният ред е непокрито изискване, празната колона е тест без изискване, а два теста с еднакви отметки често проверяват едно и също.
Проблем
Кой тества срока на кода?
Две седмици преди есенната кампания маркетингът пита: „Кодът ЕСЕН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: Тениска за 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 | |||||
| Проверява | 0 | 0 | 0 | 0 | 0 |
Еталонната матрица
- И-1: Т-1, Т-2
- И-2: Т-2
- И-3: Т-3, Т-5
- И-4: непокрито
- Т-4: без изискване
Т-2 проверява две изисквания: 10-те % на тениската и че дънките в намаление остават без код. Срокът (И-4) е без тест: това е дупката, за която пита маркетингът. А Т-4 е за лоялността, която я няма в този списък. Някой трябва да реши: добавя ли се изискване, или тестът е в грешната папка.
Идеята
Кой поддържа матрицата
Матрицата струва нещо само ако е вярна. Затова тя се пише заедно с тестовете, а не накрая:
- Изискването получава номер, когато влезе в списъка.
- Тестът получава номер и отметка към изискването, когато се напише. Тест без отметка е сигнал, не завършена работа.
- Дефектът получава номера на теста и на изискването, когато се запише.
Номерата трябва да са стабилни. Ако И-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 | |||||||
| Проверява | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Еталонната матрица
- И-1: Т-2
- И-2: Т-1, Т-4, Т-6
- И-3: Т-5
- И-4: Т-3
- И-5: непокрито
- Т-7: без изискване
Излишни: Т-4 / Т-6 (35 € и 20 € са в една и съща група: под 50 €, далеч от границата. „Т-1“ остава, защото 49,99 € е на самата граница.)
И-5 (цената на доставката, преди клиентът да плати) е без тест, а Т-7 (плащането) е без изискване. Т-4 и Т-6 са в една и съща група: под 50 €, далеч от границата. Т-1 е на същия ред, но не е дубъл, защото 49,99 € е на самата граница. Ако прагът беше станал „над 50 €“ вместо „от 50 €“, щеше да го хване Т-2. Ако беше станал „от 49 €“, щеше да го хване Т-1. Т-4 и Т-6 нямаше да хванат нито едното.
Тест
Провери се
Свързани уроци
Раздел „Свързани уроци“- Нужно отпреди: Видове изисквания · Доброто изискване · Какво е стори · Критерии за приемане
- Продължава в: Промяна на изискване · Какво покритието не казва · Промо кодове: от заявката до пускането
- Задачи по темата: Проследимост