Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Projektplan: Fachgebiet Software Engineering Übersicht © 27.03.2017 Albert Zündorf, Kassel University.

Ähnliche Präsentationen


Präsentation zum Thema: "Projektplan: Fachgebiet Software Engineering Übersicht © 27.03.2017 Albert Zündorf, Kassel University."—  Präsentation transkript:

1 Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

2 Tätigkeiten bei der Softwareentwicklung
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

3 Testen (Whitebox) Glassbox-Test anhand der Implementierung
Normal- und Grenzfälle aus Bedingungen Überdeckungskriterien Blackbox-Test mit Hilfe der Spezifikation (ohne die Implementierung zu kennen) Normalfälle aus der Spezifikation Sonderfälle der Spezifikation Unzulässige Eingaben der Spezifikation Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

4 White-Box-Testing C0-Überdeckung (Anweisungs- und Bedingungsüberdeckung) Beim Test muss jedes Statement und jeder Ausdruck mindestens einmal ausgewertet werden Code Coverage Tools können das automatisch messen (Ergebnis gehört ins Testprotokoll) (Für Java z.B. EMMA) manchmal schwer zu erfüllen z.B. try { ... } catch (HeapOverflow e) { xxx () } findet nicht alles: m (x, y) { int z = 0; if (x > 0) { z = 1; } y = x / z; // <== ERROR: Division by zero Der Aufruf m(0,1) erreicht C0-Überdeckung aber keine Fehlerfreiheit Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

5 White-Box-Testing C1-Überdeckung: Zweigüberdeckung
auch leere if-then-else-Zweige müssen durchlaufen werden (while) Schleifen müssen sowohl durchlaufen als auch übersprungen werden findet aber immer noch nicht alles: m (x, y) { int z = 0; if (x > 0) { z = 1; } else { z = -1;} if (y > 0) { z ++; } else { z --; } y = x / z; // <== ERROR: Division by zero on x = 1 and y = Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

6 White-Box-Testing C2-Überdeckung (Pfadüberdeckung)
Testfälle sollen alle möglichen Durchläufe durch eine Methode testen Schleifen null und ein mal durchlaufen Problem exponentieller Aufwand: m (x, y) { int z = 0; if (x > 0) { z = 1; } else { z = -1;} if (y > 0) { z ++; } else { z --; } if (...) { ... } else { ...} y = x / y; // <== ERROR: Division by zero on y = 0 Bei jedem if-Statement 2 Fortsetzungsmöglichkeiten bei n if Statements 2 hoch n Pfade (20 ifs 1 Millonen Testfälle) in der Praxis nicht vertretbarer Zeitaufwand findet immer noch nicht alle Fehler Bemerkung: sowas findet man gut mit Reviews Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

7 White-Box-Testing Coverage Tools
cobertura (http://cobertura.sourceforge.net) EMMA (http://emma.sourceforge.net) EclEmma (http://www.eclemma.org) Coverlipse (http://coverlipse.sourceforge.net) jCoverage (http://www.jcoverage.com) OptimzeIt (http://www.borland.com/us/products/optimizeit) Clover (http://www.cenqua.com/clover) Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

8 Fachgebiet Software Engineering. Übersicht. © 27. 03
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

9 Fachgebiet Software Engineering. Übersicht. © 27. 03
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

10 Fachgebiet Software Engineering. Übersicht. © 27. 03
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

11 Black-Box-Testing Funktionsorientierter Test
jede Funktion / Feature / Variable einzeln Äquivalenzklassenbildung Definitionsbereich der Variablen betrachten Partitionierung, zwei Tests pro Partition Randwerte Regressionstests Wiederhole Tests bei Programmänderungen vgl. XP Szenario-basierte Tests vgl. FUP Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

12 Defect-Removal-Rate ~ 1 per day
Black-Box-Testing im eXtreme Programming: JUnit Tests Für jede Funktionalität (jedes Oval im Use-Case Diagramm) wird als erstes eine automatische Testroutine geschrieben Testroutine ist einzeln aufrufbar und wird in Gesamttest eingehängt Testroutine kommt in die gleichen Klassen, wie die Implementierung Testroutinen verbleiben im Code und gehören zum Endprodukt Aufgaben der Testroutine: verschiedene Ausgangssituationen herstellen Funktionalität aufrufen Messpunkte im Code abfragen (Testanweisungen fügen Meldungen an Testreport an) Testprotokoll ausgeben (Testreport mit erwartetem Output vergleichen) expliziter Unit-Test kann entfallen im Unified Process Tester != Programmierer Defect-Removal-Rate ~ 1 per day Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

13 Reviews Entwickler selbst plus Co-Entwickler oder externer Reviewer
Check-Liste mit typischen Fehlern Code ist schon Unit getestet => suche nur nach typischen Fehlerquellen: Division durch 0 null-Pointer Dereferenzierung Speicher-Lecks Array-Grenzen bei for-Schleifen deckt kompliziertes if alle Fälle richtig ab Terminiert die Schleife / Rekursion sicher Dead-Lock-Gefahren Racing Conditions . . . + Defect-Removal-Rate ~ 1 per hour + Reviewer lernt viele Kniffe + Viele Leute kennen viele Teile des Gesamtprogramms bei XP pair-programming Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

14 Tätigkeiten bei der Softwareentwicklung
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

15 XML-RPC Allgemein Standard für (entfernten) Methodenaufruf
Platformunabhängig Datenformat XML lesbar Transportprotokoll HTTP Ausgereift Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

16 Beispiel-Aufruf <?xml version="1.0"?> <methodCall>
<methodName>gameServer.setCoreSize</methodName> <params> <param> <value>Game1</value> </param> <value><int>8000</int></value> </params> </methodCall> Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

17 Datentypen Int, double, boolean, String
Sowie als array (List) und struct (Map) Base64-binary für beliebige Daten Kann für Serialisierung genutzt werden (Date) Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

18 Apache XML-RPC 2 Einfache Benutzung (im Gegensatz zu XML-RPC 3)
Im Projekt: xmlrpc bin.tar.gz Auspacken, enthält Doku und Beispiele Im Verzeichnis xmlrpc-2.0.1/examples/echo befindet sich ein einfaches Beispiel! Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

19 Beispiel-Server class Server {
public static void main (String args[]) { int port = 8080; WebServer server = new WebServer (port); // add an instance of this class as default handler server.addHandler ("$default", new Server()); server.start (); } /** * This is method that is invoked via XML-RPC. The server looks * up the method via Java Reflection API. */ public String echo (String input) { return input; Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

20 Beispiel-Client public class Client {
public static void main (String args[]) throws Exception { XmlRpcClient client = new XmlRpcClient ("http://localhost:8080/"); String message = "Hello World!"; Vector v = new Vector (); v.add (message); Object result = client.execute ("echo", v); System.err.println ("received: "+result); } Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

21 Analyse & Design Ziele Technisches Konzept zur Realisierung neuer Funktionalität Vorgabe für die Implementierung Zielgruppe Entwickler Beschreibung auf Modellebene Beispielszenarien (Story Boards, Sequenzdiagramme, …) Klassendiagramm Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

22 Fachgebiet Software Engineering. Übersicht. © 27. 03
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University


Herunterladen ppt "Projektplan: Fachgebiet Software Engineering Übersicht © 27.03.2017 Albert Zündorf, Kassel University."

Ähnliche Präsentationen


Google-Anzeigen