Testing

This is a work in progress.

Smoke Testing

Smoke testing originated in the hardware testing practice of powering on a new piece of hardware for the first time and considering it a success if it does not catch fire and smoke.

  • Testing is a shallow and wide
  • All areas of the application are tested without getting in too deep into the details

Sanity Testing

  • Usually narrow and deep
  • A narrow regression test that focuses on one or few areas of functionality.
  • Checking that the small section of the application is still working after a minor change.
  • Can be performed whenever a cursory testing is sufficient to prove the application is functioning according to specifications

Regression Testing

  • Regression is the retesting the unchanged parts of the application.
  • Test cases are re-executed in order to check whether the previous functionality of an application is still working and that new features have not introduced any new bugs.
  • This test can be performed on a new build when there is a significant change in original functionality or even a single bug fix.

Alpha Testing

This is a form of internal acceptance testing performed mainly by in-house software QA and testing teams. Alpha testing is the last testing done by test teams at development site after the acceptance testing and before releasing the software for beta test. Alpha testing can also be done by potential users or customers of the application.

Beta Testing

  • This testing follows a full internal alpha test cycle.
  • This is the final testing phase where companies release the software for few external user groups outside the company test teams or employees.
  • This initial software version is called a beta version. Most companies gather user feedback in this release.
  • The simple definition of beta testing – testing carried out by real users in the real environment.

Though companies do rigorous in-house quality assurance from dedicated test teams, it’s practically impossible to test application for each and every combination of the test environment. Beta releases make it easier to test application on thousands of test machines and fix the issues before releasing the application publicly. The selection of beta test groups can be done based on company needs. A company can either invite few users to test the preview version of the application or they can release it openly to try by every user.

Fixing the issues in a beta release can significantly reduce the development cost as most of the minor glitches get fixed before the final release. Till now many big companies successfully used beta versions of their most anticipated applications.

e.g. Microsoft Corporation released Windows 7 beta and based on feedback from thousands of users they managed to release a stable OS version. Apple also releases OS X beta in public and fixed many minor issues and improved the OS based on user feedback.