What the hell... import this – and get your things done. Test Cases Use Cases Scrum git / buildout / fabric Testmanager TRAC ... hat Python mit effektiver Projektmethodik zu tun? ª People ª Process ª Python (Tools)
import this In [1]: import this The Zen of Python, by Tim Peters • Beautiful is better than ugly. • Simple is better than complex. • Readability counts. • Special cases aren‘t special enough to break the rules. • Errors should never pass silently. • If the implementation is easy to explain, it may be a good idea. • There should be one-‐-‐ and preferably only one -‐-‐obvious way to do it. Although that way may not be obvious at first unless you're Dutch.
Use Case "a user story is to a use case as a gazelle is to a gazebo" – Allistair Cockburn Wir sprechen von voll ausgeprägten (full featured) Use Cases.
• Liste aller Akteure (Stakeholder) und deren Interessen/ Ziele • Story / Kurzbeschreibung Ziel im Kontext • Primäres Erfolgsszenario Aktionen für primäre Interessen • Beschreibung aller möglichen Ausnahmeszenarios Ausnahmen und deren Aktionen für alle anderen Interessen UCs: Notwendige Inhalte Ohne User Interface- und Implementierungsdetails Stakeholder/ Interessen Erfolgs szenario Ausnahmen
Verblüffende Neben-Effekte (1) • Focus, Priorität • Prozess-Verständnis • Sämtliche Test Case Pfade fix und fertig • Implizit optimiertes (einfacheres?) Datenmodell • Implizite Stabilität + Performance für den Standardpfad • Freiheiten für die Umsetzung bewahrt der Trennung in primäres Erfolgsszenario und Ausnahmeszenarios
Test Case Pfade aus dem Bsp. UC 2. Testaktionen listen und 1. TA aktivieren 1. Testcase wählen 3.1.1 exec passed with comment 3. Exec mit Status passed 3.3.1 exec failed 4. Test Case passed 3.1.2 Test Case passed with comment • TcTestcaseExecute • TcTestcaseExecutePassedComment • TcTestcaseExecuteFailed 3.3.2 Test Case failed Mehrere Erfolgs- und mehrere fehlerhafte Pfade möglich ...
TCs: Notwendige Inhalte • Story / Kurzbeschreibung Test - Ziel im Kontext des Use Cases • Test Szenario – Liste (Sequenz) und Beschreibung aller Aktionen – konkreten Daten und User Interface Abfolgen – konkreten erwarteten Ergebnissen pro Aktion. Mit User Interface-Details und konkreten Beispieldaten Daten Beispiel UI Abfolgen Ergebnisse
Verblüffende Neben-Effekte (2) • Fertige Anwender Dokumentation – UCs liefern den Überblick, die Theorie – TCs liefern das praktische Übungs-Beispiel mit Bedienführung. – Information über Umgang mit Fehlerzuständen (Negativ – Tests). – Datenbeispiel • Spezifikation für Entwickler – Notwendige Detailtiefe ist erreicht • Testdriven Development der Ableitung von detaillierten anwenderverständlichen Test Cases aus Use Cases.
Wat noch? Test Cases Use Cases Scrum git / buildout / fabric Testmanager TRAC Fehlt noch der Plan – das Wann! ... Wir haben Use / Test Cases ... Wissen also Was zu tun ist... ª People ª Process ª Python (Tools)
Zahlenspiele / Tipps zu Backlogs • Use / Test Case Aktionen pro UC Pfad/ TC: 3-9 • Aufwandstage pro ProductBacklog Item: 2-21 • Aufwandsstunden pro Sprint Backlog Item: 2-21 • Benutze Fibonacci – Reihe zur Schätzung – [1,2,3,5,8,13,21, …] • Benutze Bewertungsmatrix für Backlog Prioritäten. – (Vergleiche jeden Eintrag mit jedem) Merge / Split – um auszugleichen und gleichwertige Einträge zu erhalten. Ergibt balancierte Backlogs und erhöhte Planungssicherheit. Play Planning Poker – Schätze mit dem SCRUM Team!
Verblüffende Neben-Effekte (3) • Jeder hat ein Bild zu jedem Eintrag in den Backlogs – Keine Misverständnisse: der Kunde weiss, was er bekommt ... – ... der Entwickler (das Team) was es zu tun hat. • Alles wird im genau richtigen Moment detailliert Kein verschwendeter Aufwand der Verwendung von Use – und Test Case Titeln (Kurzbeschreibungen) in den Backlogs.
Wat noch? Test Cases Use Cases Scrum git / buildout / fabric Testmanager TRAC Und nun das Wie: an dieser Stelle kommt Python ins Spiel :) ... Wir haben Use und Test Cases / einen Plan ... Wissen also Was und Wann ª People ª Process ª Python (Tools)
Zusammenfassung: Use Cases • Verständliche Ablaufbeschreibung für alle Beteiligten • Priorisierte Liste bildet das Product Backlog (und damit den Projekt-Plan nach SCRUM) • Trennen Primäres Erfolgsszenario von Ausnahme – Situationen und liefern den Focus • Einzelne UC-Pfade bilden Test Cases mit zusätzlicher Detaillierung • Zentrales Kommunikationsmittel und Doku für alle Projektbeteiligten Product/Project-Backlog: ü Priorisierte Liste von Anwender-Zielen (UCs) ü Gerüst zur Bestimmung von: • Komplexität, • Aufwand/Kosten, Terminen, • Status / Metriken ü Zeigt, welche Funktionen zuerst implementiert werden Wichtig: Use Cases sollten bei jeder Besprechung offen sein und nach Beschlüssen einem Änderungsprozess mit Versionierung unterliegen.
import this In [1]: import this The Zen of Python, by Tim Peters • Beautiful is better than ugly. • Simple is better than complex. • Readability counts. • Special cases aren‘t special enough to break the rules. • Errors should never pass silently. • If the implementation is easy to explain, it may be a good idea. • There should be one-‐-‐ and preferably only one -‐-‐obvious way to do it. Although that way may not be obvious at first unless you're Dutch.
Vielen Dank! Farewell – and thanks for all the fish :) Test Cases Use Cases Scrum git / buildout / fabric Testmanager TRAC ? ª People ª Process ª Python (Tools)