Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Immer wieder die gleichen Fehler? Nicht mit ArchUnit!

Immer wieder die gleichen Fehler? Nicht mit ArchUnit!

Roland Weisleder

September 07, 2022
Tweet

More Decks by Roland Weisleder

Other Decks in Programming

Transcript

  1. @Ro_Wei
    Roland Weisleder ✉ [email protected]
    Immer wieder die gleichen Fehler?
    Nicht mit ArchUnit!

    View Slide

  2. Sicherheitslücke
    Kein Logging
    Überlastung durch
    fehlende Caches
    NullPointerExceptions
    durch falsche Serialisierung
    Datenkorruption

    View Slide

  3. Nicht-funktionale Anforderungen
    nicht bekannt oder falsch umgesetzt

    View Slide

  4. Kann euch das auch passieren?

    View Slide

  5. Mehr automatisiert testen?
    Codebasis ändert sich Team ändert sich
    Anforderungen ändern sich

    View Slide

  6. ArchUnit is a free, simple and extensible library for
    checking the architecture of your Java code using any
    plain Java unit test framework. That is, ArchUnit can
    check dependencies between packages and classes,
    layers and slices, check for cyclic dependencies and
    more. It does so by analyzing given Java bytecode,
    importing all classes into a Java code structure.
    https://www.archunit.org/

    View Slide

  7. ArchUnit is a free, simple and extensible library for
    checking the architecture of your Java code using any
    plain Java unit test framework. That is, ArchUnit can
    check dependencies between packages and classes,
    layers and slices, check for cyclic dependencies and
    more. It does so by analyzing given Java bytecode,
    importing all classes into a Java code structure.
    https://www.archunit.org/

    View Slide

  8. ArchUnit is a free, simple and extensible library for
    checking the architecture of your Java code using any
    plain Java unit test framework. That is, ArchUnit can
    check dependencies between packages and classes,
    layers and slices, check for cyclic dependencies and
    more. It does so by analyzing given Java bytecode,
    importing all classes into a Java code structure.
    https://www.archunit.org/

    View Slide

  9. ArchUnit is a free, simple and extensible library for
    checking the architecture of your Java code using any
    plain Java unit test framework. That is, ArchUnit can
    check dependencies between packages and classes,
    layers and slices, check for cyclic dependencies and
    more. It does so by analyzing given Java bytecode,
    importing all classes into a Java code structure.
    https://www.archunit.org/

    View Slide

  10. ArchUnit is a free, simple and extensible library for
    checking the architecture of your Java code using any
    plain Java unit test framework. That is, ArchUnit can
    check dependencies between packages and classes,
    layers and slices, check for cyclic dependencies and
    more. It does so by analyzing given Java bytecode,
    importing all classes into a Java code structure.
    https://www.archunit.org/

    View Slide

  11. Demo

    View Slide

  12. Fehlerhafte Strukturen mit ArchUnit finden
    ● Fehlender/Überflüssiger Code
    ● Fehlerhafte Imports
    ● Fehlerhafte Verwendung von Librarys/Frameworks
    ● Ungewollte Abhängigkeiten zwischen Klassen
    ● Abweichungen von der Architektur

    View Slide

  13. Warum ArchUnit dafür einsetzen?
    ● Niemand hat ständig alle Regeln im Kopf
    ● Niemand wird ständig alle Regeln nachlesen
    ● Jemand wird Tests vergessen
    ● Regel können sich ändern
    ● Umsetzung von nicht-funktionalen Anforderungen zentral testen
    ● Vorhandener und neuer Code wird getestet

    View Slide

  14. “Testing can detect only the presence
    of errors, not their absence.”

    View Slide

  15. Code:
    https://github.com/rweisleder/find-bugs-with-archunit-examples
    https://github.com/TNG/ArchUnit-Examples
    Sofwarefehler mit ArchUnit aufspüren
    Doku:
    https://www.archunit.org/
    Bringing Legacy Java Systems Into the Future
    rweisleder.de @Ro_Wei
    linkedin.com/in/roland-weisleder

    View Slide