WirtschaftlichSoftwareTestenMatthias Kraaz                 11. Oktober 2012                 Matthias Kraaz                ...
Die Herausforderung                                                  Keine Fehler übersehen                               ...
Wie?•      Teststufen einführen•      (System-) Tests automatisieren•      Design for Testability einfordern•      Tests n...
Teststufen einführen!Vorteile von Komponenten- und Integrationstests•      Weniger Aufwand pro Test•      Hohe Testtiefe b...
Teststufen einführen!Nachteile von Komponenten- und Integrationstests•      Infrastruktur erforderlich•      Automatisieru...
Teststufen einführen!                                                    Budget-Verteilung und Testtiefe                  ...
Teststufen einführen!Die Test-Pyramide                                                     Systemtests                    ...
(System-)Tests automatisieren!Vorteile•      Wiederholungen werden wesentlich günstiger•      Regelmäßig aktuelle Ergebnis...
ROI von TestautomatisierungEingangsdaten für Berechnung:•      Kosten für manuelle Tests       – Erstellung der Testfallsp...
ROI von TestautomatisierungPraxisbeispiel                                                       Kosten nach Jahren     1,4...
Automatisierungskosten senken  durch Design for testability                             © Zühlke 2012
Point of Control                       Elektronik                             SoftwarePoint of Observation
Point of Control                   Elektronik                         Software        Point of Observation
Point of ControlElektronik      Software    Point of Observation
Point of ControlElektronik      Software             Point of Observation
Point of ControlElektronik      Software             Point of Observation
Point of ControlElektronik      Software             Point of Observation
Testling   Signal-Adaption   Zum Test-System 
Liefern Sie aus,was Sie getestet haben.                          © Zühlke 2012
Automatisierung von KomponententestsWas macht es schwierig:•      Innerer Zustand                                         ...
Automatisierung von Integrationstests                                                  Software               ElektronikWi...
Automatisierte VerifizierungstestsVerifizierungstests laufen automatisiert während Entwicklung•      Vorschau auf Verifizi...
Tests nicht mit der Gießkanne verteilen!Fokus auf•      Sicherheitskritische …•      Wichtige …•      Komplexe …•      Neu...
Statische Tests durchführen!                       Statische   Reviews                       Analyse                      ...
So!•      Teststufen einführen•      (System-)Tests automatisieren•      Design for Testability einfordern•      Tests nic...
DANKEKontakt: matthias.kraaz@zuehlke.com
Nächste SlideShare
Wird geladen in …5
×

Wirtschaftlich Software testen - Electronics goes Medical 2012

665 Aufrufe

Veröffentlicht am

Oftmals bleiben viele Möglichkeiten, die Effizienz und Effektivität des Testprozesses zu steigern, ungenutzt.
Mit dem Testen früh beginnen: es gibt verschiedene Möglichkeiten, früher als bisher mit dem Testen zu beginnen. Je früher Fehler gefunden werden, desto günstiger ist die Behebung. Das hat auch Auswirkungen auf die Kosten für das Testen. Aber wie geht das?
Bestimmte Testaktivitäten sollten noch früher beginnen: beispielsweise kann durch eine frühzeitige Einflussnahme auf die Testbarkeit der Architektur der Testaufwand massiv gesenkt werden. Doch wie sieht eine testbare Architektur aus?
Dynamische Tests und Reviews sollten beileibe nicht die einzige Methode zur analytischen Qualitätssicherung sein. Was gibt es noch?
Auch ein kleiner Ausblick auf die konstruktive Qualitätssicherung soll gewagt werden.
Was lernen die Zuhörer in dem Vortrag:
Methoden des modernen Software-Testens und der modernen Software-Entwicklung, um das Testen von Software effizienter und effektiver zu gestalten, also mit dem gleichen oder weniger Budget bessere Software-Qualität zu erreichen.

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
665
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
3
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie
  • Wenn Sie hier sitzen, gehe ich davon, dass Sie zumindest einen Teil des hier dargestellten Anforderungsdrucks verspüren.
  • Ich werde Ihnen einige erfolgreich in Projekten erprobte Maßnahmen vorstellen, um diesen Anforderungen gerecht zu werden.
  • Lassen Sie Systemtests nicht Ihr einziges Mittel sein.Machen Sie Gebrauch von Komponenten- und Integrationstests als Bestandteil Ihrer Test-Strategie.
  • Systemtests habe auch ihre Vorteile.Systemtests müssen trotzdem sein.
  • Wenn das Budget nicht reicht und man zu wenig Systemtests hat, braucht man über andere Teststufen nicht nachdenken.Wenn das Budget aber reicht, kann man die Testtiefe überproportional steigern, indem man etwas von dem Budget in Komponenten- und Integrationstests investiert.
  • Untere Teststufen bilden Fundament der oberen Teststufen.Nach unten hin sinkt der Aufwand pro Test und steigt die Anzahl der Tests.Obere Teststufen prüfen stichprobenartig Ergebnisse der unteren Teststufen, haben aber prinzipiell anderen Fokus als untere Teststufe.Komponententests prüfen Verhalten einzelner Komponente, finden eher lokale Fehler in der Komponente.Integrationstests prüfen Zusammenspiel der Komponente, finden eher Schnittstellenprobleme.Durchaus realistisch mehrere Integrationsstufen zu haben.Systemtest ist im Prinzip die finale Integrationsstufe.
  • Wir ziehen die hier die Anzahl von Testläufen heran, die ohne Automatisierung durchgeführt werden würden.Wir berechnen daherden minimalen ROI der Automatisierung – das spart man auf jeden Fall durch die Automatisierung.Manche ziehen stattdessen die Anzahl der automatisierten Durchführungen heran.Das übersteigert den Nutzen der Automatisierung.Andererseits sind viele Vorteile der Automatisierung bei dieser Berechnung nicht eingepreist.Diese Vorteile sind auch sehr schwierig zu quantifizieren oder vorherzusagen.
  • Gerade die Automatisierung von Systemtests kann schwierig und teuer sein.Design forTestability – ein Begriff aus Elektronikentwicklung – kann Automatisierungskosten senken.
  • Wie kann man Systemtests automatisieren?Ganz außen an die echten Systemschnittstellen ranVorteile:Wir testen die Mechanik und gesamte Elektronik immer mit.Keinerlei Änderung am TestlingNachteile:Langsam, aufwendig und fehleranfällig.
  • Wie kann man Systemtests automatisieren?An die Signalleitungen gehenVorteile:Viel schneller und zuverlässiger.Nachteile:Testinstrumente beschaffen (aus der Testständen für funktionale Tests „ausleihen“).Simulation des Verhaltens der Peripherie kann ziemlich kompliziert sein.Elektronik muss Zugang ermöglichen (Leiterbahnen nicht im x-ten Layer).Eventuell bekommen die Systemtests den Charakter von Integrationstests. Ihre Aussagekraft muss plausibilisiert werden, zum Beispiel durch manuelle Systemtests oder Vergleich der simulierten mit der echten Stimulation usw.
  • Wie kann man Systemtests automatisieren?Treiber oder so mit Testschnittstelle patchenVorteile:Kein Ärger mit der Elektronik.Nachteile:Man braucht natürlich auch Infrastruktur zur Kommunikation mit dem Testling.Man testet nicht wirklich das was man ausliefern will.Geänderte Komponenten müssen parallel gepflegt werden.
  • Wie kann man Systemtests automatisieren?DfT – an vorhandenen Kommunikationskanälen („Testpunkten“)zwischen Treibern und Rest der Software angreifenVorteile:Software wird ohne Änderungen getestet.Nachteile:Nur mit DfT seitens der Softwaremachbar.Und natürlich auch hier Infrastruktur zur Kommunikation mit dem Testling nötig.
  • Wie kann man Systemtests automatisieren?Zusätzliche „Testpunkte“ inmitten der SoftwareVorteile:Schneller, weil Abkürzungen gegangen werden können.Schneller, weil Fehlerzustände frühzeitig entdeckt werden, nicht erst bei Fehlerwirkung.Nachteile:Tests brechen häufiger.
  • Wie kann man Systemtests automatisieren?In der Praxis wird man kombinieren.
  • Wie kann man Systemtests automatisieren?So sieht‘s dann in Echt aus.
  • Test-Schnittstellen versperren, aber drin lassenGenau das ausliefern, was die ganze Zeit getestet wurdeAußerdem will man die finale Version ja vielleicht auch noch testen
  • Die Automatisierung von Integrationstests ist eine Mischung der Herausforderungen der Komponentests und Systemtests je nachdem wie viel Software und Elektronik an der Integrationsstufe beteiligt ist.Man kann natürlich mehrere Integrationsstufen haben an denen unterschiedlich viel Software und Elektronik beteiligt ist.
  • Die Entwicklung kann die Verifizierungstests automatisieren unabhängig davon, ob die IV&V die Verifizierungstests manuell oder automatisiert durchführt.Damit hat die Entwicklung regelmäßig eine Vorschau das Verifizierungsergebnis minus nicht automatisierbarer Verifizierungstests.Bei einem roten Verifizierungstests droht nämlich im Allgemeinen nach der Fehlerbehebung eine vollständige Wiederholung statt wie während der Entwicklung üblich einem partiellem Regressionstest.Das Resultat ist ruhiger Schlaf für das Entwicklungsteam weitgehend ohne Angst vor einem Durchfallen bei der Verifizierung.Die IV&V kann die Verifizierung mit automatisierten Verifizierungstests durchführen.Gründe dafür können der Zeitdruck am Ende der Entwicklung oder aber auch die Kosten für Wiederholungen bei Fehlschlägen der Verifizierung oder bei Aktualisierungen der Software sein.Dazu kann die von der Entwicklung produzierte Test-Infrastruktur wiederverwendet werden.Voraussetzung ist aber meist eine Prüfmittel-Validierung der Test-Infrastruktur als.Diese Validierung kann erleichtert werden, indem beim Entwurf der Test-Infrastruktur eine separate Verwendbarkeit und Validierbarkeit der als Prüfmittel eingestuften Teile der Test-Infrastruktur sichergestellt wird.Zudem muss auf den geänderten Fokus „Test toverify“ während der Verifizierung statt „testto kill“ während der Entwicklung geachtet werden.
  • Statische Tests steigern die Vorteile von Komponenten- und Integrationstests nochmal:Früher machbarGünstiger in der DurchführungFehlerursache einfacher zu lokalisieren
  • Wirtschaftlich Software testen - Electronics goes Medical 2012

    1. 1. WirtschaftlichSoftwareTestenMatthias Kraaz 11. Oktober 2012 Matthias Kraaz © Zühlke 2012
    2. 2. Die Herausforderung Keine Fehler übersehen Bugs schnell finden Verifikation auf Anhieb bestehen Knappe Zeit Knappes Budget Änderungen in letzter SekundeWirtschaftlich Software Testen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    3. 3. Wie?• Teststufen einführen• (System-) Tests automatisieren• Design for Testability einfordern• Tests nicht mit der Gießkanne verteilen• Statische TestsWirtschaftlich Software Testen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    4. 4. Teststufen einführen!Vorteile von Komponenten- und Integrationstests• Weniger Aufwand pro Test• Hohe Testtiefe bequem erreichbar – Hohe Überdeckung von Parametern (Kombinationen, Äquivalenzklassen, Grenzwerte) – Hohe Überdeckung von Zustandsmaschinen – Robustheit-Tests• Früher durchführbar• Häufiger durchführbar• Fehlerursache leichter zu lokalisieren• Leichter automatisierbarWirtschaftlich Software Testen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    5. 5. Teststufen einführen!Nachteile von Komponenten- und Integrationstests• Infrastruktur erforderlich• Automatisierung fast unausweichlich• Aussagekraft muss von oberer Teststufe überprüft werden• Grundstock von Systemtests muss seinWirtschaftlich Software Testen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    6. 6. Teststufen einführen! Budget-Verteilung und Testtiefe Untere Teststufen Systemtests Testtiefe Zu wenig Budget Nur Systemtests TestpyramideWirtschaftlich Software Testen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    7. 7. Teststufen einführen!Die Test-Pyramide Systemtests Integrationstests KomponententestsWirtschaftlich Software Testen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    8. 8. (System-)Tests automatisieren!Vorteile• Wiederholungen werden wesentlich günstiger• Regelmäßig aktuelle Ergebnisse• Vorschau auf VerifikationsergebnisInvestition• Infrastruktur• Erstellung und Pflege der Testskripte• Reduzierbar durch Design for TestabilityWirtschaftlich Software Testen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    9. 9. ROI von TestautomatisierungEingangsdaten für Berechnung:• Kosten für manuelle Tests – Erstellung der Testfallspezifikationen – Manuelle Testdurchführung• Kosten für automatisierte Tests – Erstellung der Testskripte – Pflege der Testskripte – Automatisierte Testdurchführung – Infrastruktur• Parameter – Anzahl manueller(!) Testläufe – Kosten pro Personentag – Anteil nicht automatisierter TestsWirtschaftlich Software Testen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    10. 10. ROI von TestautomatisierungPraxisbeispiel Kosten nach Jahren 1,400,000 € 1,200,000 € 1,000,000 € 800,000 € 600,000 € 400,000 € 200,000 € - € 1 2 3 4 Mit Automatisierung Rein manuellWirtschaftlich Software Testen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    11. 11. Automatisierungskosten senken durch Design for testability © Zühlke 2012
    12. 12. Point of Control Elektronik SoftwarePoint of Observation
    13. 13. Point of Control Elektronik Software Point of Observation
    14. 14. Point of ControlElektronik Software Point of Observation
    15. 15. Point of ControlElektronik Software Point of Observation
    16. 16. Point of ControlElektronik Software Point of Observation
    17. 17. Point of ControlElektronik Software Point of Observation
    18. 18. Testling Signal-Adaption Zum Test-System 
    19. 19. Liefern Sie aus,was Sie getestet haben. © Zühlke 2012
    20. 20. Automatisierung von KomponententestsWas macht es schwierig:• Innerer Zustand Test Driver• Abhängigkeiten• Design der Schnittstellen ComponentMan nehme: under Test• Software Entwickler• Unit Test Framework Mock• Mock FrameworkWirtschaftlich Software Testen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    21. 21. Automatisierung von Integrationstests Software ElektronikWirtschaftlich Software Testen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    22. 22. Automatisierte VerifizierungstestsVerifizierungstests laufen automatisiert während Entwicklung• Vorschau auf Verifizierungsergebnis• Ruhiger SchlafAutomatisierte Verifizierungstests (IV&V)• Zeitdruck, Kosten von Wiederholungen• Test-Infrastruktur der Entwicklung kann wiederverwendet werden• Validierung der Test-Infrastruktur• „Test to verify“ statt „test to kill“Wirtschaftlich Software Testen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    23. 23. Tests nicht mit der Gießkanne verteilen!Fokus auf• Sicherheitskritische …• Wichtige …• Komplexe …• Neue …• Durch Bugs aufgefallene … • … Anforderungen • … Software-KomponentenWirtschaftlich Software Testen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    24. 24. Statische Tests durchführen! Statische Reviews Analyse Code- Architektur Metriken Checker Kodier- Sicherheits- Stil Anomalien regeln probleme © Zühlke 2012
    25. 25. So!• Teststufen einführen• (System-)Tests automatisieren• Design for Testability einfordern• Tests nicht mit der Gießkanne verteilen• Statische TestsVerteilen Sie Ihr knappes Budget so nutzbringend wie möglich!Wirtschaftlich Software Testen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    26. 26. DANKEKontakt: matthias.kraaz@zuehlke.com

    ×