Stefan Schmerler - Softwaretest in der Praxis

Здесь есть возможность читать онлайн «Stefan Schmerler - Softwaretest in der Praxis» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: unrecognised, на немецком языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Softwaretest in der Praxis: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Softwaretest in der Praxis»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Dieses Buch ist als praktische Hilfestellung für all jene gedacht, die sich als Entwickler, Manager oder Studierende mit der Fragestellung des effizien­ten Testens von Software auseinandersetzen. Anhand vieler konkreter Beispiele aus der Praxis und fast 400 Illustratio­nen wird leicht verständlich vermittelt, auf welche Weise Software heute getestet wird und welche Werkzeuge und Testsysteme dabei zum Einsatz kommen. Ein zentraler Punkt dieses Buchs ist die Testmethodik – das Wie macht die Musik! Bereits durch Beachtung einfacher Grundregeln bei der Testfallermittlung kann mit geringeren Aufwänden in kürzerer Zeit der Reifegrad von Software deutlich über das Maß gesteigert werden als dies beim unsystematische (und leider oft anzutreffenden) «Drauflos-Testen» der Fall wäre.
Konkret adressiert das Buch folgende Fragestellungen: Welche Testtechnologie soll eingesetzt werden für mein spezifisches Problem?
Wie lange und mit welchem Aufwand sollte ich testen, um guten Gewissens (was auch immer das beim Testen heißen mag) die Testphase abbrechen zu können? Wie hoch ist das dann noch verbleibende Risiko, wie fehleranfällig ist mein System dann noch? Gibt es eine Metrik für Reifegrad und Qualität von Software, die einfach und schnell anzuwenden ist?
Für die häufigsten Testprobleme werden Schritt-für-Schritt-Anleitungen hinsichtlich Testfallermittlung vorgeschlagen, um mit minimalem Aufwand die größtmögliche Absicherungstiefe zu erzielen. Der Leitfaden kann unmittelbar eingesetzt werden in fast jedem Softwareentwicklungsprojekt. Neben dem klassischen Softwaretest (dynamische und statische Test­verfahren, Test von Echtzeitsystemen, modellbasierter Test u.a.), werden wichtige Aspekte der Absicherung eingebetteter Software am Beispiel der Automobilelektronik detailliert erläutert, z. B. Hardware-, Software-, Mo­del- und Vehicle-in-the-Loop-Technologie, virtuelle Integration bis hin zum Test von Fahrerassistenzsystemen und der Software für Autonomes Fahren.

Softwaretest in der Praxis — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Softwaretest in der Praxis», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Abb. 3-4: Steckbrief Unit-Test

3.4.2 Komponententest

Der nächste Integrationsschritt in der klassischen Softwareentwicklung ist die Bildung von Softwaremodulen aus einzelnen Funktionen oder Methoden. Die Absicherung dieses Schritts ist Gegenstand des Komponententests. Testziel ist also das Zusammenspiel der Funktionen oder Methoden eines Moduls.

Fehler, die im Komponenten-

test gefunden werden

Typische Defects, die beim funktionalen Komponententest gefunden werden, sind Berechnungsfehler oder fehlende bzw. fälschlicherweise durchlaufene Programmpfade durch fehlerhafte Zweigprädikate. Man spricht von algorithmischem und logischem Absicherungsumfang.

Robustheitstests und Negativtests

Auch der Test auf Robustheit ist ein weiterer wichtiger Aspekt des Komponententests. Robustheitstests müssen nicht auf Integrations- oder Systemtestebene erfolgen und sollten, dem Grundsatz kleinstmöglicher Teststufen folgend, auf Komponentenebene verortet werden. Es werden nach der Spezifikation unzulässige oder nicht vorgesehene Testdaten eingesetzt, um eine korrekte Ausnahmebehandlung (Exception Handling) zu testen. Derartige Testfälle werden auch Negativtests genannt. Fehlen solche Ausnahmebehandlungen, treten möglicherweise Wertebereichsfehler und unter Umständen Programmabstürze auf.

über die Hälfte des Codes für die Robust-

heit und Ausnahmebehandlung

Diese Ausnahmebehandlung im Testobjekt kann, verglichen mit dem eigentlichen Funktionscode, durchaus umfangreich werden. In der Praxis dienen nicht selten über 50 % des Programmcodes der Behandlung von Ausnahmesituationen und damit der Robustheit.

nichtfunktionale Eigenschaften

Neben Funktionalität und Robustheit sind im Komponententest auch Qualitätseigenschaften der Komponente wie Effizienz, Performance und Wartbarkeit zu prüfen, die auf höheren Teststufen nicht mehr oder nur mit erhöhtem Aufwand getestet werden könnten. Die Messung von Speicherverbrauch oder Reaktionszeit gehört zum Standardprogramm einer Komponententestsuite.

Komponententest prüft die

inneren Qualitätsmerkmale.

Bei dieser Gelegenheit kann man auch einen Blick auf die »inneren Werte« des Codes, z. B. seine Wartbarkeit, werfen. Wie leicht oder schwer wird es einer anderen Person einmal fallen, den Code zu ändern, zu erweitern oder überhaupt erst einmal zu verstehen? Prüfaspekte, die hier im Vordergrund stehen, sind Modularität, Kommentierung, Codestruktur, die Einhaltung von Architektur- oder Codierrichtlinien sowie die Verständlichkeit und Aktualität der Dokumentation.

Möglichkeit des White-Box-Test

Da Komponententests typische Entwicklertests sind, liegt in aller Regel Zugang zum Quellcode vor, was den Komponententest zum White-Box-Test macht, d. h. die Kenntnis der Programmstrukturen ausnutzen lässt. Der Tester kann Testfälle mithilfe seines Wissens über komponenteninterne Codestrukturen, Methoden oder Variablen entwickeln. Durch Werkzeuge wie Debugger kann der Zustand der Komponente nicht nur beobachtet, sondern auch manipuliert werden. Dies ist besonders bei Robustheitstests von besonderem Nutzen.

oft genutzt: Black-Box-Test

Trotz der Möglichkeit von White-Box-Tests werden in der Praxis viele Komponententests nur als Black-Box-Verfahren durchgeführt, d. h. im Gegensatz zum White-Box-Test nur durch Beobachtung und Stimulation der äußeren Schnittstelle des Testobjekts. Dies kann dadurch erklärt werden, dass Softwaresysteme oft aus Tausenden von Komponenten bestehen, die erst in einer höheren Aggregationsstufe sinnvoll und praktikabel einem Komponententest unterzogen werden können. Diese Aggregationseinheiten sind dann aber bereits zu groß, um sich mit vertretbarem Aufwand beim Komponententest auf Codeebene bewegen zu können.

Test-First-Ansatz und

testgetriebene Entwicklung

Ein häufig zum Einsatz kommender Ansatz für Komponententests ist es, zuerst die Tests zu erstellen und zu automatisieren und dann erst mit der Implementierung der Komponente zu beginnen. Man spricht vom Test-First-Ansatz. Dabei ist das Vorgehen stark iterativ. Der Code wird mit den vorhandenen Testfällen überprüft und sukzessive in kleinen Schritten verbessert, bis die Tests, die nach jeder Änderung im Code automatisiert durchgeführt werden, fehlerfrei durchlaufen werden. Man bezeichnet dieses Vorgehen aus offensichtlichen Gründen auch als testgetriebene Entwicklung. Auch Negativtests können auf diese Weise vor Implementierungsbeginn eingebunden werden.

Spezifika in der Automobilelektronik

Unter Komponententest versteht man im Kontext Automobilelektronik auch den Test einzelner Steuergeräte eines Steuergeräteverbunds. Dies ist der Test eines Steuergeräts oder der entsprechenden Software stand-alone, aber durchaus mit simulierter Umgebung, z. B. indem andere Komponenten (zumindest in der Kommunikation) simuliert werden. Dieses Vorgehen wird als Restbussimulation bezeichnet. Ohne eine höchst realistische Stimulation, die auch spezifikationsgerecht auf Ausgaben der zu testenden Komponenten reagiert, würde der Test aufgrund der permanent stattfindenden Plausibilitätsprüfungen der Eingangswerte an den Steuergeräten mit Eintrag in den Fehlerspeicher abgebrochen werden. Das Steuergerät würde also eine Fehlerroutine einleiten, die weiteres Testen verhindert.

Komponententest ist notwendig,

aber nicht hinreichend.

Ein erfolgreicher Komponententest ist eine notwendige, aber keine hinreichende Bedingung für den Integrationserfolg. Viele Auffälligkeiten stellen sich erst im Verbund ein. Im Bereich des Netzwerkmanagements, bei spezifischen Protokollen wie Service Discovery oder bei im Verbund dargestellten komplexen Funktionen stößt der Komponententest an seine Grenzen. Ein sich anschließender Integrationstest ist unbedingt erforderlich.

Abb 35 Steckbrief Komponententest in der klassischen SWEntwicklung 343 - фото 66

Abb. 3-5: Steckbrief Komponententest in der klassischen SW-Entwicklung

3.4.3 Integrationstest

Softwareintegration

In der klassischen Softwareentwicklung überprüft der Integrationstest, aufbauend auf dem Komponententest, das Zusammenspiel der Komponenten bzw. Funktionen oder Klassen. Gruppen dieser Komponenten werden zunächst von Testern oder Integrationsteams zu größeren Teilsystemen verbunden. Diesen Vorgang bezeichnet man als Softwareintegration.

Integrationstest

Anschließend kann getestet werden, ob das Zusammenspiel der integrierten Komponenten untereinander spezifikationskonform erfolgt. Dieser Test wird als Integrationstest bezeichnet. Er hat zum Ziel, Fehlerzustände in Schnittstellen und im Zusammenspiel integrierter Komponenten zu finden.

Integrationstest setzt

Komponententest voraus.

Wichtig für einen effizienten und erfolgreichen Integrationstest sind im Vorfeld erfolgte Komponententests. Auch bei diesen Tests können Schnittstellenfehler der Komponenten unerkannt bleiben – schon aus diesem Grunde ist ein Integrationstest unbedingt erforderlich. Ein übergeordneter funktionaler Test wäre auf Ebene des Komponententests zudem in keiner Weise leistbar.

Wiederverwendung der Test-

treiber des Komponententests

Auch beim Integrationstest werden Testtreiber benötigt, die die Testobjekte mit Testdaten versorgen und deren Ergebnisse aufnehmen und weiterverarbeiten bzw. protokollieren. Da die Testobjekte Systeme aus zusammengesetzten Komponenten sind, die keine anderen Schnittstellen nach außen aufweisen als ihre Einzelkomponenten, können vorhandene Testtreiber des Komponententests beim Integrationstest wiederverwendet werden.

Systemintegrationstest

Auch die Schnittstellen zur Systemumgebung sind Gegenstand von Integration und Test. Werden Schnittstellen zu (aus Sicht des SUT) externen Softwaresystemen – oder gar zur Hardware – getestet, spricht man von Systemintegrationstest. Er erfolgt nach dem Systemtest.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Softwaretest in der Praxis»

Представляем Вашему вниманию похожие книги на «Softwaretest in der Praxis» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Softwaretest in der Praxis»

Обсуждение, отзывы о книге «Softwaretest in der Praxis» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x