Types of software testing

Quality Assurance, Software testing, Technology

This page is a curated information from blogs, articles, tutorials about software testing that relevant to QA team.

If you are new to software testing, you can use information on this page as starting point to grow your skills on software testing.


There are several well-known types of Software testing. Here are 4 types of testing I use frequently:

1. Regression Testing

Regression testing is a type of software testing that seeks to uncover new software bugs, or regressions, in existing functional and non-functional areas of a system after changes such as enhancements, patches or configuration changes, have been made to them.

Who performs it: Developer, Tester
When: Testing per build (Staging)

2. User Acceptance Testing

Acceptance testing is a test conducted to determine if the requirements of a specification or contract are met.

Who performs it: Client, Tester
When: Deployment (stable Staging)

3. Smoke Testing

Smoke testing is preliminary testing to reveal simple failures severe enough to reject a prospective software release.
Also known as confidence testing and sanity testing.

Smoke tests are a subset of test cases that cover the most important functionality of a component or system, used to aid assessment if main functions of the software appear to work correctly.

For example, a smoke test may address basic questions like:

  • “does the program run?”,
  • “does the user interface open?”, or
  • “does clicking the main button do anything?”

The process of smoke testing aims to determine whether the application is so badly broken as to make further immediate testing unnecessary. As the book Lessons Learned in Software Testing puts it,

“smoke tests broadly cover product features in a limited time … if key features don’t work or if key bugs haven’t yet been fixed, your team won’t waste further time installing or testing”.

Who performs it: Tester
When: Deployment (Staging)

4. Unit Testing

Unit testing refers to the practice of testing certain functions and areas – or units – of code.
This gives us the ability to verify that our functions work as expected.

That is to say that for any function and given a set of inputs, we can determine if the function is returning the proper values and will gracefully handle failures during the course of execution should invalid input be provided.

Who performs it: Developer
When: Testing per build (Staging)

Types of testing from methods perspective

Further reading

Leave a Reply

Your email address will not be published. Required fields are marked *