For any company developing software, at some point pressure to reach the deadline in order to release the product on time will come into play. Additional pressure from project stakeholders, such as ‘Marketing’ will not want to delay the release date as significant effort and money may have already been spent on an expected release date.
Quite often, planned time to test the software (e.g. ascertain its quality – QA) will become reduced so as not to impact the release date. From a pure business perspective, this can be seen as a positive step as the product is reaching the intended customers on time. Careful consideration should be taken though as to the overall impact of a customer finding a ‘bug’ in the released product. Maybe the bug is buried deep within a very obscure functional area of the software product, and as the impact only results in a typo within a seldom-used report, the level of impact is very low. In this case, the effect on the business for this software company would probably be insignificant. But what if the bug resulted in the program crashing and losing data? Maybe this software product is used within an air traffic control system? As you can imagine, the impact of this type of bug could be incredibly high and may result in loss of life and destroying the entire company responsible. So basically, the level of risk of a bug being found (likelihood) and what is the effect of the bug (impact) prove to be critical in how much software testing is performed prior to a products release.
Due to the complexity of modern software it is impossible to ensure that software is bug-free…….it really is!
Imagine a simple form on a software application that was designed to accept one of ten specific values, in order to test this completely, you would need to create a test case for each and every permutation of the entries that could be entered by the user, for example:
10(inputs) to the 10(values)th power
10 to the 10th power
Result = 10,000,000,000 test cases
So, if you were the tester hired to perform the testing, and it only took you one second to perform each test case, it would take around 317 years to complete. Therefore, the test planning should take into consideration what is actually ‘achievable.’
Software testing (synonymous with the term Quality Assurance) itself can have many different purposes (quality assurance, validation, performance etc). This is a key decision when planning the QA /software testing, as not testing enough or testing in the wrong areas will inevitably result in missed bugs. The aim should be first ascertaining ‘why’ we are going to test and not simply ‘what’ we are going to test.
Software testing and or Quality Assurance is still a kind of art, mainly due to a limited understanding of the complexities of modern software. Recent years has seen the development of software testing certification such as ISTQB. This is good news for the software industry as a whole, as the more experienced a software tester is then the level of quality of the software they are testing can only increase.
Software testing cannot ensure software is bug-free, but it CAN increase software quality.
If we aim for perfection, we may just achieve excellence!