Congruent Software Testing
Paul Carvalho

Collaboration, efficiency and value through human interaction and test design

There are several definitions of Software Testing. There are many ways that it may be done.

Given the uncertainty and changing nature of requirements during many software development projects, I believe that software testing is best done in a way that is focussed on the people involved with the project and is responsive to the changing nature of the project.

Congruent Software Testing occurs when testers and test teams function as part of the whole development process. It is more than collaboration with other development team members on a project. It is the realization that testers are part of the whole design and development process, from requirements elicitation through to deployment and delivery.

To be congruent, Software Testers:

  • are respectful, empathetic, helpful and build relationships
  • focus on direct communication with project stakeholders to ensure clarity and understanding of needs, context, scope and quality expectations
  • develop test strategies appropriate to the needs of each project
  • design tests to uncover quality-related information in a timely manner
  • deliver value with every testing activity

To be successful, congruent software testers need to be:

  • passionate about software testing and motivated to add value
  • part of a congruent organisation -- that is, one that understands the concepts of good software engineering, and practices them
  • given the opportunity to interact directly with project stakeholders, including customers if required
  • involved in all phases of software development
  • allowed sufficient time to learn and examine the system to provide the requested information
  • allowed professional development opportunities that contribute to a learning culture

Background information

The term 'congruent' comes from the idea of 'congruence' as defined by Virginia Satir, a pioneer in family therapy. She said that the essentials of congruent living include:

  • clear communication
  • cooperation rather than competition
  • empowerment rather than subjugation
  • full respect for oneself
  • being personally and socially responsible
  • using problems as challenges and opportunities for creative solutions

To behave congruently, we must take into account three areas - the self, other and context - and balance their requirements all at the same time. This relationship is visually represented by the circle in the diagram below.

In his Quality Software Management series, Gerald Weinberg stated "Quality is value to some person(s)." Quality is therefore relative and the working definition "involves a series of decisions about whose opinions count, and how much they count relative to one another." (QSM, Vol. 1)

Congruent Software Testing

In Satir's congruence diagram, the 'other' is some person whose opinion matters to the software organisation. The software tester ('self') first needs to figure out who these 'other' people are, and then builds congruence with them in the context appropriate to the software development project.

Achieving congruence means you are on the same wavelength, the same page, as the other person.  You both have the same understanding of the situation in question.  From that contextual understanding, the tester can define 'Quality' criteria for that person.

The software tester then uses that quality definition to design appropriate tests to uncover information that matters to that person. This requires knowledge and skill on the part of the tester in appropriate test design modelling, tools and techniques.

The execution, analysis and reporting of the testing activities should all be performed in a manner congruent with the needs of the organisation and stakeholders. There is no one prescriptive way for all testing activities to be performed. When required, test documentation should exist to support the findings discussed with others. Documentation should not be used to replace direct communication.

Additional reading

1. Virginia Satir - Congruence. She has several articles and books on the topic.
(There are other similar books on the topic of relationship building. I will add to this list in time. Feedback and suggestions welcome.)

2. Gerald Weinberg - "Quality Software Management, Volume 3 - Congruent Action" (1994). He also published "Managing Yourself and Others" as an eBook in 2011. (I also recommend the rest of the Quality Software Management series)

3. Test Design techniques and modelling. There are many resources available to help you learn this. Some include:

  • online testing courses available through the Association for Software Testing (AST)
  • Lessons Learned in Software Testing (2001) by Kaner, Bach and Pettichord
  • A Practitioner's Guide to Software Test Design (2004) by Copeland.

Please use the Feedback page to let me know what other suggestions you have. Thank you.