Differences

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

Link to this comparison view

icalc:laboratoare:laborator-07 [2022/04/14 16:03]
theodor.ungureanu [Introducere]
— (current)
Line 1: Line 1:
-===== Laborator 07 - Test-driven development ===== 
- 
- 
-<note warning> 
-Best to have: **InteliJ** 
-  * Instalare: https://​ocw.cs.pub.ro/​courses/​poo-ca-cd/​resurse-utile/​instalare-intellij-idea 
-  * Activare: https://​ocw.cs.pub.ro/​courses/​poo-ca-cd/​resurse-utile/​activare-intellij-idea ​ 
-  </​note>​ 
- 
- 
-<​hidden>​ 
-<​hidden>​ 
- 
-==== Introducere ==== 
- 
-{{:​icalc:​laboratoare:​07:​lab7-joke.jpeg?​200|}} 
- 
-De cele mai multe ori, dupa ce un programator finalizeaza scrierea unui "​program"​ dupa anumite specificatii acesta este trimis catre echipa de testare in vedere gasirii bugurilor. Daca sunt gasite probleme "​programul"​ se intoarce in faza de dezvoltare pentru a fi remediate. Acest schimb intre programator si echipa de testare se poate face de un numar suficient de mare de ori pana cand toate problemele sa fie rezolvate. Pentru a evita situatia enumerata mai sus se poate folosi tehnica TDD prin care programatorul scrie inainte teste inainte de a implementa o anumita functionalitate. 
- 
-=== Ce inseama TDD? === 
- 
-{{:​icalc:​laboratoare:​07:​lab7-tdd.png?​400|}} 
- 
-TDD (Test Driven Development) este o abordare a dezvoltarii de software prin care testele sunt scrise inaite ca softul sa fie scris. ​ 
- 
-Aceasta metoda contine 3 pasi: 
-  - Ordered List Item se scrie un test care sa pice 
-  - se scrie minimul de cod necesar pentru a face testul sa treaca 
-  - se curata codul scris si se refactorizeaza daca este nevoie 
- 
- 
-=== Cum pregatim proiectul? === 
-  ​ 
-In cadrul acestui laborator vom face de la 0 un proiect si vom urma toti pasii necesari pentru a dezvolta software folosind TDD. 
-  * Folosind interfata IntelliJ vom face un nou proiect denumit Laborator7 ​ 
- 
-{{ :​icalc:​laboratoare:​07:​project1.png?​400|}} 
-{{:​icalc:​laboratoare:​07:​project2.png?​400 |}} 
- 
-<​note>​ 
-Pentru a separa partea de cod de partea de testare vom face 2 package-uri. In package-ul denumit **Code** vom adauga clasele ce vor fi folosite de software, iar in package-ul **TestingModule** vom adauga partea de testare. 
-{{ :​icalc:​laboratoare:​07:​project3.png?​400 |}} 
-</​note>​ 
- 
-  * Pentru a scrie prima functie de testare vom merge in package-ul **TestingModule** si vom face un nou fisier de tipul **Java Class** ​ 
- 
-{{ :​icalc:​laboratoare:​07:​project4.png?​400 |}} 
- 
- 
-  * In cadrul acestui fisier facem o clasa in interiorul careia ne vom scrie testele. Crearea unui test se realizeaza prin anotarea unei metode cu **@Test**. 
-<​note>​ 
-In cazul in care IntelliJ nu importa automat modulele necesare putem sa le adaugam manual asa cum este prezentat in poza. Desigur, putem adauga **JUnit in IntelliJ** asa cum am invatat si in laboratorul trecut. 
-{{ :​icalc:​laboratoare:​07:​project5.png?​300 |}} 
-</​note>​ 
- 
-=== Specificatiile proiectului === 
-In cadrul laboratorului de astazi vom face un program denumit sugestiv **SplitBill**. Acesta va lua anumite sume de bani, persoane, procentul de tips si va returna o suma de bani ce trebuie data de fiecare persoana pentru achitarea notei. 
- 
-== Etapa 1: writing a failing test == 
- 
-  * Prima cerinta a proiectului este scrierea unui test **getTotalAmountWithZeroTips()**. In cadrul acestei functii vom lua o intanta a calculatorului si vom returna retultatul unei metode **getTotalAmount(double amount, double tips)**. Aceasta va adauga procentul de tips la suma si va returna suma totala ce trebuie platita, suma ce contine si tips-ul. 
- 
-<​note>​ 
-IntelliJ ne ajuta si ne face highlight pe ce nu exista. Astfel ne putem folosi de editor pentru a face clasa Calculator si a adauga in ea lucrurile necesare. 
- 
-{{ :​icalc:​laboratoare:​07:​cerinte1.png?​300|}} 
-{{:​icalc:​laboratoare:​07:​cerinte2.png?​300|}} 
-</​note>​ 
- 
-Primul din cei 3 pasi TDD a fost realizat: testul a fost scris. Dupa ce rulam acest test vom vedea faptul ca testul nu va trece intrucat noi nu avem implementata aceasta metoda in cadrul clasei. ​ 
-Urmatorul pas este scrierea celor mai simple linii pentru a face testul sa treaca. 
- 
-{{ :​icalc:​laboratoare:​07:​cerinte3.png?​800 |}} 
- 
-== Etapa 2: make the test pass == 
- 
-Avand in vedere ca testul nostru este conceput pentru cazul in care tips-ul este 0 ceea ce avem de facut este sa returnam suma initiala: 
-<code java> 
-public class Calculator { 
-    public double calculate(double amount, double tips) { 
-        return amount; 
-    } 
-} 
-</​code>​ 
- 
-Daca rulam testul inca odata vom vedea ca acesta va trece: 
-{{ :​icalc:​laboratoare:​07:​cerinte4.png?​800 |}} 
- 
-== Etapa 3: refactoring == 
-Pentru testul curent, dat fiind faptul ca este foarte simplu vom omite etapa refactoring considerand ca nu avem ce modifica. 
- 
-</​hidden>​ 
  
icalc/laboratoare/laborator-07.1649941421.txt.gz ยท Last modified: 2022/04/14 16:03 by theodor.ungureanu
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