Μεθοδολογίες Προγραμματισμού ΙΙ JUNIT - Test First Design

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
Advertisements

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Μεθοδολογίες Προγραμματισμού ΙΙ
ΜΑΘΗΜΑ: ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Τμ.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μηχανική Λογισμικού ΙΙ Έλεγχος Λογισμικού JUNIT – TDD TFD + Refactoring Παναγιώτης Σφέτσος, PhD
Λίστες παράλειψης (skip lists) TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Μεθοδολογίες Προγραμματισμού ΙΙ Μ Ε Τ Ρ Ι Κ Ε Σ ΑΝΤΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ ΣΧΕΔΙΑΣΗΣ Ποιότητα Λογισμικού Παναγιώτης Σφέτσος, PhD
Μεθοδολογίες Προγραμματισμού ΙΙ Έλεγχος Λογισμικού - ECLIPSE JUNIT – TDD TFD + Refactoring Παναγιώτης Σφέτσος, PhD
Μηχανική Λογισμικού ΙΙ
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Εβδομάδα 2: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism]
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 9: Input / Output Εβδομάδα 8: Είσοδος / Έξοδος [Input / Output]
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
JAVA και SQL Δαμιανός Χατζηαντωνίου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεθοδολογίες Προγραμματισμού ΙΙ Σχεδιαστικά Πρότυπα (2) Παναγιώτης Σφέτσος, PhD
Μεθοδολογίες Προγραμματισμού ΙΙ Αναδόμηση Λογισμικού Software Refactoring Παναγιώτης Σφέτσος, PhD
Μεθοδολογίες Προγραμματισμού ΙΙ Σχεδιαστικά Πρότυπα (1) Παναγιώτης Σφέτσος, PhD
Σύγκριση Java και C++ Μεταπτυχιακό Εφαρμοσμένης Πληροφορικής - Αλέξανδρος Χατζηγεωργίου, Νοέμβριος 2004.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Πολυμορφισμός – Late Binding.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές Εξαιρέσεις.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
Μεθοδολογίες Προγραμματισμού ΙΙ Αναδόμηση Λογισμικού - 2 Software Refactoring - Εφαρμογές Παναγιώτης Σφέτσος, PhD
Ποιότητα Λογισμικού Ενότητα 1: Εισαγωγή στο JUnit. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής Εκπαίδευσης.
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Κλάσεις και αντικείμενα Κλάσεις και αντικείμενα Κατασκευαστές κλάσεων (constructors) Κατασκευαστές κλάσεων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
Ποιότητα Λογισμικού Ενότητα 3: Σουίτες Ελέγχων. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής Εκπαίδευσης.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
Ποιότητα Λογισμικού Ενότητα 2: Παραμετρικοί έλεγχοι στο JUnit. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής.
Περίπτωση χρήσης: Process sale Από την ΠΧ στον κώδικα.
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 9: Κληρονομικότητα. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
Μέθοδοι Μέθοδοι Δημιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 8: Κατασκευαστές. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
Αντικειμενοστραφής Προγραμματισμός Ι
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 10: Αφηρημένες τάξεις. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές) Ένα μεγάλο παράδειγμα.
1 Προγραμματισμός Διαδικτύου Ενότητα 3 : Κατηγορίες και κληρονομικότητα Ιωάννης Τσούλος Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού - Κλάσεις ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014:
Εισαγωγή στον Προγ/μό Η/Υ
Software Engineering for Web Applications
Εισαγωγή στον Προγ/μό Υπολογιστών
Κλάσεις και αντικείμενα
Wrapper Classes, Abstract Classes and Interfaces
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγ/μό Η/Υ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Week 9: Input / Output Διάλεξη #16: Είσοδος / Έξοδος [Input / Output]
Εξαιρέσεις [Exceptions]
Διάλεξη #3: Υλοποίηση μεθόδων.
Μεταγράφημα παρουσίασης:

Μεθοδολογίες Προγραμματισμού ΙΙ JUNIT - Test First Design Έλεγχος Λογισμικού JUNIT - Test First Design Παναγιώτης Σφέτσος, PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Απλό Παράδειγμα…. Junit 3.x import junit.framework.*; public class ATest extends TestCase { public ATest(String name) { super(name); } public void testATest() { int answer = 2; assertEquals((1+1), answer); }} 1 Εισαγωγή των κλάσεων της junit Η κλάση Ελέγχου Ο δομητής της κλάσης (κληρονομικότητα) Η μέθοδος του Test. 2 3 4 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Παράδειγμα – BoxVolume (1/3) import junit.framework.*; public class BoxTest extends TestCase { class Box { double width; double height; double depth; Box(double x, double y, double z) { width = x; height = y; depth = z; } double volume() {return width * height * depth;}} public void testAdd() { Box mybox1 = new Box(10, 20, 15); Box mybox2 = new Box(3, 6, 9); double vol; vol = mybox1.volume(); assertTrue(vol == 3000.00); vol = mybox2.volume(); assertTrue(vol == 162.00); }} Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Παράδειγμα – BoxVolume (2/3) Προσέξτε τις εντολές assert… Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Παράδειγμα – BoxVolume (3/3) Προσέξτε τις εντολές assert…Λάθος στην πρώτη assert. Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παράδειγμα – Junit3.x import junit.framework.TestCase; public class TestCalculator extends TestCase { public void testAdd() Calculator calc = new Calculator(); double result = calc.add(50,10); assertEquals(60, result,0); } To 0 ονομάζεται παράγοντας Δέλτα και ορίζεται για ένα σίγουρο αποτέλεσμα (περιθώριο τιμών +/-) στα floating point αποτελέσματα. Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παράδειγμα – Junit3.x Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Junit 3.x vs. Junit 4.x Στο Junit 3.x είχαμε : 1) κληρονομικότητα (..extends TestCase) 2) κάθε μέθοδος-Test ξεκινά με την δεσμευμένη λέξη test 3) άμεση χρήση των Assert-εντολών Στο Junit 4.x έχουμε : 1) Annotations μετά την Java 5.0 (..όχι κληρονομικότητα) 2) κάθε μέθοδος-Test δηλώνεται με το annotation @Test 3) χρήση των Assert-εντολών, με την import (δες παρακάτω) 4) έλεγχοι με exceptions π.χ: @Test(expected=IndexOutOfBoundsException.class) 5) έλεγχοι με timeout π.χ: @Test(timeout=1) Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Junit 3.x vs. Junit 4.x παράληψη μεθόδου ελέγχου (και με σχόλιο) π.χ: @Ignore(“to test auto den douleyei akomi..") @Test) ευελιξία : α) @BeforeClass και @AfterClass β) @Before και @After: αντί των SetUp() και TearDown(). παραμετρικά tests με την χρήση της @Parameters νέα Assert που υποστηρίζει arrays: assertEquals(array1, array2); Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Junit 3.x vs. Junit 4.x Εκτελείς ελέγχους Junit4 με τον Junit3 – runner, χρησιμοποιώντας τον Junit4 Adapter: public static junit.framework.Test suite() { return new JUnit4TestAdapter(SimpleMathTest.class); } Όπως και για το Junit3 δεν απαιτείται δομητής. Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Junit 4.0 - παράδειγμα – 1/2 import org.junit.*; import static org.junit.Assert.*; public class RectangleTest { Rectangle r; Rectangle[] rList=new Rectangle[5]; @Before // Ekteleitai prin apo ka8e Test. public void testSetup() {System.out.println("Arxi/-kopoihsi tou test.");} @After // Ekteleitai meta apo ka8e Test. public void testComplete() {System.out.println("Telos tou Test.");} 1 Εισαγωγή των κλάσεων της junit Εισαγωγή των Assert Η κλάση Ελέγχου Πριν από κάθε test Μετά από κάθε test 2 3 4 5 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Junit 4.0 - παράδειγμα – 2/2 @Test public void test1() {r=new Rectangle(); try { assertTrue("Test 1: Oi arhikes times einai lathos.", r.getH()==0 && r.getW()==0); System.out.println("To Test-1 oloklirothike me epityhia."); } catch (AssertionError e) { System.out.println(e.getMessage()); } } 6 Η μέθοδος Ελέγχου Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ