Show me a piece of software, and I will show you the same number of issues with it.
Ok, that’s not an actual quote from someone, but the point that is conveyed is that all software has at least one bug present in its code waiting to be found.
But why is this?
With fancy developer environments and in-built error checking, don’t a lot of bugs get caught in the developer stage?
I can understand how puzzling of a question this can be, but the fact is that even with all the tools in a developers arsenal, buggy code is still and will forever be a thing.
But what is the source of these bugs? What factors contribute to their existence?
There is no one factor that can
it’s late in the day on a Thursday.
You’re just about to deliver the last bug fix to QA who are already expecting the new release and once that passes. We can deliver the project to the client by their deadline of Monday morning. It’s all looking good.
Then you get an urgent message from the project manager.
“The client wants this featured added before release on Monday. Can we?’
These sorts of late change requests are a constant cause for defects to be made. Especially if developers have to change something in their environment, test cases have to be modified and new test scenarios have to be developed at the last minute.
Change is, of course, inevitable in any fast-moving environment but it needs to be managed well to ensure problems don’t arise from it.
Communication errors appear in software projects when team members do not fully understand the project they are contributing to. Or when they have questions about project details, but after seeking the answers to their uncertainties, they’re just as uncertain and confused as they began.
These errors can creep in at all the critical phases of the project in which it needs a clear understanding of what is required.
The best solution to this problem is to make sure your voice your concerns if you don’t understand something. Speak up, ask questions, no question is a silly question as they say.
We might not like to admit it. But sometimes, testers’ lack of knowledge on the product is being tested, or the testing methods that are, or are not being used, can contribute to buggy code being released.
For example, are you taking a long time to automate something that could
Are you doing something manually that could use automation?
Also, activities like not raising good bug reports are likely to lead to confusion, frustration, and avoidable delays.
Programmers are humans too and they can also make mistakes.
It’s all too easy to miss a semi-colon here, and parentheses there. And before you know it, your code
It’s also common for logic errors to appear in your code and suddenly the function that it should do, isn’t happening, and again, you don’t know why.
Unit tests, along with related white-box testing techniques can of course help in this situation. Ensuring your code is tested independently before it is delivered to testers.
Being confident in our abilities is never a bad thing. As testers, it is our job to give confidence to our stakeholders so they can make informed decisions and their products.
But showing too much confidence isn’t the best reaction that we can give in situations in which we need to account for risk or uncertainties.
“Sure, I’ll knock that out in no time”
But instead, the better reaction would be to ask questions, understand the requirements and also make sure the other person understands what you are going to be doing.
Maybe they have some other ideas that’ll save you some time?