Funkčné vs nefunkčné požiadavky – prečo ich tímy často miešajú

Séria: Ako písať dokumentáciu a manuály v IT projekte

V mnohých projektoch sa stretávame s vetami typu:

  • „Systém musí byť rýchly.“
  • „Systém musí byť bezpečný.“
  • „Systém musí zvládnuť veľa používateľov.“

Na prvý pohľad to vyzerá ako normálne požiadavky.
Problém je, že nie je jasné:

  • čo presne má systém robiť,
  • ako sa to bude testovať,
  • ani či je požiadavka splnená.

Veľká časť chaosu v projektoch vzniká práve tým, že tímy miešajú funkčné a nefunkčné požiadavky.

 

Funkčné požiadavky

Funkčné požiadavky opisujú správanie systému.
Teda čo má systém robiť.

Príklady:

  • Používateľ môže vytvoriť objednávku.
  • Systém vypočíta cenu objednávky.
  • Administrátor môže zmeniť stav objednávky.
  • Systém odošle potvrdenie e-mailom.

Tieto požiadavky sa najčastejšie objavujú v:

  • user story
  • akceptačných kritériách
  • testovacích scenároch
  • používateľských manuáloch

Ak sú zapísané jasne, tím presne vie:

  • čo sa má implementovať,
  • čo sa má testovať,
  • čo sa má vysvetliť v dokumentácii.

 

Nefunkčné požiadavky

Nefunkčné požiadavky opisujú vlastnosti systému.
Teda ako dobre má systém fungovať.

Príklady:

  • výkon
  • bezpečnosť
  • dostupnosť
  • škálovateľnosť
  • použiteľnosť
  • kompatibilita

Typické formulácie:

  • Stránka sa musí načítať do 2 sekúnd.
  • Systém musí podporovať 10 000 súčasných používateľov.
  • Komunikácia musí byť šifrovaná pomocou HTTPS.
  • Systém musí byť dostupný 99,9 % času.

Tieto požiadavky sú základom pre:

  • výkonnostné testovanie
  • bezpečnostné testovanie
  • SLA
  • prevádzkové monitorovanie

 

Prečo sa tieto typy požiadaviek miešajú

V praxi sa často objavujú vety ako:

„Systém musí rýchlo spracovať objednávku.“

Na prvý pohľad to vyzerá ako jasná požiadavka.
V skutočnosti však obsahuje dve rôzne veci:

  • funkciu – spracovanie objednávky
  • vlastnosť – rýchlosť

Takéto formulácie spôsobujú problémy:

  • tester nevie pripraviť presný test
  • vývojár nevie, čo presne sa očakáva
  • dokumentácia je nejednoznačná

 

Ako to oddeliť v praxi

Lepšie je tieto dve veci zapísať oddelene.

Funkčná požiadavka

Systém umožní používateľovi vytvoriť objednávku.

Nefunkčná požiadavka

Vytvorenie objednávky musí byť spracované do 2 sekúnd pri záťaži 1 000 súčasných používateľov.

Takto je jasné:

  • čo systém robí
  • aké má mať vlastnosti
  • ako sa to bude testovať

 

Typické chyby v projektoch

Nejasné formulácie

„Systém musí byť rýchly.“

Bez merateľnej hodnoty to nie je testovateľná požiadavka.

 

Nefunkčné požiadavky skryté v user story

User story má opisovať správanie systému.
Požiadavky na výkon alebo bezpečnosť často patria skôr do:

  • architektonických požiadaviek
  • prevádzkových požiadaviek
  • samostatných nefunkčných požiadaviek

 

Nefunkčné požiadavky sa objavia až na konci projektu

Tím vyvinie funkcionalitu a až potom zistí, že:

  • systém nezvláda záťaž
  • alebo nespĺňa bezpečnostné požiadavky.

Vtedy už býva oprava veľmi náročná.

 

Prečo je to dôležité pre testerov

Tester je často prvý človek v tíme, ktorý si všimne, že požiadavka je nejasná.

Ak nie je jasné:

  • čo systém robí
  • aké má mať vlastnosti

nedá sa pripraviť dobrý test.

Rozlíšenie funkčných a nefunkčných požiadaviek pomáha:

  • vytvoriť presnejšie akceptačné kritériá
  • pripraviť vhodné testovacie scenáre
  • zabrániť nedorozumeniam medzi biznisom a vývojom

 

Prepojenie s akceptačnými kritériami

V predchádzajúcich článkoch série sme sa venovali tomu, ako písať testovateľné akceptačné kritériá a ako pomáha štruktúra Given–When–Then.

Ak sú však požiadavky nejasné alebo zmiešané, ani najlepšia štruktúra nepomôže.

Akceptačné kritériá totiž musia vychádzať z jasného zadania:

  • funkčné požiadavky opisujú správanie systému
  • nefunkčné požiadavky definujú podmienky, v ktorých má systém fungovať

Ak tieto dve veci nie sú oddelené, vznikajú:

  • nejednoznačné testy
  • nepresná dokumentácia
  • konflikty medzi očakávaniami a realitou systému.

 

Zhrnutie

Funkčné požiadavky hovoria čo systém robí.
Nefunkčné požiadavky hovoria ako dobre to robí.

Ak sa tieto dva typy požiadaviek zmiešajú do jednej vety, vzniká nejasnosť, ktorá sa postupne prenesie do:

  • implementácie
  • testovania
  • dokumentácie
  • podpory používateľov

Preto má zmysel tieto typy požiadaviek vedome oddeľovať už pri písaní zadania.

Pridajte Komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Návrat hore