Dizajn vodjen testiranjem
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Dizajn vodjen testiranjem

  • 655 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
655
On Slideshare
655
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
3
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Design-driven testing(Dizajn vođen testiranjem)
  • 2. Mentor: Studenti:mr. Alem Ĉolaković, dipl.ing. Minela Hasanović, 6545 Irma Hodžić, 6531Predmetni nastavnik: Merima Omerika, 6516Doc.dr. Mugdim Bublin Anela Lavić, 6541 Lemana Korić, 6664 Amina Ćurovac, 6665
  • 3. 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
  • 4. Dizajn vođen testiranjem u teoriji
  • 5. Usvojiti testiranje - pronalazakkvara = pobjeda
  • 6. Testiranja? kako i kada se koriste?
  • 7. Za svaki kontrolor na svakom robusnom dijagramu......za svaku operaciju na svakoj klasi
  • 8. Za realne sisteme - elementidijagrama stanja kao osnova zatestove sluĉajeva
  • 9. provjera nivoa zahtjeva?
  • 10. Koristiti matricu slijedivosti
  • 11. Uraditi scenario nivoa pihvatljivosti
  • 12. Proširiti teme utestnimscenarijima
  • 13. Koristiti okvirtestiranja kaošto je JUnit
  • 14. Održavanje testovajedinica dobropreciziranim!
  • 15. 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
  • 16. • Test jedinica - testiranje individualnih softverskih komponenti.
  • 17. Integracioni test - vrši se da seotkriju greške u suĉeljima i uinterakciji izmeĊu integrisanihkomponenti
  • 18. Test kompatibilnosti -testiranje dasistem saraĊuje dobro sa ostalim„vanjskim“ sistemima, sa kojima sezahtjeva da komunicira
  • 19. Test sistema - funkcionalni ibehavioralni dizajn testsluĉaja.
  • 20. Test prihvatljivosti - da se utvrdida li sistem zadovoljava zahtjevenaznaĉene u ugovoru.
  • 21. • Beta test - Provodi se od strane krajnjeg korisnika koji nije drugaĉije ukljuĉen u razvoj
  • 22. Kao i slijedeći testovi:• Nefunkcionalni test zahtjeva• Test izvodljivosti• Test regresije• Test otpornosti na stres• Test zapremine
  • 23. 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.
  • 24. 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
  • 25. Korištenje agilnog dodatka za ICONIX/EA• 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
  • 26. 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.
  • 27. 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,
  • 28. Imamo primjer klase testa jedinica: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()); }}
  • 29. 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
  • 30. Dizaj voĊen testiranjem u praksi
  • 31. 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ĉajem2. kod se poklapa sa detaljnim dizajnom i ĉini ono za šta je namijenjen
  • 32. 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”.
  • 33. Pokretanje testova iz test paketa
  • 34. 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()); }}
  • 35. 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.
  • 36. • 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:
  • 37. __________________________________.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__________________________________
  • 38. • 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)_______________________________________________________________
  • 39. Deset najvećih grešakadizajna vođenog testiranjem
  • 40. • 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.
  • 41. • 7. Ostaviti testiranje nakon što je napisan kod• 6. Zamijeniti testiranje sa dizajnom• 5. Ignorisati vruće taĉke problema
  • 42. • 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.
  • 43. Testirati tolikotemeljitoda nikada neobjavite proizvod!!! 
  • 44. 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.
  • 45. Testovi ne dokazuju puno akonisu uvezani na mikroskopskom nivou sa zahtjevima!!!
  • 46. Test: Hvala na pažnji Test passed 