1. Einführung 1.1. Definitionen

Ähnliche Dokumente
Systematisches Testen von Software

Testen. SEPR Referat: Testen - Oliver Herbst

Softwaretechnik. Vertretung von Prof. Dr. Blume Fomuso Ekellem WS 2011/12

Unit Tests mit Junit 4. Dario Borchers

Software - Testung ETIS SS05

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

Unit-Test Theorie und Praxis. Stephan Seefeld, INGTES AG

Testen - Konzepte und Techniken

1. Zweckdes Dokuments

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept

6 Produktqualität Systeme: Integrationstest [sehr stark gekürzt]

Teststrategie festlegen und Teststufen aufeinander abstimmen

Qualitätsmanagement im Projekt

Stuttgarter Test-Tage 2011 Der Fluch des grünen Balkens in sehr großen Projekten

Techniken im Software-Test

Qualität von Software - Prof. Schlingloff, Lackner - SS2013 DYNAMISCHER TEST. Whitebox Testen mit JUnit

Softwaretechnikpraktikum SS Qualitätsmanagement I. 1. Überblick. Qualität. Qualitätsmerkmal

Testphase. Das Testen

Senior Consulting. Senior Consulting Strategical, Conceptual and Technical Consulting Seite 1

1. Motivation 2. Begriffsklärung 3. Komponententests 4. Integrationstests 5. Integrationsstrategien 6. Zusammenfassung

Software Engineering. 9. Testen

Programmieren I. Übersicht. Vorlesung 12. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Software Tests (1) Unabhängige ngige Tests

SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Senior Consulting. Senior Consulting Strategical, Conceptual and Technical Consulting Seite 1

Programmiertechnik II

Inhalt. 1 Einführungsveranstaltung. 2 Qualität kompakt

Software Engineering Testen von Software (1)

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck

Testautomatisierung. Märchen, Möglichkeiten und praktischer Nutzen. Richard Seidl 21. Januar 2013 TU Dresden. Medizin- und Informationstechnik AG

Testmanagement. Dirk Tesche

Testen II. (Management, Tools) Daniela Rose. Software Engineering Projekt WS07/08 Fachgebiet Softwaretechnik und Systemgestaltung

Systematische Software-Qualität mittels einer durchgängigen Analyse- und Teststrategie

Basiswissen Softwaretest

Vector Software. Test Automation mit VectorCAST während der gesamten Softwareentwicklung W H I T E P A P E R

Thema: Testen von objektorientierter Software

Testmanagement in IT-Projekten

Service Virtualisierung

Software Testen 2.0 VL

Basiswissen Softwaretest

Software Engineering. 13. Qualitätssicherung. Franz-Josef Elmer, Universität Basel, WS 2006/07

Software Testen 2.0 VL

ISTQB Certified Tester Foundation Level Exam Übungsprüfung

Unit Testing, SUnit & You

Softwareentwicklungspraktikum Sommersemester Testdokumentation

Was versteht man unter einem Softwareentwicklungsmodell?

Lehrplan: SW- Qualitätssicherung

Softwaretechnik 3. Klausurnachbesprechung , Phillip Ghadir

Seminar Simulation und Bildanalyse mit Java SS2004. Themenschwerpunkt: Tests in Informatik und Statistik

Software- Qualitätsmanagement

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw,

10. Konstruktive Qualitätssicherung

Klausur zu den Teilgebieten Software-Management und Software-Qualitätsmanagement

Testen von graphischen Benutzeroberflächen. 24. Juni 2015

6 Systematisches Testen von Programmen

Testmanagement bei SAP-Projekten

Projektmanagement. Vorlesung von Thomas Patzelt 10. Vorlesung

Einführung in die Programmierung der Schnittgrößenermittlung am Einfeldträger J. Lange

SE Besprechung. Übung 6 Softwaretests

QADVICE. Forum 7-it. Software- und System-Qualitätssicherung für IT-Infrastrukturlösungen. Hermann Will

Testen Prinzipien und Methoden

1 Einleitung...1. Teil I Handwerkszeug Definitionen zur Qualität...13

Qualitätssicherungskonzept

EINE STRATEGIE FÜR OBJEKTORIENTIERTE SOFTWARE TESTEN- OMEN

Kampf dem Fehlerteufel PMD, Findbugs und Checkstyle in großen Projekten

Software Engineering. 11. Einführung und Wartung

Testen. Robert Binder: Software Testing is the execution of code using combinations of input and state selected to reveal bugs.

Software Engineering und Projektmanagement 2.0 VO

Einsatz automatischer Testdatengenerierung im modellbasierten Test

Unit Testing mit JUnit. Dr. Andreas Schroeder

Software-Test. Tests im Softwareentwicklungsprozess. Motivation. Literatur. schon gesehen: testgetrieben. traditionell

Weblog. Projektdokumentation. Java NDK Fallstudie. Identifikation: ID Status: in Arbeit Version: 00.11

Kooperatives Testen Basis auch zur Testautomatisierung während der Softwareentwicklung. Dipl. Inform. Hans-Josef Eisenbach

Konzeption. und prototypische Implementierung. eines Werkzeuges. für den funktionalen Klassentest

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Leitfaden API. Testing und Debugging. Erstellt am Autor FG API, Rinaldo Lanza. Dokumentenstatus Freigegeben at work Version 1.

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

Frank Düsterbeck HEC GmbH. QM mit und durch agile Vorgehensweisen

,$ -. "+0 *+*+ ! / -#$%$. #$%'' $ () 1 2$ #$%$! 1 2$3 )!

Comparison of Software Products using Software Engineering Metrics

Motivation und Überblick

Testen mit JUnit. Motivation

Systemen - Testprozess. Testprozess. Testprozess: Aktivitäten. Testplanung und Teststeuerung. Testplanung und Teststeuerung

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken

Systemen - Testprozess. Testprozess. Testprozess: Aktivitäten. Testplanung und Teststeuerung. Lehrplan 2003 Testplanung

10. Konstruktive Qualitätssicherung. Ansatz. Coding Guidelines. Beispiel-Coding-Regel

Agiles Testen - Ein Erfahrungsbericht Thomas Schissler / artiso AG Michael Lierheimer/ infoteam software AG

Gegenseitige Beeinflussungen von Testautomatisierung, Testmanagement und Entwicklung

Der Rational Unified Process

Das Test-Framework JUnit ETIS SS04

Berufsbild Tester - eine Profession?

GELEBTE ENTWICKLUNGSRICHTLINIEN

Software Projekt 2009/10 VAK Testplan Version 1.0

Test. Dipl. Wirtsch. Ing. Alexander Werth 9-1

Lasst die Roboter arbeiten: Oberflächen (Test) Automation im Fokus

Die Alternative zum Web-Form Modell

Software-Engineering 2. Software-Engineering 2. Softwarequalität und Softwaretest. IT works. Klaus Mairon

Christoph Behounek, eggs unimedia

Einführung in die Informatik Tools

Transkript:

1

1. Einführung 1.1. Definitionen Unter Testen versteht man den Prozess des Planens, der Vorbereitung und der Messung mit dem Ziel, die Eigenschaften eines IT-Systems festzustellen und Unterschiede zwischen tatsächlichem und erforderlichen Zustand aufzuzeigen. 1.2. Charakteristiken von guten Tests - Vollständigkeit: Kombinationen (Werten, Zahlen), Funktionen - Tests können nur Fehler nachweisen, nicht deren Abwesenheit - ein guter Test findet viele Fehler - ein guter Test hat einen definierten Ablauf, ein definiertes Ergebnis und ist reproduzierbar - Tests sollten wieder verwandt werden - Erfahrungen der Tester und Benutzer fließen ein 1.3. Fehler und Begriffe - Fault/Defekt/innerer Fehler/Fehlerursache/Fehlerzustand: Irrtum bei der Softwareentwicklung, z.b. fehlerhafte Programmierung einer Anweisung - Error/Fehlerhandlung: Ursache für Fehlerzustand - Failure/Fehlfunktion/äußerer Fehler/Ausfall/Fehlerwirkung: Nach außen sichtbare Fehlerverhalten bei der Anwendung der Software In fett markiert die Begriffe für die ISTQB Prüfung 2

2. Fehlervermeidung: - Prozessorientiertes Vorgehen - Architektur: Komponentenorientierung, - Implementierung: Kodierrichtlinien... 3. Tests Klassifizierung - Testziel: Wartbarkeit, Benutzbarkeit, Funktionalität, Robustheit, Effizienz, Portierbarkeit - Testmethode - Testobjekt - Testperson 3.1. Modultests (Komponententest, Klassentest, Unittest) 3.1.1. Eigenschaften - Testperson: Entwickler - Testziel: Funktionalität, Robustheit - Testmethode/Testwerkzeuge: JUnit, NUnit - Testobjekt: Klasse, Methode 3

3.1.2 Vorgehen Funktionalität: z.b. Korrektheit (z.b. Rückgabewerte) Stabilität/Robustheit: z.b. gegen falsche Eingabewerte Um beide zu testen, setzt man die Methode der Äquivalenzklassen ein => Exkurs 1 Die Vollständigkeit der Tests bestimmt man über Abdeckungsgrade (Code Coverage) => Exkurs 2 3.1.3 Reviews: Prüfen des Codes durch einen Dritten - Kodierrichtlinien > Metriken: Zeilenlängen, zyklomatische Komplexität > Namenskonventionen - Verständlichkeit - Dokumentation: JavaDoc, inline Kommentare - Laufzeitfehler: NullPointer, Div_by_0,... - Unabhängigkeit von (Mutter-)Sprache und Plattform (kein "c:\") - Rundungsfehler - Modultests vorhanden (Code coverage prüfen, Äquivalenzklassen) - Code reflektiert Architektur/Design 4

Exkurs 1: Äquivalenzklassen Problem: Es können nicht alle Wertekombinationen getestet werden. Beispiel: 3 Integerwerte á 2^16 Möglichkeiten benötigen 89 Jahre bei 100000Tests/s Äquivalenzklassen sind Mengen von Werten, von denen angenommen wird, dass sich alle deren Werte im Test gleich verhalten. Beispiel: Student student = new Student("Andy Becker", 139393); Zwei Parameter: int (Matrikelnummer, 6-stellige Zahl) Namen: Zwei oder mehr Wörter, die durch Leerzeichen getrennt sind Äquivalenzklassen für Matrikelnummer (als Beispiel für Zahlen) - 100001-999998 - 1-99999 - -1 - -Unendlich - 1 000 000 bis Unendlich - 100000-999999 - 0 - NaN - bei vielen (Skript-) Sprachen: Nichtzahlen Werte ("kfk",...) 5

Äquivalenzklassen für Namen (als Beispiel für Zeichenketten) - Zeichenkette mit Leerzeichen "in der Mitte" - Zeichenkette mit mehreren Leerzeichen - Zeichenkette mit Leerzeichen am Anfgang/Ende - nur Leerzeichen - Zeichenkette ohne Leerzeichen - Sonderzeichen: ',', '-', ä, ö, é, - Andere Zeichensätze: - Zahlen - "" - null - Sehr lange Zeichenketten - SQL-Injection - Schlüsselworte: DROP, DELETE, EXIT, FOR, BREAK 6

Exkurs 2: Abdeckungsgrade ("Code coverage") 7

Anweisungsabdeckung (Statement coverage): Anzahl der durchlaufenen Anweisungen in Prozent (!) Zweigabdeckung (Branch coverage): Anzahl der durchlaufenen Zweige in Prozent (!) (ist stärkeres Maß als Anweisungsabdeckung) Einfache Bedingungsabdeckung (condition coverage): Anzahl der atomaren Teilbedingungen, die im Test die Werte true und false annehmen in Prozent Mehrfache Bedingungsabdeckung (multi condition coverage): Jede Kombination aus atomaren Teilbedingungen, die getestet wird, in Prozent (ist stärkes Maß als einfache Bedingungsabdeckung) Pfadabdeckung: 8

3.2 Integrationstests 3.2.1. Eigenschaften - Testobjekte: Mehrere Komponenten, Module im Zusammenspiel - Tester: Entwickler, Tester - Testziel: Funktionalität, Effizienz - Werkzeuge: JUnit,... 3.2.2 Vorgehen - Persistenz, Transaktionen, CRUD (Create Read Update Delete) - Benutzerschnittstelle: Usability, Elemente sichtbar, Übersetzung,. - Kommunikation zwischen Komponenten (Performance, Schnittstellen) Strategien 9

10

Integrationsstrategien - Buttom-up > Vorteil: Keine Mockobjekte, frühes Finden von Fehlern > Nachteil: Später Tests eine vertikalen Prototypen - Top-Down > Vorteil: Früher Eindruck der Gesamtapplikation > Nachteil: Notwendigkeit, Mockobjekte *) zu schreiben - Big-Bang: > Vorteil: Kein Mockobjekte, keine Testtreiber > Nachteil: Fehler sind schwer zu lokalisieren *) Mockobjekte sind Objekt-Attrappen (Pseudoobjekte), die dem zu testenden Programmcode bestimmte Funktionalität vorgaukeln (z.b. Persisitierung in Datenbank). Mockobjekte dienen während des Tests als Ersatz für reale Objekte. 11

3.3 Systemtests 3.3.1 Eigenschaften - Tester: Dezidierte Softwaretester - Testobjekte: Vollständiges System - Testziel: Alle Kriterien gemäß der ISO9126 3.3.2 Vorgehen Überprüfung: - Portierbarkeit: Installation, Deinstallation, Upgrade auf verschienden Systemen (Betriebssysteme, Hardware, installierte Programme,...) - Funktionalität: End-to-End-Tests, beispielsweise mit Skripten, welche die Oberfläche ansteuern, Testen aller Use-Cases (Geschäftsprozesse) - Robustheit: Fehleingaben, Stresstests (Überlastung bis zum Systemkollaps), Dauertests (MemoryLeaks), Strom ausschalten, Aussschalten von Komponenten (Datenbank, Netzwerkkabel, Drucker,...) - Effizienz: Laden vieler Daten, Last mit vielen Benutzern (CPU, Netzwerklast, Speicher) - Benutzbarkeit: Benutzern Aufgaben stellen und Zeit messen, Usability labs, 12

3.4 Akzeptanztests 3.4.1 Eigenschaften - Tester: Anwender - Testziel: Benutzbarkeit, Funktionalität - Werkzeuge: Manuell 3.4.2 Vorgehen Überprüfung - Testen gegen Verträge und Anforderungen - Testen alles Usecases - Testen der Butzerdokumentation 3.5 Weitere Tests Statische Tests: Tests bei denen der Code nicht ausgeführt wird - Code review - Kompiler - Automatische Codanalyse mit Checkstyle Dynamische Tests: Tests bei denen Code ausgeführt wird - Modultests, - Integrationstests - Systemtests - Akkzeptanztests 13

Whitebox Tests: Tests bei denen die innere Struktur des Codes bekannt ist - Modultests Blackbox Test: Tests bei denen die Struktur nicht bekannt ist - Akkzeptanztests (- Systemtests) Regressionstests: Tests, die nachweisen, dass ein bereits getestetes Programm nach einer Änderung keine neuen Fehloer enthält. Die bisher beschriebenen Test können/sollten als Regressionstests wieder verwendet 14

4. Testprozess 4.1. Testplanung Übergreifende Planung innerhalb des Projekts, die Rahmenbedingungen festlegt - Ressourcen (Mitarbeiter, Schulung, Werkzeuge, Geräte) - Richtlinien (Code Coverage, Testmethoden, Risiken) 4.2. Testspezifikation - Vorbedingungen/Randbedingungen - Durchführung: Testschritte, Testdaten, Auswertung - Erwartetes Ergebnis 4.3. Testdurchführung und -protokollierung Reproduzierbarkeit (-> Konfigurationsmanagement) 4.4. Testauswertung und -bewertung Bei Abweichungen entscheiden, ob Software, Durchführung oder Testspezifikation falsch sind Ggf: - Test überarbeiten und Test wiederholen - Software überarbeiten und Test wiederholen - Entscheiden ob Tests beendet sind 15

Kriterien für das Beenden des Testens - Es werden keine Fehler mehr gefunden (auch nicht mit anderem Verfahren) - die Kosten übersteigen die Kosten, die durch fehlerhafte Software entstünde 16