Several years ago, during my days as Software testing
consultant (not a doer but a consultant) – one idea that repeatedly came up was
“Testing Maturity”. Thanks likes of CMM, CMMI, TMM, TMMI, Six Sigma, TQM and
others – IT world was (mostly “is” as well) obsessed with knowing what it is
means to be a “mature” about just anything. Testing – being one of the most
talked about maturity target.
I still remember of my first experience of with testing
maturity models – when searched on internet, I did not find much “state of the
art” stuff (about 10-12 years back). Then like many others – I set out to
create my own “framework” for assessing testing maturity. Looking back – I see
my attempt as very “immature”. It pretty much looked like any other similar
framework, it had levels of maturity, key focus areas and some kind of recipes
to move from level 1 to level x and so on. My bosses then liked it. It made some buzz with clients that I worked with. Now I wonder why created those things. I thought then, there must a model using which a testing group can be called mature or immature. The word mature was equated to "Good", "Efficient", "Desirable" etc. I understood now that maturity is not about good or bad - its about ability to sustain and adapt with change. No model I know of and the ones I created took this approach to maturity.
Another way to look at maturity is how we deal with people. When we say about someone that he or she is mature - it means that person can deal with adversity better, can behave/react with patience and so on. We should apply same idea to software testing.
Recently a friend of mine bought this idea and rekindled my
thinking. Hence I am writing this post.
Most valuable suggestion when I was working my testing
maturity model came from my mentor Michael
Bolton – who suggested a remarkable thing about the idea of “maturity” (in
general). I am going to expand on my renewed model of testing maturity on this interpretation
of maturity. Michael suggested that one of the useful ways to define maturity
to software (and testing) is to draw parallels with the idea of maturity in
biological sciences. Charles Darwin in his theory of evolution – defines
maturity as ability of species to tolerate and adapt to the changing
surroundings. We all are familiar with tag line of Darwinian theory “survival
of the fittest”.
So – my definition of testing maturity draws from this
biological sciences idea – testing is considered as mature if it successfully
adapts generations of changes happenings in its environment (business and
market environment) and retains its relevance/importance. How do you identify
such testing practice? Stakeholders are willing to pay for it (challenge me –
if you find this statement problematic)
Let us now look at deeper. I think the idea of testing
maturity can be applied to a specific “Testing team” (a group of people
operating under a corporate structure) or a function or task that needs to be
done as part of software making (simple term than saying SDLC that takes me to
many other detours that I would like to avoid now). The software Services
industry, System integrators, Big consulting companies would like to apply this
term to “Testing Practice”. Though the term testing practice sounds very
professional (likes of Gartner, Forrester would love) and appear to include
both team and function – on the ground – it mainly implies team, structure and
some rule book. In most of the cases, software testing maturity is applied to
“independent” testing groups – needless to these groups want a label of
“mature” so that they continue to live and get funding. Also note that aspects
of maturity as it applies to team/structure and to testing as function are not
mutually exclusive – there are some common elements. One reason that I want to make this
distinction is that many aspects of maturity take a different shape if I look
at testing as group or structure rather than testing as something that a
specific team does. You know where I am hinting to. Yes – Agile and DevOps
world of software making.
Testing maturity as
applied to team/structure
I look at Testing team maturity in terms of Leadership,
Doers and testing culture.
A mature Testing leadership would ensure that testing team
is responding the change in the ecosystem in which it operates and adapting
itself to survive and succeed. A mature testing leadership brings about changes
in the team as required and develop collaborative partnerships with developers,
project managers, production support teams and stakeholders. A mature testing
leadership would not hold its principles and policies as something cast in
stone. A real test of maturity of testing leadership is when stakeholder
question very existence of testing as a service that a given team can provide.
Most of independent testing team have faced this test. A mature testing
leadership would be more than willing to break the corporate structure of test
team and will be ready to mixed or morphed into any other emerging structure of
the organization – an act of self-sacrifice.
Call your testing leadership as mature if it can dissolve itself (the
team structure mainly) for the larger interest of testing as function.
Let us now come to “Doers” – I deliberately use this term to
indicate group people who do testing rather than the ones who “manage” or
“coordinate” testing. Mature testers (doers) focus on constant learning and do
not identify themselves with any specific domain, technology or tools or
process or like. Mature testers understand the value of adaptation to changing
ecosystem and work on acquiring skills to remain relevant in emerging
situation. A mature tester thus can operate as effectively in any circumstances
and be useful towards the goal that the broader team is pursuing.
A combination of mature testing leadership and mature tester gives an ability of “quick” yet thoughtful response to “change”. James Bach characterize an expert tester (sorry If just moved from a mature tester to an expert tester – stay on. I hope to establish a connection) as someone who can test under any circumstance of time and other resources. This ability to test “well” under any circumstances is what gives tester and testing leadership a crucial edge and ability to survive. Isn’t, thus a key aspect of maturity?
A combination of mature testing leadership and mature tester gives an ability of “quick” yet thoughtful response to “change”. James Bach characterize an expert tester (sorry If just moved from a mature tester to an expert tester – stay on. I hope to establish a connection) as someone who can test under any circumstance of time and other resources. This ability to test “well” under any circumstances is what gives tester and testing leadership a crucial edge and ability to survive. Isn’t, thus a key aspect of maturity?
Finally – the culture. This is something that mature
leadership and mature testers together demonstrate when they are in action. A
mature testing culture does not whine about changes but strives to change
itself to adapt. A mature testing culture manifests itself in terms of beliefs,
collective thinking and set of written or unwritten rules about how testing
should be conducted. On any question related to any tactical or strategic
aspect of testing – testing culture helps testers (and leads) with “default”
response. If watch a team of testers in action – you can distinctly notice the
“culture” – if you cannot then probably the culture has not set in yet.
As testing as function continues to evolve and becomes
something that needs to get done as part of software delivery – it would be
appropriate to turn focus to “mature tester” – an individual. Here too, my
definition of maturity is on the lines of “one who can continuously adapt to
changes in the environment and evolve”.
Are you a mature tester ?
No comments:
Post a Comment