SlideShare ist ein Scribd-Unternehmen logo
1 von 66
Downloaden Sie, um offline zu lesen
Stephan Kaps | Bundesversicherungsamt / kitenco
QS-Maßnahmen bei CD
Stephan Kaps
Techn. Projektleiter
Software-
Architekt
JEE – SOA -
Host
Java seit 2002Speaker & Autor
ISTQB, ISAQB,
IREB und ITIL
zertifiziert
Leidenschaft sind neue
Technologien und Methoden
04.11.2015 www.kitenco.de
Agenda
04.11.2015 www.kitenco.de
Roadmap
 07.03.16 – Release 2.1
 04.04.16 – Release 2.2
 09.05.16 – Release 2.3
 08.08.16 – Release 3.0
 05.09.16 – Release 3.1
04.11.2015 www.kitenco.de
??-Bingo
04.11.2015 www.kitenco.de
Voraussetzungen
04.11.2015 www.kitenco.de
04.11.2015 www.kitenco.de
Commit Stage
04.11.2015 www.kitenco.de
Statische Analysen
04.11.2015 www.kitenco.de
Ansicht Jenkins
04.11.2015 www.kitenco.de
Dependency Check
04.11.2015 www.kitenco.de
Quality Gates
04.11.2015 www.kitenco.de
OWASP Top 10
Quelle: http://de.slideshare.net/cmlh/owasp-top-ten?related=1
04.11.2015 www.kitenco.de
Testabdeckung
04.11.2015 www.kitenco.de
04.11.2015 www.kitenco.de
Quality-Gates
 Durch Jenkins-Plugins
 Violations-Plugin
 Analysis-Collector Plugin &
 Static-Code-Analysis Plugin (bieten
einheitliche Konfigurations- und
Auswertungsmöglichkeiten)
 JaCoCo-Plugin
04.11.2015 www.kitenco.de
04.11.2015 www.kitenco.de
ISO 25010
 Änderbarkeit und Wartbarkeit
 Codierrichtlinien
 Zuverlässigkeit
 Code-Duplikate und Fehlermuster
 Secure Coding Guide / 3rd-Party Verwundbarkeiten
 Funktionale Qualität
 Unit-Tests
04.11.2015 www.kitenco.de
UAT Stage
04.11.2015 www.kitenco.de
UAT Stage
 Automatisierte Integrationstests
 JUnit
 soapUI
04.11.2015 www.kitenco.de
04.11.2015 www.kitenco.de
Jenkins Integration
04.11.2015 www.kitenco.de
UAT Stage
 Automatisierte Integrationstests
 JUnit
 soapUI
 Citrus Framework
04.11.2015 www.kitenco.de
CitrusFramework.org
04.11.2015 www.kitenco.de
UAT Stage
 Automatisierte Integrationstests
 JUnit
 soapUI
 Citrus Framework
 Automatisierte Akzeptanztests
 BDD-Tools (Cucumber, Robot, JBehave, Concordion, ..)
04.11.2015 www.kitenco.de
Given <condition> When <action> Then <result>
public class BookSearchSteps {
Library library = new Library();
List<Book> result = new ArrayList<>();
@Given(".+book with the title '(.+)', published in (.+)")
public void addNewBook(final String title, @Format("dd MMMMM yyyy"), final
Date published) {
Book book = new Book(title, published);
library.addBook(book);
}
@When("^the customer searches for books published between (d+) and
(d+)$")
public void setSearchParameters(@Format("yyyy") final Date from,
@Format("yyyy") final Date to) {
result = library.findBooks(from, to);
}
@Then("Book (d+) should have the title '(.+)'$")
public void verifyBookAtPosition(final int position, final String title) {
assertThat(result.get(position - 1).getTitle(), equalTo(title));
}
}
04.11.2015 www.kitenco.de
Given <condition> When <action> Then <result>
public class BookSearchSteps {
Library library = new Library();
List<Book> result = new ArrayList<>();
@Given(".+book with the title '(.+)', published in (.+)")
public void addNewBook(final String title, @Format("dd MMMMM yyyy"), final
Date published) {
Book book = new Book(title, published);
library.addBook(book);
}
@When("^the customer searches for books published between (d+) and
(d+)$")
public void setSearchParameters(@Format("yyyy") final Date from,
@Format("yyyy") final Date to) {
result = library.findBooks(from, to);
}
@Then("Book (d+) should have the title '(.+)'$")
public void verifyBookAtPosition(final int position, final String title) {
assertThat(result.get(position - 1).getTitle(), equalTo(title));
}
}
Feature: Book search
To allow a customer to find his favourite books quickly, the library must offer multiple
ways to search for a book.
Scenario: Search books by publication year
Given a book with the title 'One good book', published in 14 March 2013
And another book with the title 'Some other book', published in 23 August 2014
And another book with the title 'How to cook a dino', published in 01 January 2012
When the customer searches for books published between 2013 and 2014
Then 2 books should have been found
And Book 1 should have the title 'Some other book'
And Book 2 should have the title 'One good book'
04.11.2015 www.kitenco.de
UAT Stage
 Automatisierte Integrationstests
 JUnit
 soapUI
 Citrus Framework
 Automatisierte Akzeptanztests
 BDD-Tools (Cucumber, Robot, JBehave, Concordion, ..)
 Selenium, Xebium & FitNesse
04.11.2015 www.kitenco.de
Simple BDD
04.11.2015 www.kitenco.de
Data-Driven-Testing
04.11.2015 www.kitenco.de
Jenkins Integration
04.11.2015 www.kitenco.de
Selenium, Xebium, FitNesse
 Pro:
 Keine Programmierung
notwendig
 Unterstützt Specification by
Example
 Gut für Data-Driven-Tests
 Contra:
 Anwendung muss schon
existieren (somit kein TDD)
 Noch ein Tool und noch ein
Tool
04.11.2015 www.kitenco.de
UAT Stage
 Automatisierte Integrationstests
 JUnit
 soapUI
 Citrus Framework
 Automatisierte Akzeptanztests
 BDD-Tools (Cucumber, Robot, JBehave, Concordion, ..)
 Selenium, Xebium & FitNesse
 Manuelle Akzeptanztests
 Nicht-testbares oder explorativ
04.11.2015 www.kitenco.de
Quality-Gates
04.11.2015 www.kitenco.de
ISO meets UAT
 Funktionalität
 Akzeptanztests
 Kompatibilität
 Integrationstests
 Usability / Benutzbarkeit
 Manuelles / exploratives Testen
04.11.2015 www.kitenco.de
Pre-Production Stage
04.11.2015 www.kitenco.de
Pre-Production Stage
 Security-Checks
 Zed Attack Proxy (ZAP)
04.11.2015 www.kitenco.de
04.11.2015 www.kitenco.de
04.11.2015 www.kitenco.de
Pre-Production Stage
 Security-Checks
 Zed Attack Proxy (ZAP)
 FindSecurityBugs
04.11.2015 www.kitenco.de
04.11.2015 www.kitenco.de
Pre-Production Stage
 Security-Checks
 Zed Attack Proxy (ZAP)
 FindSecurityBugs
 Alternativen:
 Einzelne Spezialisten, z.B. SQLmap
 W3AF-Framework
04.11.2015 www.kitenco.de
Pre-Production Stage
 Security-Checks
 Zed Attack Proxy (ZAP)
 FindSecurityBugs
 Alternativen:
 Einzelne Spezialisten, z.B. SQLmap
 W3AF-Framework
 Datenschutz-Tests
04.11.2015 www.kitenco.de
Pre-Production Stage
 Security-Checks
 Zed Attack Proxy (ZAP)
 FindSecurityBugs
 Alternativen:
 Einzelne Spezialisten, z.B. SQLmap
 W3AF-Framework
 Datenschutz-Tests
 BDD-Security
04.11.2015 www.kitenco.de
BDD-Security
04.11.2015 www.kitenco.de
Pre-Production Stage
 Last- und Performance-Tests
 JMeter
04.11.2015 www.kitenco.de
Pre-Production Stage
 Last- und Performance-Tests
 JMeter
 soapUI
04.11.2015 www.kitenco.de
Pre-Production Stage
 Last- und Performance-Tests
 JMeter
 soapUI
 Parametrisierte Webdriver Tests
04.11.2015 www.kitenco.de
Pre-Production Stage
 Last- und Performance-Tests
 JMeter
 soapUI
 Parametrisierte Webdriver Tests
 Gatling.io
04.11.2015 www.kitenco.de
Gatling.io
Gatling.io
Gatling Quality Gates
Pre-Production Stage
 Last- und Performance-Tests
 JMeter
 soapUI
 Parametrisierte Webdriver Tests
 Gatling.io
 Kommerzielle Alternativen:
 AppDynamics
 Dynatrace
04.11.2015 www.kitenco.de
 Clientseitig:
 Google Page Speed / WebPageTest
 kein Jenkins-Plugin verfügbar
 YSlow
 Sitespeed.io
 Setzt auf Yslow u.a. auf
 Integriert WebPageTest
 Manuelle Jenkins-Plugin Installation notwendig
 Im Auge behalten!
Last- und Performance-Tests
04.11.2015 www.kitenco.de
YSlow
04.11.2015 www.kitenco.de
YSlow Quality Gate
C:devphantomjs-1.9.7-windows
phantomjs.exe c:/dev/yslow.js -i grade -
threshold „B“ -f tap http://kitenco.de >
yslow.tap exit 0
Quality-Gates
 ZAP: über Plugin
 FindSecurityBugs: nur innerhalb von FindBugs
 Datenschutz: All or nothing
 JMeter: über Jenkins-Performance-Plugin
 soapUI: innerhalb der TestSuiten
 Gatling: innerhalb der Simulation
 YSlow: über Aufruf-Parameter
04.11.2015 www.kitenco.de
ISO meets Pre-Production
 Sicherheit
 Security-Tests
 Zuverlässigkeit und Effizienz
 Last- und Performance-Tests
 Übertragbarkeit
 Unterschiedliche Browser in diversen Versionen
 Installierbarkeit
 Durch Deployment auf mehreren Umgebungen
sichergestellt
04.11.2015 www.kitenco.de
Produktion
 Smoke Tests
 z.B. anhand eines kleinen Sets aus
Regressionstests
 z.B. Prüfungen, ob Verbindungen existieren
anhand von ping-Skripten
04.11.2015 www.kitenco.de
Build Lauf
BUILD SUCCESSFUL
Total time: 1 minute 51 seconds
[CHECKSTYLE] Collecting checkstyle analysis files...
[CHECKSTYLE] Successfully parsed file
c:dev.jenkinsjobsTestworkspacekitencotrunkAnwendung1checkstyle_reportsc
heckstyle_report.xml of module checkstyle_reports with 11 warnings.
[FINDBUGS] Collecting findbugs analysis files...
[FINDBUGS] Successfully parsed file
c:dev.jenkinsjobsTestworkspacekitencotrunkAnwendung1findbugs_reportsres
ult.xml of module findbugs_reports with 321 warnings.
Performance: Percentage of errors greater or equal than 25% sets the build as
unstable
Performance: Percentage of errors greater or equal than 50% sets the build as
failure
Performance: Recording JMeter reports 'kitenco/trunk/Anwendung1/perf_test/*.xml'
Performance: Parsing JMeter report file result.xml
Performance: File result.xml reported 25.0% of errors during the tests. Build
status is: UNSTABLE
Finished: UNSTABLE
04.11.2015 www.kitenco.de
Nur für agile Teams?
04.11.2015 www.kitenco.de
Nur für agile Teams?
• Es geht nicht nur um die Entwicklungsabteilung!
• Fachbereiche nicht immer ad hoc verfügbar!
• Systemadministratoren gibt es nicht im Überfluss!
04.11.2015 www.kitenco.de
Nur für agile Teams?
• Wichtig ist ein automatisierter Prozess!
• Pipeline kann auch nur alle 3 Monate durchlaufen
werden!
• Bei outgesourcter Entwicklung startet die Pipeline
einfach an anderer Stelle
04.11.2015 www.kitenco.de
Fazit & Ausblick
 Automatisierung bringt enorme Vorteile
 Quality-Gates sind ein enabler für Continuous Delivery
 Die hier vorgestellten Maßnahmen sind mit wenig
Aufwand einsetzbar
 Tool-Chain ist erweiterbar
 Auch für klassische Projekte sinnvoll
 Gute Tools für Architektur-Prüfungen fehlen noch
04.11.2015 www.kitenco.de
Noch Fragen?
Ausführlicher Artikel dazu in Objektspektrum
3/2015 und 5/2015 erschienen
info@kitenco.de - @kitenco1
Vielen Dank!
04.11.2015 www.kitenco.de
Referenzen
 Jez Humble, Continuous Delivery: Reliable Software Releases Through Build, Test, and
Deployment Automation, 2010, Addison-Wesley
 Jenkins, http://www.jenkins-ci.org
 Checkstyle, http://checkstyle.sourceforge.net
 FindBugs, http://findbugs.sourceforge.net
 PMD, http://pmd.sourceforge.net
 OWASP Dependency Check, https://www.owasp.org/index.php/OWASP_Dependency_Check
 JaCoCo, http://www.eclemma.org/jacoco
 JUnit, http://www.junit.org
 OWASP ZAP, https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
 soapUI, http://www.soapui.org
 JMeter, http://jmeter.apache.org
 Xebium, http://xebia.github.io/Xebium/
 Selenium, http://www.seleniumhq.org
 Google Page Speed, https://developers.google.com/speed/pagespeed/
 Sitespeed, http://www.sitespeed.io
 Yslow, http://www.yslow.org
 Jenkins Plugins, https://wiki.jenkins-ci.org/display/JENKINS/Plugins
04.11.2015 www.kitenco.de

Weitere ähnliche Inhalte

Ähnlich wie W-Jax 2015: QS-Maßnahmen bei Continuous Delivery

FMK2017 - iBeacons und FileMaker by Alexis Gehrt
FMK2017 -  iBeacons und FileMaker by Alexis GehrtFMK2017 -  iBeacons und FileMaker by Alexis Gehrt
FMK2017 - iBeacons und FileMaker by Alexis GehrtVerein FM Konferenz
 
Feige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-UmfeldFeige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-Umfeldgedoplan
 
ISTQB Certified Tester Foundation Level - Kurzeinführung
ISTQB Certified Tester Foundation Level - KurzeinführungISTQB Certified Tester Foundation Level - Kurzeinführung
ISTQB Certified Tester Foundation Level - KurzeinführungRalf Bongard
 
Testing TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with BehatTesting TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with BehatMarkus Goldbeck
 
Service oriented alerting
Service oriented alertingService oriented alerting
Service oriented alertinggeekQ
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenHendrik Lösch
 
Wartbare Oberflächentests mit Open-Source-Software
Wartbare Oberflächentests mit Open-Source-SoftwareWartbare Oberflächentests mit Open-Source-Software
Wartbare Oberflächentests mit Open-Source-SoftwareOliver Libutzki
 
WTC 2019 – Flutter
WTC 2019 – FlutterWTC 2019 – Flutter
WTC 2019 – Flutterwebconia
 
OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!Tobias Schneck
 
Slides__Splunk_UserGroup_20220407.pdf
Slides__Splunk_UserGroup_20220407.pdfSlides__Splunk_UserGroup_20220407.pdf
Slides__Splunk_UserGroup_20220407.pdfAlexanderStz1
 
W-JAX 2013 Spring Batch - Performance und Skalierbarkeit
W-JAX 2013 Spring Batch - Performance und SkalierbarkeitW-JAX 2013 Spring Batch - Performance und Skalierbarkeit
W-JAX 2013 Spring Batch - Performance und Skalierbarkeittobiasflohre
 
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...LeanIX GmbH
 
Dokumentation durch automatisierte Akzeptanztests
Dokumentation durch automatisierte AkzeptanztestsDokumentation durch automatisierte Akzeptanztests
Dokumentation durch automatisierte AkzeptanztestsSebastian Sanitz
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...Marc Müller
 
Enterprise Java Batch mit Spring
Enterprise Java Batch mit SpringEnterprise Java Batch mit Spring
Enterprise Java Batch mit Springdenschu
 
Dokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machenDokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machenSebastian Hempel
 
Webbrowser-Automatisierung mit Python und Selenium WebDriver
Webbrowser-Automatisierung mit Python und Selenium WebDriverWebbrowser-Automatisierung mit Python und Selenium WebDriver
Webbrowser-Automatisierung mit Python und Selenium WebDriverAndi Albrecht
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptSebastian Springer
 
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)NETWAYS
 
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)NETWAYS
 

Ähnlich wie W-Jax 2015: QS-Maßnahmen bei Continuous Delivery (20)

FMK2017 - iBeacons und FileMaker by Alexis Gehrt
FMK2017 -  iBeacons und FileMaker by Alexis GehrtFMK2017 -  iBeacons und FileMaker by Alexis Gehrt
FMK2017 - iBeacons und FileMaker by Alexis Gehrt
 
Feige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-UmfeldFeige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-Umfeld
 
ISTQB Certified Tester Foundation Level - Kurzeinführung
ISTQB Certified Tester Foundation Level - KurzeinführungISTQB Certified Tester Foundation Level - Kurzeinführung
ISTQB Certified Tester Foundation Level - Kurzeinführung
 
Testing TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with BehatTesting TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with Behat
 
Service oriented alerting
Service oriented alertingService oriented alerting
Service oriented alerting
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
 
Wartbare Oberflächentests mit Open-Source-Software
Wartbare Oberflächentests mit Open-Source-SoftwareWartbare Oberflächentests mit Open-Source-Software
Wartbare Oberflächentests mit Open-Source-Software
 
WTC 2019 – Flutter
WTC 2019 – FlutterWTC 2019 – Flutter
WTC 2019 – Flutter
 
OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!
 
Slides__Splunk_UserGroup_20220407.pdf
Slides__Splunk_UserGroup_20220407.pdfSlides__Splunk_UserGroup_20220407.pdf
Slides__Splunk_UserGroup_20220407.pdf
 
W-JAX 2013 Spring Batch - Performance und Skalierbarkeit
W-JAX 2013 Spring Batch - Performance und SkalierbarkeitW-JAX 2013 Spring Batch - Performance und Skalierbarkeit
W-JAX 2013 Spring Batch - Performance und Skalierbarkeit
 
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
 
Dokumentation durch automatisierte Akzeptanztests
Dokumentation durch automatisierte AkzeptanztestsDokumentation durch automatisierte Akzeptanztests
Dokumentation durch automatisierte Akzeptanztests
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
 
Enterprise Java Batch mit Spring
Enterprise Java Batch mit SpringEnterprise Java Batch mit Spring
Enterprise Java Batch mit Spring
 
Dokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machenDokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machen
 
Webbrowser-Automatisierung mit Python und Selenium WebDriver
Webbrowser-Automatisierung mit Python und Selenium WebDriverWebbrowser-Automatisierung mit Python und Selenium WebDriver
Webbrowser-Automatisierung mit Python und Selenium WebDriver
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
 
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
 
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
 

W-Jax 2015: QS-Maßnahmen bei Continuous Delivery

  • 1. Stephan Kaps | Bundesversicherungsamt / kitenco QS-Maßnahmen bei CD
  • 2. Stephan Kaps Techn. Projektleiter Software- Architekt JEE – SOA - Host Java seit 2002Speaker & Autor ISTQB, ISAQB, IREB und ITIL zertifiziert Leidenschaft sind neue Technologien und Methoden 04.11.2015 www.kitenco.de
  • 4. Roadmap  07.03.16 – Release 2.1  04.04.16 – Release 2.2  09.05.16 – Release 2.3  08.08.16 – Release 3.0  05.09.16 – Release 3.1 04.11.2015 www.kitenco.de
  • 13. OWASP Top 10 Quelle: http://de.slideshare.net/cmlh/owasp-top-ten?related=1 04.11.2015 www.kitenco.de
  • 16. Quality-Gates  Durch Jenkins-Plugins  Violations-Plugin  Analysis-Collector Plugin &  Static-Code-Analysis Plugin (bieten einheitliche Konfigurations- und Auswertungsmöglichkeiten)  JaCoCo-Plugin 04.11.2015 www.kitenco.de
  • 18. ISO 25010  Änderbarkeit und Wartbarkeit  Codierrichtlinien  Zuverlässigkeit  Code-Duplikate und Fehlermuster  Secure Coding Guide / 3rd-Party Verwundbarkeiten  Funktionale Qualität  Unit-Tests 04.11.2015 www.kitenco.de
  • 20. UAT Stage  Automatisierte Integrationstests  JUnit  soapUI 04.11.2015 www.kitenco.de
  • 23. UAT Stage  Automatisierte Integrationstests  JUnit  soapUI  Citrus Framework 04.11.2015 www.kitenco.de
  • 25. UAT Stage  Automatisierte Integrationstests  JUnit  soapUI  Citrus Framework  Automatisierte Akzeptanztests  BDD-Tools (Cucumber, Robot, JBehave, Concordion, ..) 04.11.2015 www.kitenco.de
  • 26. Given <condition> When <action> Then <result> public class BookSearchSteps { Library library = new Library(); List<Book> result = new ArrayList<>(); @Given(".+book with the title '(.+)', published in (.+)") public void addNewBook(final String title, @Format("dd MMMMM yyyy"), final Date published) { Book book = new Book(title, published); library.addBook(book); } @When("^the customer searches for books published between (d+) and (d+)$") public void setSearchParameters(@Format("yyyy") final Date from, @Format("yyyy") final Date to) { result = library.findBooks(from, to); } @Then("Book (d+) should have the title '(.+)'$") public void verifyBookAtPosition(final int position, final String title) { assertThat(result.get(position - 1).getTitle(), equalTo(title)); } } 04.11.2015 www.kitenco.de
  • 27. Given <condition> When <action> Then <result> public class BookSearchSteps { Library library = new Library(); List<Book> result = new ArrayList<>(); @Given(".+book with the title '(.+)', published in (.+)") public void addNewBook(final String title, @Format("dd MMMMM yyyy"), final Date published) { Book book = new Book(title, published); library.addBook(book); } @When("^the customer searches for books published between (d+) and (d+)$") public void setSearchParameters(@Format("yyyy") final Date from, @Format("yyyy") final Date to) { result = library.findBooks(from, to); } @Then("Book (d+) should have the title '(.+)'$") public void verifyBookAtPosition(final int position, final String title) { assertThat(result.get(position - 1).getTitle(), equalTo(title)); } } Feature: Book search To allow a customer to find his favourite books quickly, the library must offer multiple ways to search for a book. Scenario: Search books by publication year Given a book with the title 'One good book', published in 14 March 2013 And another book with the title 'Some other book', published in 23 August 2014 And another book with the title 'How to cook a dino', published in 01 January 2012 When the customer searches for books published between 2013 and 2014 Then 2 books should have been found And Book 1 should have the title 'Some other book' And Book 2 should have the title 'One good book' 04.11.2015 www.kitenco.de
  • 28. UAT Stage  Automatisierte Integrationstests  JUnit  soapUI  Citrus Framework  Automatisierte Akzeptanztests  BDD-Tools (Cucumber, Robot, JBehave, Concordion, ..)  Selenium, Xebium & FitNesse 04.11.2015 www.kitenco.de
  • 32. Selenium, Xebium, FitNesse  Pro:  Keine Programmierung notwendig  Unterstützt Specification by Example  Gut für Data-Driven-Tests  Contra:  Anwendung muss schon existieren (somit kein TDD)  Noch ein Tool und noch ein Tool 04.11.2015 www.kitenco.de
  • 33. UAT Stage  Automatisierte Integrationstests  JUnit  soapUI  Citrus Framework  Automatisierte Akzeptanztests  BDD-Tools (Cucumber, Robot, JBehave, Concordion, ..)  Selenium, Xebium & FitNesse  Manuelle Akzeptanztests  Nicht-testbares oder explorativ 04.11.2015 www.kitenco.de
  • 35. ISO meets UAT  Funktionalität  Akzeptanztests  Kompatibilität  Integrationstests  Usability / Benutzbarkeit  Manuelles / exploratives Testen 04.11.2015 www.kitenco.de
  • 37. Pre-Production Stage  Security-Checks  Zed Attack Proxy (ZAP) 04.11.2015 www.kitenco.de
  • 40. Pre-Production Stage  Security-Checks  Zed Attack Proxy (ZAP)  FindSecurityBugs 04.11.2015 www.kitenco.de
  • 42. Pre-Production Stage  Security-Checks  Zed Attack Proxy (ZAP)  FindSecurityBugs  Alternativen:  Einzelne Spezialisten, z.B. SQLmap  W3AF-Framework 04.11.2015 www.kitenco.de
  • 43. Pre-Production Stage  Security-Checks  Zed Attack Proxy (ZAP)  FindSecurityBugs  Alternativen:  Einzelne Spezialisten, z.B. SQLmap  W3AF-Framework  Datenschutz-Tests 04.11.2015 www.kitenco.de
  • 44. Pre-Production Stage  Security-Checks  Zed Attack Proxy (ZAP)  FindSecurityBugs  Alternativen:  Einzelne Spezialisten, z.B. SQLmap  W3AF-Framework  Datenschutz-Tests  BDD-Security 04.11.2015 www.kitenco.de
  • 46. Pre-Production Stage  Last- und Performance-Tests  JMeter 04.11.2015 www.kitenco.de
  • 47. Pre-Production Stage  Last- und Performance-Tests  JMeter  soapUI 04.11.2015 www.kitenco.de
  • 48. Pre-Production Stage  Last- und Performance-Tests  JMeter  soapUI  Parametrisierte Webdriver Tests 04.11.2015 www.kitenco.de
  • 49. Pre-Production Stage  Last- und Performance-Tests  JMeter  soapUI  Parametrisierte Webdriver Tests  Gatling.io 04.11.2015 www.kitenco.de
  • 53. Pre-Production Stage  Last- und Performance-Tests  JMeter  soapUI  Parametrisierte Webdriver Tests  Gatling.io  Kommerzielle Alternativen:  AppDynamics  Dynatrace 04.11.2015 www.kitenco.de
  • 54.  Clientseitig:  Google Page Speed / WebPageTest  kein Jenkins-Plugin verfügbar  YSlow  Sitespeed.io  Setzt auf Yslow u.a. auf  Integriert WebPageTest  Manuelle Jenkins-Plugin Installation notwendig  Im Auge behalten! Last- und Performance-Tests 04.11.2015 www.kitenco.de
  • 56. YSlow Quality Gate C:devphantomjs-1.9.7-windows phantomjs.exe c:/dev/yslow.js -i grade - threshold „B“ -f tap http://kitenco.de > yslow.tap exit 0
  • 57. Quality-Gates  ZAP: über Plugin  FindSecurityBugs: nur innerhalb von FindBugs  Datenschutz: All or nothing  JMeter: über Jenkins-Performance-Plugin  soapUI: innerhalb der TestSuiten  Gatling: innerhalb der Simulation  YSlow: über Aufruf-Parameter 04.11.2015 www.kitenco.de
  • 58. ISO meets Pre-Production  Sicherheit  Security-Tests  Zuverlässigkeit und Effizienz  Last- und Performance-Tests  Übertragbarkeit  Unterschiedliche Browser in diversen Versionen  Installierbarkeit  Durch Deployment auf mehreren Umgebungen sichergestellt 04.11.2015 www.kitenco.de
  • 59. Produktion  Smoke Tests  z.B. anhand eines kleinen Sets aus Regressionstests  z.B. Prüfungen, ob Verbindungen existieren anhand von ping-Skripten 04.11.2015 www.kitenco.de
  • 60. Build Lauf BUILD SUCCESSFUL Total time: 1 minute 51 seconds [CHECKSTYLE] Collecting checkstyle analysis files... [CHECKSTYLE] Successfully parsed file c:dev.jenkinsjobsTestworkspacekitencotrunkAnwendung1checkstyle_reportsc heckstyle_report.xml of module checkstyle_reports with 11 warnings. [FINDBUGS] Collecting findbugs analysis files... [FINDBUGS] Successfully parsed file c:dev.jenkinsjobsTestworkspacekitencotrunkAnwendung1findbugs_reportsres ult.xml of module findbugs_reports with 321 warnings. Performance: Percentage of errors greater or equal than 25% sets the build as unstable Performance: Percentage of errors greater or equal than 50% sets the build as failure Performance: Recording JMeter reports 'kitenco/trunk/Anwendung1/perf_test/*.xml' Performance: Parsing JMeter report file result.xml Performance: File result.xml reported 25.0% of errors during the tests. Build status is: UNSTABLE Finished: UNSTABLE 04.11.2015 www.kitenco.de
  • 61. Nur für agile Teams? 04.11.2015 www.kitenco.de
  • 62. Nur für agile Teams? • Es geht nicht nur um die Entwicklungsabteilung! • Fachbereiche nicht immer ad hoc verfügbar! • Systemadministratoren gibt es nicht im Überfluss! 04.11.2015 www.kitenco.de
  • 63. Nur für agile Teams? • Wichtig ist ein automatisierter Prozess! • Pipeline kann auch nur alle 3 Monate durchlaufen werden! • Bei outgesourcter Entwicklung startet die Pipeline einfach an anderer Stelle 04.11.2015 www.kitenco.de
  • 64. Fazit & Ausblick  Automatisierung bringt enorme Vorteile  Quality-Gates sind ein enabler für Continuous Delivery  Die hier vorgestellten Maßnahmen sind mit wenig Aufwand einsetzbar  Tool-Chain ist erweiterbar  Auch für klassische Projekte sinnvoll  Gute Tools für Architektur-Prüfungen fehlen noch 04.11.2015 www.kitenco.de
  • 65. Noch Fragen? Ausführlicher Artikel dazu in Objektspektrum 3/2015 und 5/2015 erschienen info@kitenco.de - @kitenco1 Vielen Dank! 04.11.2015 www.kitenco.de
  • 66. Referenzen  Jez Humble, Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation, 2010, Addison-Wesley  Jenkins, http://www.jenkins-ci.org  Checkstyle, http://checkstyle.sourceforge.net  FindBugs, http://findbugs.sourceforge.net  PMD, http://pmd.sourceforge.net  OWASP Dependency Check, https://www.owasp.org/index.php/OWASP_Dependency_Check  JaCoCo, http://www.eclemma.org/jacoco  JUnit, http://www.junit.org  OWASP ZAP, https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project  soapUI, http://www.soapui.org  JMeter, http://jmeter.apache.org  Xebium, http://xebia.github.io/Xebium/  Selenium, http://www.seleniumhq.org  Google Page Speed, https://developers.google.com/speed/pagespeed/  Sitespeed, http://www.sitespeed.io  Yslow, http://www.yslow.org  Jenkins Plugins, https://wiki.jenkins-ci.org/display/JENKINS/Plugins 04.11.2015 www.kitenco.de