End the segregation of the four schools of testing


Pushed by a response to an earlier post, I decided to stop procrastinating and get out my thoughts on the 'schools' of testing before others try to put a label on me.


I am not a big fan of the ‘so-called’ 4 schools of testing. I don’t like segregation of any form because it can lead to biased opinions, incorrect assumptions, and a general disregard for things that are “different.” But, most importantly segregation stifles innovative thoughts, creative collaboration, and the ability to expand a person’s knowledge and in-depth understanding of the ‘system’ as a whole.


Bret Pettichord stated schools are based on a relationship or attraction rather than specific principles or doctrine, and that each school is defined by standards of criticism, exemplar techniques, and hierarchies of values. I think Bret’s definition of ‘school’ is good primarily because it dismisses the idea of basing a school on dogmatic teachings. But, I still think the notion of 4 distinct ‘schools’ of testing condones an “us versus them” sort of debate.  Bret lists the 4 schools as:




  • Analytic – testing as rigorous and technical with many proponents in academia


  • Factory – testing used to measure progress with emphasis on cost and repeatable standards


  • Quality – emphasis on process, policing developers and acting as gate-keeper


  • Context-driven – emphasizes people, emphasizes finding bugs important to stakeholders

Reviewing the descriptions of the different ‘schools’ I don’t particularly align myself with any single school. Instead of affinity to one ‘school’ we should understand the values, techniques, and standards of all four ‘schools.’ The testing community needs to embrace the diverse values and mores of these various ‘schools’ of thought in order to extend the impact of testers, and mature testing into a professional discipline in field of computer science.


People are paramount to any successful software endeavor. It has been said that Microsoft is an innovation company. I think that to be generally true of any software company because building and testing software require individuals with an incredible amount of creativity, ingenuity, innovative prowess, and technical competence.


Repeatable processes that are not restrictive in the ability of an organization to innovate significantly improve product quality and are a good trait of mature organizations. I hate to compare software development with manufacturing, so I won’t go on that tangent. However, implementing processes such as static code analysis that detects certain classes of defects prior to code check-in has resulted in higher quality and reduced costs.


Quality measurement is an important objective of any testing endeavor. Managers are no longer content with feel-good or best guess opinions and tracking ‘bug-finding’ rates and waiting for a downward trend to assess good-enough quality is an immature metric and highly unreliable. No doubt that software metrics are difficult, and this is perhaps one of the hardest challenges the discipline of testing faces. The ability to quantify testing effectiveness and qualify quality in terms of meaningful metrics will become increasingly important.


Technical testing is not limited to academia, in fact, rigorous and technical testing is demanded in many software projects. I don’t imagine many of us would feel very comfortable flying on airplanes in which the avionics systems were not tested rigorously at a deep technical level. Microsoft, IBM, and others have been doing low-level ‘technical’ testing for years. Professional testers must be able to perform API level tests, analyze code coverage results and design structural tests to efficiently exercise code segments previously untested, engage in formal code reviews (the single most effective method of early detection of security and other classes of defects), and review developer designed unit tests.


So, isolating oneself, or a group of people, into one ‘school’ simply doesn’t make much sense. One of the greatest characteristics of professional testers is their ability to excel in diverse and dynamic situations, and their skill and knowledge of all the values and exemplar techniques and the ability to objectively critique assumptions and assertions.

Comments (4)

  1. Shrini says:

    BJ,

    I am confused with the message that you are trying to send via this blog post

    What is that you are trying to convey –

    1. Segregation of testing into 4 schools is not *Good* and one should not do it?

    2. All schools are important and hence choose whatever is important in a given situation? Wait – that is context driven school!!!

    [Bj] If the context driven school incorporates the philosophy of all 4 schools, then why do some people insist on 4 different and separate ‘schools’? I think my message is quite clear, a professional tester (perhaps what you refer to as a context driven tester) must understand all of the techniques and values outlined in each ‘school;’ therefore it doesn’t make sense to segregate testers into different buckets.

    You opened with the title “End the segregation of the four schools of testing”.

    But why? Why to end the segregation? You can not suppress the existence them.

    [Bj] Actually I don’t agree separation of the identified values and attributes exists, (other than in the minds of a few people who want to justify some self-proclaimed quality of uniqueness) so I am not trying to suppress them, I am questioning the motives of individuals who want to separate the values and attributes that all testers should possess.

    Do you –

    1. Accept and acknowledge that 4 schools exist and practiced as such?

    [Bj] Absolutely not!

    2. Agree that based on the way people talk about testing – one can identify themselves to a particular school?

    [Bj] No. That’s simply a fallacious argument. Sort of like saying that depending how someone talks about firearms you can identify them as republican or democrat.

    3. You have any school of testing of your own?

    [Bj] No. If I don’t agree with the segregation of ideals, values and attributes of testers in general, why would I propose a concept of a ‘school.’

    Here are my thoughts on your stand on “schools of Testing”

    1. Being a Big fan or aligned to a particular school does not appear to be a matter of choice. Depending upon your Testing philosophy, Object of testing, approach to Testing – you will *automatically* and *implicitly* identify yourself with one of these schools of testing. You need not have to explicitly proclaim that fact.

    2. Here is a deal-  you describe a testing practice, a testing philosophy or a test professional, with a great degree of certainty, I (like many others in context driven school) will be able to identify the person, testing approach and philosophy to be one of these four schools.

    3. There is nothing wrong or objectionable to be labeled to be a thinker or proponent of a school of testing. You are a *professional Tester and have a philosophy hence belong to a school. What is wrong here? Pragmatic submission to a school of testing helps one to identify the strengths and weakness of the school.

    4. I would say, identifying oneself to a school of testing (it is OK to come up with your own school, if you feel you need a school of your own) is a “community responsibility” of a *professional* tester.

    Now some specific comments to your views.

    <BJ>

    But, I still think the notion of 4 distinct ‘schools’ of testing condone an “us versus them” sort of debate.

    </BJ>

    <Shrini>

    What is wrong with “us versus them” debate? It is important to understand, recognize the differences, strengths and weaknesses of testing philosophies as exemplified by the schools of testing. Please do not confuse this debate with general Dev-Test or any other collaboration related issue. Here the debate is over values and philosophy of Testing – it is good to have such debate so that testing discipline as a whole gains.

    [Bj] What’s wrong with “us vs. them?” If you don’t know I will tell you. It creates unnecessary friction that is counter-productive to the maturation of the discipline and the practice of testing, especially since so many people seem to take it so personally. Debate doesn’t require an us vs. them mentality.

    </Shrini>

    <BJ>Reviewing the descriptions of the different ‘schools’ I don’t particularly align myself with any single school

    </BJ>

    <Shrini>

    I don’t think you have any choice here. Your actions, beliefs and approach to testing determine the school you belong

    </Shrini>

    Instead of affinity to one ‘school’ we should understand the values, techniques, and standards of all four ‘schools.

    <Shrini>

    Right. It is important to understand and appreciate the fact that “different” schools EXIST and each has its own strengths and weaknesses. It is quite natural to build an affinity to a school as one gets influenced by the way testing is done and beliefs one has.

    </Shrini>

    <BJ>

    and mature testing into a professional discipline in field of computer science.

    </BJ>

    <Shrini>

    Right here – you identify yourself into “Analytic school of Testing” – Testing maturing into a field of computer science… This is probably never going to happen. Testing may not even mature in an “Engineering field” (something that people keep trying force testing as an engineering discipline not with significant success) leave alone computer science. This was the notion of Early Testing 60-70’s. Skilled Testing requires diverse skills and computer science/Mathematics is one those skills (not the only one as depicted by many)

    [Bj] Actually, no I don’t identify myself into any particular ‘school.’ YOU decided to identify me in a particular ‘school’ based on your own biased, and uninformed opinion of me (I can say this because we have never met, and you opinion of me is biased by your opinion of what I write.)

    Testing will probably evolve (maturity is a not the right word as growth is continuous – evolution is more appropriate) as an “Art” or a “social science” or a “philosophical discipline”.

    [Bj] I am currently working with several universites to drive software testing curriculum into established CS programs for new graduates. This is met with enthusiam because many companies (MS, Google, etc.) are modifying hiring practices to recruit CS grads into the testing discipline, and even those who are pursuing careers as developers know they need to understand testing at a much greater depth due to the influence of TDD and agile programming concepts. I am not dismissing the value of a well-rounded education and I think that the social sciences provide valuable insight and perspective, but I am not so sure many large companies are going to actively recruit a lot of arts and philosophy majors, but you can continue to believe if you wish.

    </Shrini>

    <BJ>

    People are paramount to any successful software endeavor. It has been said that Microsoft is an innovation company. I think that to be generally true of any software company because building and testing software require individuals with an incredible amount of creativity, ingenuity, innovative prowess, and technical competence.

    </BJ>

    <Shrini>

    Very rightly said – this (yours, here) thinking is inline with context driven school where people are the center.

    </Shrini>

    <BJ>

    I hate to compare software development with manufacturing, so I won’t go on that tangent.

    </BJ>

    <Shrini>

    Good.  Another line of thinking that aligns with Context driven thinking.

    </Shrini>

    <BJ>

    However, implementing processes such as static code analysis that detects certain classes of defects prior to code check-in has resulted in higher quality and reduced costs.

    </BJ>

    <Shrini>

    So? Pick and apply a technique or methodology based on the context. There could be situations where static code analyzers are of great value and in some cases they may be ineffective. Understanding context is key – people, project environment and organization’s software subculture – characterize the context. Hence there can be no universally applicable best practices.

    [Bj] Actually, static analysis is very effective at finding specific classes of defects and when used correctly it is very effective at identifying those classes of defects. Therefore, I (and many others) would argue it is a universally applicable best practice. Unit testing is another universally applicable best practice, and I think Beck, Williams, and other pundents of agile methods would agree. There may be some practices which are not cost effective in certain contexts, but that does not negate them from being best practices.

    </Shrini>

    <BJ>

    Technical testing is not limited to academia,

    </BJ>

    <Shrini>

    What is technical testing? Is there anything called “Non technical Testing”? Are you referring to Testing by formal techniques as “Technical testing” and that done by *experts* as non technical testing? Are you referring to Testing as branch of computer science as “technical testing”?

    What about deep level and low level technical testing? What are these?

    [Bj] I have my own opinion of what Bret meant by technical testing; but it is his term and not mine. So, if you are looking for a definition, or going on a snipe hunt wrt to meaning around “non technical testing” (which I made no mention of) then you should ask Bret.

    </Shrini>

    <BJ>

    So, isolating oneself, or a group of people, into one ‘school’ simply doesn’t make much sense

    </BJ>

    <Shrini>

    Not enough material to support this assertion of not making “sense”. Please substantiate.

    </Shrini>

    <BJ>

    One of the greatest characteristics of professional testers is their ability to excel in diverse and dynamic situations, and their skill and knowledge of all the values and exemplar techniques and the ability to objectively critique assumptions and assertions.

    <BJ>

    <Shrini>

    This closing line of yours is in line with context driven thinking – you are here focusing on people’s skills not on environment, process, knowledge of formal techniques and anything that is external to human thinking and people part of Testing.

    [Bj] Sorry to disagree with you here, but knowledge of formal techniques and understanding when and how to apply them is not external to human thinking. Techniques are not akin to putting round pegs in round holes, in order to apply techniques in any field requires great knowledge and the abilty to think. But, you can call it context driven thinking if you want to…I call it characteristics of professional testers.

    </Shrini>

    Now let me throw some lights on Context driven school of testing:

    • A context driven tester is a *professional tester* (by whatever definition that you may have)

    • A context driven tester is for innovative thoughts, creative collaboration, and the ability to expand a person’s knowledge and in-depth understanding of the ‘system’ as a whole.

    • A context driven tester is an individual with an incredible amount of creativity, ingenuity, innovative prowess, and technical competence.

    • A context driven tester is not averse to using tools like “static code analysis” if context is appropriate.

    • A context driven tester understand and recognizes the need of the stakeholders  hence  will come up with ways to quantify testing effectiveness and qualify quality in terms of meaningful metrics as appropriate.

    • A context driven tester can and will perform API level tests, analyze code coverage results and design structural tests to efficiently exercise code segments previously untested, engage in formal code reviews (the single most effective method of early detection of security and other classes of defects), and review developer designed unit tests – as demanded by the context and understands that all these activities are NOT all but a part of over all testing activity.

    [Bj] Actually, I think you are restating my point for me, and dispelling the concept of 4 different, segregated ‘schools.’  You may call it all context-driven testing, I choose to call it professional testing. Thanks for agreeing with me!

  2. I.M.Testy says:

    Wow, and I thought some of my posts were long!

    See my responses inline.

  3. I. M. Testy says:

    Rahul Verma invited me to read several very well-compilled posts discussing various views on the ‘schools’

  4. I. M. Testy says:

    Tonight I was having dinner at the superb Italian restaurant L’Olivo along the canal in Nyhaven, Denmark

Skip to main content