Writing tests first is…?
What would you do if your co-developers say “Writing tests first is too hard/slows me down/waste of time”?
What would you do if your co-developers say “Writing tests first is too hard/slows me down/waste of time”?
Testing: Executing a program with the specific intent of uncovering errors.Software Engineering: A Practitioner’s Approach - Roger S Pressman
The definition of testing by Pressman states that the purpose of performing software testing is to detect errors in a program. This encompasses a wide range of techniques such as black box/white box testing, basis path testing, fault based testing and at a more thorough level, control structure testing.
So where do the specifications in Behaviour Driven Development (BDD) fit into the picture? In this respect, BDD isn’t about testing at all. We write specifications to say that the software exhibits a specific behaviour when its in a certain state. The specifications serve to reinforce the notion that the program is working as expected under known conditions.
Having 100% coverage for code certainly does not mean that a program is free of errors, there are still edge cases that may be too difficult or complex to replicate with an automated test suite. Traditional QA testing is still very much relevant to software projects with BDD employed religiously throughout development.
This has been discussed at length before but it bears repeating: BDD is a design technique that gives you executable documentation of what functions the software is expected to provide.
Here’s an interesting combination of Ruby and OpenGL, glTail lets you visualise log activity in realtime. Check out the screencasts on the project page!
One thing to note at the time of writing, it assumes that the command for getting incoming log data, i.e “tail -f” is non blocking. So if you need to use “sudo tail -f”, the application won’t work properly for this situation. I might give it a shot at adding sudo support when I have some time to spare.
The quick spike I did for this suggests that I’ll need to use a shell to respond to password challenges. Incidentally, Capistrano already has this figured out, so i’ll be a good place to look for clues.
Love this explanation of refactoring by Michael O McCracken.
From J.B Rainsberger.