3: Systematisches Testen
|
|
- Robert Kohl
- vor 7 Jahren
- Abrufe
Transkript
1 3: Systematisches Testen Testen ist ein Prozess, ein Programm mit der Absicht auszuführen, Fehler zu finden. Man muss destruktiv denken! Testen ist ungeeignet, die Fehlerfreiheit eines Programms nachzuweisen! Testen ist keine Form des Debuggens! Die systematische Auswahl von Testfällen ist eine schwierige kreative Arbeit. Testergebnisse sollen reproduzierbar sein. Das Durchführen von Tests kann man oft automatisieren. Und man sollte es automatisieren, wenn möglich. 150
2 Ich habe einen Fehler in meinem Programm gefunden. Was soll ich tun? NICHT: Den Fehler sofort beheben, den Testfall vergessen. Stattdessen: 1. Den Testfall T, der zu dem Fehler führte, schriftlich festhalten, um den Fehler reproduzieren können. ( ) 2. Den Test weiterführen und nach weiterern Fehlern suchen. 3. Den Testfall T in den Regressionstest aufnehmen! 4. Jetzt den Fehler korrigieren. 5. Anhand des Testfalls T nachprüfen, ob der Fehler tatsächlich korrigiert wurde. ( ) Leider gibt es auch Heisenbugs
3 Kein Testen, aber auch nützlich: Untersuchung des Source-Codes Code-Inspectionen (strenge Regeln, Entscheidung über die Freigabe des Source-Codes) Eine Anomalie wie if ((options == ( WCLONE WALL)) && (current->uid = 0)) retval = -EINVAL; hat in dem Source-Code für ein sicheres System nichts zu suchen! Walk-Throughs (weniger strikte Regeln) Programming in Pairs Formale Verifikation ( in ein paar Wochen) 152
4 Testpsychologie Man muss die Fehler finden wollen! Idealerweise Trennung zwischen Programmautoren und Testern. Auch hilfreich: Test-Driven Developement (zuerst die Black-Box-Tests, danach die Implementation). Es ist gut, wenn ein Test einen Fehler findet. Erfolg = Fehler gefunden! 153
5 Regressionstest Batterie von Testfällen, die im Laufe eines Projekts wächst, weil für jeden neu nachgewiesenen Fehler ein Testfall aufgenommen wird. Möglichst viele Testfälle sollten automatisiert bearbeitet werden. Änderungen werden nur freigegeben, wenn der Regressionstest fehlschlägt (keine Fehler findet). Wird ein Fehler entdeckt, der vom Regressionstest bisher nicht gefunden wurde: Zuerst neuer Testfall für den Regressionstest. Erst dann Fehler beheben. (Das ist wichtig! Deshalb die Wiederholung des zuvor Gesagten.) Denn: Fehler kommen oft wieder! 154
6 Testfall Beschreibung einer Eingabe(-Bedingung) mit einem erwarteten Ergebnis Zweck Vorbedingung Erwartetes Ergebnis Aufräumarbeiten Bei der Durchführung des Tests: Vergleich des tatsächlichem mit dem Erwarteten Ergebnis, Protokollierung. Ggf. Verknüpfung mehrerer Testfälle zu einer Kette. 155
7 Beispiel: Wie sollte man diese Funktion testen? function Fibonacci(X: Positive) return Positive is Kind, Vater, Opa: Positive; begin if X <= 2 then return 1; else Vater := 1; Opa := 1; for Generation in 3.. X loop Kind := Vater + Opa; Opa := Vater; Vater := Kind; end loop; return Kind; end if; end Fibonacci; 156
8 3.1: White-Box Tests Tests, die mit Hilfe der Kenntnis eines (Unter-)Programms definiert werden, mit Hilfe des Kokntrollflussgraphen: Knoten: Ausführbare Anweisung (Zuweisung, Prozeduraufruf) zusätzlich je ein Start- und Zielknoten ggf. Zusammenfassung mehrerer zusammenhängender Anweisungen zu einem Knoten Kante: möglicher Programmfluss zwischen zwei Anweisungen Pfad: Kombination von Kanten, die vom Start- zum Zielknoten laufen 3.1: White-Box Tests 157
9 Kriterien für White-Box Tests Kontrollflussorientierte Tests: Anweisungsüberdeckung: Jeder Knoten des Kontrollflussgraphen wird mindestens einmal ausgeführt. Zweigabdeckung: Jede Kante des Kontrollflussgraphen wird mindestens einmal ausgeführt. Pfadabdeckung: Jeder Pfad im Kontrollflussgraphen wird mindestens einmal ausgeführt (theoretisches Kriterium, da meistens unendlich viele Pfade). Datenflussorientierte Tests (übernächste Folie) 3.1: White-Box Tests 158
10 Pfadabdeckung mit Schleifen Programme mit Schleifen können unendlich viele Pfade haben. Das würde undentlich viele Tests implizieren. Varianten der Pfadabdeckung mit endlich vielen Pfaden: Boundary Interior : Zwei Pfade pro Schleife: Verlassen der Schleife bei der ersten Gelegenheit (while-schleife wird keinmal durchlaufen, repeat-until-schleife wird einmal durchlaufen). Verlassen der Schleife bei der zweiten Gelegenheit (while-schleife einmal, repeat-until-schleife zweimal). Strukturierte Pfadabdeckung mit Parameter k. Für alle j {1,..., k}: Verlassen der Schleife bei der j-ten Gelegenheit. 3.1: White-Box Tests 159
11 Datenfluss Idee: Eine Variable V wird entweder verändert (z.b. V :=... ) oder lesend benutzt (z.b.... := V ). Daten fließen von der Veränderung zur Benutzung. Testen (Datenfluss-orientiert): Betrachte Pfade, die von einer Veränderung ohne weitere Veränderung zur Benutzung führen. 3.1: White-Box Tests 160
12 Datenflussorientierte Tests Unterscheide 1. def: Wertzuweisung an eine Variable 2. use: lesende Benutzung einer Variablen. Weitere Unterscheidung: 2.1 c(omputational)-use: Der Wert der Variablen ist Teil einer Berechnung 2.2 p(redicate)-use: Der Wert der Variablen beeinflusst eine Entscheidung 3.1: White-Box Tests 161
13 function Fibonacci(X: Positive) return Positive is Kind, Vater, Opa: Positive; begin def(x) if X <= 2 then p-use(x) return 1; else Vater := 1; def(vater) Opa := 1; def(opa) for Generation in 3..X def(generation), p-use(generation, X) loop Kind := Vater + Opa; c-use(vater, Opa), def(kind) Opa := Vater; c-use(vater), def(opa) Vater := Kind; c-use(kind), def(vater) end loop; return Kind; c-use(kind) end if; end Fibonacci; 3.1: White-Box Tests 162
14 Das all-defs Kriterum Für jede Variable V und jede def(v)-anweisung gibt es mindestens einen Pfad in den Testfällen, der bezüglich V definitionsfrei ist und in einer use(v)-anweisung mündet. Ein Pfad ist bezüglich V definitionsfrei, wenn auf dem Pfad keine def(v)-anweisung auftritt. Idee: Jede Variable V hat (hoffentlich!) einen semantischen Nutzen, der wenigstens in einem Testfall überprüft werden soll. 3.1: White-Box Tests 163
15 all-uses und weitere Kriterien all-uses: Für alle Variablen V und alle Paare (X, Y ) (X eine def(v)-anweisung und Y eine use(v)-anw.) gilt: Wenn mindestens ein bezüglich V definitionsfreier Pfad von X nach Y existiert, dann muss ein solcher Pfad in einem der Testfälle auftreten. Starkes Kriterium, aber seeeehr viele Testfälle. Sparsamer: all-p-uses (berücksichtigt nur p-use(v), ignoriert c-use) und all-c-uses (genau umgekehrt). Nicht klar was besser: all-p-uses oder all-c-uses. Künstliche Unterscheidung zw. p-use und c-use. 3.1: White-Box Tests 164
16 Testen: Die Praxis Verbreitet: Black-Box-Tests ( nächster Abschn.). Kontrollflussorientierte Tests oft genutzt (und z.t. vorgeschrieben) für die Entw. Sicherer Systeme. Typisches Vorgehen: Starte mit den Testfällen eines gründlich entwickelten Black-Box-Tests. Ermittle (mit Hilfe von Werkzeugen) die anfängliche Testabdeckung (bei reinen Black-Box Tests typischerweise 60 80%). Ergänze die Testfälle, um die Testabdeckung auf einen vorgegebenen Minimalwert zu bringen (typischerweise 90-95%). Datenflussorientierte Tests: theoretisches Konzept, in der Praxis (bisher?) selten, kaum Werkzeuge. 3.1: White-Box Tests 165
17 Mutationstesten Etwas unsystematische, aber wirkungsvolle Methode, die Vollständigkeit der Testbatterie zu testen. Grundlage: Kleine Änderungen ( Mutationen ) am Quelltext. Jeder Mutant enthält nur eine Abweichung, z.b. Ersetzen eines durch ein <, eines and durch ein or,... Vorzeichenfehler, Auskommentieren einzelner Statements, Vertauschen der Reihenfolge einzelner Statements,... Kriterium: Wenn irgend eine Mutation den Test besteht, hat man vermutlich nicht genug Testfälle, oder die falschen Testfälle. 3.1: White-Box Tests 166
18 3.2: Black-Box Tests Tests, die anhand der Spezifikation eines (Unter-)Programms definiert, werden, ohne das Programm selbst zu kennen. Techniken zur Erzeugung von Testfällen: Äquivalenzklassenbildung (sowohl für gültige, als auch für ungültige Eingaben) Grenzwertanalyse Beispiel: Wie testet man die ein (Unter-)Programm, das ein Datum in der Form (Tag, Monat, Jahr) einlesen und bei ungültigen Daten eine Ausnahme auslösen soll: 3.2: Black-Box Tests 167
19 Beispiel Kaffeeautomat package Kaffee_Automat is type Zustand is private; type Benutzer_Handlung is (Cent10, Cent20, Knopf); type Aktionen is (Muenze_Angenommen, Muenze_Abgelehnt, Alle_Muenzen_Zurueck, Gib_Kaffee_Aus); 3.2: Black-Box Tests 168
20 Kaffeeautomat (2) procedure Initialisiere (X: in out Zustand); procedure Agiere(X: in out Zustand; Eingabe: Benutzer_Handlung; Aktion: out Aktionen); private type Zustand is range ; end Kaffee_Automat; 3.2: Black-Box Tests 169
21 Wie testen wir den Kaffeeautomaten? Spezifikationen, wie für derartige Automaten üblich. Insbesondere: Eingabe 10-Cent und 20-Cent Münzen Kaffee für 50 Cent, kein Überbezahlen Geldrückgabeknopf Gibt es Äquivalenzklassen, die wir hier nutzen können? 3.2: Black-Box Tests 170
22 3.3: Fallbeispiel: Fakultät Man gebe einen Black-Box-Test für die folgende Funktion an: function Fak1(N: Positive) return Positive is return N! 3.3: Fallbeispiel 171
23 Findet der Black-Box-Test den Fehler? function Fak2(N: Positive) return Positive is optimised variant of Fak1 begin case N is when 1 => return 1; when 2 => return 2; when 3 => return 6; when 4 => return 24; when 5 => return 120; when 6 => return 270; Error: 6!=720 when 7 => return 5040; when others => return N * Fak2(N-1); end case; end Fak2; 3.3: Fallbeispiel 172
24 Hier kann auch ein White-Box-Test versagen! function Fak3(N: Positive) return Positive is yet another optimised Fak1 Opt: array (Positive range 1..7) of Positive := (1,2,6,24,120,270,5040); begin if N in Opt Range then return Opt(N); else return N*Fak3(N-1); end if; end Fak3; 3.3: Fallbeispiel 173
25 3.4: Automatisches Testen Manuelles Testen ist arbeitsaufwändig, langweilig und... fehlerträchtig. Und wer will nach jeder (kleinen) Änderung den kompletten Regressionstrest durchführen... Um die Reproduzierbarkeit der Test zu gewährleisten, muss bei jeder Wiederholung des Tests (z.b. Regressionstest), der gleiche Input eingegeben werden. 3.4: Automatisches Testen 174
26 Der Test-Driver Generator testgen Ein einfach zu handhabendes Werkzeug, um Test-Driver zu erzeugen ist der Test-Driver Generator testgen (eine Weiterentwicklung von tg. Er dient als Beispiel für ein Werkzeug beim Testen. Für anspruchsvollere Aufgaben würde man z.b. AUnit verwenden. 3.4: Automatisches Testen 175
27 Arbeitsweise von testgen Eingabe von testgen ist ein Test-Script (z.b. beispiel.ts), Ausgabe der Quelltest eines Ada-Programms (z.b. beispiel.adb). Typische Test-Scripts bestehen aus 1. Einer globalen Kontext-Vereinbarung, bestehend aus with und use -Klauseln für Ada.Text_IO und dem getesteten Modul, und 2. einzelnen Testfällen. 3.4: Automatisches Testen 176
28 Die Syntax eines Test-Scripts Context with Ada.Text_IO; use Ada.Text_IO; with Datum_Manager; use Datum_Manager; ***** 30. Juni 2003 (kein Schaltjahr) Define Dat: Datum; Test Dat := Setze(30, Juni, 2003); Pass (Tag(Dat)=30) and (Monat(Dat)=Juni) and (Jahr(Dat)=2003) ***** 31. Juni 2003 (kein Schaltjahr) Define Dat: Datum; Test Dat := Setze(31, Juni, 2003); Pass exception Falsches_Datum 3.4: Automatisches Testen 177
29 Die Syntax eines Testfalls Testfall-Name, Define-, Test- und Pass-Vereinbarungen: ***** Mai, alle Tage, 2003 (kein Schaltjahr) Define Fehler: Natural := 0; Dat: Datum; Test for T in Tag_Typ loop Dat := Setze(T, Mai, 2003); if (Tag(Dat) /= T) or (Monat(Dat) /= Mai) or (Jahr(Dat) /= 2003) then Fehler := Fehler + 1; end if; end loop; Pass Fehler = 0 3.4: Automatisches Testen 178
30 Verhalten eines Test-Scripts (1) pass. (2) pass. (3) pass. (4) Februar, 1..28, 2003 (kein Schaltjahr) Script name: dat_man.ts ; Line:34... FAIL. (path => was taken, but predicate is FALSE) (5) pass. (6) pass. (7) pass. Script name dat_man.ts ; total test result: FAIL. Hurra! Der Test war erfolgreich Fehler gefunden! 3.4: Automatisches Testen 179
3: Systematisches Testen
Stefan Lucks 3: Systematisches Testen 70 E für Sichere Vert. Systeme (2007) 3: Systematisches Testen Testen ist ein Prozess, ein Programm mit der Absicht auszuführen, Fehler zu finden. Man muss destruktiv
Mehr6 Systematisches Testen von Programmen
6 Systematisches Testen von Programmen Testen Untersuchung des Source-Codes nach Fehlern und Anomalien Stefan Lucks, Software-Entwicklung für Sichere Systeme SS 04, Kapitel 6 p.1/24 Untersuchung des Source-Codes
MehrQualitätssicherung von Software (SWQS)
Qualitätssicherung von Software (SWQS) Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FOKUS 25.4.2013: strukturelle Tests Fragen zur Wiederholung robuste vs. nicht-robuste Grenzwertanalyse?
MehrTestabdeckung ist keine weiße Magie
TAB.10 Arbeitskonferenz Software-Qualität und Test Klagenfurt, 22.-23. September 2003 Testabdeckung ist keine weiße Magie Karol Frühauf, INFOGEM AG, CH-5401 Baden Karol.Fruehauf@INFOGEM.CH Schlussfolgerung
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
MehrQualitätssicherung von Software
Qualitätssicherung von Software Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FIRST 2.3 strukturelle Tests 24.11.2004 Folie 2 Hinweis auf Umfrage wir, das Institut für Informatik
MehrExcel VBA. Teil 11.8. Zusammenfassung! Was wir können sollten! V0.5 5.4.2013
Excel VBA Teil 11.8 Zusammenfassung! Was wir können sollten! V0.5 5.4.2013 1 von 17 Inhaltsverzeichnis Seite 3... Modul einfügen Seite 4... Prozeduren oder Funktionen Seite 5... Ein/Ausgaben Seite 6...
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
MehrProgrammierkurs Python I
Programmierkurs Python I Michaela Regneri & Stefan Thater Universität des Saarlandes FR 4.7 Allgemeine Linguistik (Computerlinguistik) Winter 2010/11 Übersicht Kurze Wiederholung: while Sammeltypen (kurz
MehrT4 Statischer Test. Siemens AG Österreich 2005 All Rights Reserved. Statischer Test - Allgemein. Kennzeichen: Testen, ohne das Testobjekt auszuführen
T4 Statischer Test Siemens AG Österreich 2005 All Rights Reserved Institut f. Software Technology, TU-Graz Armin Beer, PSE Support-Center Test Statischer Test - Allgemein Kennzeichen: Testen, ohne das
MehrSoftware-Test: Funktionstest
0/23 Software-Test: Funktionstest Andreas Zeller Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken Funktionale Testverfahren 1/23 Funktionale Testverfahren testen gegen die Spezifikation
MehrTechniken im Software-Test
Techniken im Software-Test München, 4. Juli 2000 Heiko Lötzbeyer Institut für Informatik Lehrstuhl für Technische Universität München Inhalt Ziele des Software Tests Überblick Teststufen Unit-Test Integrationstest
MehrTesten und Debugging
Testen und Debugging Testklassen, Unit Tests Blackbox Test, Whitebox Test Regressionstesten Zusicherungen mit assert Debugger Informatik II: Objektorientierte SW-Entwicklung, Algorithmik, Nebenläufigkeit
MehrArray-Zuweisungen. Array-Zuweisungen können über die Position, den Namen oder gemischt erfolgen.
Array-Zuweisungen Array-Zuweisungen können über die Position, den Namen oder gemischt erfolgen. Ausschnitte (slices) werden über die Indizes gebildet. Mehrdimensionale Arrays Mehrdimensionale Arrays werden
MehrSoftware-Test: Strukturtest
Software-est: Strukturtest Andreas Zeller Lehrstuhl für Softwaretechnik Universität des Saarlandes, Saarbrücken 2006-02-02 Welche estfälle auswählen? Ich kann nur eine beschränkte Zahl von Läufen testen
Mehr8 Zugriffstypen ( Zeiger )
8 Zugriffstypen ( Zeiger ) 1. Zugriffstypen, die auf Daten in einem Storage Pool zeigen Heap. 2. Allgemeine Zugriffstypen, die auf (mehr oder weniger) beliebige Daten zeigen. 3. Zugriffsparameter für Unterprogramme
MehrSoftware- Qualitätsmanagement
Software- Qualitätsmanagement Kernfach Angewandte Informatik Sommersemester 2006 Prof. Dr. Hans-Gert Gräbe 2. Kontrollfluss-or. Strukturtestverfahren Überblick Basieren auf der Kontrollstruktur des zu
MehrSteuerung von Programmabläufen. Vorlesung Computergestützte Mathematik zur Linearen Algebra. Lehrstuhl für Angewandte Mathematik Sommersemester 2009
Steuerung von Programmabläufen Vorlesung Computergestützte Mathematik zur Linearen Algebra Lehrstuhl für Angewandte Mathematik Sommersemester 2009 7. und 14. Mai 2009 For-Schleifen Bisher: Matlab -Kommandos
MehrJava Einführung ABLAUFSTEUERUNG Kapitel 3 und 4
Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4 Inhalt dieser Einheit Merkmale und Syntax der verschiedenen Kontrollstrukturen: if else switch while do while for break, continue EXKURS: Rekursion 2 Kontrollstrukturen
MehrSPARK95. Ingmar Wirths. 12. Juli 2007
SPARK95 Ingmar Wirths 12. Juli 2007 Motivation Ada wurde zur Programmierung von Mikroprozessoren entwickelt. Motivation Ada wurde zur Programmierung von Mikroprozessoren entwickelt. Ein Systemversagen
MehrProgramm heute. Algorithmen und Datenstrukturen (für ET/IT) Fehlerarten. Validation. Wintersemester 2012/13. Dr. Tobias Lasser
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 01/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 1 Einführung Mathematische Grundlagen
MehrJava 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8
Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen
MehrWhite-Box-Test. Black-Box-Test. Testen. Testen. Vorlesung Methoden des Software Engineering. Martin Wirsing. Einheit D.2,
21.12.04 1 Ziele 21.12.04 2 Vorlesung Methoden des Software Engineering Techniken des Black-Box-Testens und des White-Box-Testens kennen lernen Block D Qualitätssicherung Black-Box-Test und White-Box-Test
MehrFunktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion
Überblick über Stored Functions Funktionen Eine Funktion ist ein benannter PL/SQL- Block, der einen Wert zurückgibt. Eine Funktion kann in der Datenbank als Objekt zur wiederholbaren Ausführung gespeichert
MehrC.3 Funktionen und Prozeduren
C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens
MehrECDL MODUL COMPUTING. Syllabus Version 1.0
ECDL MODUL COMPUTING Syllabus Version 1.0 DLGI Dienstleistungsgesellschaft für Informatik Am Bonner Bogen 6 53227 Bonn Tel.: 0228-688-448-0 Fax: 0228-688-448-99 E-Mail: info@dlgi.de, URL: www.dlgi.de In
MehrUnterprogramme. Komplexes Verhalten kann modular mit Hilfe von Unterprogrammen beschrieben werden Es gibt zwei Arten von Unterprogrammen:
Unterprogramme Dr. Wolfgang Günther Unterprogramme 2 Unterprogramme Komplexes Verhalten kann modular mit Hilfe von Unterprogrammen beschrieben werden Es gibt zwei Arten von Unterprogrammen: Prozeduren
MehrProgrammieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 Testen von Programmen 2 Übersicht Testen ist eine der wichtigsten, aber auch eine der Zeitaufwändigsten Arbeitsschritte
MehrVorsemesterkurs Informatik Sommersemester Aufgabenblatt Nr. 5A. Lösung zu Aufgabe 1 (Fehler in Haskell-Quelltext: Parsefehler)
Fachbereich Informatik und Mathematik Institut für Informatik Vorsemesterkurs Informatik Sommersemester 2017 Aufgabenblatt Nr. 5A zu Aufgabe 1 (Fehler in Haskell-Quelltext: Parsefehler) Laden Sie von der
MehrAlgorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016
Algorithmen und Datenstrukturen Übung Stefan Florian Palkovits, BSc 09 e09@student.tuwien.ac.at 9. Juni 0 Aufgabe 9: Anwenden der Spanning Tree Heuristik auf symmetrisches TSP 9 8 7 8 8 7 Bilden eines
Mehr5 Produktqualität Komponenten: Testende Verfahren 1 [stark gekürzt]
1 Software-Qualitätssicherung 2 Einführung und Überblick LE 1 V Unternehmensmodellierung 5 Produktqualität Komponenten: Testende Verfahren 1 [stark gekürzt] Prof. Dr. Helmut Balzert Lehrstuhl für Software-Technik
MehrBeispiel 1 zur Verifikation eines bedingten Anweisung. Hoare-Regel für die bedingte Anweisung. else
Hoare-Regel für die bedingte Anweisung I1 : I2 : {B P } S 1 {Q} { nicht B P } {Q} {P } if (B) then S 1 {Q} {B P } S 1 {Q} { nicht B P } S 2 {Q} {P } if (B) then S 1 else S 2 {Q} In der Regel für bedingte
MehrKurs 1793 Software Engineering I Nachklausur am 25.09.1999
Seite: 1 Aufgabe 1 (15 Punkte) Raumplanung In dieser Aufgabe soll anhand einer Problembeschreibung ein ER-Diagramm entworfen werden. Problembeschreibung In der Oberstufe einer Schule werden die Schüler
MehrFachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn. Testen. Tutorial im Rahmen des Software(technik)praktikums SS 2012
Testen Tutorial im Rahmen des Software(technik)praktikums SS 2012 Grundlagen (1) Software ist ein fundamentales Element in der Softwarequalitätssicherung Software wird am häufigsten eingesetzt Viele Organisationen
MehrQualität von Software - Prof. Schlingloff, Lackner - SS2013 DYNAMISCHER TEST. Whitebox Testen mit JUnit
1 DYNAMISCHER TEST Whitebox Testen mit JUnit Übersicht 2 1. Grundlagen des Unittests 1. Units 2. Unit Testing 2. Testverfahren 1. Blackbox 2. Whitebox 3. Unit Testing mit Eclipse 4. Besprechung der Übungsaufgabe
MehrTesten mit Use Cases. Chris Rupp Dr. Stefan Queins
Testen mit Use Cases Chris Rupp Dr. Stefan Queins Das Problem Requirements- Engineering Was kann passieren? Was ist das gewünschte Verhalten? Was soll ich testen? Welche Eingaben benötigt mein Testpfad?
MehrSoftware Engineering
Software Engineering Prof. Adrian A. Müller, PMP Fachbereich Informatik und Mikrosystemtechnik Fachhochschule Kaiserslautern, Standort Zweibrücken Prof. A. Müller, FH KL Software Engineering '12/'13 1
MehrArrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss
Arrays FTI 41 2005-09-09 Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss z.b. Dim Werte(x) As Single. Wobei
MehrAufbau eines dynamischen ETL Frameworks auf Basis eines PL/SQL Codegenerators
Aufbau eines dynamischen ETL Frameworks auf Basis eines PL/SQL Codegenerators München, 21. Nowember 2007 Nicola Marangoni & Jörg Westermayer Nicola.Marangoni@SHS-VIVEON.com Joerg.Westermayer@SHS-VIVEON.com
MehrVorlesung Methoden des Software Engineering. Martin Wirsing. Einheit D.2,
11.01.07 1 Vorlesung Methoden des Software Engineering Block D Qualitätssicherung Black-Box-Test und White-Box-Test Martin Wirsing Einheit D.2, 11.01.2007 Block D (Qualitätssicherung): Qualitätsmanagement
MehrPraktikum Ingenieurinformatik. Termin 4. Funktionen, numerische Integration
Praktikum Ingenieurinformatik Termin 4 Funktionen, numerische Integration 1 Praktikum Ingenieurinformatik Termin 4 1. Funktionen. Numerische Integration, Trapezverfahren 1.1. Funktionen Eine Funktion ist
MehrASIL-relevante SW-Module identifiziert! Was nun?
ASIL-relevante SW-Module identifiziert! Was nun? ASIL-relevante SW-Module testen Blick in die EN 26262 Häufige Irrtümer in der Praxis Funktionale Tests in die Tiefe Funktionale Tests weiter optimieren
MehrElementare Konzepte von
Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)
MehrProgrammierkurs Java
Programmierkurs Java Kontrollstrukturen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Kontrollstrukturen Wichtig: bedingte Ausführung
MehrBeispiel 1 zur Verifikation eines bedingten Anweisung. Hoare-Regel für die bedingte Anweisung. Beispiel 2 zur Verifikation eines bedingten Anweisung
Hoare-Regel für die bedingte Anweisung I1 : I2 : {B und P } S 1 {Q} { nicht B und P } {Q} {P } if (B) then S 1 {Q} {B und P } S 1 {Q} { nicht B und P } S 2 {Q} {P } if (B) then S 1 S 2 {Q} In der Regel
MehrSyntax der Sprache PASCAL
Syntax der Sprache PASCAL Buchstaben A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z Ziffern 0 1 2 3 4 5 6 7 8 9 Sonderzeichen und Wortsymbole +
MehrPhase 3: Komponenten (Testen)
Phase 3: Komponenten (Testen) Echtzeitsysteme 2 - Vorlesung/Übung Peter Ulbrich Fabian Scheler Wolfgang Schröder-Preikschat Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander
MehrC++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22
C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven
MehrTheoretische Informatik SS 03 Übung 3
Theoretische Informatik SS 03 Übung 3 Aufgabe 1 a) Sind die folgenden Funktionen f : partiell oder total: f(x, y) = x + y f(x, y) = x y f(x, y) = x y f(x, y) = x DIV y? Hierbei ist x DIV y = x y der ganzzahlige
MehrGrundlagen der Programmierung (Vorlesung 15)
Grundlagen der Programmierung (Vorlesung 15) Ralf Möller, FH-Wedel Vorige Vorlesung Blöcke, Funktionen Auswertestrategien Inhalt dieser Vorlesung Prozeduren Rekursion Lernziele Grundlagen der systematischen
MehrWiederholung. Testen. Tests nach Methode zum Ableiten der Testfälle White Box Test Black Box Test
Testen Tests nach Lebenzykusphase Unit, Komponententests Integrationstets Systemtests Abnahmetests, Validierung Tests nach Testziel Lasttest Penetrationstests Funktionale Tests... Wiederholung Tests nach
MehrÜbersicht. C Ein-/Ausgabe und Kontrollanweisungen. I/O-Funktionen aus stdio. printf() Ein-/Ausgabe. Kontrollanweisungen.
Übersicht Ein-/Ausgabe C Ein-/Ausgabe und Kontrollanweisungen Kontrollanweisungen 1 2 I/O-Funktionen aus stdio printf() printf() - zum formatierten Ausgaben #include scanf() - zum formatierten
MehrTest-Suite Beurteilung
Test-Suite Beurteilung Seminar: Beiträge zum Software Engineering @FU Berlin, Prof. Dr. Lutz Prechelt WS14/15 - Mehmet Bayram A Verglichene Arbeiten Comparing Non-adequate Test Suites using Coverage Criteria
MehrLast Def Analyse (Reaching Definitions)
Last Def Analyse (Reaching Definitions) Idee: Jedes Vorkommen einer Variablen v wird mit Zeigern auf die Programmstellen annotiert, an denen der letzte Wert entstanden sein kann. Kriterien: Die Programmstelle
MehrFACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung
C Sprachelemente für Übung 2 Typumwandlungen (type casts) Bei Ausdrücken, in denen Operanden mit unterschiedlichem Typ vorkommen, werden diese vom Compiler vor der Ausführung automatisch in einen gemeinsamen
MehrEinstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick 2 Verbundanweisung 3 Bedingte Anweisung 4 Auswahlanweisung
Mehr5.3 Korrektheit und Verifikation
5.3 Korrektheit und Verifikation Korrektheit bedeutet, dass ein Algorithmus oder ein Programm das in der Spezifikation beschriebene Problem für beliebige Eingabedaten korrekt löst. Die Korrektheit kann
Mehr4.Grundsätzliche Programmentwicklungsmethoden
4.Grundsätzliche Programmentwicklungsmethoden 1.1 Grundlage strukturierter und objektorientierter Programmierung Begriff Software Engineering - umfaßt den gezielten Einsatz von Beschreibungsmitteln, Methoden
Mehrtype Subtrees is array (Natural range < >) of Kptr; type Ktree (Arity: Natural) is record content : SomeType; children : Subtrees (1..
3.4 Darstellung von Bäumen Darstellung von k-beschränkten Bäumen: Mit wenigen Knoten und/oder kleinem k durchaus adäquat mit folgender Darstellung: type KTree; type KPtr is access KTree; type KTree is
MehrHeap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
Mehr5.3 Korrektheit und Verifikation
5.3 Korrektheit und Verifikation Korrektheit bedeutet, dass ein Algorithmus oder ein Programm das in der Spezifikation beschriebene Problem für beliebige Eingabedaten korrekt löst. Die Korrektheit kann
Mehr6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
MehrHeap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
MehrBrückenkurs Programmieren
Brückenkurs Programmieren Funktionen, Dokumentation, Rekursion Christopher Schölzel Technische Hochschule Mittelhessen 02.10.2013 Christopher Schölzel (THM) Brückenkurs Programmieren 02.10.2013 1 / 31
MehrAutomatische Testfallgenerierung für den Systemtest. 1/5 www.ni.com
Automatische Testfallgenerierung für den Systemtest "Modellzentriertes Testen in Verbindung mit NI TestStand und VeriStand ermöglicht Testern und Testmanagern, deutlich effektiver zu arbeiten und die Testqualität
Mehr( = 18 Punkte)
1 Lösung 1 ( 6 + 5 + 3 + 4 = 18 Punkte) a) function countziff (inzahl : tnatzahl): tnatzahl; {gibt die Stellenanzahl der inzahl} i, j : tnatzahl; i := inzahl; j := 1; while i => 10 do j := j + 1; i :=
MehrInformatik I Übung, Woche 40
Giuseppe Accaputo 2. Oktober, 2014 Plan für heute 1. Fragen & Nachbesprechung Übung 2 2. Zusammenfassung der bisherigen Vorlesungsslides 3. Tipps zur Übung 3 Informatik 1 (D-BAUG) Giuseppe Accaputo 2 Nachbesprechung
MehrTableaukalkül für Aussagenlogik
Tableaukalkül für Aussagenlogik Tableau: Test einer Formel auf Widersprüchlichkeit Fallunterscheidung baumförmig organisiert Keine Normalisierung, d.h. alle Formeln sind erlaubt Struktur der Formel wird
MehrEinstieg in die Informatik mit Java
1 / 27 Einstieg in die Informatik mit Java Methoden / Funktionen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition
Mehr5. Algorithmen. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
5. Algorithmen K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 21. Okt. 2015 1. Berechne 2 n. Zu lösende Probleme 2. Berechne die Fakultät einer nat. Zahl: n! = 1 * 2 *... n 3. Entscheide,
Mehr(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)
Anweisungen Eine Anweisung ist eine in einer beliebigen Programmiersprache abgefaßte Arbeitsvorschrift für einen Computer. Jedes Programm besteht aus einer bestimmten Anzahl von Anweisungen. Wir unterscheiden
MehrAlgorithmen mit konstantem Platzbedarf: Die Klasse REG
Algorithmen mit konstantem Platzbedarf: Die Klasse REG Sommerakademie Rot an der Rot AG 1 Wieviel Platz brauchen Algorithmen wirklich? Daniel Alm Institut für Numerische Simulation Universität Bonn August
MehrProgramm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 1 Einführung Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Grundlagen von Algorithmen
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2016 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen
MehrProgrammieren I. Kapitel 5. Kontrollfluss
Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,
MehrKurs 1613 Einführung in die imperative Programmierung
1 Wintersemester 2003/2004 Hinweise zur Bearbeitung der Klausur zum Wir begrüßen Sie zur Klausur "Einführung in die imperative Programmierung". Lesen Sie sich diese Hinweise vollständig und aufmerksam
MehrMusterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 10
Prof. Dr. Wilhelm Schäfer Paderborn, 5. Januar 2015 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 10 Aufgabe 1 Decision-Tables
MehrEinführung in die Informatik 1
Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag,
MehrAusführen eines Makros beim Starten von OpenOffice.org
Ausführen eines Makros beim Starten von OpenOffice.org Es ist möglich, beim Starten und Beenden von OpenOffice.org oder einzelner Komponenten Makros auszuführen. Dies geschieht mittels Zuordnung jeweiliger
MehrEntscheidungen. INE1, Montag M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert
Entscheidungen INE1, Montag M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Ablaufstrukturen bis jetzt nur Sequenzen von Code neu Auswahl (Programmverzweigung) - Code aufgrund
MehrKapitel 5: Syntaxdiagramme und Grammatikregeln
5. Syntaxdiagramme und Grammatikregeln 5-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 5: Syntaxdiagramme und Grammatikregeln Syntaxdiagramme Grammatikregeln (kontextfrei) Beispiele: Lexikalische
MehrMethoden des Software Engineering
1 Vorlesung Methoden des Software Engineering Block F Test und Validierung F 2 Black-Box-Test und White-Box-Test Christian Prehofer Unter Verwendung von Materialien von Martin Wirsing 2 Vorlesungsübersicht
MehrKontrollstrukturen -- Schleifen und Wiederholungen
Kontrollstrukturen -- Schleifen und Wiederholungen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14
MehrProgrammieren mit statistischer Software
Programmieren mit statistischer Software Eva Endres, M.Sc. Institut für Statistik Ludwig-Maximilians-Universität München Funktionen Definition von Funktionen I Eine Funktion hat einen Namen benötigt Argumente
MehrI EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK... 1... V H D L Tim Köhler April 2005 I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK... 2... Übersicht 1. Einleitung 2. Syntax 3. Spezielle
MehrSchwerpunkte. 5. Auswahl: Bedingte Anweisungen. Syntax. If-Anweisung: Auswahl aus zwei Alternativen. If-Anweisung: Auswahl aus 2 Alternativen
Schwerpunkte 5. Auswahl: Bedingte Anweisungen If-Anweisung: Auswahl aus 2 Alternativen Kurzform von if: Spezialfall der Langform Fehlerquellen Hängendes switch: Spezialfall von if K. Bothe, Institut für
MehrKapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
Mehr1.5. Strukturierte Anweisungen
1.5. Strukturierte Anweisungen Switch-Anweisung (C++): Initialisierungen dürfen nicht 'übersprungen' werden: switch (i) { int v1 = 2; // ERROR: jump past initialized variable case 1: int v2 = 3; //...
MehrSoftwaretechnikpraktikum SS 2004. Qualitätsmanagement I. 1. Überblick. Qualität. Qualitätsmerkmal
Softwaretechnikpraktikum SS 2004 Qualitätsmanagement I 5. Vorlesung 1. Überblick Planungsphase Definitionsphase Entwurfsphase Implem.- phase Fragen Was ist Qualität? Wie kann man Qualität messen? Wie kann
Mehr1 Algorithmische Grundlagen
1 Algorithmische Grundlagen Klocke/17.03.2003 1.1 1.1 Begriffsklärung Fragen Begriffsklärungen Abstraktionsebenen für Algorithmen und Datenstrukturen Algorithmus Qualität von Algorithmen Klocke/17.03.2003
MehrVom Testkonzept zu JUnit
Testen und Testkonzept Dipl.-Inf. (FH) Christopher Olbertz 2. Dezember 2014 Testen und Testkonzept Warum testen? Wichtig, obwohl bei Programmierern unbeliebt Stellt weitgehend korrekte Funktionsweise eines
MehrUnit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck
Unit Tests Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
Mehr4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C
Einfache Programmstrukturen in C 4-1 Welche einfache Programmstrukturen sind zu unterscheiden? Arithmetische und logische Ausdrücke und Zuweisungen Verzweigungen Unvollständige bedingte Anweisungen Vollständige
MehrVerwenden Sie für jede Aufgabe die C++ IDE von Eclipse (pro Aufgabe ein Projekt).
3 Erste Programme 3.1 Übungsaufgabe Verwenden Sie für jede Aufgabe die C++ IDE von Eclipse (pro Aufgabe ein Projekt). 3.1.1 Aufgabe 1 Schreiben Sie ein C++ Programm, das einen String einliest und testet,
MehrSoftwarekostenmodell - Was ist das? Welche gibt es?
Diese Ausarbeitung ist nicht komplett! KEINE GARANTIE AUF KORREKTHEIT! Definition von Qualität Hängt zusammen mit Was ist Software? IEEE: 1) Grad in welchem ein System, eine Komponente oder ein Prozess
Mehr