Software testing is essential for the business to ensure that the system meets the specified project requirements and is fit for purpose. Understand the types of testing.

Testing is scheduled as part of the project planning process and whilst it is recognized as critical to a successful project it is often squeezed for time and resources. Unfortunately, faults not found during software testing are often found in business use when it is more expensive to fix and has a greater impact to the business.

Purpose of Software Testing

Testing can be carried out in a number of ways from manual testing to automating it. If people are appropriately trained it can be carried out by existing staff, temporary or contract staff, outsourced to a software testing outsourcing company or software program. All of these approaches share a common purpose:

  • To ensure that the requirements are met by the system
  • To find software faults during testing so that they are not found later during production use
  • To accept [or not] the system as fit for purpose and ready for business use

Approach to Software Testing is Defined in Test Plan

The approach to software testing is determined by the project and is documented in a test plan:

  • What type of testing is done?
  • What procedures need to be followed [record results, reporting faults…]
  • How many cycles of testing are planned [test-fault-fix-retest]?
  • Who does the testing and what documented tests do they do
  • When, where and how the testing is done, what equipment and accounts are used

Types of Software Testing

There are a number of different types of software testing and each type has a specific purpose. The four general categories are:

  1. Informal Testing – a useful technique to confirm correct test cases, identify gaps in testing or find problems early. It is also useful to investigate potential risk areas by informally “testing”
  2. Unit Testing – usually carried out by IT and is focused on the software developed unit or module each unit is tested in isolation. For packaged software or vendor supplied products unit testing is either assumed or confirmed to have been carried out by the vendor
  3. System Testing – usually carried out by IT prior to business performing [user] acceptance testing. Testing is designed to exercise the entire system including both functional and non-functional aspects. If the system or application passes this testing it moves on to acceptance testing
  4. Acceptance Testing – usually carried out by the business and is the final stage of testing with a decision as to whether the system is fit for purpose and is ready for deployment to the business

The main types of testing:

  • Functional – system functions [enter, validate, save, retrieve, find record…] as expected or does what is required including things like usability and security
  • Error – system handles error conditions correctly for example if incorrect data is entered
  • Non-functional – system does correctly other tasks that typically do not involve user interaction for example batch jobs or system backup and restore
  • Performance – user functions are performed in a timely and acceptable manner. This is especially important for systems with a geographically distributed set of users
  • Multi-user – system handles correctly multiple users doing the same thing at the same time – changing a record at the same time
  • Load or volume – system performs appropriately under defined load conditions – number of users using the system at any one time

Test Planning

Test planning is part of project planning and is defined by the project in the test plan. The test plan documents the approach to testing and selected types of testing. The tests themselves are written into test cases ready for execution. Effective project planning of this phase is essential with over-optimism often shown in the time and effort to agree test plan, write test cases, execute tests and document results.