Qualitätssicherung inWebprojektenSebastian Springer I 06.06.2012                                  © Mayflower GmbH 2012
HELLO    MY NAME    IS@basti_springer
Womit verdiene ich mein Geld?●   Mayflower GmbH●   PHP●   Javascript●   Teamleiter
Projekte?
Was erzähle ich heute?●   Qualitätssicherung in Webprojekten●   Schwerpunkt: Javascript
...und was nicht?●   Qualitätssicherung in PHP●   PHPCS, PHPUnit, phpcpd, pdepend,...●   http://jenkins-php.org/
Warum Qualitätssicherung?
Javascript === Quick & Dirty
Javascript === Quick & Dirty
Was ist Qualitätssicherung                      ?●   Standards●   Verlässlichkeit●   Erweiterbarkeit●   Stabilität
CI∞
Continuous Inspection
Continuous Integration
Plattformen
CI im Großen - Jenkins
CI im Kleinen – die IDE
Und wozu das Ganze?
Schnelle Rückmeldung!
Das Beispiel
Ziel
Ziel       Datum eingeben
Ziel       Offset eingeben
Ziel   Datum berechnen
ZielFeiertage beachten!
Anforderungen an den Code●   JSLinted●   Kein Copy/Paste Code●   Unittests●   Akzeptanztests
Wie?
Mit Toolunterstützung und     Automatisierung!
Anforderungen an den Code●   JSLinted●   Kein Copy/Paste Code●   Unittests●   Akzeptanztests
It will hurt your feelings!
Was macht JSLint?●   Codingstyle – Whitespaces●   == & != vs. === & !==●   Variablendeklarationen zu Beginn einer    Funkt...
JSLint in Jenkins●   jslint4java    java -jar jslint4java.jar --report    xml /path/to/src/*.js > jslint.xml●   Violations...
JSLint in PhpStorm
Anforderungen an den Code●   JSLinted●   Kein Copy/Paste Code●   Unittests●   Akzeptanztests
Was macht CPD?●   Duplikate im Quellcode finden●   Tokens statt Strings
Warum?●   Verbesserungen an mehreren Stellen●   Bugfixes an mehreren Stellen    = erhöhter Wartungsaufwand
CPD in Jenkins●   PMD CPD    /opt/PMD/bin/run.sh cpd --minimum-    tokens 12 --files /path/to/src    --language ecmascript...
Anforderungen an den Code●   JSLinted●   Kein Copy/Paste Code●   Unittests●   Akzeptanztests
Warum Unittests?●   Stabilität●   Sicherheit●   Dokumentation●   Pro Bug ein Test
Jasminedescribe("DateCalc", function () {      it("should return false ...provided", function () {            var dateCalc...
TDD
JsTestDriver●   Testing Framework●   Browser Capturing●   Coverage●   Plugins für Qunit und Jasmine
Jasmine in Jenkins●   JsTestDriver    java -jar JsTestDriver.jar --port    9876 --browser /usr/bin/firefox    java -jar Js...
config.jstdserver: http://localhost:9876load:  - lib/jasmine-1.2.0.rc3/jasmine.js  - lib/jasmine-jstd-adapter/src/JasmineA...
Coverage in Jenkins●   JsTestDriver Coverage Plugin●   Converter    /opt/lcov-to-cobertura-xml.py    jsTestDriver.conf-cov...
Jasmine in PHPStorm
Jasmine in PHPStorm
Jasmine in PHPStorm
Anforderungen an den Code●   JSLinted●   Kein Copy/Paste Code●   Unittests●   Akzeptanztests
Warum Akzeptanztests?●   Tests gegen Akzeptanzkriterien●   Anforderungen vs. Umsetzung●   Nicht von Entwicklern
Selenium IDE
Selenium in Jenkins●   Selenium Server    export DISPLAY=:5.0    java -jar /opt/selenium-server.jar    -htmlSuite *firefox...
Chuck Norris Plugin
Fragen?
http://joind.in/talk/view/6658
Vielen Dank für Ihre      Aufmerksamkeit!                      Sebastian Springer                sebastian.springer@mayflo...
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Upcoming SlideShare
Loading in …5
×

Qualitätssicherung in Webprojekten

906 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
906
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Qualitätssicherung in Webprojekten

  1. 1. Qualitätssicherung inWebprojektenSebastian Springer I 06.06.2012 © Mayflower GmbH 2012
  2. 2. HELLO MY NAME IS@basti_springer
  3. 3. Womit verdiene ich mein Geld?● Mayflower GmbH● PHP● Javascript● Teamleiter
  4. 4. Projekte?
  5. 5. Was erzähle ich heute?● Qualitätssicherung in Webprojekten● Schwerpunkt: Javascript
  6. 6. ...und was nicht?● Qualitätssicherung in PHP● PHPCS, PHPUnit, phpcpd, pdepend,...● http://jenkins-php.org/
  7. 7. Warum Qualitätssicherung?
  8. 8. Javascript === Quick & Dirty
  9. 9. Javascript === Quick & Dirty
  10. 10. Was ist Qualitätssicherung ?● Standards● Verlässlichkeit● Erweiterbarkeit● Stabilität
  11. 11. CI∞
  12. 12. Continuous Inspection
  13. 13. Continuous Integration
  14. 14. Plattformen
  15. 15. CI im Großen - Jenkins
  16. 16. CI im Kleinen – die IDE
  17. 17. Und wozu das Ganze?
  18. 18. Schnelle Rückmeldung!
  19. 19. Das Beispiel
  20. 20. Ziel
  21. 21. Ziel Datum eingeben
  22. 22. Ziel Offset eingeben
  23. 23. Ziel Datum berechnen
  24. 24. ZielFeiertage beachten!
  25. 25. Anforderungen an den Code● JSLinted● Kein Copy/Paste Code● Unittests● Akzeptanztests
  26. 26. Wie?
  27. 27. Mit Toolunterstützung und Automatisierung!
  28. 28. Anforderungen an den Code● JSLinted● Kein Copy/Paste Code● Unittests● Akzeptanztests
  29. 29. It will hurt your feelings!
  30. 30. Was macht JSLint?● Codingstyle – Whitespaces● == & != vs. === & !==● Variablendeklarationen zu Beginn einer Funktion● “use strict”● Globale Variablen● Verwendung vor der Definition● eval is Evil
  31. 31. JSLint in Jenkins● jslint4java java -jar jslint4java.jar --report xml /path/to/src/*.js > jslint.xml● Violations Plugin
  32. 32. JSLint in PhpStorm
  33. 33. Anforderungen an den Code● JSLinted● Kein Copy/Paste Code● Unittests● Akzeptanztests
  34. 34. Was macht CPD?● Duplikate im Quellcode finden● Tokens statt Strings
  35. 35. Warum?● Verbesserungen an mehreren Stellen● Bugfixes an mehreren Stellen = erhöhter Wartungsaufwand
  36. 36. CPD in Jenkins● PMD CPD /opt/PMD/bin/run.sh cpd --minimum- tokens 12 --files /path/to/src --language ecmascript --format xml > cpd.xml● Duplicate Code Scanner Plug-in
  37. 37. Anforderungen an den Code● JSLinted● Kein Copy/Paste Code● Unittests● Akzeptanztests
  38. 38. Warum Unittests?● Stabilität● Sicherheit● Dokumentation● Pro Bug ein Test
  39. 39. Jasminedescribe("DateCalc", function () { it("should return false ...provided", function () { var dateCalc = new DateCalc(), result = dateCalc.resolveDate(); expect(result).toBeFalsy(); });});
  40. 40. TDD
  41. 41. JsTestDriver● Testing Framework● Browser Capturing● Coverage● Plugins für Qunit und Jasmine
  42. 42. Jasmine in Jenkins● JsTestDriver java -jar JsTestDriver.jar --port 9876 --browser /usr/bin/firefox java -jar JsTestDriver.jar --config /path/to/config.jstd --tests all --testOutput . --reset● xUnit Plugin
  43. 43. config.jstdserver: http://localhost:9876load: - lib/jasmine-1.2.0.rc3/jasmine.js - lib/jasmine-jstd-adapter/src/JasmineAdapter.js - spec/DateCalc.js - spec/Holiday.js - src/DateCalc.js - src/Holiday.jsplugin: - name: "coverage" jar: "/opt/JsTestDriver/plugins/coverage.jar" module: "com.google.jstestdriver.coverage.CoverageModule"
  44. 44. Coverage in Jenkins● JsTestDriver Coverage Plugin● Converter /opt/lcov-to-cobertura-xml.py jsTestDriver.conf-coverage.dat -o coverage/coverage.xml● Cobertura Plugin
  45. 45. Jasmine in PHPStorm
  46. 46. Jasmine in PHPStorm
  47. 47. Jasmine in PHPStorm
  48. 48. Anforderungen an den Code● JSLinted● Kein Copy/Paste Code● Unittests● Akzeptanztests
  49. 49. Warum Akzeptanztests?● Tests gegen Akzeptanzkriterien● Anforderungen vs. Umsetzung● Nicht von Entwicklern
  50. 50. Selenium IDE
  51. 51. Selenium in Jenkins● Selenium Server export DISPLAY=:5.0 java -jar /opt/selenium-server.jar -htmlSuite *firefox "http://dateCalc.basti.dev" "/srv/www/vhosts/tests/suite.html" "selenium/results.html"● Selenium HTML report Plugin
  52. 52. Chuck Norris Plugin
  53. 53. Fragen?
  54. 54. http://joind.in/talk/view/6658
  55. 55. Vielen Dank für Ihre Aufmerksamkeit! Sebastian Springer sebastian.springer@mayflower.de Mayflower GmbH Mannhardtstr. 6 80538 München Deutschland Twitter: @basti_springerJune 11, 2012 Mayflower GmbH 58 https://github.com/sspringer82

×