Test Invaders

Test Invaders

An interactive crash course focusing on fast feedback, test-driven development, incremental delivery, and automated deployment.

In this hands-on activity, Continuous Delivery will be demonstrated via a classic favourite, “Space Invaders”.

There is something for everybody!

1945ab4cdb87eaf5a5c906fa884c29f1?s=128

Scott Robinson

May 30, 2012
Tweet

Transcript

  1. A Brief Introduction to Space Invaders

  2. Humanity’s Last and Best Hopes @quadhome @gardym Mike, say something

    funny about yourself. Scott, admit your greatest fear is talking in front of a group of strangers.
  3. When the fate of the world is on the line...

    (Really) Fast Feedback Test Driven DevelopmentDESIGN Continuously Continuous Delivery 1-Click® Deployment Why are we here? To have fun and learn... FF: the speed of a team of a development team is dependent on how fast we can react TDD: Because evolving code with tests guides our design. CD: When changes are made, we can immediately put them out with confidence. Deployment: Don’t want to schedule a release to save the world... but, actually...
  4. The Real Reason § KEEP CALM AND RETRO GAME

  5. εϖʔεΠϯϕʔμ Designed engineer and built by Tomohiro Nishikado in 1978

    Who, according to Wikipedia, had a dream about Japanese school children attacked by invading aliens whilst waiting for Santa Claus. HISTORY: STRANGER THAN FICTION
  6. An Invader What’s funny about the Invader? Nothing. There’s here

    to destroy planet Earth.
  7. The Swarm It’s common knowledge that all alien invasions come

    in swarm form. The worst form.
  8. The Tank Our last, best, most advanced but lowest resolution

    defence against skyborn menaces.
  9. The Tank’s Bullet They go up.

  10. An Invader’s Bullet They go down.

  11. An approximation of game programming while(true) { update_everything(time, input); collide_everything();

    draw_everything(); } Event loop. Move everything, see what got hit, and then draw the results... like a Space Invader...
  12. The Theatre of War (0,0) (width, height) (x, y) (width,

    height) An invader and its bounding box Collisions occur when bounding boxes overlap Invader { active: [true, false] box: { x, y, width, height } update(time, input) collide(what hit) team: [Team.Earth, Team.Invader] }
  13. So let’s play! testinvaders.heroku.com