Software Testing – Beginners Guide to Effective Testing

What is Software Testing?

software testing
software testing

Introduction to Software Testing

Software Testing is an activity in software development. It is an investigation performed against a software to provide information about the quality of the software to stakeholders.

Different people have come up with various definitions for Software Testing, but generally, the aim is:

  • To ensure that the software meets the agreed requirements and design
  • The application works as expected
  • The application doesn’t contain serious bugs
  • Meets its intended use as per user expectations

Software testing is often used in association with the terms verification and validation.

  • Validation: Are we doing the right job?
  • Verification: Are we doing the job right?

Verification is the checking or testing of items, including software, for conformance and consistency with an associated specification.

Validation is the process of checking that what has been specified is what the user actually wanted.

Software testing is just one kind of verification, which also uses techniques such as reviews, analysis, inspections and walk-through.

Software testing should not be confused with debugging. Debugging is the process of analyzing and locating bugs when software does not behave as expected.

Although the identification of some bugs will be obvious from playing with the software, a methodical approach to software testing is a much more thorough means of identifying bugs.

Debugging is therefore an activity which supports testing, but cannot replace testing. However, no amount of testing can be guaranteed to discover all bugs.

Types of Software Testing

Broadly speaking, Software Testing can be divided into two parts:

  • Black box testing which is high level and does not take into account the internal workings of the software, i.e. the tester doesn’t need to know how each individual components interact with each other.
  • White box testing which tests at very low levels, e.g. functions within a class or component integration. System Testing is an example of a Black Box Testing, and Unit Testing is an example of white box testing.

See the complete list of Software Testing types and test methods


Software Testing Techniques

The main purpose of a Test Technique is to help identify defects and reduce large number of combinations. Testing everything is not possible, because there are large number of test cases that can be executed against a given application.

Test techniques such as equivalent partitioning and pair-wise testing reduce permutations, while boundary value analysis help to identify defects at boundaries.


Software Testing and Risk

Due to limited time and resource to test a software, we have to take a Risk Based Approach to Software Testing. This means we have to see what is the likelihood of something failing and what is the impact of that failure. Once we have gathered all the information, we can prioritize which test cases to execute first.

The high priority test cases are executed first because we have to ensure that in the limited time that we have, we can get confident that the major functionalities are working before sign off and release to production.

Read more on Risk Based Software Testing