Keď máš chrobáka nielen v hlave

článok na blog uverejnený: 15. júla 2024

Občas som sa zamýšľala, aké by to bolo byť profesionálne medzi testermi, čo by to obnášalo. Ešte pred absolvovaním kurzu testovania softwaru JUNIOR I. (základy testovania, terminológia, princípy, metodika a reportovanie). Výrazom ako bug, ISTQB, SCRUM, cross browser testing, crowd-ove testovanie, black box testovanie, test case, severita a priorita defektu, sql, logovanie a pod. som vôbec nerozumela. Cítila by som sa asi ako z inej planéty. Poznáte to z iných oblastí? Alebo ako keď sa rozprávajú výrastkovia v obchode s elektronikou…
Dnes už viem s testerom kľudne na „pivku“ prehodiť zopár slov …a nebudeme mimo témy 🙂

Za 2 dni kurzu, koľko kurz testovanie softwaru JUNIOR I. trvá, preberiete nespočetné množstvo termínov aj z teórie, takže junior tester už nemusí nikde nič hľadať. Čítať príučky, snoriť po internete, pretože všetko dostane v rámci tohto kurzu priamo naservírované. Jediné, čo potrebuje, je papier, pero a chuť, aby nasal všetky informácie 😊

Čo si predstaviť pod testovaním softvéru, čo testovanie obnáša? Popíšem čiastočne to, čo sme stihli prebrať za 2 dni na prvom kurze. Vedzte však, že všetko sa sem ani zďaleka nezmestí.

Intro o testingu

Ak sa mnohí pohrávate s otázkou, prečo je vôbec dôležité testovať SW (software) za pomoci testovacieho oddelenia, zhrnula by som to do týchto bodov:

Úlohou testovacieho oddelenia a samotného testera je:

  • Hľadanie chýb
  • Znižovanie rizík
  • Získanie dôvery v testovaný produkt
  • Overenie, že riešenie funguje tak, ako bolo navrhnuté
  • Poskytovanie informácií o správnom fungovaní softvéru, pretože to, že niečo funguje v aplikácií ešte neznamená, že to nie je chyba.

Treba mať na pamäti, že úlohou testovacieho oddelenia je zabezpečenie a overenie kvality testovaného SW, pretože výsledná kvalita má vplyv na konečnú úspešnosť produktu, ale aj na marketing, risk management a v neposlednom rade na znižovanie nákladov. Nesmieme zabudnúť ani na to, že niektoré SW majú priamo dopad na zdravie či dokonca život človeka…
Teda žiadne také tvrdenie, že mať vo firme testovacie oddelenie je drahé, testeri sú pre spoločnosť drahí. Koniec koncov, testeri vždy nájdu chyby a pri zachytení chyby včas vie toto oddelenie firme ušetriť aj veľké finančné prostriedky.

Firma, ktorá si myslí, že programátor to vyrieši sám, je na omyle, pretože programátor nie je odborný tester, nemá dostatok času na testovanie, a nakoniec – testuje svoju prácu – a tým pádom niektoré chyby ľudsky prehliadne.

A prečo sa predpokladá veľká budúcnosť práve testovaniu?

  • Zložitosť systémov rastie, a s ňou aj riziko chýb
  • Boom sa očakáva aj pri záťažových testoch
  • Veľkým trendom sa preto stáva vysoký záujem o automatizáciu testov
  • A v neposlednom rade prichádzajúca umelá inteligencia – kde testy budú vyžadovať nový prístup a potreba testingu bude narastať.

Trochu z histórie

Keď sa pozrieme do histórie, napadne vám otázka – kto to celé začal?

Každý sa rád zbaví zodpovednosti, ak niečo nefunguje… Rád hodí vinu na niekoho iného. Kdesi na začiatku bolo veľmi prekvapivé zistenie. „Na vine“ nefungujúceho programu (počítača) bola mora – modlivka zachytená v relé počítača. Spôsobovala, že počítač Harvard Mark II v roku 1946 vykazoval chyby. Tak vznikla prvá oficiálna chyba a odtiaľ je aj pomenovanie bug (čítaj bag), po anglicky chrobák. Na obrázku je zachytený pôvodca prvej odhalenej a zdokumentovanej počítačovej chyby.

A od tej doby sa začalo „bugovať“, resp. „debugovať“. Bug je chyba nájdená a následne reportovaná testerom. Buď ide o chybu priamo testovaného systému, alebo môže ísť o chybu na úrovni rozdielu medzi skutočnou a požadovanou funkcionalitou testovaného systému. A programátor musí program následne „debugovať“.

Skratky = ISTQB a CaSTB

Takéto skratky pozná každý tester, minimálne sa s nimi stretol. ISTQB je medzinárodná organizácia (International Software Testing Qualifications Board), ktorá združuje testerov, stanovuje štandardy v oblasti testovania a taktiež certifikuje testerov. Náš školiteľ k tomu povedal len „nice to have“ – je pekné tento certifikát mať, no nie je to podmienka pre prácu v oblasti. Firma – ak ho vyžaduje – vie pre testera zabezpečiť, aby si certifikát urobil, nakoľko to nie je lacná záležitosť. CaSTB je česko-slovenská organizácia združujúca testerov na Slovensku a v Čechách.

Pre každého testera je dôležité poznať základné princípy testovania podľa ISTQB

  1. Testovanie ukazuje prítomnosť defektov, bugov – testovaním sa znižuje pravdepodobnosť, že v softvéri zostanú neobjavené defekty. Avšak žiadny tester nemôže tvrdiť, že je všetko na 100 % otestované.
  2. Vyčerpávajúce testovanie je nemožné – testeri neotestujú všetko pri veľkých projektoch, je to nereálne, pretože existujú aj špeciálne bugy, ktoré sa prejavujú len na niektorých konkrétnych zariadeniach, napríklad na konkrétnych telefónoch, browseroch,…
  3. Včasné testovanie – testovacie aktivity by mali začať v rámci životného cyklu vývoja softvéru tak skoro, ako je to len možné, v snahe predísť vyššej nákladovosti, čo sa týka opravy defektov.
  4. Zhlukovanie defektov – najlepšie, čo môže testovací manažér urobiť, je rozdeliť aplikácie do modulov a tester bude mať pridelený nejaký modul. Je to najefektívnejšie, pretože sa zistí, v ktorých moduloch je najviac bugov (ktorá časť aplikácie je chybovejšia – a viac sa testuje).
  5. Pesticídny paradox – už ste to niekde počuli? Ak ste poľnohospodár, toto slovíčko poznáte, ale čo to znamená v testingu? Pri testovaní ho spôsobuje hlavne ľudský faktor vo forme ľudského zlyhania, kedy tester prestane vidieť bug. Prečo sa to deje? Odpoveď je jednoduchá – stereotyp. Tester, ktorý testuje stále to isté, začne prehliadať bugy. A rada ako tomu ako tester predísť? Zmeniť stereotyp, napríklad upraviť testovací scenár, zmeniť postup práce.
  6. Testovanie je závislé na kontexte – o všetkom rozhoduje test manažér, ktorý určuje aké testy sa budú vykonávať. Iným spôsobom sa testuje kritický software z pohľadu bezpečnosti a iným webové stránky elektronického obchodu.
  7. Falošná predstava o neexistencii omylov – každý software má chyby a úlohou testera je nájsť počet bugov čo najviac.

Ak už ste sa v čítaní dostali až sem a stále vám vŕta v hlave – tak ako aj mne počas kurzu – čo chceme toľko testovať? Odpoviem. Je toho celkom dosť, veď vlastne povedzme si, že v živote testujeme všetci niečo… Od kamarátov, školy, po manželov, manželky, detí, koníčky,… (tiež hľadáme chyby – bugy, ktoré sa snažíme odstrániť, napraviť, vylepšiť). V testovaní je to dosť podobné, len sa testujú napríklad webové aplikácie, mobilné aplikácie, device – platobný terminál, čiarové kódy, čítačky, webové služby, REST služby, databázy, reporty, tlačové výstupy, hardware, komunikačné protokoly,… Zopár konkrétnejších príkladov?

  • Webové aplikácie: pri testovaní webových aplikácií netreba zabúdať, že existujú rôzne úrovne prístupu k testovaniu (GUI, funkčnosť, integrácie) ako aj vznikajúca problematika testovania na rôznych internetových prehliadačoch – cross browser testing. Prípadne sa stretnete s reálnym výskytom browser špecifických defektov. Dôležitú úlohu tu zohráva test manažér, ktorého úlohou je navrhnúť na ktorých browseroch sa bude testovať (Chrome, Firefox, Safari, Opera…), taktiež môže navrhnúť testovaciu maticu, komunitné testovanie, prípadne použitie automatizovaného testovania.
  • Mobilné aplikácie: pri testovaní mobilných aplikácií sa môže testovať na rôznych operačných systémoch OS ako napr. Android, iOS, …., ako i testovanie zamerané na veľkosť rozlíšenia, ktoré je iné pri mobilnom telefóne, iné pri tablete. Testovať sa môže na rôznych typoch reálnych mobilných zariadení, testovanie zamerané na SMS brány, notifikačné správy, REST alebo webové služby.
  • Webové služby: request – response – asserions, ide o komunikáciu na úrovni server – klient, kde sa testuje, či sa odoslala požiadavka a následne vrátila odpoveď (či neobsahuje žiadnu hlášku o chybe), atď.

Testovanie má svoje životné fázy

Na začiatku je analýza požiadaviek (ktoré vypracuje analytik so zákazníkom), študujú sa tieto podklady, a následne test-manažér zhotoví plán testov – dizajn testov, ich časový plán, prípadne rozdelenie projektu na moduly a pridelenie modulov konkrétnym testerom. Potom nasleduje fáza prípravy testov (testeri zhotovujú testovacie scenáre), prechádza sa na samotné vykonávanie testov (manuálne, automatizované…) a nakoniec veľmi dôležité vyhodnotenie testov (reporting).

Proces testovania sa dopredu nedá jasne a fixne určiť, existuje mnoho faktorov, ktoré negatívne vplývajú na jeho proces ako napríklad rozpočet, ktorý je fixne stanovený firmou/zákazníkom, prípadne firma nemusí disponovať kvalitnými ľuďmi alebo testovacím oddelením, ktorí by mohli konkrétny testing vykonávať. Časté je podceňovanie dôležitosti testovania v snahe o urýchlenie projektu/ šetrení nákladov. Negatívne môže na vplyv testovania vplývať aj zle navrhnutý dizajn a časový plán testov, zle alebo nedostatočne pripravená dokumentácia a v neposlednom rade veľký alebo častý výskyt blocker defektov – kde ide o defekt, chybu, ktorá bráni v ďalšom testovaní celej aplikácie alebo jej modulu.
Ale toho je, čo?

Základné typy testov, ktoré môžeme vidieť na projektoch

  • Funkčné testy – testuje sa podľa testovacieho scénara, tester hľadá bugy
  • Nefunkcionálne testy – testuje sa spoľahlivosť, funkčnosť, použiteľnosť a i.
  • Konfirmačné testy – overujú sa nahlásené bugy, verifikácia opravených opatrení
  • Regresné testy – retest, opakované testy
  • Záťažové testy – performance testy, overujú stav systému pod záťažou, stanovenie hornej hranice systému. Počas záťažových testov meriame čas odozvy, Error rate, Memory Usage, Disk Usage, Network Usage, ….. Predmetom záťažových testov je aplikačný server, WEB server, Terminál server, Load balancer. Testovacie nástroje: JMeter, LoadComplete, SOAP UI a iné.
  • Bezpečnostné testy – penetračné testy robia špecializované agentúry. Dôvodom vykonávania je snaha o zníženie bezpečnostného rizika, eliminácia útokov hackerov, overenie ochrany bezpečnosti systému a dát, návrh na zvýšenie bezpečnosti systému. Základné typy hackerských útokov: vírusy, SQL injection, Password cracking….
  • Testy udržateľnosti
  • Manuálne testy
  • Automatizované testy – zavádzať automatizované testy na začiatku projektu je nezmysel, treba ich zaviesť v správnom čase, a preto na toto treba skúseného testera a nie junior. Automatizovať môžeme webové aplikácie, mobilné aplikácie, webové služby. Výhodou je krátka doba trvania testov, možnosť vykonávať nočné testy bez účasti testera, stačí menší počet testerov, automatizácia reportovania a zasielanie výsledkov testov na email.

Nevýhodou automatizácie je čas prvotnej prípravy scriptov, údržba scriptov, seniorita testerov, technické obmedzenia (nedá sa automatizovať captcha…)

  • Smoke testy – rýchla kontrola základnej funkcionality
  • UX testy – testy zamerané na user experience
  • Crowd testing – u nás ešte nie je tak známe. Robia ho prevažne medzinárodné agentúry. Ide o komunitné testovanie, testeri sa spájajú v komunitách/skupinách a tak pracujú na spoločných projektoch.

Základné metodiky pri vývoji SW<

Dobrý návodom pre manažérov ako manažovať projekt sú rôzne modely. Každý manažér si vyberie model, ktorý mu vyhovuje, prípadne volí kombináciu.

  • Waterfall model – vodopád model, od ktorého sa však upúšťa, nakoľko testovanie prebieha až na konci projektu.
  • SCRUM – najmodernejší model, využíva ho veľa firiem. Ide o krátke šprinty, krátke iterácie 1-2 týždne, malé skupiny ľudí, denné krátke meetingy (ktoré sú postojačky „stand up“, aby sa zamedzilo dlhému debatovaniu)
  • Agilný iteratívny vývoj – sa využíva pri komplikovaných projektoch, vývoj a testy sú rozdelené do iterácií, kde sa detailne špecifikujú požiadavky počas jednotlivých iterácií.

Aké sú zásady myslenia pri samotnom testovaní? Ako vyzerá testovací scenár, alebo aké sú praktické pomôcky pre testera? Čo by mal taký testovací scenár obsahovať? Samozrejme na záver je potrebné poznať aj rozdelenie a reportovanie defektov/bugov a náležitosti, ktoré by mal obsahovať report defektu. A čo by mal vedieť junior tester ohľadne SQL
To všetko sme prešli na kurze za dva dni. Samozrejme, neobišli sme ani Mantis a Jiru.

MANTIS

„Bug tacking tool“ – nástroj, ktorý slúži na reportovanie, evidenciu defektov a defekt manažment. Všetky nástroje z tejto skupiny sú si veľmi podobné, preto začínajúcemu testerovi stačí naučiť sa pracovať v jednom a prechod na iný bezproblémovo zvládne. Výhodou Mantisu je, že ide o open source program (s otvoreným kódom), no väčšinou sa na projektoch používa bug tracking tool – JIRA.

Kam sa viem ako tester kariérne posunúť?

Ak sa aj vy pohrávate s myšlienkou, že presne toto je to, čo by vás bavilo, napíšem ešte niečo o testerských rolách. Väčšina z nás začína, teda začne ako Junior tester. Ide o klasického testera, ktorý si sám píše testovacie scenáre TC. Tester komunikuje s testermi v rámci testovacieho oddelenia, potom s test manažérom (ktorý je jeho nariadený), s analytikom, pretože jeho náplňou je popis požiadaviek, s developerom – programátorom ohľadom defektov, prípadne s databázistom ohľadne testovacích dát.

Po skúsenostiach ako junior tester sa môžete prepracovať na senior testera. Ide hlavne o skúsenosti praxou, ktoré sa nedajú naučiť inak. Ale ako povedal školiteľ – ak ste schopný, behom roka nie je veľký problém raketovo vystreliť. Veľmi zaujímavá je tiež práca test manažéra, ktorý všetko riadi, manažuje a navyše komunikuje s projektovým manažérom a release manažérom.

Čo sa týka veľmi dobre finančne ohodnotených pozícií v oblasti testingu, ide o technicky orientované testerské role: tester automatizér a záťažový tester (performance). Tam sú už však potrebné aj základy programovania (Java/Python…). Práve po týchto je a bude asi vždy veľký dopyt a sú/budú veľmi zaujímavo finančne ohodnotení. Takže ak by som mala dať radu niekomu, koho moje písanie nadchlo, určite treba vyskúšať a zúčastniť sa kurzu v IT Learningu, kde získate aj prvý certifikát z oblasti a naberiete toľko „aha“ momentov a príkladov z praxe, že vás to posunie o level pred iných testov.

Tipy na záver

Na úplný záver ešte pár tipov na časté témy, ktoré vám môžu pomôcť na pohovore na pozíciu junior tester, takže určite stoja za zmienku…

základné typy testov, priorita a severita defektov, SQL v praxi testera (JOIN SELECT), CRUDové operácie (skratka Create – Insert príkaz vloží nové dáta do databázy, Read – select príkaz vracia dáta z databázy, Update – update príkaz  zmení existujúce dáta v databáze, Delete – delete príkaz vymaže dáta z databázy).

Ďakujem za čas a pozornosť!

autorom článku je: Alexandra Čebeková
Absolventka Medzinárodného obchodu EUBA, mama dvoch milujúcich detí, ktorá sa popri rodičovskej „dovolenke“ naplno pustila do testovania IT Learning kurzov, pretože sa riadi heslom: sebarozvoj je tá najlepšia investícia. Nenechať sa nikým odradiť, pretože vždy môžeme byť lepší. Ak práve netestuje, svoj čas trávi s rodinou a okolo domu na záhradke 😊 Miluje kávu, dobrú knihu a príjemnú spoločnosť.

Páčil sa vám článok? Pošleme vám podobné.
Aktivujte si okamžité zasielanie noviniek a článkov – už vám od nás nikdy nič neunikne. Môžeme vás okamžite informovať o aktuálnej akcii, novinke, špeciálnej kampani či zľave alebo novom článku na našom blogu. Akonáhle sa u nás v novinkách niečo zmení alebo pridá, do pár minút vám automaticky posielame email s odkazom na novinku na našu stránku. A odhlásiť sa môžete kedykoľvek. Nič neriskujete.


Aktuálna akcia na IT kurzy a počítačové a marketingové kurzy v Bratislave