logo logo

Modern Testing Principles

Modern Testing Principles

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 🔸

Avatar

About the author

Mirza Sisic

Mirza has always been a technology geek, helping friends and family with computer-related issues. Started originally in tech support in 2014 and moved to software testing in 2017, and has been there since. Mirza worked as a freelance web developer for a while as well. When he’s not sharing memes online Mirza is usually learning new things, writing posts for his blog, and being an active member of the testing community.

Join TestProject Community

Get full access to the world's first cloud-based, open source friendly testing community. Enjoy TestProject's end-to-end test automation Platform, Forum, Blog and Docs - All for FREE.

Join Us Now  

Leave a Reply

popup image

A new world for test automation

Join 150,000 testing & dev teams taking their web & mobile testing to new heights, using #1 FREE test automation platform, designed to help deliver quality at speed.
Get Started
FacebookLinkedInTwitterEmail