CQSE Software Intelligence Talk 2021-2 - "Schnell Feedback trotz langsamer Tests"

Die Seite wird erstellt Anna Ott
 
WEITER LESEN
CQSE Software Intelligence Talk 2021-2 - "Schnell Feedback trotz langsamer Tests"
CQSE Software Intelligence Talk 2021-2
»Schnell Feedback trotz langsamer Tests«

                         Wir starten pünktlich um 10:33 Uhr
CQSE Software Intelligence Talk 2021-2 - "Schnell Feedback trotz langsamer Tests"
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
CQSE Software Intelligence Talk 2021-2 - "Schnell Feedback trotz langsamer Tests"
Pareto-Testing & Test-Impact-Analyse?
Grundidee & Forschungsergebnisse

Dr. Elmar Jürgens
Raphael Nömmer
CQSE Software Intelligence Talk 2021-2 - "Schnell Feedback trotz langsamer Tests"
CQSE Software Intelligence Talk 2021-2 - "Schnell Feedback trotz langsamer Tests"
CQSE Software Intelligence Talk 2021-2 - "Schnell Feedback trotz langsamer Tests"
Pareto-Testing
CQSE Software Intelligence Talk 2021-2 - "Schnell Feedback trotz langsamer Tests"
Warum gibt es hier Optimierungspotential?
CQSE Software Intelligence Talk 2021-2 - "Schnell Feedback trotz langsamer Tests"
CQSE Software Intelligence Talk 2021-2 - "Schnell Feedback trotz langsamer Tests"
CQSE Software Intelligence Talk 2021-2 - "Schnell Feedback trotz langsamer Tests"
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