Your SlideShare is downloading. ×
0
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Qualitätssicherung in Webprojekten

651

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
651
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Qualitätssicherung inWebprojektenSebastian Springer I 06.06.2012 © Mayflower GmbH 2012
  • 2. HELLO MY NAME IS@basti_springer
  • 3. Womit verdiene ich mein Geld?● Mayflower GmbH● PHP● Javascript● Teamleiter
  • 4. Projekte?
  • 5. Was erzähle ich heute?● Qualitätssicherung in Webprojekten● Schwerpunkt: Javascript
  • 6. ...und was nicht?● Qualitätssicherung in PHP● PHPCS, PHPUnit, phpcpd, pdepend,...● http://jenkins-php.org/
  • 7. Warum Qualitätssicherung?
  • 8. Javascript === Quick & Dirty
  • 9. Javascript === Quick & Dirty
  • 10. Was ist Qualitätssicherung ?● Standards● Verlässlichkeit● Erweiterbarkeit● Stabilität
  • 11. CI∞
  • 12. Continuous Inspection
  • 13. Continuous Integration
  • 14. Plattformen
  • 15. CI im Großen - Jenkins
  • 16. CI im Kleinen – die IDE
  • 17. Und wozu das Ganze?
  • 18. Schnelle Rückmeldung!
  • 19. Das Beispiel
  • 20. Ziel
  • 21. Ziel Datum eingeben
  • 22. Ziel Offset eingeben
  • 23. Ziel Datum berechnen
  • 24. ZielFeiertage beachten!
  • 25. Anforderungen an den Code● JSLinted● Kein Copy/Paste Code● Unittests● Akzeptanztests
  • 26. Wie?
  • 27. Mit Toolunterstützung und Automatisierung!
  • 28. Anforderungen an den Code● JSLinted● Kein Copy/Paste Code● Unittests● Akzeptanztests
  • 29. It will hurt your feelings!
  • 30. Was macht JSLint?● Codingstyle – Whitespaces● == & != vs. === & !==● Variablendeklarationen zu Beginn einer Funktion● “use strict”● Globale Variablen● Verwendung vor der Definition● eval is Evil
  • 31. JSLint in Jenkins● jslint4java java -jar jslint4java.jar --report xml /path/to/src/*.js > jslint.xml● Violations Plugin
  • 32. JSLint in PhpStorm
  • 33. Anforderungen an den Code● JSLinted● Kein Copy/Paste Code● Unittests● Akzeptanztests
  • 34. Was macht CPD?● Duplikate im Quellcode finden● Tokens statt Strings
  • 35. Warum?● Verbesserungen an mehreren Stellen● Bugfixes an mehreren Stellen = erhöhter Wartungsaufwand
  • 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. Anforderungen an den Code● JSLinted● Kein Copy/Paste Code● Unittests● Akzeptanztests
  • 38. Warum Unittests?● Stabilität● Sicherheit● Dokumentation● Pro Bug ein Test
  • 39. Jasminedescribe("DateCalc", function () { it("should return false ...provided", function () { var dateCalc = new DateCalc(), result = dateCalc.resolveDate(); expect(result).toBeFalsy(); });});
  • 40. TDD
  • 41. JsTestDriver● Testing Framework● Browser Capturing● Coverage● Plugins für Qunit und Jasmine
  • 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. 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. Coverage in Jenkins● JsTestDriver Coverage Plugin● Converter /opt/lcov-to-cobertura-xml.py jsTestDriver.conf-coverage.dat -o coverage/coverage.xml● Cobertura Plugin
  • 45. Jasmine in PHPStorm
  • 46. Jasmine in PHPStorm
  • 47. Jasmine in PHPStorm
  • 48. Anforderungen an den Code● JSLinted● Kein Copy/Paste Code● Unittests● Akzeptanztests
  • 49. Warum Akzeptanztests?● Tests gegen Akzeptanzkriterien● Anforderungen vs. Umsetzung● Nicht von Entwicklern
  • 50. Selenium IDE
  • 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. Chuck Norris Plugin
  • 53. Fragen?
  • 54. http://joind.in/talk/view/6658
  • 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

×