CQSE Software Intelligence Talk 2021-2 - "Schnell Feedback trotz langsamer Tests"
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
CQSE Software Intelligence Talk 2021-2 »Schnell Feedback trotz langsamer Tests« Wir starten pünktlich um 10:33 Uhr
Agenda Begrüßung Pareto-Testing & Test-Impact-Analyse – Grundidee & Forschungsergebnisse Dr. Elmar Juergens (CQSE GmbH), Raphael Nömmer (CQSE GmbH) Q&A Session Erfahrungsbericht zu Pareto-Testing & Test-Impact-Analyse bei der BVK Jeannette Wernicke (Bayerische Versorgungskammer), Fabian Streitel (CQSE GmbH) Q&A Session
Pareto-Testing & Test-Impact-Analyse? Grundidee & Forschungsergebnisse Dr. Elmar Jürgens Raphael Nömmer
Welchen Einfluss hat die Reihenfolge der Ausführung von Software Tests?
Test Gaussian Blur
Test Lens Blur
Test Motion Blur
Test Smart Blur
Time vs Code Coverage 100% 90% 80% Relative Coverage 70% 60% 50% 40% 30% 20% 10% 0% 0 40 80 Relative Runtime
Test Create and Modify Selection
Test Change View Settings
Test Second Layer
Test Save Image
Time vs Code Coverage 100% Test Create and 90% Modify Selection 80% Relative Coverage 70% 60% 50% 40% 30% 20% 10% 0% 0 40 80 Relative Runtime Test Gaussian Blur
Wie wählen wir die besten Tests aus?
Optimierte Test Suite Testumgebung Volle Test Suite Priorisierungs- verfahren Test Daten Vollständige Test Suite
Potentielle Einschränkungen in der Ausführungsreihenfolge
Wie gut funktioniert das ganze für echte Test Suites?
Open-Source Project SLOC # Tests Code Coverage AC Collections 62,934 15,183 86% AC Lang 75,467 3,484 95% AC Math 174,522 4,828 92% AssertJ 161,306 14,685 91% EBean 170,656 2,618 77% JoptSimple 9,433 838 98% Spoon 112,650 1,619 83% Closed-Source Project Siemens >>203,964 5,366 75% CQSE 516,949 2,979 76%
Siemens Apache Spoon ProjektMath Commons CQSE Projekt 100% 100% 100% 90% 90% 90% 80% 80% 80% 70% 70% 70% Relative Coverage 60% 60% 60% 50% 50% 50% 40% 40% 40% 30% 30% 30% 20% 20% 20% 10% 10% 10% 0% 0% 0% 0% 0% 0% 10% 10% 10% 20% 20% 20% 30% 30% 30% 40% 40% 40% 50% 50% 50% 60% 60% 60% 70% 70% 70% 80% 80% 80% 90% 90% 90% 100% 100% 100% Relative Laufzeit Relative Laufzeit Standardreihenfolge Standardreihenfolge Standardreihenfolge Optimierte Optimierte Reihenfolge OptimierteReihenfolge Reihenfolge
Überblick 100% 97,29% 93,84% 90% 80% Relative Coverage 70% 60% 50% 15% 40% 30% 20% 10% 0% 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% Relative Runtime AC Coll AC Lang AC Math AssertJ Ebean Jopt-Simple Jsoup Spoon
Mutant Generator Testumgebung Mutation Report Source Code Mutanten Test Suite
Spoon Math Apache Commons 100% 100% 90% 90% 80% 80% Mutation Score 70% 70% Relativer Mutaiton 60% 60% 50% 50% 40% 40% 30% 30% 20% 20% 10% 10% 0% 0% 0% 0% 10% 10% 20% 20% 30% 30% 40% 40% 50% 50% 60% 60% 70% 70% 80% 80% 90% 90% 100% 100% Relative Laufzeit Relative Laufzeit Standardreihenfolge Standardreihenfolge Optimierte Reihenfolge Optimierte Reihenfolge
Überblick 100% 95,30% 90% 88% Relativer Mutation Score 80% 70% 60% 50% 15% 40% 30% 20% 10% 0% 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% Relative Laufzeit AC Coll AC Lang AC Math AssertJ Ebean Jopt-Simple Jsoup Spoon
Test-Impact-Analyse
Schritt 1: Selektion betroffener Testfälle
Schritt 1: Selektion betroffener Testfälle
Schritt 1: Selektion betroffener Testfälle
Schritt 2: Priorisierung selektierter Testfälle
Schritt 2: Priorisierung selektierter Testfälle
Schritt 2: Priorisierung selektierter Testfälle Change coverage Execution time
Schritt 2: Priorisierung selektierter Testfälle
1% 80 %
2% 90 %
Test-Impact- Pareto-Testing Analyse Tests werden unabhängig von Tests werden für jeden Lauf passend Änderungen ausgewählt. zu Änderungen ausgewählt 95% der Mutanten in 15% der Zeit 90% der Mutanten in 2% der Zeit ermittelt ermittelt Einmalige Messung der Coverage Erfordert kontinuierliche Messung der reicht aus (ggf. quartärliche Coverage und Integration der Test- Wiederholung) Auswahl in die CI / Testautomatisierung. Weniger Aufwand & breiter Stärkere Beschleunigung des Anwendbar Feedbacks
Die Bayerische Versorgungskammer 12 Versorgungs- Deutschlands größte öffentlich-rechtliche einrichtungen Versorgungsgruppe 100 Jahre Erfahrung • verwaltet zwölf Einrichtungen der berufsständischen sowie der kommunalen und kirchlichen Altersversorgung 2,4 Mio. Versicherte und • unterstützt die Selbstverwaltungsgremien bei ihren Aufgaben und Versorgungsempfänger vollzieht deren Beschlüsse 97,2 Milliarden Euro • ist organisationsrechtlich eine Staatsbehörde, unterliegt als Organ Kapitalanlagevolumen* der Versorgungsanstalten jedoch keinen staatlichen Weisungen 1. 420 Mitarbeiterinnen Denninger Straße 37, 81925 München E-Mail: info@versorgungskammer.de und Mitarbeiter * Marktwert Tel.: 089 9235 6 Fax: 089 9235 8104 www.versorgungskammer.de
Wer wir sind... Jeannette Wernicke Innovation Managerin jwernicke@versorgungskammer.de • Bis 2019: Softwareentwicklerin und –architektin Schwerpunkt: Software Qualität Christoph Kühn • Seit 2020: Aufbau des Innovation Lab der BVK Technischer Chef Designer • Organisation und fachliche Begleitung bei Umsetzung POC ckuehn@versorgungskammer.de • Softwareentwickler und –architekt Schwerpunkt: technische Infrastruktur • Ansprechpartner zu technischen Fragen bei Umsetzung POC
In-house Anwendung „Futura“ für die Verwaltung und Administration im Bereich der Altersversorgung Individuelle Anpassung durch Fachabteilung Parametrierung Bildet zentrale Businessprozesse Fachmodul Fachmodul Fachmodul Fachmodul ab, u.a. Betriebsrente Beamten- Bühne und Berufs- öffentlicher versorgung Orchester ständische Fachmodule • Mitgliederverwaltung Dienst Versorgung • Versicherungsverlauf Fachfunktionen der Plattform: Partner, In-/Exkasso Externe • Rentenberechnung Fachliche Grundfunktionalität Kommunikation Basisfunktionen Plattform Technische Plattform / Basistechnik
Software Individuelle Anpassung durch Fachabteilung Fachabteilung • Gesamtsystem: Fachmodul Fachmodul Fachmodul Fachmodul Betriebsrente Beamten- Bühne und Berufs- • Plattform + 4 Fachmodule öffentlicher versorgung Orchester ständische Dienst Versorgung • ~1 Mio RLOC (Java) Intern • Verteilte Entwicklung (extern und intern) Extern Fachfunktionen der Plattform: Partner, In-/Exkasso Externe Kommunikation • produktiv seit 2007 Fachliche Grundfunktionalität Basisfunktionen Technische Plattform / Basistechnik Tests: • Unit-Test und Funktionale Tests • Integrationstests (GeVo*-Tests, Testketten) • Manuelle Tests *Geschäftsvorfall (GeVo) Eine Folge fest definierter Ereignis-Schritte, die versicherungsrelevante Veränderungen auf einem Partner abbildet.
Testframework für Integrationstests Testframework Pro Test: Aufbau der Datenbank Befüllen der DB mit Testdaten Testvoraussetzungen Ausführung des spezifizierten DB Test Tests (ein oder mehrere GeVos) Testspezifikation Prüfung ob Daten in der DB mit Testerwartung Testerwartung übereinstimmen Löschen der testfallspezifischen Daten aus der DB Testergebnisse, Coveragedaten
Automatisierte Integrationstests • Tests werden automatisiert über Nacht ausgeführt • Testlaufzeiten: Ø 12 h (in Ausnahmefällen bis 26 h) Typ Anzahl Laufzeit * Einzel-GeVo 3060 3h 41min Testketten 4095 6h 34min Batch 1860 1h 54min Lange Feedbackzyklen Summe 9015 12h 09min Unit + Functional 6994 < 2min Tests *Beispieldaten für Fachmodul „Bühne und Orchester“ (Stand 03.05.2021)
Wie können wir Testlaufzeiten reduzieren? ? Hardware Änderung am Testframework Reduzieren der Testanzahl Brauchen wir immer alle Tests um Änderungen abzudecken? ? Annahme 1: Änderungen betreffen selten komplette Codebasis Annahme 2: Einzelne Test decken nur Teile des Gesamtcodes ab Wie entscheiden wir, welche Tests ausgeführt werden? ? Manuelle Selektion der Tests Aufwand bei 9000 Tests???
Beteiligte am POC für die Test-Impact-Analyse Continuous Quality in Anwendungsentwicklung Software Engineering Futura VBO (Fachmodul Bühne und Orchester) Teamscale
Vision & Mission „Das Innovation Lab soll einen Rahmen für Innovationen bereitstellen und Freiräume schaffen, sodass Mitarbeiter eigene Ideen ausprobieren können. Wir wollen gemeinsam Probleme identifizieren und innovative Ideen entwickeln, um daraus Mehrwerte für Mitarbeiter und Unternehmen zu schaffen.“ Woher kommen die Das Team: Veranstaltungen: Timing & Rollout: Themen? • Separates Team unter der • Impulsvorträge, z.B. zu KI-Themen Start Januar 2020 Trend- und Marktanalysen Bereichsleitung bei IV • Ideenfindungsworkshops im Innovation Lab, • 2 Innovation Manager Ideensammlung in Standort & Infrastruktur: • 3 Werkstudenten Workshops, Ideen von In der BVK, nah am MA Mitarbeitern, Innovation Beirat, Zusammenarbeit Netzwerk (Partner): mit Startups, Netzwerk InsurTech Hub Munich, Plug&Play Inhaltliche Schwerpunkte? Finanzierung: Für BVK relevante Projekte: Investition durch IV Innovationsthemen und – • KI gestützte Text- und Technologien, z.B. Sprachverarbeitung Künstliche Intelligenz, • Intelligente Prozessautomatisierung Virtuelle Realität, Internet • Internet of Things of Things, Intelligent • Testanalyse und -automatisierung Process Automation Weitere Informationen: Im Intranet: https://intranet.bvk.int/organisation/bereiche/informationsverarbeitung/innovationlab Kontakt: Blog: https://intranet.bvk.int/zusammenarbeit/mitreden/blogs/innovationlab Innovation-Lab@versorgungskammer.de
Test Impact Analyse und Pareto Tests bei der BVK Software Intelligence Talk Fabian Streitel, 14.07.2021
Testfall-spezifische Coverage Pareto-Testen Selektierte & priorisierte Testfälle
Testfall-spezifische Änderungen Coverage Test-Impact-Analyse Selektierte & priorisierte Testfälle
Bei der BVK Historische Änderungen Testfall-spezifische Einmaliger Export aus CVS-Repository Coverage Test-Impact-Analyse Selektierte & priorisierte Testfälle
JVM Test 1 Start Anwendung Application.java Zeile 5 Test 1 Ende ausgeführt Test 2 Start ... Test 1, Test 2, Test 3, ... Testwise Coverage Profiler
JVM Test 1 Start Anwendung Application.java Zeile 5 Test 1 Ende ausgeführt Test 2 Start ... Testwise Coverage Profiler „was wäre wenn…“
Selbstgeschriebenes Bei der BVK GeVo Tests Testframework Kettentests + Test-Wise Coverage Library JVM Test 1 Start Anwendung Application.java Zeile 5 Test 1 Ende ausgeführt Test 2 Start ... Testwise Coverage Profiler „was wäre wenn…“
Unit Tests Es gibt noch weitere Testarten, die wir hier nicht vermessen haben, sowie generierten Code, der nicht getestet wird.
GeVo Tests Es gibt noch weitere Testarten, die wir hier nicht vermessen haben, sowie generierten Code, der nicht getestet wird.
Kettentests Es gibt noch weitere Testarten, die wir hier nicht vermessen haben, sowie generierten Code, der nicht getestet wird.
Validierung: Stimmen die Daten?
Issue Erwartete Testfälle VBO-6630 GV_VBO_04_003F GV_VBO_04_004F GV_VBO_04_009F GV_VBO_04_309F TK-I-VersRiesterAnteil-001 TK-I-VersRiesterAnteil-002 TK-I-VersRiesterAnteil-003 TK-I-VersRenteAendSchaedlVerw-001 TK-I-VersRenteAendSchaedlVerw-002 VBO-6873 GV_VBO_05_041F GV_VBO_05_042F GV_VBO_05_342F TK-I-BESG-BU-TOD-001 TK-I-BESG-BU-TOD-002 TK-I-BESG-BU-TOD-003 TK-I-BESG-BU-TOD-004 TK-I-BESG-BU-ERW-AR-TOD TK-I-BESG-NZ-ANNU-004 TK-I-VersAusgleichsrente-005 TK-I-VersAusgleichsrente-006 TK-I-VersAusgleichsrente-007 TK-I-BESG-NM-WAISE-001 TK-I-BESG-NM-WAISE-002 VBO-6942 GV_VBO_05_041F GV_VBO_05_042F GV_VBO_05_342F TK-I-BESG-NM-001 TK-I-BESG-NM-002 TK-I-BESG-NM-007 TK-I-BESG-NM-WAISE-001 TK-I-BESG-NM-WAISE-002 TK-I-BESG-NM-WAISE-003 TK-I-BESG-NM-WAISE-004 TK-I-BESG-NM-WAISE-005 TK-I-BESG-NM-WAISE-006 TK-I-BESG-NM-WITWE-001 TK-I-BESG-NM-WITWE-002 TK-I-BESG-NM-WITWE-003 TK-I-BESG-NM-WITWE-004 TK-I-BESG-AR-TOD-001 TK-I-BESG-AR-TOD-002 +5 weitere Issues
… Teamscale schlägt an vielen Stellen noch zusätzliche Tests vor, die von den Änderungen betroffen sind
Auswertung: Was bringt‘s? Wieviel Testzeit sparen wir uns?
Laufzeit der Laufzeit aller Tests ausgewählten Tests 1 Tag
Alle Tests ohne TIA
An 93% der Tage: Testlaufzeit < 17% ! < 10h < 11h < 1h < 2h < 3h < 4h < 5h < 6h < 7h < 8h < 9h < 20min < 40min Nur Intervalle berücksichtigt, die Impacted Tests enthalten
100% 80% Vergleich mit TIA Relative Methoden-Coverage In allen Fällen ist mindestens ein 60% änderungsrelevanter Testfall enthalten. Im Schnitt enthält die Paretoliste 17% der 40% änderungsrelevanten Testfälle. 20% ! 0% 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% Relative Testlaufzeit Pareto Mit 1h Testlaufzeit erreichen wir bereits 99,2% relative Methoden-Coverage
Vorschlag für den Einsatz Aktuell: nächtlich „Re-run all“ Feedback erst spät am nächsten Tag Build Test
Vorschlag für den Einsatz Tagsüber schnelles Feedback: TIA Timeboxing Erstes Feedback auf eingecheckte Änderungen nach spätestens 2h Build Test max. 1h
Vorschlag für den Einsatz Tagsüber schnelles Feedback: TIA Timeboxing Erstes Feedback auf eingecheckte Änderungen nach spätestens 2h Build Test max. 1h
Vorschlag für den Einsatznach der Git-Umstellung Tagsüber schnelles Feedback: TIA Timeboxing Erstes Feedback auf eingecheckte Änderungen nach spätestens 2h Build Test max. 1h Weiterhin: nächtlich „Re-run all“, um die TIA-Daten zu aktualisieren
Vorschlag für den Einsatz vor der Git-Umstellung: Pareto-Testliste Tagsüber schnelles Feedback: Statisch berechnetes Testset Pareto-Testliste: Erstes unvollständiges Feedback auf eingecheckte Änderungen nach spätestens 2h Build Test 1h Weiterhin: nächtlich „Re-run all“, um die TIA-Daten zu aktualisieren Monatlich: Pareto-Liste aktualisieren
Aktueller Stand: ! Testwise-Coverage-Erhebung automatisiert ! Erste Pareto-Testliste für die BVK generiert
Interesse an Test-Impact-Analyse oder Pareto-Testen? Ich unterhalte mich gern bei einem virtuellen Kaffee dazu mit Ihnen! Fabian Streitel ∙ streitel@cqse.eu ∙ +49 159 04046270 CQSE GmbH Centa-Hafenbrädl-Straße 59 81249 München
Evaluation von Pareto-Testing & Test-Impact-Analyse Anmeldung zur Q&A Session »Schnell Feedback trotz langsamer Tests« 28. Juli 2021, 10:30 Uhr cqse.eu/si-talks/2/qanda
Vielen Dank für Ihre Teilnahme! Feedback zum Anmeldung zum Software Intelligence Talk 2021-2 Software Intelligence Talk 2021-3 »Quality Control einführen« - 29. Sep. 2021 cqse.eu/si-talks/2/feedback cqse.eu/si-talks/3
Sie können auch lesen