Software Testing is a vital part of software development. From a non-computer science point of view, testing helps get rid of any issues that may be in the application upon release. Testing overall can provide a greater quality application for the intended target market by eliminating issues which may be caused by the developer. The sooner that these issues are found the better as it can save time and money in the long run. One of the major benefits of testing is that it can help the application meet its user requirements. In terms of a computer science, these issues are commonly called bugs. These bugs can be broken down into 3 areas:
are bugs that will not affect the finished product majorly but should still be addressed in later updates of the application.
are bugs which affect how to application perform and should be addressed before release.
are the most dangerous types of bugs. These bugs might e.g. cause the application to crash and thus, make the application un-usable. Fatal bugs should be addressed as soon as possible. Once a fix is made for these bugs, the tester should then re-test the bug and see if it is fixed or if the fix has created any other bugs as a result. This form of re-testing for bugs is called regression testing.
Static vs dynamic testing
Static and dynamic testing are two commonly used forms of testing.
Static testing is composed of manually checking e.g. design documents. This allows you to fine tune it and provide suggestions that might make the application improved upon release. Dynamic testing is when you run the code. This for me, is the best possible way to find bugs within a software application. There are 3 main areas within dynamic testing:
• Unit testing
• Integration testing
• System testing
is when you test individual modules within an application.
is when modules are grouped together and tested.
is testing the entire system as one.
White box vs Black box
White box and black box testing are two more common methodologies when it comes to testing.
White box testing:
is when a tester may look at the source code and try to understand how the application is supposed to work. The tester could then test to software at its boundaries e.g. maximum and minimum number of nodes in a network.
Black box testing:
is the opposite of this. The tester as no idea of the internal workings of the application. The tester will mainly use the graphical user interface and try to see if the given interfaces perform correctly and meet requirements. In my opinion, this, along with dynamic testing is the best form of testing as the tester is approaching the application as an end user and can carry out tasks at different levels of end users e.g. end users with different ranges of technological experience.
This is an extract of a report I made while obtaining a 1:1 in BSc (Hons) Software Development & Computer Networking at Cork Institute of Technology. This is intended for informational purposes and not to be used for plagiarism so don’t just change the words around.
Why not check out my other blog post about cloud based VoIP.