Lecture, Prof. Dr.-Ing. M. Heiner, WS 2021/2022
In case of demand, this course will be given in English.
Module
11885 Software Testing
12408 Testen von Software
Please register via Moodle, if you want to participate in the last round of this course.
latest update: February 11, 2022, at 11:01 AM
Target group
Summary
Objectives
Preconditions
Organisation
About the exercises
Assessment criteria
References
Table of Contents - progress line
Materials - progress line
Exercises
According to the General Examination and Study Regulations, students have to register for modules (without a limited number of participants) during the first 3 weeks of the lecture period of each semester. You can withdraw your registration until one week before beginning of the examination period in which the examination is offered for the first time. Both steps are handled via the Online Portal. Please note, if you registered for a module, you are automatically registered for the corresponding exam.
The course consists of two blocks of Lectures and one block Exercise per week.
The assessment of this course (to obtain the credits) comprises two parts:
(1) Participation in the exercises accompanying the course AND
(2) Examination at the end of the course.
Both criteria have to be passed.
The exercises will be in seminar style, where students will take turns in presenting software test tools.
A successful participation in the exercises requires a critical assessment, presentation and short documentation (data sheet) of TWO software test tools, as well as active participation in all exercises. Allocation of the software test tools to be presented is done in the first exercise (2nd teaching week).
A written exam is marked as "passed", if at least 50 % of the maximal amount of points have been obtained. The grading follows the usual grading scheme. No auxiliary means are allowed during a written exam; this also excludes the use of mobiles. Dictionaries are provided on request. Duration of the written exam: 2h.
An oral exam comprises two parts: 1h preparation time + 1h oral exam. No auxiliary means are allowed during the whole time; this also excludes the use of mobiles. Dictionaries are provided on request. An oral exam is evaluated as "passed", if at least 50 % of the expected solutions are found. The grading follows the usual grading scheme.
The decision among written or oral examination will be taken at the begin of the semester (depending on the amount of participants).
A credit corresponds to 30 working hours (see, e.g., Bachelor study regulation, §7), yielding the following calculation:
A course with 8 credits = 240 working hours; assuming 16 weeks (15 weeks lecturing + 1 week exam period) makes 15 working hours per week! Of those 15 hours, we have 4.5 of so-called contact hours, which leaves 10.5 hours per week to deepen the understanding of the lectures and preparing the solutions for the homework.
This calculation of expected work load has been taken into consideration when compiling the amount of material covered in the course and the design of the homework assignments.
Remark: all keywords given below represent exam-related aspects.
sw quality management, basic terminology; validation vs testing - an overview;
basic ideas, pros/cons:
program proofs: logical reasoning over assertions (pre/post conditions), Hoare formulas;
model checking, temporale logics;
basic ideas, pros/cons;
variants: Fagan inspection, walkthrough, desktop testing, peer-rating, reviews;
typical examples of test criteria (checklists);
demarcation from static analysis;
control structure based testing: control structure graphs for sequential programs, Petri nets for concurrent programs;
coverage measures: node/branch/path coverage;
several condition coverages: simple/multiple/minimal multiple condition coverage, MC/DC;
code instrumentation for coverage measures;
data flow based testing: defs/uses techniques;
basic techniques:
equivalence classes, boundary values, error guessing;
model-based techniques:
automata, syntax diagrams and their coverage with Euler paths;
cause/effect graphs and their evaluation by help of Petri net T-invariants;
the new challenges: (data encapsulation), inheritance, polymorphy and dynamic binding;
class testing approaches: class testing driver, build-in testing, assertion testing,
state testing;
class modality and its influence on the testing approach;
testing of inheritance hierarchies, design/testing by contract, testing of polymorph operations;
three problems: complexity of the state space, probe effect, non-determinism;
dedicated approaches/tools: (1) Instant Replay, (2) Verifsoft, (3) Java Replay, (4) Java Milestone/Rollback;
comparison with static analysis techniques;
--------------------- progress line --------------------- progress line ---------------------
four simple criteria when to stop testing: mutation testing, fault injection method, testing by two independent teams, Jelinsky-Moranda method;
Integrationsteststrategien: Bing-Bang, Backbone, Top-down, Bottom-up, Jo-Jo, Sandwich;
Systemtest, Ziele:: Funktion, Leistung, Benutzbarkeit, Sicherheit, Interoperabilität, Installation, Wiederinbetriebnahme; Abnahmetest;
DIN EN ISO 9000, Normen zum Qualitätsmanagement;
DIN EN ISO 9001, Qualitätsmanagementsysteme, Anforderungen
The green line indicates the current progress of the lectures. Materials above the green line are released, materials below the green line are preliminary information possibly subject to changes.
1. Introduction
2. Program verification
Hoare logic [wikipedia.org]
Model checking
for more Petri net examples see
related tools
3. Static Testing (Human Testing)
checklists, some examples
4. White Box Testing
running example
5. Black Box Testing
cause effect graphing using Petri nets techniques slides
Petri nets
FSM-based testing
6. Testing of object-oriented software
demo oo programm (slides, Rauh) (in German)
challenges of oo testing (slides)
class contracts (slides, Santen) (in German)
FSM example (slides, Liggesmeyer) (in German)
(non/uni/quasi) modal classes (slides, Santen) (in German)
acount ex - a modal class (Figures 10.32-10.34, Beizer)
testing of polymorph operations (slides, Santen) (in German)
7. Testing of concurrent software
countCharSystem
Java examples
on the influence of time on system behaviour
VeriSoft - the approach, download
lazy state space exploration - stubborn sets
Java Pathfinder - example for race condition
8. Exam prep's
Riedemann:
--------------------- progress line --------------------- progress line ---------------------