Testing - digitalideation/studio_web1_2024 GitHub Wiki

Introduction to testing software

Terminology

  • Manual Testing: Testing the software manually without the use of automation tools. Manual testing can be done by developers or a dedicated quality assurance team. User experience testing is often done manually.

  • Automated Testing: Testing the software with the help of automation tools. Automated tests are written by developers and can be run automatically. Automated tests can be run as part of a continuous intergration process (e.g. each time a commit is made to the main branch).

  • Unit & Component Testing: Testing individual units or components of a software in isolation. With UI frameworks, the term component testing is often used (for example, when a Vue component is tested). Unit tests are used to test small units of code and they are lower in complexity. Most of your tests should be unit tests.

  • Integration Testing: Testing the integration of different components of a software system.

  • End-to-End Testing: Testing the software system as a whole from the user's perspective. These are more complex tests and you will have fewer of them than unit tests.

  • Code Coverage: A measure used to describe the degree to which the source code of a program is executed when a particular test suite runs. It helps to determine how much of the code is covered by the tests.

  • Regression: An introduction of a bug in the software that was not present before. Automated testing can help to catch regressions.

  • Test-driven development (TDD): A software development process that relies on the repetition of a very short development cycle: first the developer writes an (initially failing) automated test case that defines a desired improvement or new function, then produces the minimum amount of code to pass that test, and finally refactors the new code to acceptable standards.

The shift-left approach

Most defects are introduced in the early stages of the software development process, when the code is being written. The later a defect is found, the more expensive it is to fix. The shift-left approach to software testing aims to find defects as early as possible in the software development process. This is done by moving testing activities to the left on the software development timeline.

Shift left

Resources