Slides from a quick and dirty presentation I gave to colleagues on Continuous Integration, Unit / Spec testing, etc.
CREDIT: this is very much in the Zach Holman school of presentation. I borrowed a lot of inspiration (and some colors/fonts) from his designs. Attribution was given.
8. WHYYYYYYYYYYYYYYYYY?!?!?!?!
PEOPLE ARE PROJECTS ARE TECHNOLOGY IS
OPTIMISTIC DEADLINED REVOLUTIONARY
BUSY RISKY FLUCTUATING
DISTRACTED HIGH STAKES SPECIALIZED
HUMAN JOB SECURITY MADE BY PEOPLE
9. WHYYYYYYYYYYYYYYYYY?!?!?!?!
PEOPLE ARE PROJECTS ARE TECHNOLOGY IS
OPTIMISTIC DEADLINED REVOLUTIONARY
BUSY RISKY FLUCTUATING
DISTRACTED HIGH STAKES SPECIALIZED
HUMAN JOB SECURITY MADE BY PEOPLE
CUSTOMERS ARE
THE SOURCE OF ALL JOY IN THE UNIVERSE
10. WHYYYYYYYYYYYYYYYYY?!?!?!?!
PEOPLE ARE PROJECTS ARE TECHNOLOGY IS
OPTIMISTIC DEADLINED REVOLUTIONARY
BUSY RISKY FLUCTUATING
DISTRACTED HIGH STAKES SPECIALIZED
HUMAN JOB SECURITY MADE BY PEOPLE
CUSTOMERS ARE ALL OF THE ABOVE.
THE SOURCE OF ALL JOY IN THE UNIVERSE
14. process is unemotional
repeatable
risk-averse
cheap
transparent
trainable
blameless
consensus
15. The Joel Test
DO YOU:
• Use source control? • Fix bugs first?
• Make builds in one step? • Have a spec?
• Make daily builds? • Have testers?
• Use a bug tracker? • Do hallway tests?
21. SUBVERSION is your code’s historian. 2
Stores Every Change
Mediates Conflicts
Tags Things For Reference
Imagines New Paths
ALT: git, cvs, mercurial
25. CRUISECONTROL is your code’s brain. 4
Processes Changes
Collects Feedback From Components
Oversees Operations
ALT: TeamCity, Team Foundation Server
27. MSBBUILD is your code’s birth. 5
Brings code to Life by compiling it
If this fails, your code doesn’t exist
Is the equivalent of F5 in Visual Studio
ALT: Ant, NAnt
29. NUnit is your code’s physical fitness. 6
Ensures that it works as expected inside
Keeps Code Flexible and Strong
Allows Code to Handle Change
ALT: xUnit, MSTest
33. SPECFLOW is your code’s social skills. 8
Tests code from outside perspective
Tests multiple browsers / OSes
Runs as NUnit Tests
Makes use of Selenium and VMs
Lets You Code to Requirements
ALT: Cucumber
41. OCTOPUS is your code’s manifesto’s publisher. 12
Knows its Audience (Servers)
Translates the Manifesto / Variables
Puts Your Code Into the Wild
ALT: Enhydra Octopus (Java)
43. The Joel Test
DO YOU:
Use source control? Fix bugs first?
Make builds in one step? Have a spec?
Make daily builds? Have testers?
Use a bug tracker? Do hallway tests?
46. Anything goes wrong? Write a bug w/failing test & make it pass.
Order.
Code author traceability Tested on Multiple OSes Code and changes are documented
User Testing & QA is automated Our code knows how to work around its environment(s)
Metrics on times / performance
Tested for Security & Best Practices
Changes handled gracefully
Pull any version and build it anytime.
Can see who broke the build
Permissions are baked into deployment Flexibility to change without breaking Spec tests test interaction with existing apps
Tested on multiple browsers through spec tests Spec tests show code meets requirements
Bugs are now just failing tests, documented in the tracker
Code is tested internally & externally Environment differences are handled & scripted
54. References / Credits / Inspirations
• Jeff Atwood, CodingHorror, “The ‘Works on My Machine’ Certification Program”
– http://www.codinghorror.com/blog/2007/03/the-works-on-my-machine-certification-program.html
• Joel Spolsky, FogCreek, “The Joel Test”
– http://www.joelonsoftware.com/articles/fog0000000043.html
• Zach Holman, “Slide Design For Developers”
– http://zachholman.com/posts/slide-design-for-developers/
• Zach Holman, “How GitHub Uses GitHub to Build GitHub”
– http://zachholman.com/talk/how-github-uses-github-to-build-github
• All logos are the property of their respective owners/companies
• “Winner” image
– http://kjrmusic.blogspot.com/2010_07_01_archive.html
These are all questions I've heard in real life.I’m sure you all have examples for this as well – those “little mystery” questions that pop up, where a fix seems to be made up of unicorn tears brought by strange elves in the middle of the night.
Compile your application code. Getting the latest version of any recent code changes from other developers is purely optional and not a requirement for certification.Launch the application or website that has just been compiled.Cause one code path in the code you're checking in to be executed. The preferred way to do this is with ad-hoc manual testing of the simplest possible case for the feature in question. Omit this step if the code change was less than five lines, or if, in the developer's professional opinion, the code change could not possibly result in an error.Check the code changes into your version control system.