Software Testing Definition:

Software Testing is a set of activities that can be planned in advance and conducted systematically to uncover the defects or errors to assess the quality.

Why testing is necessary?

Without testing, we have no way to establishing the quality of an information system. This means that the product we are developing could have faults that may damage our business when we implement it. Some faults can cause minor disruptions, but others can be potentially life threatening. Therefore, we need to establish which faults are nested in an information system before it is released.

Some developers believe that the goal of testing is to ensure that an information system does what it is supposed to do. While this is certainly an important part of testing, it is not a complete requirement. When we test an information system, we want to add value to it – testing costs money, so there must be a cost benefit in performing tests. This means adding quality through the identification of issues, and reporting them to the development team responsible for fixing them. Therefore, the assumption that we should start with is not that an information system works correctly, but rather that it contains faults, which must be identified. Testing should aim to identify as many faults as possible. Looking at testing in this light can give you a very different mindset – you will be looking for faults and failures instead of monitoring if the information system performs as described. Our test cases will be more focused on the thing testers really want, finding the bugs.

Not all encountered failures have to be solved before an information system can be taken into production – instead of ‘unknown bugs’, they become ‘known errors’ and can be scheduled for debugging by a developer. Testers provide this information to the decision makers in an Organization so that a well-founded risk assessment can be undertaken prior to an implementation decision being made.

  • Testing is always risk based – where there are no risks, we should not put any effort into testing an information system.
  • You cannot test everything – some risks will always remain, even in a fully tested system.
  • You can demonstrate that there are faults in an information system, but you cannot say with certainly that there are no faults.
  • The bugs are social creatures – if you find errors in one area, you would expect to find more errors in that specific area.
  • Testing is a job that is very distinct from development, requiring special skills, even if it is not always looked upon that way.

In previous years, testing was considered to be just another phase in the cycle of system development – testing followed coding as night follows day. This implied that a precondition to testing was that coding was largely finished, and that any code changes identified by testing would be minimal. Testing was always on a critical path, and every delay that the development team suffered meant less time for testing. Faults in an information system were identified in the testing phase only by the obvious method of executing the code.

Firstly, it has been recognized that faults cannot be found only by executing the code – potential defects can be identified much earlier in the development cycle. For example, every product developed during a project can be tested by using techniques such as reviews, structured walkthroughs, and inspections.

Software Testing Objectives

Testing is a process of executing a program with the intent of finding an error.

Software testing is a critical element of software quality assurance and represents the ultimate review of system specification, design and coding. Testing is the last chance to uncover the errors / defects in the software and facilitates delivery of quality system.

Software Testing Principles

The basic principles for effective software testing are as follows:

  • A good test case is one that has a high probability of finding an as-yet undiscovered error.
  • A successful test is one that uncovers an as-yet-undiscovered error.
  • All tests should be traceable to the customer requirements
  • Tests should be planned long before testing begins
  • Testing should begin “ in the small” and progress towards testing “in the large”
  • Exhaustive testing is not possible
You may also read:

How and when Testing starts