agile javascript
play

Agile JavaScript Frameworks, Tools, Services Ben Ripkens IT - PowerPoint PPT Presentation

Agile JavaScript Frameworks, Tools, Services Ben Ripkens IT Consultant codecentric AG Michael Lex IT Consultant codecentric AG Agile Software Development Kanban Scrum Agile Manifesto Respond to change Customer collaboration


  1. Agile JavaScript Frameworks, Tools, Services Ben Ripkens – IT Consultant codecentric AG Michael Lex – IT Consultant codecentric AG

  2. Agile Software Development Kanban Scrum Agile Manifesto Respond to change Customer collaboration Deliver frequently Ensure quality Working software

  3. Agile Practices BDD Continuous Integration DDD Static Code Analysis Continuous Delivery TDD Code Reviews

  4. Frameworks, Tools and Services Cucumber Robot mocha Grunt Puppet GitHub Travis-CI karma Mercurial Maven Jenkins JBehave Jira

  5. Everything together BDD Cucumber Kanban Robot Scrum mocha Continuous Integration Agile Manifesto Grunt Respond to change Puppet Static Code Analysis GitHub Customer collaboration Travis-CI karma Ensure quality Continuous Delivery DDD Deliver frequently JBehave Mercurial Jenkins TDD Code Reviews Working software Maven Jira

  6. More structure please ...

  7. DEVELOP COLLABORATE Application Testing Tools mocha karma chai jshint Sinon.JS less ng-sce nario BUILD grunt INTEGRATE DEPLOY

  8. One step at a time...

  9. DEVELOP Application AngularJS AngularJS „ Superheroic JavaScript MVW „ Superheroic JavaScript MVW framework“ framework“ Node.JS Node.JS Server-Side JavaScript implementation Server-Side JavaScript implementation with strictly asynchronous I/O with strictly asynchronous I/O Express.JS Express.JS HTTP-Server framework HTTP-Server framework Neo4J Neo4J „ The world's leading graph database“ „ The world's leading graph database“

  10. Now... … we can start developing the application. But... … what about collaboration in the team? ● Work on the same code simultanuously? ● Keep track of open bugs? ● Discuss and review code?

  11. DEVELOP COLLABORATE Application GitHub is more than just a VCS GitHub is more than just a VCS ● Bugtracker ● Bugtracker ● Code Review Tool ● Code Review Tool ● Wiki ● Wiki ● Documentation ● Documentation

  12. Now... … we can work together on our project. But... … how can we ensure everybody uses the same versions of the necessary frameworks?

  13. DEVELOP COLLABORATE Application BUILD Node Package Manager Node Package Manager ● Dependency management for JavaScript projects ● Dependency management for JavaScript projects ● Is part of NodeJS ● Is part of NodeJS ● Available Packages on npmjs.org ● Available Packages on npmjs.org

  14. Now... … we can deal with dependencies (even transitive ones). But... … what about testing? ● Unit-Tests? ● Integration-Tests? ● End-to-End Tests?

  15. DEVELOP COLLABORATE Application Testing mocha chai Sinon.JS ng-sce nario BUILD AngularJS Scenario Runner for end-to-end-tests AngularJS Scenario Runner for end-to-end-tests Mocha for unit-tests (client- and server-side) Mocha for unit-tests (client- and server-side) Utility-libraries: Utility-libraries: ● Sinon.JS for stubbing/mocking ● Sinon.JS for stubbing/mocking ● Chai for readable assertions ● Chai for readable assertions

  16. Now... … we have tests to ensure high functional quality and prevent regression. But... … how can we automate test execution? ● Run client-side tests from command-line (without having to refresh the browser)? ● Automatically run tests whenever code changes? ● Get instant feedback when a test fails?

  17. DEVELOP COLLABORATE Application Testing Tools mocha karma chai Sinon.JS ng-sce nario Karma Karma BUILD ● Test-Runner ● Test-Runner ● Execute in-browser-tests in background ● Execute in-browser-tests in background ● Supports various browsers ● Supports various browsers (Chrome, Firefox, PhantomJS) (Chrome, Firefox, PhantomJS) ● Execute test continuously in background ● Execute test continuously in background

  18. Now... … test execution is easy. But... … are there other tools to support developers? ● Static code analysis? ● Enforce code style? ● Compile JS/CSS?

  19. DEVELOP COLLABORATE Application Testing Tools mocha karma chai jshint Sinon.JS less ng-sce nario JSHint JSHint ● Static code analysis ● Static code analysis ● Detect (syntax) errors ● Detect (syntax) errors BUILD ● Detect potential problems (bugs) ● Detect potential problems (bugs) ● Enforce code style ● Enforce code style LESS LESS ● Dynamic stylesheet language ● Dynamic stylesheet language ● Extends CSS ● Extends CSS

  20. Now... … we have plenty of tools. But... … all these tools have their own command line interface and configuration options. We want one tool to rule them all!

  21. DEVELOP COLLABORATE Grunt Grunt ● JavaScript Task Runner Application Testing Tools ● JavaScript Task Runner ● Task configuration in Gruntfile.js ● Task configuration in Gruntfile.js mocha karma ● Task execution with grunt-cli ● Task execution with grunt-cli chai jshint ● Great number of plugins ● Great number of plugins Sinon.JS less ● Very customizable ● Very customizable ng-sce nario BUILD grunt

  22. Now... … the build chain is complete. But... … the build is only executed locally. ● Trigger build on each commit? ● Warn developers when build fails? ● Avoid works-on-my-machine problem?

  23. DEVELOP COLLABORATE Application Testing Tools mocha karma chai jshint Travis-CI Sinon.JS Travis-CI less ● Continuous Integration Service ● Continuous Integration Service ng-sce nario ● Seamless integration in GitHub projects ● Seamless integration in GitHub projects ● Easy configuration ● Easy configuration BUILD grunt INTEGRATE

  24. Is something still missing? Yes, … … we want to go live! ● Automated deployment after successfull build? ● Deployment to different environments (production, staging, etc)?

  25. DEVELOP COLLABORATE Application Testing Tools mocha karma chai jshint Sinon.JS less ng-sce nario Heroku Heroku ● Platform as a Service ● Platform as a Service ● Easy deployment via git-push ● Easy deployment via git-push BUILD grunt ● Continuous Delivery from Travis-CI ● Continuous Delivery from Travis-CI INTEGRATE DEPLOY

  26. The final picture DEVELOP COLLABORATE Application Testing Tools mocha karma chai jshint Sinon.JS less ng-sce nario BUILD grunt INTEGRATE DEPLOY

  27. ● cucumber Anything else? ● watchservice ● nodejs-webdriver ● test-coverage ● ... ● ... DEVELOP COLLABORATE ● Twitter Bootstrap ● D3.js Application Testing Tools ● ... mocha karma chai jshint Sinon.JS less ng-sce nario BUILD grunt INTEGRATE DEPLOY ● rollback ● artifact archive ● schema-migration ● reporting ● ... ● ...

  28. (Java) Alternative DEVELOP COLLABORATE Application Testing Tools JUnit Sonar CheckStyle Spring Test JProfiler JBehave BUILD INTEGRATE DEPLOY

Recommend


More recommend