The Evolution of Software Testing Principles - A perspective

Brijesh Deb
7 min readApr 23, 2024

Software testing is a key component in the software development process, and it allows testers to determine and evaluate the state of the program at any given time. Through time, testing has evolved significantly according to technological, methodological shifts as well as user expectations that have followed suit.The Foundation was laid down based on elementary principles and then started evolving into current testing principles.

The Seven Principles of Software Testing

These seven principles are very important because they shape the traditional perspective of tests.Widely discussed because ISTQB endorses them, these principles serve as a solid basis for effective software tests execution.

  1. Testing Shows Presence of Defects: Testing only reveals the presence of defects; however, this does not mean with certainty that a software product is defect free. This basic principle highlights constraints inherent in testing and underlines why it must be viewed from different perspectives.
  2. Exhaustive Testing is Impossible: It is just impossible to carry out exhaustive testing considering that there are infinite number of possible tests.Testers should prioritize their efforts based on risk and importance before focusing on specific areas for attention.
  3. Early Testing: Early testing integrates testing into the software lifecycle from an early stage so that it can find and remove mistakes promptly; thus resulting in reduced costs and meeting timelines. This maxim underscores the significance of a proactive, collaborative approach to testing.
  4. Defect Clustering: It has been found that most defects are concentrated in few modules or components. Identifying these “hot spots” can enable testers to apply themselves more efficiently for better efficiency and good outputs.
  5. Pesticide Paradox: The paradox is that if you keep running the same set of tests over and over again, eventually you will no longer find any new bugs. So, it is important to regularly update and revise test cases in order for test suits to evolve with software.
  6. Testing is context dependent: The nature as well as the way testing is done depends heavily on the unique context within which the software operates. Testers must take into account things such as target audience, operating environment, business objectives, etc.
  7. Absence of Error Fallacy: As a matter of fact, having all tests passed by a software does not mean there are no problems with it. A technically compliant product may still be user-inappropriate thereby emphasizing user-centeredness in testing decisions.

Historical and Value Perspective

These are seven principles which came through the thinking of people who write software over many years, they express what the community has collectively learned rather than being one person’s vision. These have been crucial in guiding testers as they navigate their way through complex and ever-changing software projects with a lot of emphasis on strategic and efficient testing.

Transition to Modern Testing Principles

Over time, especially due to the popularity of Agile and DevOps approaches, traditional test methods proved slow and incompatible with development cycles. That led to the creation of Modern Testing principles. The aim was to integrate testing even more into development emphasizing speed and efficiency while at same time caring about how users feel.

The Seven Principles of Modern Testing

The Modern Testing seven Principles are part of a process that emphasizes improvement for the whole development cycle and quality by value. These principles were created by Alan Page and Brent Jensen, two industry veterans. who have extensively discussed them in their podcast series, “AB Testing”. In this series, they explore ways of making testing and quality assurance more effective and modern. The test approach recommended by these principles requires a change from the traditional approach taken by software development teams towards testing. Let’s take a closer look at each principle to understand what it implies:

  1. Our priority is improving the business: It changes how we view testing as solely about finding bugs but rather delivering value to our businesses. Testers now see how their work is linked to revenues, customer satisfaction and other company goals.
  2. We use models like Lean Thinking and the Theory of Constraints to identify, prioritize and mitigate bottlenecks from the system: Some techniques that teams employ now include Lean Thinking which is about removing waste and increasing efficiency also sometimes referred to as Theory of Constraints (TOC) that identifies system flow-hindering bottlenecks. When teams find bottlenecks early, they can focus their testing efforts on them leading to faster release of high-quality software.
  3. We are a force for continuous improvement, and adapt and optimize our practices in order to succeed, rather than using safety nets to catch our failures: It could be argued that traditional testing is a safety net, catching issues before they get to the customer. Current testing is centered on continuous improvement. Teams are always analyzing their testing practices, identifying areas for improvement and changing according to the needs. This proactive approach results in fewer defects and stronger products.
  4. We care deeply about the quality culture of our team, and we coach, lead, and nurture each other towards a more mature quality culture: Testing today fosters a collaborative environment where everyone feels responsible for quality. Testers become coaches and mentors who share knowledge within the team fostering collective understanding on what quality means. This mode leads to increased ownership as well as accountability for delivering a high-quality product.
  5. We believe that the customer is the only one capable to judge and evaluate the quality of our product: Present-day test methods understand that it is up to customers to decide whether a product meets their expectations or not. A product should not just work properly — it must correspond with client’s needs and wishes too. Modern-day testers concentrate on user behavior comprehension thus incorporating it into their process part
  6. We use data extensively to deeply understand customer usage and then close the gaps between product hypotheses and business impact: Data is king in modern times. Teams employ analytics tools and user behavior data to gain insight into how customers are using the product. This information, in turn, helps identify areas for improvement, validate product assumptions, and ensure testing conforms with the actual needs of the clients.
  7. We expand testing abilities and knowhow across the team; understanding that this may reduce (or eliminate) the need for dedicated specialists: Modern testing highlights collective responsibility for quality. However, there may still be specialized testers who are likely to take on a more coaching/ advisory position. By training everyone in basic testing skills, teams can find problems before they become bigger issues, make development more efficient and potentially diminishing reliance on dedicated testing specialists.

These principles implemented effectively can lead to a software development approach that is more efficient, customer-centric, and continuous improvement oriented. Furthermore, let’s delve deeper into the transition from the traditional Seven Principles of Software Testing to the Modern Testing Principles. This shift is not merely a change in techniques but a transformative approach that aligns more closely with contemporary software development methodologies like Agile and DevOps.

Evolution from Traditional to Modern Testing Principles

The traditional principles of software testing laid a strong foundation for ensuring software reliability and functionality through methodical defect identification. However, as software development practices evolved, the need for a more integrated and adaptive approach became apparent, leading to the formulation of Modern Testing Principles by Alan Page and Brent Jensen.

Comparative Analysis of Traditional and Modern Testing Principles

To clearly understand the shift from traditional to modern testing practices, here is a comparative analysis based on their focus, approach, goal, and limitations:

Impact of Testing Principles on Software Testing

Traditional Testing Principles:

- Structured and Rigorous: Provided a structured framework that was highly effective in environments where requirements were well-defined and changes were minimal.

- Risk-Based Focus: Encouraged focusing efforts on high-risk areas, optimizing resource utilization but potentially missing broader quality impacts.

- Late Engagement: Often resulted in testing being a bottleneck due to late engagement in the development lifecycle.

Modern Testing Principles:

Speed and Integration: Emphasize speed and continuous integration, aligning closely with Agile methodologies which focus on rapid iterations and customer feedback.

- Quality Culture: Foster a whole-team approach to quality, blurring the traditional roles and making quality a collective responsibility.

- Customer-Centric: Shift focus from fulfilling requirements to meeting customer expectations, aligning product development more closely with market needs.

Why Modern Testing Principles Serve a Wider Context

In my honest opinion, Modern Testing Principles are better suited for today’s dynamic software development environment for several reasons:

- Adaptability: They promote adaptability by encouraging continuous learning and adjustment of practices based on real-world feedback and changing conditions.

- Broader Engagement: By integrating testing throughout the development process, they ensure that quality considerations are embedded from the outset, reducing the risk and cost associated with late-discovery defects.

- Customer Focus: They align testing practices with customer satisfaction, ensuring that the software not only works flawlessly but also delivers value to the end-users, which is crucial in competitive markets.

It is a major change. The transition to Modern Testing Principles marks a move from an isolated end-of-cycle activity to an integrated, continuous and proactive process of software testing. This development is central to catering for modern software development realities; where velocity, flexibility and client focus reigns supreme. A company can deliver good software that meets market demands and customer needs effectively by adopting these modern principles.

--

--

Brijesh Deb

In God we trust, everything else I Test! Views expressed here are personal.