- Let's talk about the skills a tester needs
for a new agile adventure and the skills
that agile teams need to succeed with testing.
The T-Shaped skill metaphor is a great metaphor
to describe the abilities of an agile team member.
In agile development we value skills
and competencies over roles.
We may do many different activities on the team.
So that horizontal bar is what allows us to collaborate
across disciplines and apply knowledge in other areas.
For example, because I have some coding experience,
that helps me pair with developers to automate tests.
And my database knowledge helps me collaborate
with a database administrator.
I know enough about security testing
to be able to help with that.
So those are my broad skills.
I know a little bit about a lot of things.
This is true of a lot of agile team members.
Then we have our vertical skill, our deep skill.
The thing that we're most passionate about.
For example, my deep skill is being able
to quickly learn business domains.
I love learning how the business operates,
how people do their jobs, what makes a business successful.
So that's how I can add the most value to my team.
All team members should be pro-actively learning
more about testing.
We'll talk about some of the skills that are important
later in this lesson.
We need a diverse set of skills on the team
to succeed with testing.
It takes a lot of different skills and experience levels.
A few years ago Adam Knight wrote a guest post
on Rob Lambert's blog taking this T-shaped metaphor
and extending it into this square-shaped team
as he called it.
The teams made up of people with various T-shaped skills
become a square-shaped team.
They have skills, some of them are good at coding.
Some of them are good at continuous integrations.
Some are good at database.
And they have all the thinking skills they need
to succeed with testing activities.
So diversity is really key.
We need these multiple viewpoints to help us
overcome our cognitive biases and see beyond
what we expected to see.
The square-shaped teams are ready to learn.
We're not afraid to fail, because failing is learning.
So let's look at some of the specific skills
that we are likely to need to succeed with testing.
Let's talk about some thinking skills.
Most people call these soft skills, or maybe people skills.
That makes it sound kind of easy.
We prefer thinking skills because you have to
put some work into learning these skills.
Testers are great information providers,
but let's face it, not everyone wants to hear
what we have to say because sometimes it's bad news.
So let's find some good ways to deliver that information.
The thinking skills help us learn how to collaborate
with other team members.
So we learn the languages of the business,
and the languages of the technical team.
We can bring all these people together
for conversations when we need to understand
how the system should behave.
Listening skills are really key,
something I work on all the time.
Watch for hidden assumptions.
The business may assume that the delivery team
knows how a certain feature should work,
and in fact they have the wrong idea.
So become a thinking tester and work
on your thinking skills.
In or experience we don't feel testers need to be coders.
We already have coders on the team.
Our developers can do things like help automate tests.
However, some technical skills help us collaborate
with the technical members of our team.
For example, knowing that high-level system architecture
helps us work with the team to consider risks.
I find it really helpful to draw the system architecture
on the whiteboard and talk with the rest of the team
members about what areas of that architecture
are potentially risky or fragile.
Where could problems occur?
Knowing basic programming concepts and design patterns,
knowing how to use an integrated development environment
the rest of the team uses.
Knowing how to use our source control system
helps us pair with developers and other members of our team.
Knowing the database helps us identify risks
on the data side, helps us set up test data.
These days, big data, data warehouse,
we're having a lot more challenges with testing data.
So those kind of skills can help us a lot.
Understanding our continuous integration,
how our automated tests run,
how our builds are done.
Knowing when and where a build is deployed,
and a lot of times being able to deploy
a particular build so that we know exactly what
we are testing in a particular test environment.
Those are all technical skills that really help us,
so build your technical awareness.
Another area of technical awareness,
again, this is my favorite area,
is domain knowledge.
I really feel like this is one of the areas
where testers are strong and add a lot of value.
Of course other members of the team can do this too.
So we focus our testing on the business.
What's going to achieve business goals.
What's going to make the business successful
and bring value to our customers and end-users.
So really, everyone on the team should
invest time in learning the domain.
It really helps us solve the business problems better,
but we find that testers, business analysts,
product owners, product managers,
they tend to accel at the business domain.
So do learn how your users do their jobs.
Sit with them, watch them work.
It really can help you help them
with automating tasks that might be
difficult or error prone for them.
Customer support is another great resource.
If you don't do customer support yourself,
go and seek out your customer support people.
Ask them where have a lot of problems occurred.
Are there areas of the application
that seem to be more error prone?
Maybe we need to focus more testing on those,
or more regression testing.