Testing Web Applications

Earlier today I published a poll asking what subjects people would most prefer I devote my attention to when updating current and/or creating new guides. If you have no idea what I’m talking about, you can see my existing guides here on GitHub. The results thus-far surprise me a bit, and also really make me proud of you guys. The leader in the poll, by a wide margin, is “testing web applications”.

This shows a commitment to really diving deeply into learning development at the level necessary to leverage it as a career, not just a junior level job. It’s the sort of detail you prioritize when you’re determined to “get good, not get by”.

I’m going to let the poll run for a few days to ensure everyone’s voice is heard (yes, even the joker who wrote in “turnip”) but I’ve already begun working through how to put together a testing guide in the back of my mind. It’s the current front-runner, and it’s also so immediately career-relevant that it will likely be next on the list.

As part of my prep for any new guide, I start by just brain dumping high level concepts, useful tools and frameworks, and anything that pops into my mind into one giant mess to later be sorted and expanded into a cohesive path towards mastery. If anyone is interested in what the pre-guide-mess looks like, here it is in all its un-glory:

Paradigms

  • TDD
  • BDD
  • Waterfall/etc

Frameworks/libraries

  • Jasmine
  • Karma
  • Mocha
  • Sinon
  • Chai
  • Tape
  • Jest
  • Protractor
  • Istanbul

Periphery

  • Selenium
  • Phantomjs
  • Karma
  • Zombie

Build tools

  • Grunt
  • Gulp
  • Webpack
  • Babel
  • Browserify
  • ESLint / JSLint

Looking at the available free resources, it’s becoming apparent to me that I’ll likely have to author some content myself to ensure solid material for everything I’d like to cover. Possible progression:

  1. Introduction to build processes, likely focused on Gulp and Webpack with lighter coverage of npm and tape.
  2. Overview of various methodologies and high level concepts, introduction to the various types of testing: unit, integration, end-to-end…
  3. Quick overview of testing Node.js modules, likely using Mocha/Sinon/Chai
  4. Quick overview of testing UI code, likely covering Jasmine/Karma/Phantomjs
  5. Deeper dive, introducing other technologies
  6. Practice projects throughout — idea: create some full stack web applications and make the repos available on GitHub as practice projects for implementing tests. Second idea: create project specs, practice projects involve coding those specs in (appropriate) testing frameworks.

And, that’s what my initial brain dump looks like before I work out the kinks, curate content, and polish it up :D

Have a great day, and thanks to the folks who bought me a coffee earlier. Someone suggested I put that link up and I was hesitant because I never want anyone to think I do this for anything except the enjoyment of helping others, but it did make me smile that a few of you opted to click :D