In my previous article I talked about developers testing and the advantages of this. Now in order for this to work you can’t just get the developers to tests and that’s it. You need a few things in place in order to make it work effectively. This article will describe some things that need to be in place for successful developer testing as well as how they can help developers learn and develop their testing skills.
By developers testing I mean that they do all of the functional and non-functional testing. So this includes unit tests, Integration tests through to security and performance testing.
If you want developers to test you need someone to help those developers with testing. This is whether the developer has experience of testing or if they are new to it. In either case they will need mentoring and coaching to help them develop and enhance their testing skills. The person to help them with this could be called a quality lead or test coach. It really doesn’t matter what they are called, what is important is that they are their to support and help the developers in their testing. How they do this will vary but the person should be responsible for:
This is not an exhaustive list but it is part of what a person in a quality role will do that will help with developers testing.
Working in small batches reduces the risk of changes causing issues but it also helps developers test. By having small changes the testing is easier as there are less variables to consider and the testing will be more targeted than say testing a full feature. This helps the developer as there are less things to worry about when they are testing and they can focus their testing on the small change that they have made. This will also help them if they are learning to test as whenever people are learning something new or trying to improve their skills it is always best to start small.
Lets take an example from my hobby photography. If I wanted to learn how to do Astro photography and take a picture of the milky way I would not just go out and try and take a photo of it. I would do the following:
So breaking down my ‘feature’ into smaller bits will help me achieve my larger goal of taking a photo of the Milky Way.
This is one of the most important things to do. If a developer is involved right from the start they understand things like why the product team believes this change is needed and what benefit it bring to the business. Now being involved early enables developers to:
All of these things can be kept in the developers mind when they are testing. Oh there was a potential technical issues that needed working around? OK they can test that specific part of the feature with the additional knowledge as to what was done behind the scenes, which in turn will help find issues and improve their testing.
Excellent product work is essential. With excellent product work comes a well understood customer problem from the product team along with clearly defined success criteria for whether the feature returned the value expected. This good product work give the developers an understanding of what is required and why, and they can bring that into their testing. Remember the testing that the developer does should not just be “Does it Work” it should also consider things such as “Would a user find this intuitive?” or “Does this solve the problem that the user has?” Understanding the why behind why something was built helps enhance testing and improves the developers testing skills.
Developers need to be willing to learn. They need to be open to developing their testing skills and not afraid to ask when they need help. Now some people think testing is easy and anyone can do it. That could not be further from the truth. It is a skill that requires time to build and a constant attitude of learning and development. Like any skill you need to have an open mind to learning and testing is no different. If developers have this you will quickly see how their testing improves.
Software companies need to get things out quickly. Time to market is an important thing that can help a business stay on top and increase their revenue through additional clients or existing clients paying for new functionality. If developers understand that the business needs to get things out quickly they will understand the importance of fast feedback loops. With developers testing the feedback loops are a lot quicker and therefore functionality can get out quicker and help the business grow.
We all make mistakes. I’ve made some in my time and I still cringe when I think back to them. However, mistakes are when you learn and you should be able to make mistakes without worrying about them.
Here is a definition of psychological safety:
"psychological safety is a shared belief held by members of a team that it’s OK to take risks, to express their ideas and concerns, to speak up with questions, and to admit mistakes — all without fear of negative consequences"
From <https://hbr.org/2023/02/what-is-psychological-safety>
So if developers are testing and they are new to it then psychological safety is key. Like learning anything there will be mistakes and that should be OK. Yes it can dent the pride a little but it should not be detrimental to a developers career due to negative consequences. A bug gets to production that was not picked up during a developers testing? OK fine not a problem. Understand why it happened and support the developer in bridging that knowledge gap. If there is no psychological safety then developers will not want to test or will take ages testing to mitigate the risk of negative consequences.
Whenever I think of mistakes or things going wrong I think about this clip
Jocko Willink “GOOD” (Official)
So there you go, a list of things that you need to make developer testing successful. Now there are probably more things that you can add but in my experience the above things are key to have in place. It does take a real shift in mindset if you have been a tester to have teams where there is no tester and the developers do all the testing. However, it can be successful and if done correctly the quality of the software will not suffer.