Getting started in Testing

If you're just starting out in testing or preparing for the ISTQB certification, you've probably come across terms like "functional testing", "regression", "test levels", and more. In this article, I explain —directly and with examples— the essential concepts every tester should know, based on the official ISTQB CTFL syllabus.


What is software testing?

Testing is not just "test to check if it works". Is a structured activity whose objective is:

  • Finding defects
  • Evaluate software quality
  • Reduce risks prior delivering something to final user
  • Verify that the system does what it must do (verification)
  • Validate that the system works for what user needs it (validation)



Basic (but powerful) concepts

  • Error, defects and failure:
    • Error: could be made by a human (e.g. to write a formula wrongly).
    • Defect: when an error is reflected in the code.
    • Failure: a defect is executed and drives the system to a wrong behavior.


  • Testing ≠ Debugging
    • Tester finds the failure.
    • Developer debugs the failure and fixes it.

  • Seven Testing principles (simplified)
    1. Testing finds errors, but does not guarantee that the whole system is perfect.
    2. Testing everything is impossible.
    3. The earlier something is tested, the better and cheaper it is.
    4. Defects tend to group.
    5. Tests get less effective if they are repeated without changing nothing.
    6. There is not an only way for testing all the cases.
    7. A defectless software does not always mean that it is useful.

  • Test types
    1. Functional: Tests focused on what the system do. Example: can I login with valid user and password?
    2. Non-functional: Test how the system behaves. Example: does app load in less than 3 seconds? Here, performance, usability, security, compatibility, etc., are considered.
    3. Black-box: Tester does not see the code. It is just based on requisites.
    4. White-box: Code is examined. Example: all if/else branches are executed?
    5. Cofirmation: Something is re-tested to confirm that a bug was fixed.
    6. Regression: It is verified that recent changes done have not broken something that previously worked correctly.

  • Test levels: Tests are organized by levels according to what is tested:
    • Component (unit) testing: A component is tested separatedly. Example: an isolated function. It is commonly done by developers.
    • Component integration testing: It is tested how components communicate with each other.
    • System testing: Tests of the whole system as an end user.
    • System integration testing: System is connected with others (APIs, external services) and interaction is tested.
    • Acceptance testing: Final validation. Does this meet business needs? It is done by customer or user.


Why is this important?

Because being a tester is not just run tests: it is to understand what is tested, how and why. And these fundamentals will help you to:
  • Detect errors early.
  • Better prioritize your tests.
  • Better communicate with developers and tech lead.
  • Build a solid foundation to grow into automation, performance, or security testing.


In summary:

  • Understanding test types and levels helps you applying testing more strategically.
  • You don't need to memorize everything, but understand and apply it.
  • These concepts are the ISQTB CTFL basis, but are also useful in every real project.

Remember:
A tester with clear fundamentals is more valuable than a misunderstood automated test suite.

Comentarios