Μεθοδολογίες Προγραμματισμού ΙΙ Έλεγχος Λογισμικού - ECLIPSE JUNIT – TDD TFD + Refactoring Παναγιώτης Σφέτσος, PhD

Slides:



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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Μεθοδολογίες Προγραμματισμού ΙΙ
Μεθοδολογίες Προγραμματισμού ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μηχανική Λογισμικού ΙΙ Έλεγχος Λογισμικού JUNIT – TDD TFD + Refactoring Παναγιώτης Σφέτσος, PhD
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Μεθοδολογίες Προγραμματισμού ΙΙ Μ Ε Τ Ρ Ι Κ Ε Σ ΑΝΤΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ ΣΧΕΔΙΑΣΗΣ Ποιότητα Λογισμικού Παναγιώτης Σφέτσος, PhD
Μηχανική Λογισμικού ΙΙ
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Μεθοδολογίες Προγραμματισμού ΙΙ JUNIT - Test First Design
Αντικείμενα, Κλάσεις και Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεθοδολογίες Προγραμματισμού ΙΙ Αναδόμηση Λογισμικού Software Refactoring Παναγιώτης Σφέτσος, PhD
Μεθοδολογίες Προγραμματισμού ΙΙ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING Επισκόπηση.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
Μεθοδολογίες Προγραμματισμού ΙΙ Αναδόμηση Λογισμικού - 2 Software Refactoring - Εφαρμογές Παναγιώτης Σφέτσος, PhD
Ποιότητα Λογισμικού Ενότητα 1: Εισαγωγή στο JUnit. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής Εκπαίδευσης.
Ποιότητα Λογισμικού Ενότητα 4: Παράδειγμα Ελέγχου. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής Εκπαίδευσης.
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Κλάσεις και αντικείμενα Κλάσεις και αντικείμενα Κατασκευαστές κλάσεων (constructors) Κατασκευαστές κλάσεων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
Ποιότητα Λογισμικού Ενότητα 3: Σουίτες Ελέγχων. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής Εκπαίδευσης.
Ποιότητα Λογισμικού Ενότητα 2: Παραμετρικοί έλεγχοι στο JUnit. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής.
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Tomcat Θ. Βαρβαρίγου Καθηγήτρια ΕΜΠ Τηλ
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 9: Κληρονομικότητα. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
Μέθοδοι Μέθοδοι Δημιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Αντικειμενοστραφής Προγραμματισμός Ι
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 10: Αφηρημένες τάξεις. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές) Ένα μεγάλο παράδειγμα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές) Ένα μεγάλο παράδειγμα.
Κωδικός Θ: ΤΠ4003, Κωδικός Ε: ΤΠ4103 (ΜΕΥ/Υ) Ώρες (Θ - ΑΠ - Ε): Προαπαιτούμενα: ΤΠ2003,2103.
Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού - Κλάσεις ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014:
Εισαγωγή στον Προγ/μό Η/Υ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Software Engineering for Web Applications
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγ/μό Υπολογιστών
Κλάσεις και αντικείμενα
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΔΟΜΕΣ ΕΛΕΓΧΟΥ(if-else, switch) και Λογικοί τελεστές / παραστάσεις
Εισαγωγή στον Προγ/μό Η/Υ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Προγραμματισμός κινητών συσκευών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εξαιρέσεις [Exceptions]
Διάλεξη #3: Υλοποίηση μεθόδων.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

Μεθοδολογίες Προγραμματισμού ΙΙ Έλεγχος Λογισμικού - ECLIPSE JUNIT – TDD TFD + Refactoring Παναγιώτης Σφέτσος, PhD

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

3Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Στο Eclipse είναι ενσωματωμένες οι δύο εκδόσεις του Junit, δηλ. οι εκδόσεις 3 και 4. Έτσι δεν χρειάζεται εγκατάσταση του Junit. Εμείς επιλέγουμε την έκδοση που θέλουμε. Τα βήματα: Δημιουργούμε ένα νέο Java Project. Προσθέτουμε σε αυτό από την file - > new - >ένα Junit Test Case Δηλώνουμε το όνομα της κλάσης ελέγχου (ATest) και επιλέγουμε την έκδοση του Junit που θέλουμε Δημιουργείται η κλάση ATest, με τις εντολές: import junit.framework.*; public class ATest extends TestCase {} //συμπληρώνουμε το σώμα του Test Απλό Παράδειγμα στο Eclipse - 2

4Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Run as: Junit Test…… Απλό Παράδειγμα στο Eclipse - 3

Παράδειγμα – BoxVolume (1/3) 5Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 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 == ); vol = mybox2.volume(); assertTrue(vol == ); // λάθος στον υπολογισμό (το σωστό ) }

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

Παράδειγμα – BoxVolume (3/3) 7Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Διορθώνουμε, σώζουμε και ξανα-τρέχουμε το test…

Παράδειγμα – Calculator (1/2) 8Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ import junit.framework.TestCase; class Calculator { public double add(double x, double y) { return (x+y);} } public class TestCalculator extends TestCase { public void testAdd() { Calculator calc = new Calculator(); double result = calc.add(80,10); assertEquals(90, result,0); }

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

Παράδειγμα – Test suit (1/3) 10Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Όταν έχουμε όλα τα tests ανοικτά, τότε μπορούμε να δημιουργήσουμε αυτόματα το test suit, επιλέγοντας από την file - > new - > Other… - > Junit - > Junit Test Suit import junit.framework.Test; import junit.framework.TestSuite; public class AllTests { public static Test suite() { TestSuite suite = new TestSuite(AllTests.class.getName()); //$JUnit-BEGIN$ suite.addTestSuite(SimpleTest1.class); suite.addTestSuite(BoxTest.class); suite.addTestSuite(ATest.class); suite.addTestSuite(TestCalculator.class); //$JUnit-END$ return suite; }

11Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Βλέπουμε ότι κατά το “Refactoring” κάναμε λάθος στο test – BoxTest. Διορθώνουμε, σώζουμε και ξανα – τρέχουμε. Βλέπουμε ότι κατά το “Refactoring” κάναμε λάθος στο test – BoxTest. Διορθώνουμε, σώζουμε και ξανα – τρέχουμε. Παράδειγμα – Test suit (2/3)

12Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Λαμβάνουμε την πράσινη μπάρα… Παράδειγμα – Test suit (3/3)