Aufbau einer Testorganisation in der Wirtschaft Leif Erik Wagner
Worum geht es? Qualtiätssicherung durch Testen Keine lästige Aufgabe / Nebentätigkeit Fehler werden übersehen Auf Testen wird verzichtet Keine Kontrolle Organisation der Testprozesse => Testorganisation Wie sollte man das Testen organisieren? Als Start-up Mittelgroßes Oder großes Unternehmen 2
Einflussfaktoren Allgemeingültige Ratschläge Unternehmensspezifische Faktoren Testorganisation Produktspezifische Faktoren 3
Rollen im Testprozess 4
Testmanager Verantwortlich für Testaktivitäten Vertritt Testinteressen Hierarchisch auf gleicher Stufe wie Projektleiter Entwickelt Testkonzept Erstellt und kommuniziert Testberichte Anforderungen Softwaretest Planung Qualitäts- und Projektmanagement Personalführung [3, S.170] 5
Testdesigner Erstellt Testfallspezifikation Testfälle Ermittlung von Testdaten Anforderungen Softwaretest Fachspezifisches Wissen zum Produkt [3, S.170] 6
Testautomatisierer Automatisiert spezifizierte Testfälle Anforderungen Softwaretest Software-Engineering Architektur, Design Automatisierungstools Schulung durch Hersteller [1, S.160] Testadministrator Installiert und betreibt Testumgebung [3, S.171] 7
Tester Durchführung der Testfälle Ergebnisse Protokollieren Auswerten Dokumentieren [3, S.171] 8
Zertifizierung International Software Testing Qualifications Board (ISTQB) Foundation Level Tester Advanced Level Testdesigner Testmanager [3, S.171] 9
Soft-Skills Teamfähigkeit und diplomatisches Geschick Bereitschaft, scheinbare Tatsachen zu hinterfragen Durchsetzungskraft Exaktheit und Kreativität Schnelles einarbeiten in komplexen Anwendungen [3, S.171] 10
Organisationsformen 11
Wer testet? Personelle und Organisatorische Trennung Blindheit gegenüber eigenen Fehlern Ziel: Unabhängige Tester Entdecken Denkfehler Kritische Hinterfragung von Annahmen Gefahren: Zu starke Isolation Zu wenig Testressourcen Abgabe der Verantwortung [3, S.167] 12
Entwickler als Tester http://www.flaticon.com/free-icon/softtware-engineer_80561 Entwickler und Tester Aufteilung [3, S.167] Jeder testet Einzelne Entwickler übernehmen alle Tests Ausreichend Tester abstellen Separate Rollen für Entwicklung und Test [4] Unterschiedliche Anforderungen nicht vermischen Bessere Kontrolle Gegenseitiges Testen [3, S.167] 13
Entwickler als Tester http://www.flaticon.com/free-icon/softtware-engineer_80561 Entwickler als dedizierter Tester Geigenet für Komponententest Entwicklungsnah Integrationstest Bei Integration von selbstentwickelten Komponenten [3, S.167] 14
Dedizierte Testteams Team übernimmt Testaufgaben Gemischtes Empfohlen ab Integrationstest Von Komponenten verschiedener Teams Idealerweise Unabhängige Tester Nicht in Entwicklung involviert [3, S. 168] 15
Unabhängige Tester Testen Spezialaufgaben Sicherheit Benutzbarkeit Einhaltung von Standards Sachverständige Kundenperspektive [3, S. 168] 16
Separate Organisation Koordinierung der Testaktivitäten Richtlinien und Vorlagen => höhere Transparenz Weiterbildungen Verbesserung der Testprozesse Evaluierung von Testwerkzeugen Eigene Tester Beteiligen sich an unterschiedlichen Projekten Wissensaustausch Vorraussetzungen Ab einer mittleren Größe Mindestens mittelgroßen Projekten [4] 17
Test-Controlling Durch Testorganisation Sammeln und Auswerten von Daten im Testprozess Frühwarnsystem Engpässe bei Testdurchführung Konstant hohe Fehlerquote Entdeckung von Fehlerhäufungen Aufwendig und teuer Voraussetzungen Große Unternehmen Langzeitprojekt oder kontinurierliche Releases [4] 18
Teststufen Komponententest Integrationstest Entwickler Testteams Unabhängige Testexperten x x x x x x x x Systemtest x x x Komponententest Gegenseitiges Testen der Entwickler Integrationstest Gemischte oder unabhängige Teams Separate Organisation Systemtest Unabhängige Tester / Teams [3, S.168] 19
Test-Management 20
Teststrategie Testziele und Maßnahmen => bestimmen Testaufwand => bestimmt Testkosten Intuitive Bestimmung des Testumfangs Auf Grundlage des Test-Controlling: Kosten-Nutzen- Rechnung Frühestmöglicher Testbeginn Priorisierung der Tests [3, S.182-186] 21
Aufwandsabschätzung Für Zeit- und Personalplanung Projekt Teststufe Methoden Aufwandsabschätzung aller Testaufgaben Unterstützung von Sachverständigen Tendiert dazu Aufwand zu unterschätzen Ableitung aus Erfahrungswerten Bsp: Testfälle pro Stunde Realistischere Prognose Daumenregel: Testaufwand = 50% der Gesamtentwicklung [3, S.181] 22
Personalplanung Besetzung der Rollen Bedarf an Sachverständigen Abhängig vom Produkt Benötigtes Spezialwissen Anteil der Automatisierung [2] 23
Bulls-Eye-Model Klassifizierung der Produktfunktionen Kriterium: benötigtes Fachwissen zum Testen Ringe repräsentieren notwendiges Fachwissen [2] 24
Bulls-Eye-Model [2] Äußerer Ring Schnelle Einarbeitung mit Hilfe der Dokumentation Mittlerer Ring Längere Einarbeitungszeit Komplexität ähnlich Aber interagierende Produktbereiche Bulls-Eye-Ring Lange Einarbeitungszeit Substanzielles Fachwissen (Technik, Standards,..) Über Jahre angeeignet 25
Bulls-Eye-Model Äußere Ringe können Entwickler besetzten Bulls-Eye benötigt Sachverständige Gefahr Zu wenige Sachverständige können zum Flaschenhals werden [2] 26
Outsourcing Ausgliederung von Testaktivitäten Gründe Erhoffte Kosteneinsparung [6] Unabhängige externe Überprüfung [7] Personal wird nach Projektende nicht mehr benötigt [2] 27
Herausforderungen des Outsourcing Wie gut wurde getestet? Schwer überprüfbar Anhaltspunkt: Fehlerberichte Kommunikation Softwareänderungen Austausch zwischen Tester und Entwickler [7] 28
Einsparungen durch Outsourcing? Kontrovers Bsp. Die Software AG : Ja, bis zu 50% Einsparungen. [6] Gleichwertig, bei einmaliger Auftragsfertigung [2] Keine, in langfristigen Projekten [2] 29
Zusammenfassung Rollen unterscheiden Testmanager, -Designer, -Automatisierer, Tester Passendes Testmodell wählen Unterschiedliche Anforderungen je Teststufe (Komponenten-, Integrations-, Systemtest) Möglichst unabhängig Testen Testkonzept festlegen Aus Erfahrungen Aufwand abschätzen Bulls-Eye-Model zur Personalplanung Outsourcing Externe Qualitätskontrolle Ressourcenmangel 30
Quellen [1] Richard Seidel und Manfred Baumgartner und Thomas Bucsics, Basiswissen Testautomatisierung. dpunkt.verlag, 2012. [2] Bruce Benton, Design and Building a Software Test Organization. 2008 International Conference on Software Testing, Verification, and Validation, 2008. [3] Andreas Spillner und Tilo Linz, Basiswissen Softwaretest, 3rd ed. dpunkt.verlag, 2007. [4] Tim A. Majchrzak, Best Practices for the Organizational Implementation of Software Testing. Proceedings of the 43rd Hawaii International Conference on System Sciences - 2010, 2010. [6] Peter Buxmann und Heiner Diefenbach und Thomas Hess, Die Softwareindustrie,3rd ed. Springer Gabler, 2015. [7] James A. Jones und Mark Grechanik und André van der Hoek, Enabling and Enhancing Collaborations between Software Development Organizations and Independent Test Agencies. ICSE 09 Workshop, 2009. 31