Bugs. Both the creepy crawly kind and the software kind are a nuisance. Unfortunately, the software kind is also an inevitable part of software development and one of the key reasons for software testing.
The site ‘Techopedia’ defines a bug as a failure or flaw in a program that produces undesired or incorrect results. It’s an error that prevents the application from functioning as it should.
There are many reasons for a software bug to occur but some of the most popular relate to the complexity of the software, programming errors, time pressures and changing requirements. One of the biggest and most common cause of software bugs is miscommunication. More specifically, the lack of communication or elements of communication being misinterpreted that occurs between stakeholders, development and testing teams. Unclear requirements or misinterpreted requirements are two major factors that cause defects ins software. Unclear requirements may be between key stakeholders and the developers building the software, which can cause the software to perform in a different way to what the stakeholders imagined. Alternately, the developers may provide unclear requirements to the testers, which can cause bugs to slip through the testing process.
Furthermore, bugs can also be very difficult to ‘identify and capture’. An example of this happened recently at our aXcelerate office. One of the developers was trying to set up a new function in aXcelerate and got an error. This was a function that passed all tests in Testing but was not working in the Live environment. After much searching through the code the developer was able to spot the difference and update the code. The whole function error didn’t work in the LIVE environment with the original code, due to a single space missing between the symbol ‘<‘ and the word ‘ELSE’.
The factor that made this bug initially work in the TESTING environment but not work in LIVE is that Microsoft had a bug in their SQL Server database product which allowed the first version of the code to work in the TESTING environment, but not in the LIVE environment once using Microsoft’s updated (fixed) version of the database product.
When looking at the whole set of code you can see how trying to find such a tiny detail like the one discussed above, can be to identify.
The difficulty in locating bugs, and more importantly in communicating requirements effectively to the development team or the testing team, is why aXcelerate has a very thorough software testing process. Our team of developers have a dedicated period of time within their schedule where they test out any new features or updates against a list of requirements given to them at the start of each project. They then create a checklist which is given to the testers, so that each tester has a clear overview of what feature elements they are testing against and what defects or errors they should be looking for.
aXcelerate also use a number of automatic software testing tools which are managed by both the developers and testing team. These systems help the team to automatically detect bugs or defects within the system. While this procedure can sometimes take a while and can cause the delay in releasing or updating a new feature, it is a crucial element to ensure the system is running effectively overall. By continually improving the parameters within the software system, testers and developers can ensure the system lasts longer and will perform resourcefully even if pressed to maximum capacity. They can also configure the software so that it will operate well, even when conditions are less than optimal. Considering that conditions are prone to changing within the software environment, this is a considerable benefit.
Ultimately, we are extremely grateful for our ‘bug fighters’. Our system would definitely not run as smoothly without them. We can also spare a thought for them each time we are waiting on a new feature or system update; going through such a thorough software testing process and trying to filter through seemingly endless lines of code cannot be easy!