dizajn vodjen testiranjem
TRANSCRIPT
![Page 1: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/1.jpg)
Design-driven testing
(Dizajn vođen testiranjem)
![Page 2: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/2.jpg)
Mentor: Studenti:
mr. Alem Čolaković, dipl.ing. Minela Hasanović, 6545
Irma Hodžić, 6531
Predmetni nastavnik: Merima Omerika, 6516
Doc.dr. Mugdim Bublin Anela Lavić, 6541
Lemana Korić, 6664
Amina Ćurovac, 6665
![Page 3: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/3.jpg)
UVOD
• DDT (design-driven testing) – dizaj vođen testiranjem - proizvodnja test slučajeva, kako bi verifikovali da su svi naznačeni scenariji završeni
• Testiranje je proces koji bi trebao početi mnogo prije kodiranja
• Testiranje slijedi ubrzo nakon preliminarnog dizajna
![Page 4: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/4.jpg)
Dizajn vođen testiranjem u teoriji
![Page 5: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/5.jpg)
Usvojiti testiranje - pronalazak kvara = pobjeda
![Page 6: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/6.jpg)
Testiranja? kako i kada se koriste?
![Page 7: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/7.jpg)
Za svaki kontrolor na svakom robusnom dijagramu...
...za svaku operaciju na svakoj klasi
![Page 8: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/8.jpg)
Za realne sisteme - elementi dijagrama stanja kao osnova za testove slučajeva
![Page 9: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/9.jpg)
provjera nivoa zahtjeva?
![Page 10: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/10.jpg)
Koristiti matricu slijedivosti
![Page 11: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/11.jpg)
Uraditi scenario nivoa pihvatljivosti
![Page 12: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/12.jpg)
Proširiti teme u testnim scenarijima
![Page 13: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/13.jpg)
Koristiti okvir testiranja kao što je JUnit
![Page 14: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/14.jpg)
Održavanje testova jedinica dobro preciziranim!
![Page 15: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/15.jpg)
Različite vrste testiranja
• Testiranje - skup interativnih i inkremantalnih razvojnih ciklusa
• Test dokazuje da proizvod odgovara specificiranoj namjeni
• veoma čvrsto povezani sa zahtjevima – dokaz da softver odgovara svojoj specificiranoj namjeni
![Page 16: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/16.jpg)
![Page 17: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/17.jpg)
• Test jedinica - testiranje individualnih softverskih komponenti.
![Page 18: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/18.jpg)
Integracioni test - vrši se da se otkriju greške u sučeljima i u interakciji između integrisanih komponenti
![Page 19: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/19.jpg)
Test kompatibilnosti -testiranje da sistem sarađuje dobro sa ostalim „vanjskim“ sistemima, sa kojima se zahtjeva da komunicira
![Page 20: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/20.jpg)
SYSTEM TESTING
Test sistema - funkcionalni i behavioralni dizajn test slučaja.
![Page 21: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/21.jpg)
Test prihvatljivosti - da se utvrdi da li sistem zadovoljava zahtjeve naznačene u ugovoru.
![Page 22: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/22.jpg)
• Beta test - Provodi se od strane krajnjeg korisnika koji nije drugačije uključen u razvoj
![Page 23: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/23.jpg)
Kao i slijedeći testovi:
• Nefunkcionalni test zahtjeva • Test izvodljivosti • Test regresije• Test otpornosti na stres• Test zapremine
![Page 24: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/24.jpg)
Vođenje test slučajeva iz dijagrama robusnosti
• Sa ICONIX Procces-om, ulažemo trud kako bi napisali korištene slučajeve, i identifikujemo objekte koji sudjeluju u korištenom slučaju, kao i funkcije koje ti objekti obavljaju na dijagramu robusnosti .
• Radom sa dijagramom robusnosti, možemo kreirati dijagram test slučaja, koji prikazuje test slučaja za svakog kontrolora.
![Page 25: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/25.jpg)
![Page 26: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/26.jpg)
Korištenje agilnog dodatka za ICONIX/EA
• nterprise Arhitect (EA) ima poseban dodatak koji automatizira mnogo “prijelaznog” posla kada premještamo između dijagrama u ICONIX Process-u.
• dodatak će automatski kreirati set robusnih dijagrama za dijagram korištenog slučaja i dodatak će popuniti sekvencijalni dijagram
![Page 27: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/27.jpg)
![Page 28: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/28.jpg)
• Za potrebe testiranja, dodatak automatski kreira dijagram test slučaja od kontrolora na robusnom dijagramu
• Onda je moguće napisati izvršni test jedinica za svaki test slučaj
Korištenje agilnog dodatka za ICONIX/EA
![Page 29: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/29.jpg)
![Page 30: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/30.jpg)
Vođenje test jedinica sa test slučajeva
• Uputstva za vođenje test jedinica iz test slučajeva:
1. Za svaki test slučaj, kreiramo jednu klasu test jedinica.
2. Za svaki test scenario, kreiramo jednu testnu metodu u klasi testova jedinica.
3. Napisati test jedinica sa ugla kontrolora.
![Page 31: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/31.jpg)
Kratki uvod u JUnit
• Za kodiranje primjera kasnije u ovom poglavlju koristit ćemo JUnit, popularnu Java-baziranu okvirnu test jedinicu.. Iako se izvorni kod može razlikovati ovisno o jeziku/implementaciji,
![Page 32: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/32.jpg)
package test.com.iconixsw.bookstore.web;import junit.framework.*;public class AddToShoppingCartTest extends TestCase { public AddToShoppingCartTest (String testName) { super(testName); } public void testShoppingCartEmpty() throws
Exception { ShoppingCart cart = new ShoppingCart(); assertEquals("Cart should be empty", 0,
cart.getNumItems()); } public void testItemAdded() throws Exception { ShoppingCart cart = new ShoppingCart(); LineItem item = new LineItem(); cart.addItem(item); assertEquals("Cart should contain 1 item", 1, cart.getNumItems()); }}
Imamo primjer klase testa jedinica:
![Page 33: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/33.jpg)
Pisanje efektivnih testova jedinica
• Prije nego počnemo na primjeru, vrijedno je istaći neke najbolje prakse za pisanje dobrih testova jedinica
• Tehnike efektivnih testova jedinica sa perspektivnim dizajnom-vođenog testiranja mogu se sažeti veoma jezgrovito
![Page 34: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/34.jpg)
![Page 35: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/35.jpg)
Dizaj vođen testiranjem u praksi
![Page 36: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/36.jpg)
Dizaj vođen testiranjem u praksi
• Korištenje projekta Internet knjižare• Onda koristimo test slučajeve da
potvrdimo da:
1. detaljni dizajn se poklapa sa korištenim slučajem
2. kod se poklapa sa detaljnim dizajnom i čini ono za šta je namijenjen
![Page 37: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/37.jpg)
![Page 38: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/38.jpg)
Testiranje Prikaz Početne Stranice
• U ovom dijelu, kreirat ćemo test scenario za Kontrolora Prikaz Početne Stranice, najjednostavnijeg u grupi, i onda ćemo napisati JUnit test klasu.
• Test slučaj za ovog kontrolora je jednostavan, zapravo, trebamo samo jedan test scenario za ovaj test slučaj zato što postoji malo toga što može krenuti “naopako”.
![Page 39: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/39.jpg)
![Page 40: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/40.jpg)
![Page 41: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/41.jpg)
Pokretanje testova iz test paketa
![Page 42: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/42.jpg)
package test.com.iconixsw.bookstore;import test.com.iconixsw.bookstore.web.*;import junit.framework.*; public class BookstoreTestSuite { public static Test suite() { TestSuite suite = new TestSuite();
suite.addTestSuite(DisplayHomePageTest.class); // add more tests here . . . return suite; } public static void main(String[] args) { junit.textui.TestRunner.run(suite()); }}
![Page 43: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/43.jpg)
Testiranje Preuzmi Detalje Knjige Kontroler
• U ovom dijelu, kreiramo test scenario za Preuzmi Detalje Knjige Kontroler, i onda pišemo i pokrećemo njegovu JUnit test klasu.
• Da dodamo test slučaj u EA, dvoklikom otvorimo prozorčić Postavke i odaberemo Scenario tab. Onda možemo dodati osnovni i alternativni scenario u test slučaj.
![Page 44: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/44.jpg)
![Page 45: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/45.jpg)
• Sada kada imamo sastavljen test, trebali bi ga pokrenuti kroz JUnit, ali bi prvobitno trebali vidjeti neuspjeh testa kako bi potvrdili da test radi. Da bi to uradili samo ćemo kratko promijeniti initData() metodu.
• Jednostavno smo promjenili 1 u 5 tako da lažni DAO ne vrati knjigu sa ID oznakom 1. Pokretanje testa sada će donijeti slijedeće rezultate:
![Page 46: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/46.jpg)
__________________________________.FTime: 0There was 1 failure:1) testBookIdFound
(test.com.iconixsw.bookstore.dao.RetrieveBookDetailsTest)
junit.framework.AssertionFailedError: ID 1 should be found at test.com.iconixsw.bookstore.dao. RetrieveBookDetailsTest.
testBookIdFound(RetrieveBookDetailsTest.java:29)FAILURES!!!Tests run: 1, Failures: 1, Errors: 0__________________________________
![Page 47: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/47.jpg)
• Na ovaj način možemo se uvjeriti da će test raditi ispravno kada dođe do stvarnog neuspjeha testa. Sada kada vratimo vrijednost ponovo 1 i uradimo ponovo test dobit ćemo slijedeće rezultate:
____________________________________________________________
.Time: 0OK (1 test)____________________________________________________
___________
![Page 48: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/48.jpg)
Deset najvećih grešaka dizajna vođenog testiranjem
![Page 49: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/49.jpg)
• 10. Pretjerivati sa mock(lažnim) objektima
• 9. Duplicirati scenarije alternativnih kurseva u alternativne test scenarije za osnovne kurs kontrolore
• 8. Zaboraviti da povežemo testove sa zahtjevima.
![Page 50: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/50.jpg)
• 7. Ostaviti testiranje nakon što je napisan kod
• 6. Zamijeniti testiranje sa dizajnom
• 5. Ignorisati vruće tačke problema
![Page 51: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/51.jpg)
• 4. Koristiti nasilno testiranje umjesto identifikovanje i ciljanje gorućih problema iz preliminarnog dizajna
• 3. Koristiti pogrešnu vrstu testiranja za pogrešnu situaciju
• 2. Zaboraviti uraditi testiranje uopće.
![Page 52: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/52.jpg)
Testirati toliko
temeljito
da nikada ne
objavite proizvod!!!
![Page 53: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/53.jpg)
Zaključak
• različiti oblici korištenih slučajeva – vođenih testiranjem
• vrste testova koje se koriste -kako i kada?• dizajn vođen testiranjem na primjeru
Internet knjižare • osnovnih i alternativnih scenarija kao i
postupak transformiranja robusnih dijagrama u sekvencijali ili dijagram test slučaja.
![Page 54: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/54.jpg)
![Page 55: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/55.jpg)
Testovi ne dokazuju puno ako nisu uvezani na mikroskopskom
nivou sa zahtjevima!!!
![Page 56: Dizajn vodjen testiranjem](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560c174d8b42afe3b8b5558/html5/thumbnails/56.jpg)
H v a l a n a p a ž n j i
Test passed
T e s t :