Types of testing

TL;DR

Overall we perform functional and non-functional testing.

If we talk about levels we perform smoke, critical path, extended/regression.

image
image
image

Tests classifications

image
Detailed Testing Classification122.5KB

By code execution

Static testing (verification) — without running the code. Dynamic testing (validation) — with running the code.

By access to application code and architecture (by knowledge of code)

  • White box method — there is access to the code.
  • Black box method — there is no access to the code.
  • Gray box method — some of the code is accessible, some of it is not.

By automation level

  • Manual testing — test cases are performed by a person.
  • Automated testing — test cases are partially or fully performed by a special testing tool.

By testing level

  • Unit testing — individual small parts of an application are tested.
  • Integration testing — the interaction between several parts of the application is tested.
  • System testing — the application is tested as a whole.

By functional testing level (By test importance)

Smoke testing — testing of the most important, most crucial functionality.
Critical path testing — testing the functionality used by typical users in typical daily activities.
Extended testing — testing all (remaining) functionality stated in the requirements.

By positivity approach (positive and negative test case)

  • Positive test case: acceptable actions, valid data, by requirements
  • Negative test case: unacceptable actions, invalid data, out of bound of requirements.
Example

By formalization level

  • Ad-hoc testing
  • Exploratory
  • Test case based

By application nature

  • Web-app testing
  • Mobile-app testing
  • Desktop-app testing

Types of software testing

Functional testing — are we building the product right?
  • Non-functional testing: This type of testing focuses on non-functional aspects of the software, such as performance, scalability, security, usability, and compatibility with different environments.
Unit testing — determines whether individual software components perform as expected (function, data structure, classes).
Integration testing — check that various pieces of the software work together as expected.
System testing — assesses both functional and non-functional testing requirements.
Smoke tests — check if critical functions of product work.
Sanity testing — done when a new change or bug fix is implemented.
Regression testing — check if nothing is broken after change.
  • E2E testing — checks if flow of data is maintained if different operations are performed.
Acceptance testingverifies that a specification or contract’s criteria are satisfied in accordance with its delivery. Done by client.
Alpha and beta testing
A/B testing — allows you to compare 2 versions of something to learn which is more effective. "Do your users like version A or version B better?"
  • Exploratory testing: Testers explore the software without predefined test cases, using their intuition and experience to uncover defects.
  • UI testing — ensuring that the software uses a consistent user experience and no visual or graphical elements on the screen are broken.
  • Data quality testing and database integrity testing — are two closely related types of testing aimed at examining such data characteristics as completeness, consistency, integrity, structuredness, etc
  • Performance testing — this assesses how well the software performs under various conditions, such as load, stress, and scalability, to ensure it can handle expected workloads.
  • Security testing — this checks the software for vulnerabilities and weaknesses to ensure that sensitive data and system integrity are not compromised.
  • Compatibility testing — ensures that the software works correctly across different devices, operating systems, browsers, and network environments.
    • Configuration testing
    • Cross-browser testing
  • Internationalization testing (i18n testing, globalization185 testing, localizability, testing) is a testing aimed to ensure that the product is ready to work in different languages and with different national and cultural characteristics.
  • Accessibility testing is a testing aimed at investigating the suitability of a product to be used by people with disabilities
  • Usability testing focuses on evaluating the software's user interface and overall user experience to ensure it is intuitive and user-friendly.

References

SuperMade with Super