Überdeckungsmessung von Java-Programmen



Ähnliche Dokumente
Softwaretechnik 1 Tutorium

Whitebox-Tests: Allgemeines

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version:

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Studentische Lösung zum Übungsblatt Nr. 7

Konzeption und Realisierung eines datenbankgestützten Testwerkzeugs zur Überdeckungsanalyse von Java-Programmen

Applications Applets (eingeschränkte Rechte)

Probeklausur Softwareengineering SS 15

Tagesprogramm

Java: Vererbung. Teil 3: super()

Hauptseminar Automotive Software Engineering Testen, Rapid Prototyping und x in the loop

Praktikum: Einstieg: Arbeitsplatz, JCreator

Testwell CTC++ Test Coverage Analyser Testabdeckung für alle Coverage-Stufen, alle Compiler, alle Embedded Targets

Übung zur Vorlesung Einführung in Software Engineering

Programmierkurs Java

Technische Universität Berlin SS

Selbststudium OOP4 Auftrag

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Überdeckungs-, Last- und Stresstest

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Objektorientierte Programmierung

Dr. Nicholas Merriam Rapita Systems Ltd., IT Centre, York Science Park, Heslington, York, YO10 5DG (UK)

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Anpassung einer freien SSL/TLS Implementierung an die Kertasarie VM

Free your work. Free your work. Wir wollen Ihnen die Freiheit geben, sich auf Ihr Geschäft zu konzentrieren.

Einführung in die Programmierung

Einführung in Javadoc

crm-now/ps Webforms Webdesigner Handbuch Erste Ausgabe

Profiling und Coverage mit GNU und Bare Embedded Systems

Programmentwicklung ohne BlueJ

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Aufgabenblatt Nr. 5 Generizität und TicTacToe

Java Entwicklung für Embedded Devices Best & Worst Practices!

Produktvorstellung: CMS System / dynamische Webseiten. 1. Vorwort

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Einführung in die Programmierung (EPR)

.NET Code schützen. Projekt.NET. Version 1.0

Abschnitt 12: Strukturierung von Java-Programmen: Packages

white sheep GmbH Unternehmensberatung Schnittstellen Framework

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Gliederung. 1. That s Radiant 2. User Interface 3. Rollen 4. Installation 5. Extensions 6. Fazit

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Fortgeschrittenes Programmieren mit Java. Test Driven Development

SEP 114. Design by Contract

Software Engineering in der Praxis

ZE ErgoView. M. Jaschke

Einführung in PHP. (mit Aufgaben)

Testen mit JUnit. Motivation

Kapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9

Graphic Coding. Klausur. 9. Februar Kurs A

DOS-Sympas Scope Dateien in Excel einlesen

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

DLLs (dynamic loaded libraries) mit MingW erstellen

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Robot Karol für Delphi

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand Copyright

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick

Microsoft SharePoint 2013 Designer

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Programmiertechnik II

Kurzanleitung zu XML2DB

Uwes Wiests Training

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

SCHNELLEINSTIEG ZUM TOOL NODEBUILDER

Übungen für Woche 10

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.

Extending tl_member. Andreas Fieger

Gründe für fehlende Vorsorgemaßnahmen gegen Krankheit

IVE-W530BT. Bluetooth Software Update Manual mit Android Telefonen

Typumwandlungen bei Referenztypen

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Qt-Projekte mit Visual Studio 2005

Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX

Internet Explorer Version 6

Testphase. Das Testen

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Pragmatik von Programmiersprachen

Lernaufgabe Industriekauffrau/Industriekaufmann Angebot und Auftrag: Arbeitsblatt I Auftragsbeschreibung

SQLJ. Standardisierte Java-DB. DB-Schnittstelle. Spezifikationen. Oracle, IBM, Informix, Sybase,, Tandem, Sun, Microsoft stehen dahinter

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Backup der Progress Datenbank

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

teamsync Kurzanleitung

Java Einführung Programmcode

Erfahrungsbericht Installation von OpenOffice.org2 auf Terminalservern mit Citrix Metaframe

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

Mobile App Testing - Mit der richtigen Strategie zum Erfolg

Einführung in die Informatik Tools

Software Maintenance - Musterlösung zum Übungsblatt 1

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Zweisprachigkeit im Dokumentationsportal

Neue Funktionalität in mobidas 1.3. erp Serie

MobiDM-App Handbuch für Windows Mobile

Test-Strategien. Grundsätzliches Blackbox-Testen Whitebox-Testen Graybox-Testen Ablauf von Tests Zusammenfassung. HS Mannheim

Transkript:

Überdeckungsmessung von Java-Programmen TAV 20, 16.-17. Oktober 2003 method-park, Erlangen Mario Winter, Hans-Gerd Wefels FH Köln Überdeckungsmessung von Java-Programmen Dynamischer Test in der Praxis meist Black-box Test Testfälle in erster Linie aus Spezifikation abgeleitet Welche Elemente der Software wurden im dynamischen Test ausgeführt? C0 = Anweisungsüberdeckung C1 = Zweigüberdeckung C2 = (einfache) Bedingungsüberdeckung C3 = Pfadüberdeckung MC/DC = Minimale Mehrfach-Bedingungsüberdeckung (Modified Condition/Decision Coverage) Manuell nur schwer nachweisbar Idee: Programm um Checkpoints erweitern Zur Laufzeit melden Hier war ich Reihenfolge wichtig! Folie 2 TAV 20 16.Okt. 2003 1

Warnung! Die Aufgerufene Datei existiert ni ch t. Überdeckungsmessung von Java-Programmen Instrumentierung und Überdeckungsmessung Instrumentierung im Sourcecode Für fast alle Sprachen und Umgebungen möglich Instrumentierung im Bytecode Nicht alle Quellcodekonstrukte erkennbar Quellcode In Java zur Ladezeit möglich Instrumentierung im Laufzeitsystem Reflektion notwendig Umgebungsabhängig Instrumentierung bedeutet immer Compiler Performanzverfälschung! Instrumentierung Objektcode Laufendes Anwendungssystem Folie 3 Kommerzielle Werkzeuge JavaScope von SUN C0, C1, Ausnahmeüberdeckung, Bedingungsüberdeckung Methoden/Konstruktoren-Überdeckung Vertrieb und Entwicklung 1999 aus strategischen Gründen eingestellt McCluskey-Tools C0, C1, Methodenüberdeckung Clover von Cortex C0, C1, Methodenüberdeckung Unterstützt assert JCover von Man Machine Systems C0, C1, Methoden- und Klassenüberdeckung Borlands OptimizeIt Code Coverage C0, Methoden- und Klassenüberdeckung Code Coverage von Koalog Testers Edge GJ-Cover Folie 4 TAV 20 16.Okt. 2003 2

Open Source Werkzeuge Java Instrumentation Engine (JIE) von Eran Tromer C0, C1, Klassen- und Methodenüberdeckung Parser/Visitor Architektur Bis Java 1.2 Barat von B. Bokowski und A. Spiegel Parser für Java Programme Visitor-Architektur Beispiel: Methodenüberdeckung Hansel für JUnit C0, C2 Uni Bonn: Experimente mit Byte-Code Instrumentierung Instrumenting Class Loader Folie 5 Bedingungsüberdeckungs-Test Wahrheitswert: true, false Atomarer Ausdruck (Boolesche Variablen/Funktionen) isempty(); size > 0 Zusammengesetzter Ausdruck (Boolesche Ausdrücke) (size > 0) && (inobject!= void) Minimale Mehrfach-Bedingungsüberdeckung [Riedemann97]: Teste jede Kombination von Wahrheitswerten, bei denen die Änderung des Wahrheitswertes eines atomaren Ausdrucks den Wahrheitswert des zusammengesetzten Ausdrucks ändern kann! Modified Condition/Decision Coverage (MC/DC, DO-178B): Every point of entry & exit in the program has been invoked at least once, every condition in a decision in the program has taken all possible outcomes at least once, every decision in the program has taken all possible outcomes at least once, each condition in a decision has been shown to independently affect that decision's outcome Folie 6 TAV 20 16.Okt. 2003 3

Beispiel: Minimale Mehrfach-Bedingungsüberdeckung Teste jede Kombination von Wahrheitswerten, bei denen die Änderung des Wahrheitswertes eines atomaren Ausdrucks den Wahrheitswert des zusammengesetzten Ausdrucks ändern kann! A B A B A B A B A B C A B C 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 Folie 7 Java Instrumentierung Ähnlich problematisch wie C++ ArrayList exts; java.io.file f; Iterator it = exts.iterator(); while (it.hasnext()){ if (f.getname().endswith((string)it.next())) return true; } while ( (line = inbuf.readline() )!= null ) Folie 8 TAV 20 16.Okt. 2003 4

DoIT Datenbankgestützte Instrumentierung Folie 9 DoIT GUI Folie 10 TAV 20 16.Okt. 2003 5

DoIT Text-Reports // Package-Name: junit.runner, Version: 3.8.1, Instrumentierung Nr. 2, instrumentiert am 29.12.2002 // Ergebnisse des instrumentierten Testlaufes vom 29.12.2002 18:58 // lfd. Test-Nr. dieser Inst-Nr: 2 // Bemerkung zur Instrumentierung: Testen von DoiT mittels JUnit // // Globale Messergebnisse für Package junit.runner : // Klassenüberdeckung : 55 % // Methodenüberdeckung : 50 % // Zweigüberdeckung : 40 % // Bedingungsüberdeckung : 42 % // Minimale Mehrfachbedingungsüberdeckung : 41 % // Schleifenüberdeckung : 75 % // Ausnahmeüberdeckung : 9 % Folie 11 DoIT HTML-Reports Folie 12 TAV 20 16.Okt. 2003 6

DoIT Weiterentwicklungen Überdeckungsmetrik für den modified condition/decision coverage Test' Berücksichtigung der unvollständigen Evaluierung (short-circuit-evaluation) Verbesserung des Laufzeitverhaltens auch bei I/O-intensiven Testläufen durch asynchrones Schreiben der Datenbank-Updates Realisierung einer schlanken Version mit datenbank-unabhängigen Instrumentierungsanweisungen z. B. für eingebettete Systeme (Java MicroEdition, JavaCard) Erkennung und Berücksichtigung von Vererbungshierarchien und auf Wunsch Instrumentierung entsprechender Oberklassen (falls diese im Quelltext vorliegen) Erweiterung um Sensitivierungs- und Testdatenerzeugungskomponenten Integration in die Open Source Testwerkzeuge aus dem XP-Umfeld Folie 13 Interesse an DoIT? Sponsoring... Kooperation Beta-Tester z.zt. FH-Köln, DLR-MTP, oskar winter@gm.fh-koeln.de Vielen Dank für ihre Geduld! Folie 14 TAV 20 16.Okt. 2003 7