Tento článek pojednává o tom co obnáší testování softwaru a je orientován spíše pro ty co mají s testování již nějaké zkušenosti. Pokud jste začínající doporučuji článek Co je testování softwaru.

Taky ještě pamatujete doby, kdy vývojáři koukali s despektem na svoje kolegy testery? To už zaplaťpánbůh většinou neplatí. V současné době představuje testování software zabývající se kvalitou (ale nejen to) obor slibující lukrativitu a rozkvět.

Co je vlastně testování software (anglicky Software Testing)? Pojďme na to od podlahy, tj. co říká paní Wikipedie:

Testování softwaru je empirický technický výzkum kvality testovaného produktu nebo služby prováděný za účelem poskytnutí těchto informací všem zainteresovaným (=stakeholdrům). Testování je tedy zejména o hledání určitých informací o produktu jeho zkoumáním.

Testování software je součástí Vývoje software. Dříve se odehrávalo v poslední fázi vývoje SW jako taková méně důležitá nevlastní sestra vývoje. Dnes s příchodem agilního vývoje již probíhá organicky během všech fází vývoje software.

Lajcky řečeno se jedná o zkoumání kvality. Co to ale kvalita je? Kvalita je stupeň shody s explicitními a implicitními požadavky (viz. slovník: explicitní požadavky a implicitní požadavky).

Samotné testování software je poměrně sofistikovaný systém sestávající z velkého množství částí – pokud vás zajímají, klikněte pro získání Myšlenkové mapy zdarma.

S myšlenkovou mapou se rychle zorientujete ve všech oblastech testování SW. Po registraci navíc získáte 4x ročně zdarma novinky z oblasti testování SW. Žádný spam, jen dávka pořádných informací.

Pojďme si ten testovací koláč rozdělit na jednotlivé díly:

Kvalitu můžeme u software zkoumat z různých pohledů (ty definuje norma ISO/IEC 25010:211):

Většina intuitivně tuší, že ověřit funkčnost je důležité. Dimenzí kvality je ale podstatně více a na mnohé z nich se zapomíná. Zde jsou:

  • Funkčnost (Functionality) – správné chování funkcí systému, jak je definováno funkční specifikací (funcspec, FS).
  • Použitelnost (Usability) – zda vůbec a jak lze dosáhnout požadovaného cíle, zda je systém uživatelsky přívětivý, zda se s ním dobře pracuje: i když se SW chová podle uživatele „špatně“, může stále jít o „správné chování“ podle FS, pak jde ovšem o chybu samotného FS a smlouvy, kterou je vázán.
  • Spolehlivost (Reliability) – zda se chová stejně za všech okolností, zvláště po přetížení, po výpadku či chybě, zda tyto stavy umí detekovat a hlásit.
  • Výkon (Performance) – zda systém není pomalý a zvládne větší množství současně pracujících uživatelů, nebo naopak zda si i při naplnění všech požadavků na obsluhu uživatelů nebere příliš systémových zdrojů.
  • Podporovatelnost (Supportability) – zda se systém dobře instaluje, nemá problémy s cílovými hardwarovými a softwarovými konfiguracemi a další vlastnosti související s údržbou systému a upgradovatelností.
  • Bezpečnost (Security) – zda jsou systém i jeho data bezpečné a mohou jej používat pouze oprávněné osoby
  • Kompatibilita (Compatibility) – zda je možné jej používat i s ostatními programy a systémy
  • Přenositelnost (Portability) – zda je možné jej přenášet například na jiný operační systém nebo HW

Další způsoby dělení testování podle:

  • fáze Testování:
  • znalosti kódu:
    • White Box
    • Black Box
  • způsobu realizace testů:
    • Manuální
    • Automatizované
    • Exploratory testing

Je testování opravdu tak důležité? Proč? Ten, kdo software netestuje, není schopen nalézt velké množství chyb, které se během vývoje do systému zavlekly. Často to pak vede ke ztrátám finančním, je pošramocena důvěra zákazníka/uživatele a může dojít dokonce ke ztrátě lidských životů.

Pro dnešek vše a už se můžete těšit na příští příspěvek – bude o jednotlivých typech testování a také agilním testování.