ISEB Software Testing Training




Follow us

Bookmark

| More

Top 10 Reasons for Bugs in Software

Software Bugs and DefectsWhat is the role of a Software Tester?  Well, generally it is to test and find bugs and defects in a software program. But why do these bugs and defects occur?

If there were no bugs in software there would be no need for software testing (and I’m sure all you software testers out there wouldn’t want that!), so why, in nearly every software development process are there these defects?

Here is our top ten list with thoughts on this matter.

To find out more about how to avoid these 10 reasons – check out our series of Software Testing Tips

1: Human Error

Unfortunately we’ve not yet developed powerful enough AI, robots (or software!) that can develop software better than us.  Human beings are stuck with the task of developing software, and humans make mistakes (have you ever said to someone ‘I’m only human!’ after making a mistake?).  So until we discover a system that eliminates humans from the software development process (software developing software sounds exciting – I know, I think I’ve read too much sci-fi!) there will always be the possibility that errors will occur.

2: Communication Breakdown

There are so many roles and stakeholders (customer, developers, project managers etc) in the software development lifecycle who all need to communicate to achieve their part of the process and produce the final product.  Defects can arise if there is a lack of communication, or flaws in communications between parties at any stage in the process.  For example, the customer may provide vague, ambiguous or non-specific requirements, or the sales consultant may not communicate the customer’s requirements correctly, leaving the development team to make their best guess at a solution, leading to errors.  This picture, whilst not specifically about software testing illustrates how poor communication can negatively affect a project.

3: Poor Design Logic

These days software systems can be incredibly complex, having to provide cross business functionality over many areas of a company.  In this situation, an innovative solution is often required, however due to a number of factors a ‘quick fix’ or easy solution is often found.  These factors can include time pressure (as mentioned above) or budget constraints.  A poor understanding of the technology that is available can also lead to errors, for example using technology that will do the job but is not ideal for the purpose (whether it is hardware, software or development techniques).

4: Unrealistic Development Timeframe

Customers, business owners or managers want things done fast and often have little awareness of how long it may take to create a piece of software, giving the development team a highly unrealistic deadline to complete a project.  This can lead to shortcuts being taken and compromises being made which is where errors and defects can creep in.

5: Poor Coding Practice

Any developer will tell you that there is more than one way to skin a cat! Meaning that there are often numerous ways of achieving the same result with a piece of code.  Some ways will be more efficient than others and inefficient code can result in bugs creeping in.  Alternatively, simple bad coding will nearly always introduce errors into a system (error handling, lack of validation etc).

6: Lack of Version Control

If the same bugs keep appearing over and over in the development lifecycle you need to make sure your Version Control system is working (or implement one if you aren’t using one!!).  Keeping track of any changes made to a piece of code or software is vital, especially in a large project with multiple developers or teams.  If changes are made that cause bugs in a previously working part of the software, you need to be able to either go back to or examine the code before it was changed.

7: Lack of Skilled Testing

Whilst I’m in no way suggesting that any of you are unskilled at testing, it is possible, due to various constraints or circumstances, that poor testing practices are followed.  Time or budget constraints, or a lack of belief that testing makes a difference (by management or the budget holder) can all lead to shortcuts being taken and errors and bugs being missed.  Even a testers personal circumstances can affect this, for example if they are under stress, their mind may be elsewhere and they may not be as rigorous as usual in the testing process.

8: Buggy third Party Tools

A poor workman blames his tools.  But what if his tools are actually at fault?  Developers often use third party tools such as code editors, debuggers, compilers, but as these are all software themselves it is possible that they can contain bugs or errors themselves which can propagate into the product they are creating.

9: Last Minute Changes

Changes in customer or business requirements, infrastructure, hardware etc  once development has started may also lead to errors and bugs being introduced into a system, as rather than start again and code to the new requirements from the ground up, changes are made to existing code in order to meet the requirements, often causing bugs or errors.

10: Over to you!

I know I said this was going to be a top ten, but we would be interested to hear about your experiences and reasons for bugs and errors in software, so over to you to complete this list.  Please add your experiences in the comments section below.

Similar posts you may like

No related posts.

| More

One Response to “Top 10 Reasons for Bugs in Software”

  1. Alex Forbes says:

    How about a lack of computer aided peer code review? I don’t think testers will ever have to worry about 100% bug free code coming their way, especially if you practice short iterations (aka agile) development in some way.

    But wouldn’t it be nice if testers shared some peer code review resources from SmartBear with their development comrades to squash out the boring bugs, so they could focus on only the very interesting, manual testing necessary ones?

    I would hope the testers already use automated testing to help eliminate the need to test the boring stuff, but why not catch some of those boring programming errors early in the lifecycle? Additional benefits could be training new dev’s on a code base, eliminating boring meetings (review on your own terms/time online, etc.) and it’s a win-win.

    Best,
    Alex

Leave a Reply