Skip to main content

Modern Testing Principles

  • April 20, 2022
  • 2 replies
  • 199 views
Modern Testing Principles
MirzaSisic
Forum|alt.badge.img+1

 

For a notable portion of my testing career, I was in the “traditional tester” role, meaning that I was doing my testing in a fixed portion of the SDLC. As we know, in such work environments, dedicated testers are doing the most, if not all of the testing.

The developers may not be testing their newly developed features, and when they do, it’s usually just the happy path testing. In many of such companies, they don’t even have unit testing done at all.

In more serious establishments, the developers will test their features locally and write their unit and integration tests, but all end-to-end testing will ultimately be left for the testers 👩‍💻

Modern Testing Principles

There are seven modern testing principles. I’m not sure if this is a jab at the old-school ISTQB Seven Testing Principles, or just a coincidence, but whatever the case is I find it very humorous.

In essence, these principles are very much the spiritual successor of Agile testing, explained by Lisa Crisping and Janet Gregory in their guide for testers. So, let’s take a deeper look at the seven modern testing principles!

Principle 1️⃣

Our priority is improving the business.

The developers on the team are the ones who make new features, so the business people often view other roles as just “additional cost”, which is the sad reality of things. But, as testers, we can help change this perspective. We should not limit ourselves to “only” performing testing in form of validation of new features and bug fixes.

Since we as testers have the opportunity to become broad system thinkers, we can use that to critically analyze the product, and suggest improvements instead of just blindly following the specifications.

Specs can be wrong and incomplete, and we should challenge them. But this only has a chance to work in a mature environment, that understands the spirit of Agile- everyone must contribute to quality improvements.

Apart from contributing ideas to improve the product, we should also always be analyzing our testing process to see how we can improve that as well. We don’t want or need to be the “QA Gatekeepers”, as this is a relic of the past and it doesn’t work well with today’s fast-paced economy.

Being able to keep up with the competition is one of the main reasons why the DevOps culture came to be – which shares a lot of its values with Agile philosophy and modern testing.

Principle 2️⃣

We accelerate the team, and use models like “lean thinking” and the “theory of constraints” to help identify, prioritize and mitigate bottlenecks from the system.

These principles focus on testers shifting their focus from being dedicated experts who are doing most, if not all of the testing activities, to being more of a coaching role that is teaching other team members to test better, while promoting the whole-team approach to quality.

In this context, lean thinking means that through constant learning and improvement, we are doing our best to reduce waste. The theory of constraints helps us identify what are the biggest blockers preventing us from achieving our goal.

Principle 3️⃣

We are a force for continuous improvement, helping the team adapt and optimize in order to succeed rather than providing a safety net to catch failures.

This means that testers should always be striving to improve the processes in their companies, being flexible (which is very much aligned with the Agile spirit) to learn new technologies and experiment.

Also, the safety net parts mean that the responsibility for the entire testing activities is no longer on the testers. We should be teaching (or coaching) others on how to test best. For example, organizing workshops for the developer to demonstrate why it is important to make the app as testable as possible.

Principle 4️⃣

We care deeply about the quality culture in our team, and we coach, lead and nurture the team towards a more mature quality culture.

Big changes often require adjustments in how people think and operate. In that regard, we should help promote a culture of collaboration, instead of a culture of blaming.

This can happen by being active in the community, and creating one for knowledge sharing, discussing any blocking issues openly, and being there to help one another. In practice, the developers can share their technical knowledge with the testers, and the testers can teach the developers how to test better and earlier.

Principle 5️⃣

We believe that the customer is the only one capable of judging and evaluating the quality of our product.

Traditionally, the QAs are viewed (or often self-proclaimed) as the representative, or the champions of the customer. But in truth, only the customer is the true representative of itself! The course of software development should be adjusted according to the customer’s actual needs.

Gathering the right data is crucial, so we don’t end up developing features that the customers didn’t ask for and don’t need. Customers don’t really care about design patterns and perfect architecture behind your software, they just want their problem solved, that’s all there is to it.

That being said, in alignment with the first principle, we should also make sure our software is high-quality, but not bother the customer with the details of the technical implementation, unless they ask for them.

Principle 6️⃣

We use data extensively to deeply understand customer usage, and then close the gaps between product hypotheses and business impact.

Data is hugely important in the modern day and age, especially for making informed decisions based on actual information. This is where “testing in production” comes in.

We should monitor the behavior of our users using extensive analytics, use AB testing methods to determine things like which UI/UX solution the actual user are better responding to, and ultimately to make sure that we are not blindly guessing what the customer wants. We should be sure that we are basing our decision on empirical data. Sounds a bit like Scrum in that regard, doesn’t it?

Principle 7️⃣

We expand testing abilities and know-hows across the team, while understanding that this may reduce (or eliminate) the need for a dedicated testing specialist.

Now, this principle is often seen as the most controversial one, but it’s really not a radically new concept. The Agile practice of extreme programming also has no concept of a dedicated tester, or a siloed QA department. Instead, it emphasizes that everyone dealing with the product should contribute to its quality and be involved in testing to a certain degree, according to their role.

This doesn’t really mean that existing testers will be left jobless. It just means that dedicated testers are shifting away from being the ones who do the majority of testing, to becoming quality advocates who promote better testing and teach how to improve the quality of the products we deliver.

Conclusion

In this article, we explained the 7 modern testing principles. If you are looking for more details, you can check out the AB testing podcast, where Alan Page and Brent Jensen discuss modern testing and many other topics 🔸

2 replies

Forum|alt.badge.img+4
  • Chief Specialist
  • April 29, 2023

The majority of these are not principles of testing at all. They are mostly about developing a quality product. They are principles of development, for the most part.

Unfortunately, there has always been (at least since the mid-eighties when I came onto the scene) a disdain for testing and testers. One place this disdain came from is the quality control community. It also came from developers and management.

The disdain stems from the fact that good testers are hard to control, and they bring bad news.

So, about quality. The fact is testing is not even about quality! Principles of modern testing should not emphasize quality. Unless “modern” means “fake.”

 

What IS testing about? Testing is about the truth. We discover the facts of the matter. We seek to know the true status of the product as it relates to our client’s needs and desires. This is where quality comes in but I do my best to avert my eyes from it.

 

Why should I avert my eyes from quality? For the same reason a tour bus driver has to keep his eyes on the road, and not be gawking at the scenery along with all the passengers. My focus cannot be quality-- my focus is trouble. I seek trouble. I imagine problems everywhere and then I try to find them. I can’t afford to believe that the software is good. Good software is bug free. Bug free software is pointless to test. So, I maintain a careful faith in the existence of trouble.

 

My business is truth. My focus is trouble. Quality is a country into which I cannot allow myself to set foot. I have come to these ideas in 30+ years of studying, teaching, and doing testing on the highest levels. Where are these represented in your principles?

 

I agree that development should focus on quality. But keep that positive thinking stuff out of my test lab, please.


anuvip
Forum|alt.badge.img+2
  • Chief Specialist
  • May 10, 2023

I like the image used here. Indeed people do not understand our skill, and I am fine as then it will save me a lot of distractions and focus. I can then focus on the job in hand :)