Your SlideShare is downloading. ×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Wirtschaftlich Software testen - Electronics goes Medical 2012

334
views

Published on

Oftmals bleiben viele Möglichkeiten, die Effizienz und Effektivität des Testprozesses zu steigern, ungenutzt. …

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.

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
334
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • 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
  • Transcript

    • 1. WirtschaftlichSoftwareTestenMatthias Kraaz 11. Oktober 2012 Matthias Kraaz © Zühlke 2012
    • 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. 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. 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. 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. 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. Teststufen einführen!Die Test-Pyramide Systemtests Integrationstests KomponententestsWirtschaftlich Software Testen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    • 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. 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. 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. Automatisierungskosten senken durch Design for testability © Zühlke 2012
    • 12. Point of Control Elektronik SoftwarePoint of Observation
    • 13. Point of Control Elektronik Software Point of Observation
    • 14. Point of ControlElektronik Software Point of Observation
    • 15. Point of ControlElektronik Software Point of Observation
    • 16. Point of ControlElektronik Software Point of Observation
    • 17. Point of ControlElektronik Software Point of Observation
    • 18. Testling Signal-Adaption Zum Test-System 
    • 19. Liefern Sie aus,was Sie getestet haben. © Zühlke 2012
    • 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. Automatisierung von Integrationstests Software ElektronikWirtschaftlich Software Testen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    • 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. 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. Statische Tests durchführen! Statische Reviews Analyse Code- Architektur Metriken Checker Kodier- Sicherheits- Stil Anomalien regeln probleme © Zühlke 2012
    • 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. DANKEKontakt: matthias.kraaz@zuehlke.com