Sunday, March 04, 2007
Get an Experienced Developer on the Test Team
In 1993, at Easel Corporation, we went to the local university and hired their best Master of Computer Science graduate to join the test team and focus 100% on automation. This was one of the decisions that put the first Scrum into a hyperproductive state where we delivered software so fast, the management, sales, and marketing people asked us to slow down.
Alberto Savoia proposes the same thing in his recent blog posting and his proposed job description is below. Click here to read the full post that makes the case for an experienced developer on the test team.
Agitating Thoughts & Ideas
Developer Testing Masters and Brain Surgeons
by Alberto Savoia
February 26, 2007
Developer Testing Master
This is a high-visibility, high-impact, senior software development position, reporting to the VP of Software Engineering at Company ABC. The successful candidate will help our software engineering organization bridge the gap between development and QA by providing developers with the infrastructure, tools, training, and support necessary to be successful at developer/unit testing.
[Should start with the organization’s standard requirements for non-junior software developers. Remember, this should not be an entry-level or junior position. This person has to be at least as good as other developers – ideally better than most of them since the DTM will often have to understand, clean-up, and make testable some of the un-testable code the other developers have created.]
Must have demonstrated passion for, and experience in, developer testing. Should be extremely familiar with continuous integration and testing tools and frameworks (CruiseControl, xUnit, code-coverage tools, etc.)
Must have leadership ability to evangelize, motivate, and train developers in the art and science of unit testing.
Help to set-up a software development environment that enables continuous integration and testing. Environment must support automated hourly and nightly builds. The former must run smoke tests and the latter the full battery of developer tests. Might have to implement distributed testing framework to allow parallel test execution.
Analyze the existing code base and recommend and/or implement re-designs and refactorings to make the code base testable.
Extend and customize xUnit framework to standardize and simplify unit test writing for the other developers. Extend the “TestCase” class by creating “CompanyABCTestCase” and maintain the latter. Implement initial set of mocks, test fixtures, and other set-up methods to enable other developers to write true unit tests that don’t depend on external system resources.
Create and deliver basic unit testing training material to educate all developers in the art and science of unit testing.
Work with the team to decide on developer testing metrics and objectives. Create, maintain, and publish a developer-testing dashboard to track those objectives.