Differences

This shows you the differences between two versions of the page.

Link to this comparison view

programare:tutoriale:unittests [2021/12/29 17:01]
darius.neatu created
programare:tutoriale:unittests [2022/01/21 02:05] (current)
radu.nichita
Line 9: Line 9:
 **Resposabili**:​ **Resposabili**:​
   * Cristi Olaru   * Cristi Olaru
-  * Cristi Popa 
   * Cristi Pătrașcu   * Cristi Pătrașcu
 +  * Cristi Popa
   * Darius Neațu   * Darius Neațu
   * Liza Babu   * Liza Babu
Line 78: Line 78:
   * scriind teste unitare pentru fiecare funcționalitate în parte   * scriind teste unitare pentru fiecare funcționalitate în parte
     * avantaje:     * avantaje:
-      * testele rămân scrise undeva, pot fi rulate din nou când e nevoie (e.g. când vrem să revalidăm funcționalitatea în urma unei noi modificări)+      * testele rămân scrise undeva, pot fi rulate din nou când e nevoie (e.g. când vrem să revalidăm funcționalitatea în urma unei noi modificări)
       * automate       * automate
     * dezavantaje:​     * dezavantaje:​
       * timpul de dezvoltare mai mare (un feature nu se poate considera terminat din punct de vedere implementare până nu s-au scris toate testele)       * timpul de dezvoltare mai mare (un feature nu se poate considera terminat din punct de vedere implementare până nu s-au scris toate testele)
-      * testele (de orice fel) reprezintă cod scris de programator și acesta **trebuie** să respecte aceleași standarde ca și codul de feature-uri (e.g. coding style, review, etc)+      * testele (de orice fel) reprezintă cod scris de programator și acesta **trebuie** să respecte aceleași standarde ca și codul de feature-uri (e.g. coding style, review, etc)
  
 ===== Ce este un test unitar? ===== ===== Ce este un test unitar? =====
Line 94: Line 94:
   * cel puțin un număr este negativ, caz în care algoritmul nu se poate aplica, iar funcția noastră GCD trebuie să trateze această situație   * cel puțin un număr este negativ, caz în care algoritmul nu se poate aplica, iar funcția noastră GCD trebuie să trateze această situație
  
-Pentru toate cazurile prezentare mai sus, vom scrie un test unitar. Un **test unitar** este o funcție care apelează funcția noastră (e.g. GCD) cu date de intrare specifice (parametrii,​ fișiere, etc.). Dacă avem mai multe cazuri de test, vom scrie mai multe teste unitare, câte unul pentru fiecare caz de test.+Pentru toate cazurile prezentare mai sus, vom scrie un test unitar. Un **test unitar** este o funcție care apelează funcția noastră (e.g. GCD) cu date de intrare specifice (parametrii,​ fișiere, etc.). Dacă avem mai multe cazuri de test, vom scrie mai multe teste unitare, câte unul pentru fiecare caz de test.
  
 Funcția GCD este scrisă în C, declarată în ''​%%~/​support/​algorithms.h%%''​ și definită în ''​%%~/​support/​algorithms.c%%''​ și are următoarea semnătură:​ Funcția GCD este scrisă în C, declarată în ''​%%~/​support/​algorithms.h%%''​ și definită în ''​%%~/​support/​algorithms.c%%''​ și are următoarea semnătură:​
Line 325: Line 325:
   * repetabile: să putem să rulăm ori de câte ori testele, obținând de fiecare dată //​același//​ rezultat   * repetabile: să putem să rulăm ori de câte ori testele, obținând de fiecare dată //​același//​ rezultat
   * conclusiv: la finalul unui test trebuie să putem să tragem concluzia dacă funcția pe care o testăm funcționează corect pe această rulare particulară   * conclusiv: la finalul unui test trebuie să putem să tragem concluzia dacă funcția pe care o testăm funcționează corect pe această rulare particulară
-  * izolate: ele nu depind de alte teste scrise anterior; cu alte cuvinte, dacă am rula într-o ordine aleatoare testele, nu ar trebui să fie afectat rezultatul testelor (e.g. orice resurse alocate/​modificate într-un test //trebuie// să fie eliberate/​restaurate la final de test)+  * izolate: ele nu depind de alte teste scrise anterior; cu alte cuvinte, dacă am rula într-o ordine aleatoare testele, nu ar trebui să fie afectat rezultatul testelor (e.g. orice resurse alocate/​modificate într-un test //trebuie// să fie eliberate/​restaurate la final de test)
   * rapide: nu facem operații care nu sunt necesare în testele noastre   * rapide: nu facem operații care nu sunt necesare în testele noastre
  
Line 603: Line 603:
  
 Funcțiile conțin buguri ascunse care pot fi descoperite prin scrierea de teste unitare. Atunci când descoperiți o problemă, incercati sa o reparati astfel încât funcția de test să ruleze cu succes. PS: tutorialul de debugging poate fi util. Funcțiile conțin buguri ascunse care pot fi descoperite prin scrierea de teste unitare. Atunci când descoperiți o problemă, incercati sa o reparati astfel încât funcția de test să ruleze cu succes. PS: tutorialul de debugging poate fi util.
- 
programare/tutoriale/unittests.1640790095.txt.gz · Last modified: 2021/12/29 17:01 by darius.neatu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0