21
Einf¨ uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen Softwaretests Christoph Betschart 27. Oktober 2014

Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Softwaretests

Christoph Betschart

27. Oktober 2014

Page 2: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Inhaltsverzeichnis

Einfuhrung

Arten von Softwaretests

PrinzipienSeven Principles of Software Testing

Continuous Integration

Tests in FLOSS-Projekten

Page 3: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Motivation

• Fehler in einem Softwaresystem kann viel Geld kosten.

• Softwaretests als Teil der Qualitatssicherung.

• Softwaretests sollen Fehler in Softwaresystemen fruhzeitigerkennen.

• Softwaretests zur Erhohung der Quellcodequalitat

Page 4: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Einordnung

Qualitatsmanagement

Page 5: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Softwaretests

Testfall (Test Case)

Beschreibung eines Tests

• Testumgebung

• Eingabewerte

• Testprozedur

• Erwartete Ausgabewerte (auch Exceptions)

Eingabewerte

• typische Werte

• Grenzwerte

• fehlerhafte Werte

Automatisierte Ausfuhrung von Softwaretests

Page 6: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Softwaretests

Testfall (Test Case)

Beschreibung eines Tests

• Testumgebung

• Eingabewerte

• Testprozedur

• Erwartete Ausgabewerte (auch Exceptions)

Eingabewerte

• typische Werte

• Grenzwerte

• fehlerhafte Werte

Automatisierte Ausfuhrung von Softwaretests

Page 7: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Testing und Programmverifikation

Edsger W. Dijkstra, 1972:

”Program testing can be a very effective way to show the presence

of bugs, but is hopelessly inadequate for showing their absence.“

• Softwaretests decken nur wenige Beispiele aus einer riesigenMenge von moglichen Inputs ab.

• Programmverifikation beweist mathematisch die Korrektheiteines Programmes.

Page 8: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Arten von Softwaretests

Testart Was wird getestet?Unit Tests Einzelne Module

Akzeptanztests Erfullung der Anforderungen

Usability-Test Workflows

Regressionstest Altes Verhalten vs. neues Verhalten

Performancetest Ressourcenverbrauch

Integrationtest Zusammenarbeit verschiedener Module

Systemtest Gesamtsystem

GUI-Tests Verhalten des GUI

• Aufteilung der Tests fuhrt zu Reduktion der Komplexitat derjeweiligen Prufaktivitat.

Page 9: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Seven Principles of Software Testing

Artikel von Professor Bertrand Meyer, ETH Zurich

Page 10: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Principle 1: Definition

To test a program is to try to make it fail.

Beim Testen geht es darum Fehler zu provozieren/finden, nichtdiese zu beheben.

Page 11: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Principle 2: Tests versus specs

Tests are no substitute for specifications.

Spezifikationen abstrahieren und generalisieren das Problem, wobeiTests jeweils individuelle Falle abdecken.

Page 12: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Principle 3: Regression testing

Any failed execution must yield a test case, to remain a permanentpart of the project’s test suite.

Uberprufe, ob Fehler, welche behoben wurden, zu einem spaterenZeitpunkt wieder auftreten. Vergleiche das Verhalten zumVerhalten einer fruheren Version, welches als korrekt eingestuftwurde. Fehler die fruher mal behoben wurden, sollen nicht mehrauftreten.

Page 13: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Principle 4: Applying oracles

Determining success or failure of tests must be an automaticprocess (..) consisting of monitoring contract satisfaction duringexecution.

Ein Test welcher sagt, es ist”vielleicht“etwas schief gegangen

bringt nichts. Eine Uberprufung vom Tester kostet Zeit.Spezifikationen und Vertrage (z.B. zwischen Modulen) konnengenutzt werden, um einen klaren Soll-Zustand zu formulieren.

Page 14: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Principle 5: Manual and automatic test cases

An effective testing process must include both manually andautomatically produced test cases.

Nicht die Ausfuhrung betreffend. Automatisch generierte Testssind gut in der Breite, viele verschiedene Eingabewerte undParameter welche der Mensch evtl. vergessen wurde. Manuellgenerierte Tests sind gut in der Tiefe. Nutzen das Wissen desProgrammierers, welcher das Problem und die Datenstrukturenkennt.

Page 15: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Principle 6: Empirical assessment of testing strategies

Evaluate any testing strategy, however attractive in principle,through objective assessment using explicit criteria in areproducible testing process.

Wahle die Teststrategie, welche am meisten Nutzen bringt. AuchTeststrategien die wenig bis kein Wissen uber das Problem nutzen,konnen Fehler aufdecken.

Page 16: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Principle 7: Assessment criteria

A testing strategy’s most important property is the number offaults it uncovers as a function of time.

Der Nutzen einer Strategie wird uber die Anzahl aufgedeckterFehler pro Zeit gemessen.

Page 17: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Continuous Integration

• Ziel: Steigerung der Softwarequalitat

• Erstellung eines Builds und Ausfuhrung automatisierter Testsgeschieht bei jedem Einchecken in die Versionverwaltung

• Profitiert von haufigen Commits

• Es gibt immer einen Build zum Testen

Page 18: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Travis-CI

• CI-Tool fur GitHub Projekte.

• Unterstutzt Runtimes verschiedener Sprachen undverschiedener Versionen von Haus aus.

• Lauft in VM, benotigte Tools sind installierbar.

Build MatrixMehrere Builds: Alle Kombinationen der Konfigurationsparameterwerden getestet.

Page 19: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Demo:

• Buildbot example:http://buildbot.fast-downward.org/grid

• Travis-CI: https://travis-ci.org/

Page 20: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Tests in FLOSS-Projekten

Grosse Projekte haben eigene Testtools:

• Gecko-basierte Anwendungen: Mozmill

• Ubuntu: Bsp. TestDrive

Page 21: Softwaretests · 2014-11-20 · Einf uhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-ProjektenQuellen Testing und Programmveri kation Edsger W. Dijkstra,

Einfuhrung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen

Quellen

• Artikel: Seven Principles of Software Testing, ProfessorBertrand Meyer, ETH Zurich

• Vorlesung: Software Engineering, Franz-Josef Elmer

• Vorlesung: CS108 Programmierprojekt, SoftwareQualitatssicherung

• Travis-CI:http://docs.travis-ci.com/user/getting-started/