By James Bach
Many software companies, these days, are organized around a number of small Agile teams. These teams may be working on different projects or parts of the same project. I have often toured such companies with their large open plan offices; their big tables and whiteboards festooned with colorful Post-Its occasionally fluttering to the floor like leaves in a perpetual autumn display; their too many earbuds and not nearly enough conference rooms. Sound familiar, Spotify? Skype?
(This is a picture of a smoke jumper. I wish test jumpers looked this cool.)
I have a proposal for skilled Agile testing in such places: a role called a “test jumper.” The name comes from the elite “smoke jumper” type of firefighter. A test jumper is a trained and enthusiastic test lead (see my Responsible Tester post for a description of a test lead) who “jumps” into projects and from project to project: evaluating the testing, doing testing or organizing people in other roles to do testing. A test jumper can function as test team of one (what I call an omega tester ) or join a team of other testers.
The value of a role like this arises because in a typical dedicated Agile situation, everyone is expected to help with testing, and yet having staff dedicated solely to testing may be unwarranted. In practice, that means everyone remains chronically an amateur tester, untrained and unmotivated. The test jumper role could be a role held by one person, dedicated to the mastery of testing skills and tools, who is shared among many projects. This is a role that I feel close to, because it’s sort of what I already do. I am a consulting software tester who likes to get his hands dirty doing testing and running in-house testing events. I love short-term assignments and helping other testers come up to speed.
What Does a Test Jumper Do?
A test jumper basically asks, How are my projects handling the testing? How can I contribute to a project? How can I help someone test today?
Specifically a test jumper:
may spend weeks on one project, acting as an ordinary responsible tester.
may spend a few days on one project, organizing and leading testing events, coaching people, and helping to evaluate the results.
may spend as little as 90 minutes on one project, reviewing a test strategy and giving suggestions to a local tester or developer.
may attend a sprint planning meeting to assure that testing issues are discussed.
may design, write, or configure a tool to help perform a certain special kind of testing.
may coach another tester about how to create a test strategy, use a tool, or otherwise learn to be a better tester.
may make sense of test coverage.
may work with designers to foster better testability in the product.
may help improve relations between testers and developers, or if there are no other testers help the developers think productively about testing.
Test jumping is a time-critical role. You must learn to triage and split your time across many task threads. You must reassess project and product risk pretty much every day. I can see calling someone a test jumper who never “jumps” out of the project, but nevertheless embodies the skills and temperament needs to work in a very flexible, agile, self-managed fashion, on an intense project.
Addendum #1: Commenter Augusto Evangelisti suggests that I emphasize the point about coaching. It is already in my list, above, but I agree it deserves more prominence. In order to safely “jump” away from a project, the test jumper must constantly lean toward nudging, coaching, or even training local helpers (who are often the developers themselves, and who are not testing specialists, even though they are super-smart and experienced in other technical realms) and local responsible testers (if there are any on that project). The ideal goal is for each team to be reasonably self-sufficient, or at least for the periodic visits of the test jumper to be enough to keep them on a good track.
What Does a Test Jumper Need?
The ability and the enthusiasm for plunging in and doing testing right now when necessary.
The ability to pull himself out of a specific test task and see the big picture.
The ability to recruit helpers.
The ability to coach and train testers, and people who can help testing.
A wide knowledge of tools and ability to write tools as needed.
A good respectful relationship with developers.
The ability to speak up in sprint planning meetings about testing-related issues such as testability.
A keen understanding of testability.
The ability to lead ad hoc groups of people with challenging personalities during occasional test events.
An ability to speak in front of people and product useful and concise documentation as necessary.
The ability to manage many threads of work at once.
The ability to evaluate and explain testing in general, as well as with respect to particular forms of testing.
A good test jumper will listen to advice from anyone, but no one needs to tell a test jumper what to do next. Test jumpers manage their own testing missions, in consultation with such clients as arise. A test jumper must be able to discover and analyze the testing context, then adapt to it or shape it as necessary. It is a role made for the Context-Driven school of testing.
Does a Test Jumper Need to be a Programmer?
Coding skills help tremendously in this role, but being a good programmer is not absolutely required. What is required is that you learn technical things very quickly and have excellent problem-solving and social skills. Oh, and you ought to live and breathe testing, of course.
How Does a Test Jumper Come to Be?
A test jumper is mostly self-created, much as good developers are. A test jumper can start as a programmer, as I did, and then fall in love with the excitement of testing (I love the hunt for bugs). A test jumper may start as a tester, learn consulting and leadership skills, but not want to be a full-time manager. Management has its consolations and triumphs, of course, but some of us like to do technical things. Test jumping may be part of extending the career path for an experienced and valuable tester.