Skip to content
DevPedia

Testing

Principles, strategies, and practices for evaluating the behavior and the quality of software.

13 guides

Fundamentals

  1. What is testing?

    What tests can tell us about a system, what their limits are, and how they help evaluate its quality.

Unit testing

  1. What is a unit test?

    What characterizes a unit test, what isolating a unit means, and how to keep the test from depending too much on the implementation.

  2. F.I.R.S.T.: principles for unit tests

    Five criteria for writing tests that are fast, independent, and repeatable, with clear results and written at the right moment.

  3. AAA: how to structure a test

    Set up the scenario, run an action, check the result. How to use Arrange, Act, Assert to write tests that are easy to follow.

  4. Test doubles: dummy, stub, spy, mock, and fake

    What role each kind of double plays and how to pick the right one for controlling a test's dependencies.

  5. Test-Driven Development (TDD)

    How the cycle of writing a test, making it pass, and refactoring guides the implementation and helps you review the design.

Test levels

  1. Integration testing

    What problems show up when you connect components, and how to test those interactions beyond unit tests.

  2. System testing

    How to evaluate the behavior of the complete system, and how it differs from testing the integration between components.

  3. User acceptance testing (UAT)

    Meeting a specification doesn't guarantee the system answers the business's needs. How to evaluate its acceptance, and who takes part.

Non-functional testing

  1. Performance testing

    How to evaluate response times and capacity under different loads, without relying on averages alone.

  2. Security testing

    How to evaluate access controls and find vulnerabilities with tests and static and dynamic analysis. What each approach contributes.

  3. Usability testing and its relationship with UX

    How to evaluate whether people can understand and use the system, and how it differs from other UX research activities.

  4. Compatibility testing

    How to verify that software works in the environments you support, and that its changes keep the backward compatibility you need.

Search by concept, pattern or practice.