Testing Types

Unit Testing

  • Unit tests are typically automated tests written and run by software developers to ensure that a section of an application (known as the “unit”) meets its design and behaves as intended.

Integration Testing

  • Test multiple classes and functions work together
  • Test that one service integrates with another service

E2E Testing (Workflow Testing or UI Testing)

  • Test the entire functionality the way that a user would interact with it
  • They are the hardest to setup

Alpha - Beta Testing

Alpha Testing

  • Alpha testing is the first phase of software testing, which is typically conducted by the software development team or a dedicated test team within the organization.
  • software is tested in-house to identify and fix any issues or bugs before releasing it to external users.
  • It is not typically open to the public.

Beta Testing

  • Beta testing, on the other hand, is the second phase of software testing, and it is conducted by external users who have access to a pre-release version of the software.
  • Beta testers are often chosen from a pool of volunteers or customers who have signed up for early access to the software.

Smoke Testing

Sanity Testing

  • A sanity check or sanity test is a basic test to quickly evaluate whether a claim or the result of a calculation can possibly be true.
  • The point of a sanity test is to rule out certain classes of obviously false results, not to catch every possible error.

White Box Testing

Black Box Testing

Gray Box Testing

  • Combination of Black Box and White Box testing

Functional Testing

Mutation Testing

A/B Testing

Automation Testing

  • It includes Workflow test and sometimes integration tests as well

Regression Testing

  • Regression testing is re-running functional and non-functional tests to ensure that previously developed and tested software still performs after a change. If not, that would be called a regression.
  • Changes that may require regression testing include
    • bug fixes
    • software enhancements
    • configuration changes
    • and even substitution of electronic components.
  • As regression test suites tend to grow with each found defect, test automation is frequently involved.
  • We should do “root cause analysis” in case regression happens
  • Regression testing is done after functional testing has concluded, to verify that the other functionalities are working.
  • In the corporate world, regression testing has traditionally been performed by a software quality assurance team after the development team has completed work.

Fixture

  • The purpose of a test fixture is to ensure that there is a well known and fixed environment in which tests are run so that results are repeatable. Some people call this the test context.
  • Examples of fixtures:
    • Loading a database with a specific, known set of data
    • Erasing a hard disk and installing a known clean operating system installation
    • Copying a specific known set of files
    • Preparation of input data and set-up/creation of fake or mock objects

Setup and Tear down

Test Suite

Extreme Programming

  • Extreme programming (XP) is a software development methodology intended to improve software quality and responsiveness to changing customer requirements.
  • It is a type of agile software development
  • The methodology takes its name from the idea that the beneficial elements of traditional software engineering practices are taken to “extreme” levels. As an example, code reviews are considered a beneficial practice; taken to the extreme
  • Other elements of extreme programming include:
    • programming in pairs
    • doing extensive code review
    • unit testing of all code
    • not programming features until they are actually needed
    • a flat management structure
    • code simplicity and clarity
    • expecting changes in the customer’s requirements as time passes and the problem is better understood
    • frequent communication with the customer and among programmers