In some of the cases of Software Development Process, software testing is one of the phase that will take a lot of time, since besides testing the new features, you will have to do regression test to make sure that every changes in the program will not make other functionality stop working. For more complicated application, testing time can take up to 50% (can be more) of the development process (for example a project related to medical). Testing is divided into four level in general and two sub level of acceptance test (Taken from Wikipedia):
* Unit testing : tests the minimal software component that can be tested.
* Integration testing : exposes defects in the interfaces and interaction between integrated components.
* System testing : tests an integrated system to verify that it meets its requirements.
* Acceptance testing : allows the end-user or customer to decide whether or not to accept the product.
-- Alpha testing is simulated or actual operational testing by potential users/customers or an independent test team at the developers’ site. Alpha testing is often employed for off-the-shelf software as a form of internal acceptance testing, before the software goes to beta testing.
-- Beta testing comes after alpha testing. Versions of the software, known as beta versions, are released to a limited audience outside of the company. The software is released to groups of people so that further testing can ensure the product has few faults or bugs. Sometimes, beta versions are made available to the open public to increase the feedback field to a maximal number of future users.
Suppose you need more information about testing terms, you can find the information at OneStopTesting and if you need an open source software testing tools, grab them here. Selenium was also one of them and i have wrote about this in my previous post.
Remember, there's no application in this world which has no bugs. Every software HAVE Bug. It's a matter of time until the bug is discovered. One other reason that might bring new bugs on the software is adding of new feature. But of course this is not avoidable. The software must be improved and one of the simple way is by adding new features. The conclusion is to test..test..test..