Contract-based tests in the software process and environment



Ähnliche Dokumente
Efficient Design Space Exploration for Embedded Systems

Einführung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen. Softwaretests. Christoph Betschart

Daten haben wir reichlich! The unbelievable Machine Company 1

Test automation for database management systems and database applications

Installation einer C++ Entwicklungsumgebung unter Windows --- TDM-GCC und Eclipse installieren

Understanding and Improving Collaboration in Distributed Software Development

Installation und Inbetriebnahme von Microsoft Visual C Express

Was meinen die Leute eigentlich mit: Grexit?

Reporting Services und SharePoint 2010 Teil 1

Produktvielfalt Variety of Products

Entwicklung des Dentalmarktes in 2010 und Papier versus Plastik.

Mobile App Testing - Mit der richtigen Strategie zum Erfolg

Python Installation. 1 Vorbereitung. 1.1 Download. Diese Anleitung ist für Windows ausgelegt.

Aufbau eines IT-Servicekataloges am Fallbeispiel einer Schweizer Bank

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

Python SVN-Revision 12

Agile Software Verteilung

Die Invaliden-Versicherung ändert sich

Rock-Band. Einleitung. Scratch. In diesem Projekt lernst du, wie du deine eigenen Musikinstrumente programmieren kannst! Activity Checklist

BartPE. Dokumentation. Projektarbeit Network Services. Dozent: Wolf-Fritz Riekert. Belmondo Kovac. Autor: Andreas Dinkelacker, 3.

Erfahrungen mit Hartz IV- Empfängern

Künstliches binäres Neuron

Konzept zur Push Notification/GCM für das LP System (vormals BDS System)

Kurzanleitung um Transponder mit einem scemtec TT Reader und der Software UniDemo zu lesen

Zählen von Objekten einer bestimmten Klasse

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

RL

Hotel- und Objektausstattung Bedding products for hotels and contract business

REQUIREMENTS ENGINEERING KONSTRUKTIVE QS REQUIREMENTS ENGINEERING 1

Daniel Burkhardt (Autor) Möglichkeiten zur Leistungssteigerung und Garnqualitätsverbesserung beim Rotorspinnen

Installation der SAS Foundation Software auf Windows

Zum fünften Mal ausgezeichnet Awarded for the fifth time 第 五 次 获 此 殊 荣

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Automatisiertes End-to-end Testen von Enterprise Applikationen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

GuiXT und mysap ERP. Regensdorf, April 2004 Dr.Gerhard Rodé, Synactive GmbH

Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Also kann nur A ist roter Südler und B ist grüner Nordler gelten.

Wichtiges Thema: Ihre private Rente und der viel zu wenig beachtete - Rentenfaktor

Effiziente Testautomatisierung in agilen Projekten

Customer-specific software for autonomous driving and driver assistance (ADAS)

Die Post hat eine Umfrage gemacht

EEX Kundeninformation

Preisliste für The Unscrambler X

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Alle gehören dazu. Vorwort

Professionelle Seminare im Bereich MS-Office

Group and Session Management for Collaborative Applications

Technische Analyse der Zukunft

VPN / IPSec Verbindung mit dem DI 804 HV und dem SSH Sentinel

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Diss. ETH No SCALABLE SYSTEMS FOR DATA ANALYTICS AND INTEGRATION. A dissertation submitted to ETH ZURICH. for the degree of. Doctor of Sciences

Anleitung zur Webservice Entwicklung unter Eclipse

Keine Disketteneinreichung ab 1. Februar 2014

Wie Hotels gegen booking.com & Co. online bestehen können. Jörg NetBusiness Consulting AG

Simon die linke Hand des Handwerks

GERMAN VACATION WORK (2014)

Bernadette Büsgen HR-Consulting

Mitarbeiter IVR - Wozu

Testen im Software- Entwicklungsprozess

Eine eigene Seite auf Facebook-Fanseiten einbinden und mit einem Tab verbinden.

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

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

Process Mining Tutorial: ProM 6 und Disco. Luise Pufahl 3. Juni 2014

Besprechung Übung 1 & Vorstellung Übung 2

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

Metadaten bei der Digitalisierung von analogen archivalischen Quellen. Kathrin Mileta, Dr. Martina Wiech

eridea AG Installation Eclipse V 1.4

Technical Support Information No. 123 Revision 2 June 2008

Speicher in der Cloud

-Virtuelle Jagdfliegerschule- Teamspeak Seite 1 von 6

Softwarequalitätssicherung

APAS ist das Ergebnis unserer langjährigen Erfahrung im Bereich der Mess-, Prüf- und Automatisierungstechnik.

AUFBAUPROGRAMME YOU ONLY LIVE ONCE, BUT IF YOU DO IT RIGHT, ONCE IS ENOUGH.

Wir machen neue Politik für Baden-Württemberg

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

1 WEB ANALYTICS: PROFESSIONELLE WEB-ANALYSEN UND REPORTING FÜR IHR ONLINE MARKETING.

Wie oft soll ich essen?

SEP 114. Design by Contract

Betriebswirtschaftliches Beratungstool für Steuerberater Ziele, Inhalte und Struktur

CONTINUOUS LEARNING. Agile Anforderungsanalyse mit Impact Mapping

Software-Engineering 2. Software-Engineering 2. Entwicklungsumgebungen (IDE) IT works. Klaus Mairon

Handout 6. Entwicklung von Makros

Support-Tipp Mai Release Management in Altium Designer

Teaser-Bilder erstellen mit GIMP. Bildbearbeitung mit GIMP 1

Hallo! Social Media in der praktischen Anwendung Warum macht man was und vor allem: wie? Osnabrück, den 07. Juli 2014.

Gern beraten wir auch Sie. Sprechen Sie uns an!

Internet Explorer Version 6

Kontakt ist alles: Selbst- und Fremdbilder

PCC Outlook Integration Installationsleitfaden

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Transkript:

DISS. ETH N O 18072 Contract-based tests in the software process and environment A dissertation submitted to the ETH Zurich for the degree of Doctor of Sciences presented by Andreas Leitner Diplom Ingenieur, TU Graz born January 16th, 1977 citizen of Austria accepted on the recommendation of Prof. Dr. Bertrand Meyer, examiner Prof. Dr. David Basin, co-examiner Prof. Dr. Roderick Bloem, co-examiner Prof. Dr. Andreas Zeller, co-examiner 2008

ABSTRACT In many projects, software testing comes as an afterthought. Recent development methods try to break this habit by placing testing at the center of development. This heightened role of tests raises new problems: the development process must interleave testing with other activities; developers must prepare more tests; these tests must be executed continuously and hence must be short. Contracts in the form of preconditions, postconditions and invariants help to automate testing and relieve developers: preconditions filter invalid inputs, postconditions serve as oracles. This thesis presents the following contract-based testing techniques: Test cases can be extracted: contract violations are made reproducible via persistent and quickly executing unit tests. These extracted tests aid debugging and later on regression testing. Unlike capture and replay techniques, our novel extraction mechanism has no run-time overhead. Test cases can be synthesized: a strategy for automatically generating inputs combined with a contract-based oracle enables fully automated testing. Even a random-based synthesis strategy, simple but widely applicable, finds a variety of faults in production quality source code. Test cases created by a random-based strategy can grow very large and become difficult to debug, hence they should be minimized. We have developed a combination of slicing and delta debugging which significantly minimizes the generated test cases. We also present auxiliary methods concerning test case selection, prioritization and reflection. We have implemented these techniques in two tools: CDD EiffelStudio, a test case extractor, which is integrated in the EiffelStudio development environment and AutoTest, a test case synthesizer, executor, and minimizer. This thesis includes empirical evaluations of both tools to prove their effectiveness and efficiency. iii

iv

ZUSAMMENFASSUNG Das Testen von Software geschieht in vielen Projekten nur im Nachhinein. Moderne Softwareentwicklungsprozesse brechen damit Sie rücken Testen ins Zentrum der Entwicklung. Diese neue Rolle bringt aber auch neue Herausforderungen: Testen muss mit anderen Aktivitäten verschachtelt werden, Entwickler müssen mehr Tests erzeugen, diese Tests müssen fortwährend ausgeführt werden und deswegen auch kurz sein. Verträge in der Form von Vorbedingungen, Nachbedingungen und Invarianten helfen bei der Testautomatisierung und entlasten den Entwickler: Vorbedingungen erkennen ungültigen Input und Nachbedingungen ungültigen Output. Die vorliegende Arbeit zeigt die folgenden vertragsbasierten Testtechniken: Tests können extrahiert werden: Ein Werkzeug erzeugt aus Vertragsverletzungen persistente und schnell auszuführende Unittests. Diese extrahierten Tests erleichtern das Debuggen und helfen später beim Regressionstesten. Unser Ansatz verlangsamt, anders als Capture and Replay, die Ausführungsgeschwindikeit von Programmen nicht. Tests können synthetisiert werden: Eine Strategie zum automatischen Erzeugen von Inputs kombiniert mit vertragsbasiertem Testen automatisiert das Testen vollständig. Sogar zufallsbasierte Synthesestrategien, welche einfach und leicht einzusetzen sind, finden eine Vielfalt von Fehlern in industriellem Quellcode. Tests, erzeugt von einer zufallsbasierten Synthesestrategie, sind oft, weil sie sehr gross sein können, schwer zu debuggen. Deswegen sollte man sie verkleinern. Wir haben eine Methode entwickelt, die Testfälle durch eine Kombination von Slicing und Delta Debugging verkleinert. Ausserdem präsentieren wir unterstüzende Methoden die bei der Testauswahl, Testreihung und Testausführungen von Nutzen sind. Wir haben diese Techniken in zwei Werzeugen implementiert: CDD EiffelStudio, ein Testfallextrahierer, der in die EiffelStudio Entwicklungsumgebung eingebettet ist und AutoTest, ein Werzeug zum synthetisieren, ausführen, und verkleiv

nern von Tests. Empirische Evaluierungen bezeugen die Effektivität und Effizienz dieser Werkzeuge. vi