Software-Test: Strukturtest
|
|
|
- Marcus Gerber
- vor 9 Jahren
- Abrufe
Transkript
1 Software-est: Strukturtest Andreas Zeller Lehrstuhl für Softwaretechnik Universität des Saarlandes, Saarbrücken Welche estfälle auswählen? Ich kann nur eine beschränkte Zahl von Läufen testen welche soll ich wählen? unktionale Verfahren Auswahl nach Eigenschaften der Eingabe Strukturtests Auswahl nach Aufbau des Programms Ziel im Strukturtest: hohen Überdeckungsgrad erreichen estfälle sollen möglichst viele Aspekte der Programmstruktur abdecken (Kontrollfluss, Datenfluss) Anwendung: Zeichen zählen Das Programm zaehlezchn soll Zeichen von der astatur einlesen, bis ein Zeichen erkannt wird, das kein Großbuchstabe ist Die Zahl der eingelesenen Zeichen und Vokale ausgeben $ zaehlezchn Bitte Zeichen eingeben: HALLELUJA! Anzahl Vokale: 4 Anzahl Zeichen: 9 $ _ 1
2 Zeichen zählen Benutzung #include <iostream> #include <limits.h> void ZaehleZchn(int& VokalAnzahl, int& Gesamtzahl); int main() { int AnzahlVokale = 0; int AnzahlZchn = 0; cout << "Bitte Zeichen eingeben: "; ZaehleZchn(AnzahlVokale, AnzahlZchn); cout << "Anzahl Vokale: " << AnzahlVokale << endl; cout << "Anzahl Zeichen: " << AnzahlZchn << endl; } Zeichen zählen Realisierung void ZaehleZchn(int& VokalAnzahl, int& Gesamtzahl) { char Zchn; while (Zchn >= A && Zchn <= Z && Gesamtzahl < IN_MAX) { Gesamtzahl = Gesamtzahl + 1; if (Zchn == A Zchn == E Zchn == I Zchn == O Zchn == U ) { VokalAnzahl = VokalAnzahl + 1; } } } 2
3 Kontrollflussgraph while (Zchn >= 'A' && Zchn <= 'Z' && Gesamtzahl < IN_MAX) n3 Gesamtzahl = Gesamtzahl + 1; n4 n5 if (Zchn == 'A' Zchn == 'E' Zchn == 'I' Zchn == 'O' Zchn == 'U') VokalAnzahl = VokalAnzahl + 1; n6 Einfache Überdeckungsmaße Eine Menge von estfällen kann folgende Kriterien erfüllen: Anweisungsüberdeckung Jeder Knoten im Kontrollflussgraph muss einmal durchlaufen werden (= jede Anweisung wird wenigstens einmal ausgeführt) Zweigüberdeckung Jede Kante im Kontrollflussgraph muss einmal durchlaufen werden; schließt Anweisungsüberdeckung ein Pfadüberdeckung Jeder Pfad im Kontrollflussgraphen muss einmal durchlaufen werden 3
4 Anweisungsüberdeckung (C 0 ) Eingabe: A1 while (Zchn >= 'A' && Zchn <= 'Z' && Gesamtzahl < IN_MAX) n3 Gesamtzahl = Gesamtzahl + 1; n4 if (Zchn == 'A' Zchn == 'E' Zchn == 'I' Zchn == 'O' Zchn == 'U') n5 VokalAnzahl = VokalAnzahl + 1; n6 Zweigüberdeckung (C 1 ) Eingabe: A1 Eingabe: AB1 while (Zchn >= 'A' && Zchn <= 'Z' && Gesamtzahl < IN_MAX) n3 Gesamtzahl = Gesamtzahl + 1; n3 n4 n5 if (Zchn == 'A' Zchn == 'E' Zchn == 'I' Zchn == 'O' Zchn == 'U') VokalAnzahl = VokalAnzahl + 1; n4 n5 n6 n6 Zweig (n4, n6) wird nicht notwendig ausgeführt 4
5 Schwächen der Anweisungüberdeckung Warum reicht Anweisungsüberdeckung nicht aus? Wir betrachten den folgenden Code: x = 1; if (x >= 1) // statt y >= 1 x = x + 1; Hier wird zwar jede Anweisung einmal ausgeführt; die Zweigüberdeckung fordert aber auch die Suche nach einer Alternative (was hier schwerfällt). Anweisungs- und Zweigüberdeckung Anweisungsüberdeckung Notwendiges, aber nicht hinreichendes estkriterium Kann Code finden, der nicht ausführbar ist Als eigenständiges estverfahren nicht geeignet ehleridentifizierungsquote: 18% Zweigüberdeckung gilt als das minimale estkriterium kann nicht ausführbare Programmzweige finden kann häufig durchlaufene Programmzweige finden (Optimierung) ehleridentifikationsquote: 34% Überdeckung messen mit GCOV GCOV (GNU COVerage tool) ist ein Werkzeug, um die Anweisungs- und Zweigüberdeckung von C/C++-Programmen zu messen. Dokumentation: man gcov $ c++ -g -fprofile-arcs -ftest-coverage -o zaehlezchn zaehlezchn.c $./zaehlezchn Bitte Zeichen eingeben: KZ. Anzahl Vokale: 0 Anzahl Zeichen: 3 $ gcov zaehlezchn 93.33% of 15 source lines executed in file zaehlezchn.c Creating zaehlezchn.c.gcov. 5
6 Anweisungsüberdeckung messen void ZaehleZchn(int& VokalAnzahl, int& Gesamtzahl) { 1 char Zchn; 1 4 while (Zchn >= A && Zchn <= Z && Gesamtzahl < IN_MAX) { 3 Gesamtzahl = Gesamtzahl + 1; 3 if (Zchn == A Zchn == E Zchn == I Zchn == O Zchn == U ) { #### VokalAnzahl = VokalAnzahl + 1; } 3 } } Zweigüberdeckung messen $ c++ -g -fprofile-arcs -ftest-coverage -o zaehlezchn zaehlezchn.c $./zaehlezchn Bitte Zeichen eingeben: KZ. Anzahl Vokale: 0 Anzahl Zeichen: 3 $ gcov zaehlezchn 93.33% of 15 source lines executed in file zaehlezchn.c Creating zaehlezchn.c.gcov. $ gcov -b zaehlezchn 93.33% of 15 source lines executed in file zaehlezchn.c 90.91% of 11 branches executed in file zaehlezchn.c 36.36% of 11 branches taken at least once % of 10 calls executed in file zaehlezchn.c Creating zaehlezchn.c.gcov. 6
7 Zweigüberdeckung messen (2) 3 Gesamtzahl = Gesamtzahl + 1; 3 if (Zchn == A Zchn == E Zchn == I Zchn == O Zchn == U ) branch 0 taken = 0% branch 1 taken = 0% branch 2 taken = 0% branch 3 taken = 0% branch 4 taken = 0% branch 5 taken = 100% Branch 04 sind die Einzelbedingungen; Branch 5 ist der else-all. Inkrementelles Messen $./zaehlezchn Bitte Zeichen eingeben: KZ. Anzahl Vokale: 0 Anzahl Zeichen: 3 $ gcov -b zaehlezchn 93.33% of 15 source lines executed in file zaehlezchn.c 36.36% of 11 branches taken at least once Creating zaehlezchn.c.gcov. $./zaehlezchn Bitte Zeichen eingeben: HUGO. Anzahl Vokale: 2 Anzahl Zeichen: 4 $ gcov -b zaehlezchn % of 15 source lines executed in file zaehlezchn.c 54.55% of 11 branches taken at least once in file zaehlezchn.c Creating zaehlezchn.c.gcov. 7
8 Pfadüberdeckung p while (Zchn >= 'A' && Zchn <= 'Z' && Gesamtzahl < IN_MAX) n3 Gesamtzahl = Gesamtzahl + 1; q1 n4 q2 if (Zchn == 'A' Zchn == 'E' Zchn == 'I' Zchn == 'O' Zchn == 'U') n5 VokalAnzahl = VokalAnzahl + 1; n6 r Pfade P = p(q 1 q 2 ) r P = 2 IN_MAX 1 Pfadüberdeckung (2) Pfadüberdeckung mächtigstes an der Kontrollstruktur orientiertes estverfahren Höchste ehleridentifizierungsquote keine praktische Bedeutung, da Durchführbarkeit sehr eingeschränkt 8
9 Strukturierte Verfahren Der Boundary Interior-Pfadtest ist eine schwächere Version des Pfadüberdeckungstests. Idee: Beim est von Schleifen wird auf die Überprüfung von Pfaden verzichtet, die durch mehr als einmalige Schleifenwiederholung erzeugt werden. Verallgemeinerung: Strukturierter Pfadtest Innerste Schleifen werden maximal k-mal ausgeführt Erlaubt die gezielte Überprüfung von Schleifen Überprüft zusätzlich Zweigkombinationen Im Gegensatz zum Pfadüberdeckungstest praktikabel ehleridentifikationsquote: um 65% (Strukturierter Pfadtest) Boundary Interior-Pfadtest p Pfade außerhalb Schleife 1a) Gesamtzahl = IN_MAX pr q1 n3 n4 n5 n6 q2 r Boundary tests: Pfade, die Schleife betreten, jedoch nicht wiederholen 2a) Zchn = A, 1 pq 1 r 2b) Zchn = B, 1 pq 2 r Interior tests: Pfade, die mindestens eine Schleifenwiederholung enthalten 3a) Zchn = E, I, N, * pq 1 q 1 r 3b) Zchn = A, H,! pq 1 q 2 r 3c) Zchn = H, A, + pq 2 q 1 r 3d) Zchn = X, X,, pq 2 q 2 r 9
10 Verfahren im Überblick Pfadüberdeckungstest Strukturierter Pfadtest mehrfacher Bedingungsüberdeckungstest Boundary interior-pfadtest minimal mehrfacher Bedingungsüberdeckungstest Zweigüberdeckungstest einfacher Bedingungsüberdeckungstest Anweisungs-Überdeckungstest A B = A subsumiert B Bedingungsüberdeckung Wir betrachten die Bedingungen aus ZaehleZchn: while (Zchn >= A && Zchn <= Z && Gesamtzahl < IN_MAX) if (Zchn == A Zchn == E Zchn == I Zchn == O Zchn == U ) (A) (B) Die Struktur der Bedingungen wird vom Zweigüberdeckungstest nicht geeignet beachtet Bedingungsüberdeckungstests 10
11 Einfache Bedingungsüberdeckung Ziel: Jede atomare Bedingung muss wenigstens einmal true und false sein. Beispiel: In der Bedingung (B) if (Zchn == A Zchn == E Zchn == I Zchn == O Zchn == U ) sorgt der estfall Zchn = A, E, I, O, U dafür, dass jede atomare Bedingung einmal true und wenigstens einmal false wird. Mehrfach-Bedingungsüberdeckung Die einfache Bedingungsüberdeckung Schließt weder Anweisungsüberdeckung noch Zweigüberdeckung ein als alleinige Anforderung nicht ausreichend Ziel der Mehrfach-Bedingungsüberdeckung: alle Variationen der atomaren Bedingungen bilden! Das klappt aber nicht immer z.b. kann nicht gleichzeitig Zchn == A und Zchn == E gelten. Minimale Mehrfach-Bedingungsüberdeckung Wie einfache Bedingungsüberdeckung, jedoch: Die Gesamt-Bedingung muss wenigstens einmal true und wenigstens einmal false werden. Schließt Zweigüberdeckung (und somit Anweisungsüberdeckung) ein realistischer Kompromiss 11
12 Beispiel Jede atomare Bedingung und jede Gesamt-Bedingung muss wenigstens einmal true und wenigstens einmal false werden. estfall Gesamtzahl Zchn Zchn >= A Zchn <= Z Gesamtzahl < IN_MAX Bedingung (A) Zchn == A Zchn == E Zchn == I Zchn == O Zchn == U Bedingung (B) 1 0 A 1 E 2 I 3 O 4 U 5 B a 3 IN_MAX D Verfahren im Überblick Pfadüberdeckungstest Strukturierter Pfadtest mehrfacher Bedingungsüberdeckungstest Boundary interior-pfadtest minimal mehrfacher Bedingungsüberdeckungstest Zweigüberdeckungstest einfacher Bedingungsüberdeckungstest Anweisungs-Überdeckungstest A B = A subsumiert B 12
13 Wann welches Verfahren wählen? ypischerweise Kombination aus Pfad- und Bedingungsüberdeckung Genügt es, Schleifen 1 zu wiederholen? Wenn ja: boundary interior-est Sonst: strukturierter Pfadtest Genügt es, atomare Bedingungen zu prüfen? Wenn ja: einfache Bedingungsüberdeckung Sonst: minimale Mehrfach-Bedingungsüberdeckung Zwischenbilanz Die Auswahl der estfälle kann anhand des Kontrollflusses wie folgt geschehen: Anweisungsüberdeckung Zweigüberdeckung Pfadüberdeckung (verschiedene Ausprägungen, insbes. strukturierter Pfadtest und Boundary Interior-est) Bedingungsüberdeckung (verschiedene Ausprägungen, insbes. minimale Mehrfach-Bedingungsüberdeckung) Der Überdeckungsgrad gibt an, wieviele Anweisungen / Zweige / Pfade durchlaufen wurden. Datenflussorientierte Verfahren Neben dem Kontrollfluss kann auch der Datenfluss als Grundlage für die Definition von estfällen dienen. Grundidee: Wir betrachten den Datenfluss im Programm, um estziele zu definieren. Variablenzugriffe werden in Klassen eingeteilt ür jede Variable muss ein Programmpfad durchlaufen werden, für den bestimmte Zugriffskriterien zutreffen (def/use-kriterien). 13
14 Def/Use-Kriterien Zugriffe auf Variablen werden unterschieden in Zuweisung (definition, def ) Berechnende Benutzung (computational use, c-use) zur Berechnung von Werten innerhalb eines Ausdrucks Prädikative Benutzung (predicative use, p-use) zur Bildung von Wahrheitswerten in Bedingungen (Prädikaten) Datenflussgraph Der Datenflussgraph ist ein erweiterter Kontrollflussgraph Knoten sind attribuiert mit def und c-use: def (n): Menge der Variablen, die in n definiert werden c-use(n): Menge der Variablen, die in n berechnend benutzt werden Kanten sind attribuiert mit p-use: p-use(n i, n j ): Menge der Variablen, die in der Kante (n i, n j ) prädikativ benutzt werden Es gibt Extra-Knoten für Beginn und Ende eines Sichtbarkeitsbereiches 14
15 Datenflussgraph (2) def(gesamtanzahl) def(vokalanzahl) n_in Import von VokalAnzahl und Gesamtzahl def(zchn) p-use(zchn) p-use(gesamtanzahl) while (Zchn >= A && Zchn <= Z && Gesamtzahl < IN_MAX) c-use(gesamtzahl) def(gesamtzahl) n3 Gesamtzahl = Gesamtzahl + 1; p-use(zchn) c-use(vokalanzahl) def(vokalanzahl) n4 n5 if (Zchn == A Zchn == E Zchn == I Zchn == O Zchn == U ) VokalAnzahl = VokalAnzahl + 1; def(zchn) n6 c-use(vokalanzahl) c-use(gesamtzahl) n_out Export von VokalAnzahl und Gesamtzahl Ein MinMax-Programm Das MinMax-Programm ordnet min und max: void MinMax(int& min, int& max) { if (min > max) { int tmp = max; max = min; min = tmp; } } 15
16 Datenflussgraph MinMax def(min), def(max) n_in Import von min und max p-use(min), p-use(max) if (min > max) def(tmp), c-use(max) def(max), c-use(min) def(min), c-use(tmp) c-use(min), c-use(max) n_out tmp = max; max = min; min = tmp; Export von min und max Definitionen Ein definitionsfreier Pfad bezüglich einer Variablen x ist ein Pfad, in dem x nicht neu definiert wird. def(min), def(max) n_in Import von min und max p-use(min), p-use(max) if (min > max) def(tmp), c-use(max) def(max), c-use(min) def(min), c-use(tmp) c-use(min), c-use(max) n_out tmp = max; max = min; min = tmp; Export von min und max definitionsfreier Pfad bzgl. min 16
17 Definitionen (2) Die Menge dcu(x, n i ) umfasst alle Knoten n j, in denen x c-use(n j ) ist und ein definitionsfreier Pfad bezüglich x von n i nach n j existiert alle berechnenden Benutzungen von x aus n i def(min), def(max) n_in Import von min und max p-use(min), p-use(max) if (min > max) def(tmp), c-use(max) def(max), c-use(min) def(min), c-use(tmp) c-use(min), c-use(max) n_out tmp = max; max = min; min = tmp; Export von min und max dcu(min, n_in) Definitionen (3) Die Menge dpu(x, n i ) umfasst alle Kanten (n j, n k ), in denen x p-use(n j, n k ) ist und ein definitionsfreier Pfad bezüglich x von n i nach (n j, n k ) existiert. alle prädikativen Benutzungen von x aus n i def(min), def(max) n_in Import von min und max p-use(min), p-use(max) if (min > max) def(tmp), c-use(max) def(max), c-use(min) def(min), c-use(tmp) c-use(min), c-use(max) n_out dpu(max, n_in) tmp = max; max = min; min = tmp; Export von min und max 17
18 all defs-kriterium ür jede Definition ( all defs) einer Variablen wird eine Berechnung oder Bedingung getestet ür jeden Knoten n i und jede Variable x def (n i ) muss ein definitionsfreier Pfad zu einem Element von dcu(x, n i ) oder dpu(x, n i ) getestet werden. auch statisch überprüfbar (Datenflussanalyse) umfasst weder Zweig- noch Anweisungsüberdeckung all defs-kriterium (2) def(min), def(max) n_in estpfad n start, n in, n 1, n 2, n out, n final erfüllt all defs-kriterium: p-use(min), p-use(max) def(tmp), c-use(max) def(max), c-use(min) def(min), c-use(tmp) c-use(min), c-use(max) n_out Definition min aus n in wird in n 2 benutzt Definition min aus n 2 wird in n out benutzt max analog all p-uses-kriterium Jede Kombination aus Definition und prädikativer Benutzung wird getestet ür jeden Knoten n i und jede Variable x def (n i ) muss ein definitionsfreier Pfad zu allen Elementen von dpu(x, n i ) getestet werden. umfasst Zweigüberdeckung 18
19 all p-uses-kriterium (2) def(min), def(max) p-use(min), p-use(max) n_in estpfade n start, n in, n 1, n 2, n out, n final n start, n in, n 1, n out, n final erfüllen all p-uses-kriterium: def(tmp), c-use(max) def(max), c-use(min) def(min), c-use(tmp) c-use(min), c-use(max) n_out prädikative Zugriffe auf min sind beide abgedeckt max analog all c-uses-kriterium Jede Kombination aus Definition und berechnender Benutzung wird getestet ür jeden Knoten n i und jede Variable x def (n i ) muss ein definitionsfreier Pfad zu allen Elementen von dcu(x, n i ) getestet werden. umfasst weder Zweig- noch Anweisungsüberdeckung all c-uses-kriterium (2) def(min), def(max) n_in estpfade n start, n in, n 1, n 2, n out, n final n start, n in, n 1, n out, n final erfüllen all c-uses-kriterium: p-use(min), p-use(max) def(tmp), c-use(max) def(max), c-use(min) def(min), c-use(tmp) c-use(min), c-use(max) n_out Definition in n in bedingt est der Pfade nach n 2 und n out Definition in n 2 bedingt est des Pfades nach n out max analog 19
20 Kombinierte Kriterien all c-uses/some p-uses Wie all c-uses, aber: Ist dcu(x, n i ) =, so muss ein definitionsfreier Pfad zu einem Element von dpu(x, n i ) getestet werden. subsumiert all defs und all c-uses-kriterium all p-uses/some c-uses Wie all p-uses, aber: Ist dpu(x, n i ) =, so muss ein definitionsfreier Pfad zu einem Element von dcu(x, n i ) getestet werden. subsumiert all defs und all p-uses-kriterium all-uses-kriterium Jede Kombination aus Definition und Benutzung wird getestet ür jeden Knoten n i und jede Variable x def (n i ) muss ein definitionsfreier Pfad zu allen Elementen von dcu(x, n i ) und dpu(x, n i ) getestet werden. subsumiert all p-uses und all c-uses-kriterium Kriterien im Überblick Pfadüberdeckungstest alle Pfade all uses all c-uses/some p-uses all p-uses/some c-uses all c-uses all defs all p-uses Zweigüberdeckung alle Kanten A B = A subsumiert B Anweisungsüberdeckung alle Knoten 20
21 Zusammenfassung Die Auswahl der estfälle kann anhand der Programmstruktur wie folgt geschehen: Anweisungsüberdeckung Zweigüberdeckung Pfadüberdeckung (verschiedene Ausprägungen, insbes. strukturierter Pfadtest und Boundary Interior-est) Bedingungsüberdeckung (verschiedene Ausprägungen, insbes. minimale Mehrfach-Bedingungsüberdeckung) Datenflussorientierte Verfahren (Def/Use-Kriterien) Der Überdeckungsgrad gibt an, wieviele Anweisungen / Zweige / Pfade durchlaufen wurden. Literatur Lehrbuch der Softwaretechnik, Band 2 (Balzert) Software-Qualität: esten, Analysieren und Verifizieren von Software (P. Liggesmeyer, 2002) 21
0/37. Software-Test. Andreas Zeller. Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken
0/37 Software-est Andreas Zeller Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken Qualitätssicherung 1/37 Wie stellt man sicher, dass die geforderte Qualität erreicht wird? Es genügt nicht,
Qualitä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
Qualitä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?
5 Produktqualität Komponenten: Testende Verfahren 2 [stark gekürzt]
1 Software-Qualitätssicherung 2 Einführung und Überblick LE 1 V Unternehmensmodellierung 5 Produktqualität Komponenten: Testende Verfahren 2 [stark gekürzt] Prof. Dr. Helmut Balzert Lehrstuhl für Software-Technik
Software-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
Ein Werkzeug zur Überdeckungsmessung für kontrollflussbezogene Testverfahren
Ein Werkzeug zur Überdeckungsmessung für kontrollflussbezogene Testverfahren Hendrik Seffler HU Berlin Abschlussvortrag p. 1/25 Was? Entwicklung eines Werkzeugs zur Überdeckungsmessung für kontrollflussbezogene
Software Engineering in der Praxis
Inhalt Nachlese Werkzeuge Software Engineering in der Praxis Praktische Übungen Inhalt Nachlese Werkzeuge Josef Adersberger Marc Spisländer Lehrstuhl für Software Engineering Friedrich-Alexander-Universität
4. Überdeckungstests
4. Überdeckungstests Kontrollflussgraph Anweisungsüberdeckung Pfadüberdeckung einfache Bedingungsüberdeckung minimale Mehrfachüberdeckung Herausforderung Polymorphie Automatische Überdeckungsberechnung
Software Engineering in der Praxis
Software Engineering in der Praxis Praktische Übungen Pinte, Spisländer FAU Erlangen-Nürnberg Strukturelles Testen 1 / 11 Strukturelles Testen Florin Pinte Marc Spisländer Lehrstuhl für Software Engineering
White-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
Technische Universität Berlin SS 2003. [email protected]
Seminar Softwaretechnik Automatisiertes spezifikationsbasiertes Testen von Software Technische Universität Berlin SS 2003 Veranstalter: Betreuer: Seminarthema: Stefan Jänichen Mario Friske Codeabdeckung
Code Coverage mit gcov
Code Coverage mit gcov Seminararbeit zur Veranstaltung Verteilte und parallele Systeme II bei Prof. Dr. Rudolf Berrendorf Von Jan Seidel, Stefan Winarzki Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg,
Kurs 1613 Einführung in die imperative Programmierung Musterlösung zur Nachklausur am
1 Aufgabe 1 Analysiert man das Verfahren anhand des angegebenen Beispiels, ist schnell zu erkennen, dass das erste Element von infeld2 nach outfeld an Index 2 kopiert wird, das zweite den Index 4 bekommt,
Grundlagen der Informatik 5. Kontrollstrukturen II
5. Kontrollstrukturen II Schleifen Sprünge Grundlagen der Informatik (Alex Rempel) 1 Schleifen Schleifen allgemein und in C++ Schleifen (Loops) ermöglichen die Realisierung sich wiederholender Aufgaben
Software Entwicklung 2. Softwaretest
Software Entwicklung 2 Softwaretest Inhalt Testphasen Dynamischer Test Strukturelle, kontrollflussorientierte Verfahren Strukturelle, datenflussorientierte Verfahren Funktionsorientierter Test Literatur
Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 6 Pkt.) a) Erklären
Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 4 Pkt.) Gegeben
if ( Logischer Operator ) { } else { Anweisungen false
if ( Logischer Operator ) { Anweisungen true else { Anweisungen false Bedingte Anweisungen Operatoren verknüpfen Variable zu neuen Ausdrücken, wir unterscheiden Arithmetische Operatoren Berechnung von
Strukturorientierter Softwaretest Erstellung eines Tools zur Überdeckungsmessung
Strukturorientierter Softwaretest Erstellung eines Tools zur Überdeckungsmessung Ronny Treyße & Hendrik Seffler HU Berlin Themenvorstellung p.1/33 Aufgabenstellung Überdeckungstesttool für C++ & Java Das
Methoden 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
Softwaretechnik II. Sommersemester Grundlagen des Softwaretestens II. Stefan Berlik
1 / 65 Softwaretechnik II Sommersemester 2014 Grundlagen des Softwaretestens II Stefan Berlik Fachgruppe Praktische Informatik Fakultät IV, Department Elektrotechnik und Informatik Universität Siegen 24.
Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), 25. Juni 2007 75
Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), 25. Juni 2007 75 10 Qualitätssicherung Nach einer Vorlesung von Prof. Andreas Zeller Lehrstuhl Softwaretechnik, Universität des
Vorkurs Informatik WiSe 16/17
Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 05.10.2016 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2016
Einführung in die Programmierung Wintersemester 2011/12
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Kontrollstrukturen Inhalt Wiederholungen - while
Programmiertechnik 1 FOR-SCHLEIFEN
Programmiertechnik 1 FOR-SCHLEIFEN In diesem Dokument wollen wir uns mit Kontrollstrukturen befassen. Dazu sind im Folgenden einige Übungsaufgaben zu den Themen Schleifen (FOR, WHILE, DO) und Bedingungen
Programmiertechnik 1 FOR-SCHLEIFEN
Programmiertechnik 1 FOR-SCHLEIFEN In diesem Dokument wollen wir uns mit Kontrollstrukturen befassen. Dazu sind im Folgenden einige Übungsaufgaben zu den Themen Schleifen (FOR, WHILE, DO) und Bedingungen
C++ 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
Test-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
7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt
7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Kontrollfragen Rekursion Was bedeutet Rekursion? Geben Sie Beispiele
Lernziele zum Kapitel 8
252 Lernziele zum Kapitel 8 Nach diesem Kapitel sollten Sie 1. verschiedene Verfahren der analytischen Qualitätssicherung kennen und einordnen können, 2. zu einem gegebenen Programm oder Programmteil einen
Verwenden 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,
Vorlesung (WS 2014/15) Prof. Dr. Jan Jürjens
Vorlesung () Prof. Dr. Jan Jürjens TU Dortmund, Fakultät Informatik, Lehrstuhl XIV 2.4: White-Box-Test v. 2.2.25 Einordnung White-Box-Test Modellgetriebene SW-Entwicklung Qualitätsmanagement Testen Grundlagen
4. 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
Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente
Themen Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente Formatierte Eingabe mit cin Die Formatierung der Eingabe ist der Ausgabe sehr ähnlich: Die Flags werden
Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke
Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie
Einführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2017/18 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for
Vorkurs Informatik WiSe 17/18
Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017
Kontrollstrukturen -- Schleifen und Wiederholungen
Kontrollstrukturen -- Schleifen und Wiederholungen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling [email protected] Hochschule Darmstadt Fachbereich Informatik WS 2013/14
Software-Test: Funktionstest
Software-Test: Funktionstest Andreas Zeller Lehrstuhl für Softwaretechnik Universität des Saarlandes, Saarbrücken 2006-02-06 Funktionale Testverfahren Funktionale Testverfahren testen gegen die Spezifikation
Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
Einstieg 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
Angewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der
Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert
Einführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
Annehmende Schleife do while
Annehmende Schleife do while Schleife mit nachfolgender Bedingungsprüfung: annehmende Schleife B S Mit B wird eine Bedingung (logischer Ausdruck) bezeichnet, S ist ein Strukturblock. Zuerst wird S ausgeführt,
Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:
Seite 1 von 8 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 10 Pkt.) a) Geben
Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:
Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 6 Pkt.) a) Geben
Repetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case
Software Engineering für Softwaretechniker (SEfST)
Universität Stuttgart 11.02.2010 Software Engineering für Softwaretechniker (SEfST) - Übung 8: Programmklassen nach Lehman, Test - Matthias Wetzel [email protected] Abteilung Software
Software Engineering. Produktqualität - Dynamische Testverfahren
Software Engineering Produktqualität - Dynamische Testverfahren Die Inhalte der Vorlesung wurden primär auf Basis der jeweils angegebenen Literatur erstellt. Darüber hinaus finden sich ausgewählte Beispiele
Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 8 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert
Klausur: Informatik, am 11. Juli 2013 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:
Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 15 Pkt.) Was liefert
Einführung in die Programmierung Wintersemester 2008/09
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Funktionen Inhalt Funktionen - mit / ohne Parameter
Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.
Gedächtnis Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet Hauptspeicher 38265 Telefon CPU Gedächtnis Vorlesender Zugriff Verarbeitungseinheit
Kontrollflußorientierte Testverfahren. Gliederung
Kontrollflußorientierte Testverfahren Alexander Steinhöfer, Christian Grafe WS0607 / VInf5 Gliederung 1. Definition und Theorie 2. Kontrollflussgraphen 3. Arten 1. Anweisungsüberdeckungstest (C 0 ) 2.
Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert
4 Schleifen und Dateien
4 Schleifen und Dateien 4.1 Übungsaufgabe 4.1.1 Aufgabe 1 Schreiben Sie drei C++ Programme: pword_for.cxx, pword_while.cxx, pword_do.cxx. Die Programme sollen den Benutzer höchstens 5 Mal nach einem Passwort
Elementare 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)
Grundlagen der Informatik 4. Kontrollstrukturen I
4. Kontrollstrukturen I Anweisungen und Blöcke Grundlagen der Informatik (Alex Rempel) 1 Anweisungen und Blöcke Anweisungen ("statements") Immer mit Semikolon abzuschließen "Leere" Anweisung besteht aus
Einstieg in die Informatik mit Java
1 / 47 Einstieg in die Informatik mit Java Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 47 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung,
5. Elementare Befehle und Struktogramme
5. Elementare Befehle und Struktogramme Programmablauf Beschreibung des Programmablaufs mittel grafischer Symbole Beispiel : Flussdiagramme ja nein Besser : Struktogramme Dr. Norbert Spangler / Grundlagen
zu 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
C++ OpenCppCoverage. Detlef Wilkening
http://www.wilkening-online.de Seite 1 / 52 C++ OpenCppCoverage Detlef Wilkening 10.11.2016 http://www.wilkening-online.de Seite 2 / 52 Warum überhaupt dieser Vortrag? Wir waren mal wieder in einer Gruppe
Statische Codeanalyse
Statische Codeanalyse SQMT WS 17/18 Pierre Kurzer, Serkan Topaloglu, Sebastian Voigt Gliederung Einführung: Was ist Statische Codeanalyse? Was kann alles überprüft werden und wofür? Was konnte Lint? Welche
Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik
Seite 1 von 8 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 15 Pkt.) Für eine
C++ Teil Schleifen. Man kann bestimme Anweisungen in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen.
C++ Teil 3 3.3 Schleifen Man kann bestimme en in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen. for-schleife for-schleife while-schleife do-while-schleife for ( Ausdruck1;
Peter Liggesmeyer. Software-Qualität. Testen, Analysieren und Verifizieren von Software
Peter Liggesmeyer Software-Qualität Testen, Analysieren und Verifizieren von Software Spektrum Akademischer Verlag Heidelberg» Berlin ( 1 Einführung 1 1.1 Motivation 2 1.2 Terminologie und Begriffsdefinitionen
Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: F Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 15 Pkt.) Was liefert
8. Metriken. Idee von Maßsystemen Halstead live Variables Variablenspanne McCabe-Zahl LCOM*
8. Metriken Idee von Maßsystemen Halstead live Variables Variablenspanne McCabe-Zahl LCOM* Stephan Kleuker 371 Nutzung von Maßsystemen bisherigen Prüfverfahren sind aufwändig, besteht Wunsch, schneller
FACHHOCHSCHULE 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
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 5. Kontrollstrukturen Allgemein Kontrollstrukturen dienen zur Steuerung des Programmablaufs. (Bemerkung: C und C++ besitzen die selben Kontrollstrukturen.)
1.8.5 Wiederholungen. Beispiele Unendliche Schleife: 1.8 Kontrollstrukturen 75. ( Bedingung ) AnweisungOderBlock. ja Anweisung. Bedingung erfüllt?
1.8 Kontrollstrukturen 75 1.8.5 Wiederholungen Häufig muss die gleiche Teilaufgabe oft wiederholt werden. Denken Sie nur an die Summation von Tabellenspalten in der Buchführung oder an das Suchen einer
Informatik. Wiederholung Felder (Arrays), string. Vorlesung
Informatik Vorlesung 04 Wiederholung Felder (Arrays), string 19. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Ein C++ Programm: Wiederholung #include
Aktivitätsanalyse (Liveness Analysis)
Aktivitätsanalyse (Liveness Analysis) Compilerbau Aktivitätsanalyse (Liveness Analysis) 220 Aktivitätsanalyse (Liveness Analysis) Für eine gute Registerverteilung müssen wir an jedem Programmpunkt wissen,
Grundlagen der Informatik 2. Typen
Grundlagen der Informatik 2. Typen Speicher, Speicherbedarf Ein-/Ausgabe Grundlagen der Informatik (Alex Rempel) 1 Wiederholung // root calculation #include #include using namespace
Vorlesung Programmieren
Vorlesung Programmieren 3. Kontrollstrukturen 04.11.2015 Prof. Dr. Ralf H. Reussner Version 1.1 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),
Javakurs für Anfänger
Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von
6. Tutorium zu Softwaretechnik I
6. Tutorium zu Softwaretechnik I Parallelität und Testen Michael Hoff 01.07.2014 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum
Einführung in die Programmierung Wintersemester 2016/17
Einführung in die Programmierung Wintersemester 2016/17 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Gültigkeitsbereiche Inhalt Lokale und globale
SE2-6. Übung Johannes Bürdek
SE2-6. Übung 11.12.2014 Johannes Bürdek [email protected] Fragen und Support: [email protected] oder ins Forum: https://moodle.tu-darmstadt.de/mod/forum/view.php?id=56674 ES Real-Time
Klausur in Programmieren
Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Sommer 2009, 16. Juli 2009 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name: Matrikelnr.:
