In the past few years, some organizations have questioned the value of the independent software testing role. The debate continues and seems unlikely to reach a definitive conclusion anytime soon.
That said, organizations have found that letting anyone perform testing by following directions is a risky approach. These poor, slow test processes are easily replaced by a computer. Today's software tester must possess certain skills to become a more valuable asset to an organization.
The T-shaped tester is one model designed to describe those skills.
Types of testing skill sets
Should the software tester be a jack of all trades or a master of one?
The T-shaped software tester encompasses a broad and general skill set, represented by the horizontal line in the "T." This person also has a deep expertise in testing, represented by the vertical line in the "T." Given this makeup, a T-shaped tester might be able to fill in temporarily for a business analyst, programmer or database admin -- but only one of those jobs at a certain time.
An M-shaped tester has multiple specialties. James Bach, co-founder of the Context Driven School of Software Testing, proposes seven testing specialties:
- administrative tester
- technical tester
- analytical tester
- social tester
- empathetic tester
- user expert
The developer/tester role overlays a bit with the T-shaped role. In the M-shaped position, the person might have strong development skills but have less expertise in the social, user or administrative domains.
All these examples represent models on how to think about the testing role. The T- and M-shaped testers generate ideas and pursue a little bit of everything but also can go deep into a few domains. However, there's no rule against learning and continuous growth; given the pace of technological change, developing new skills for tomorrow could be more important than getting the right type of player today. To start, distribute existing skill sets throughout the entire team.
Develop testing skills
Not every technical tester wants to learn social influencing skills, and not every subject matter expert becomes an incredibly strong programmer. Yet, curious people always want to develop some skill.
One simple exercise to broaden everyone's knowledge is an affinity diagram. Every team member writes a list of skills they know on sticky notes. Organize those notes into piles, and give each pile a title. Then, you can view these notes and further organize them into a group collective based on team skills.
Once you have a diagram, vote on where the team should focus next. With a well-distributed T-shaped team, one person teaches, while others learn. Alternatively, the team brings in an outside consultant to help. Brown-bag lunch sessions while watching videos or taking courses on different testing programs are a classic way to learn new, introductory-level skills on different areas that can help the team.
Another option is mob testing. Mob programming, as a formal process, engages the entire team to participate: One person directs the work, another types out the code and the positions rotate. A typical mobbing session lasts one hour. Actively engaged programmers pick up subtle cues on how to structure code, name variables and refactor the code. Software testing expert Maaret Pyhäjärvi recommended teams adopt mob programming entirely for testing -- this mob testing approach focuses these tactics solely on the testing phase of development.
Team members can also lead a discussion on how they would test a UI or a particular software feature. There is, however, a great deal more to software testing than testing a UI.
What type of tester is best?
As described above, there are various types of software testers, in terms of breadth and depth of skill set. There are the T-shaped test specialist, the subject matter expert turned tester, the multiskilled M-shaped tester, the programming test automator and various influencers who lead the test effort.
To determine which kind of tester to add to your team, evaluate which skills are missing. For example, if your team needs to start writing usability tests, it's tempting to hire a T-shaped tester with a deep knowledge of this specific area but also isn't opposed to trying other methods. The most important thing is to find candidates with a willingness to broaden their horizons. If this specialized person is the only tester with this knowledge in your organization, what happens when they go on vacation? Create a software testing team that encompasses a variety of skills and strengths to meet current and future needs.