Tobias Bayer

38
Softwarequalität Tobias Bayer

Transcript of Tobias Bayer

Page 1: Tobias Bayer

SoftwarequalitätTobias Bayer

Page 2: Tobias Bayer

Tobias Bayer

Software-Architekt, Senior Developer

inovex GmbH

[email protected]

http://www.inovex.de

Page 3: Tobias Bayer

"Software quality is the degree ofconformance to explicit or implicitrequirements and expectations"

http://softwaretestingfundamentals.com/software-quality/

Page 4: Tobias Bayer
Page 5: Tobias Bayer

Agile SoftwareentwicklungSchnelles FeedbackMoving Targetvs. WasserfallReview Meeting: QS ggü. KundeRetro Meeting: QS im Team

Page 6: Tobias Bayer

Das BacklogListe der Anforderungen an das ProduktPriorisiertGeschätztMögliches Format: User Stories

Page 7: Tobias Bayer

User StoriesBeschreibung einer AnforderungAkzeptanzkriterienDefinition of ReadyDefinition of Done

Page 8: Tobias Bayer

Beispiel User Story Template

Page 9: Tobias Bayer

Als [Rolle] möchte ich [Ziel/Wunsch], um[Nutzen]

Als neuer User möchte ich bei der Anmeldungmeine Zahlungsdaten hinterlegen, umBezahldienste nutzen zu können

Page 10: Tobias Bayer

Akzeptanzkriterien:

Das Anmeldeformular ist unter

http://myservice.com/signup verfügbar

Beim Anlegen neuer User werden die Zahlungsdaten

abgefragt

Die Zahlungsdaten eines Users können in der Admin-

Oberfläche eingesehen werden

Page 11: Tobias Bayer

DoR (Definition of Ready)

Ziel und Akzeptanzkriterien sind klar

Story ist geschätzt

Story ist nicht zu komplex / zu groß für einen Sprint

Abhängigkeiten/Schnittstellen sind bekannt und

eingeplant

Wer muss was tun? Backend, iOS

Page 12: Tobias Bayer

DoD (Definition of Done)

Unit Tests sind vorhanden

Es wurde ein Peer-Review durchgeführt

Es ist auf der Dev Umgebung deployed (Backend) / es

steht als Build zum DL bereit (App)

Der Build kann auf einem beliebigen Gerät (innerhalb

der Specs) installiert werden (keine Beschränkung auf

Device IDs, etc)

Build läuft auf iOS9/iPhone6 (iOS8/iPhone4S wird

nach R0 Ziel sein)

Backend: Wenn ein neuer Service eingeführt wurde,

ist er in der Übersicht und im Wiki dokumentiert.

Page 13: Tobias Bayer

Statische Code-Analyse

Page 14: Tobias Bayer

Pull-Requests, Merge-Requests

Code Review

Kommentare

Änderungen

Merge

Bitbucket, GitHub, GitLab

Page 15: Tobias Bayer

Quelle: http://nvie.com/posts/a-successful-git-branching-model

Page 16: Tobias Bayer

Tool: GitLab

Page 17: Tobias Bayer

Tool: GitLab

Page 18: Tobias Bayer

Tool: GitLab

Page 19: Tobias Bayer

Analyse-Tools

FindbugsPMDCheckstyleSonarQube

Page 20: Tobias Bayer

Metriken

LOC (Lines of Code)

LCOM4 (Lack of Cohesion of Methods)

Kopplung

Testabdeckung

Page 21: Tobias Bayer

Tool: SonarQube

Page 22: Tobias Bayer

Tests

Page 23: Tobias Bayer

Unit Tests

Test einzelner KomponentenWährend Entwicklung eines FeaturesMöglichst isoliertStubs und MocksTest Driven Development (TDD)

Page 24: Tobias Bayer

JUnit

Page 25: Tobias Bayer

Mockito

Page 26: Tobias Bayer

Mockito

Page 27: Tobias Bayer

Integrationstests

Test der Interaktion von KomponentenIm Applikationskontext

Page 28: Tobias Bayer

Spring Context Runner

Page 29: Tobias Bayer

Spring MockMVC

Page 30: Tobias Bayer

In agilen Projekten

Akzeptanztests

Benutzer/Product Owner testen gegen dieSpezifikationHäufig "unterwegs"Spätestens im Sprint Review

Page 31: Tobias Bayer

Last- und Performancetests

Applikation mit erwarteter Last betreiben...und darüber hinausFrüh genug aufsetzen

Page 32: Tobias Bayer

Apache JMeter

Page 33: Tobias Bayer

Continuous Integration/Deployment

Alle Tests nach jedem fertigen Feature ausführenSicherstellen, dass System als Ganzes nochfunktioniertNach erfolgreichen Tests direkt auf die Staging-Umgebung deployen...oder sogar direkt in die Produktivumgebung

Page 34: Tobias Bayer

Tool: Jenkins

Page 35: Tobias Bayer

Tool: Jenkins

Page 36: Tobias Bayer

Boy Scout Rule

Page 37: Tobias Bayer
Page 38: Tobias Bayer

Become an inovexPERTWir suchen dich ab sofort in den Bereichen Consulting,

Entwicklung (Web/Mobile), Business Intelligence sowie

IT Engineering & Operations

für das Schreiben deiner Abschlussarbeit (Bachelor

oder Master),

für eine Werkstudententätigkeit,

für verschiedene Einstiegspositionen nach dem

Studium.