Introduction to Software Testing

Before we go ahead and take a detailed look at software testing, it is necessary to know a few concepts that will simplify the definition of software testing.

  • Error: Error or mistake is a human Action that produces wrong or incorrect result.
  • Defect (Bug, Fault): A flaw in the system or a Product that can cause the component to fail or malfunction.
  • Failure: It is the variance between the actual and expected result.
  • Risk: Risk is a factor that could result in negativity or a chance of loss or damage.

Thus, software testing is the process of finding defects/bugs in a system, that occur due to an error in the Application, which could lead to failure of the resultant product. In short, software testing has different goals and objectives, which often include:

  1. Finding defects
  2. Gaining confidence and providing information about the level of quality
  3. Preventing defects

Scope of Software Testing

The primary function of software testing is to detect bugs in order to uncover and detect it. The scope of software testing includes execution of that code in various environment and also to examine the aspects of the code – does the software do what it is supposed to do and function according to the specifications? As we move further we come across some questions such as, “When to start testing?” and “When to stop testing?” It is recommended to start testing from the initial stages of the software development. This not only helps in rectifying the errors before the last stage, but also reduces the rework of finding bugs in the initial stages every now and then. It saves time and is cost-effective. Software testing is an ongoing process, which is potentially endless but has to be stopped somewhere, due to the lack of time and budget. It is required to achieve maximum profit with good quality product, within the limitations of time and money. The tester has to follow some procedural way through which he can judge if he covered all the points required for testing or missed out any. To help testers carry out these day-to-day activities, a baseline has to be set, which is done in the form of checklists.

Software Testing Key Concepts

  • Defects and Failures: As we discussed earlier, defects are not caused only due to coding errors, but most commonly due to the requirement gaps in the non-functional requirement, such as usability, testability, scalability, maintainability, performance and security. A failure is caused due to the deviation between an actual and an expected result. But not all defects result in failures. A defect can turn into a failure due to a change in the environment or a change in the configuration of the system requirements.
  • Input Combination and Preconditions: Testing all combination of inputs and initial state (preconditions), is not feasible. This means finding a large number of infrequent defects is difficult.
  • Static and Dynamic Analysis: Static testing does not require execution of the code for finding defects, whereas in dynamic testing, software code is executed to demonstrate the Results of the tests.
  • Verification and Validation: Software testing is done considering these two factors.
    1. Verification: This verifies whether the product has been designed according to the specification.
    2. Validation: This checks whether the product meets the requirements of customers.
  • Software Quality Assurance: Software testing is an important part of the software quality assurance. Quality assurance is an activity, which proves the suitability of the product by taking care of the quality of the product and ensuring that the customer requirements are met.