Software Testing

Software Testing

Pooja Kaplesh (Chandigarh University, India) and Severin K. Y. Pang (Cognitive Solutions and Innovation AG, Switzerland)
Copyright: © 2020 |Pages: 23
DOI: 10.4018/978-1-7998-2531-9.ch008


Testing software is a process of program execution with the intent to find errors. For this purpose, various testing techniques have been used over time. Testing software is an intensive field of research in which much development work has been done. This field will become increasingly important in the future. There are many techniques for software testing. This chapter gives an overview of the entire range of software testing with suggestions for their implementation. One focus is on testing in an agile development process why the different types of software tests are important, and their cycle and methodology are described. In addition, different levels, types, and a comparative study on different types of tests are presented. The chapter also includes suggestions for performing the various tests and an effective approach to testing a software system.
Chapter Preview


Software tests are used to determine the correctness of software assuming some specific hypotheses. In the early days of software development, debugging was the primary form of software testing. It was mainly done by the programmer who wrote the code, and the goal was to get the application up and running without causing the system to crash. Myers (1979) first introduced the separation of debugging and testing. Since then software testing has become an important field of research, and much has been developed in this area. Information on software test research can be found in the articles by Bertolino (2007), Chauhan & Singh (2014), Pettichord et al. (2008) and Sneha & Malle (2017).

The main objectives of the software test are summarized below (Myers, 1979; Chauhan & Singh, 2014):

  • Detection: Various errors, defects and deficiencies are detected. The system capabilities and various limitations, the quality of all components, the work products, and the overall system are evaluated.

  • Prevention: This information is used to prevent or reduce errors, clarify system specifications, and measure system performance. Different ways are shown to avoid risks and solve future problems.

  • Demonstration: It shows how the system can be used with various acceptable risks. It also shows that functions with special conditions are ready for integration and how the product can be used.

  • Improving quality: Effective software testing minimizes errors and improves the quality of the software.

  • Verification: Verify that the system behaves as specified. It checks and tests elements for software compliance and consistency by evaluating the results against predefined requirements. In verification, we ask a question: Are we building the product properly?

  • Validation: Check the correctness of the system by checking what users have specified and what they actually want. In validation, we ask the question: are we building the right system?

Key Terms in this Chapter

Acceptance Testing: A type of test performed by the customer to certify the system in relation to the agreed requirements.

Integration Testing: A level of software testing where individual units are combined and tested as a group.

White Box Testing: A testing technique to test the internal structure, design and coding of a software solution.

Agile Testing: A software testing practice that follows the principles of agile software development.

Beta Testing: A type of acceptance testing that the testing of a product is done by “real users” of the software application in a “real environment.”

Unit Testing: A type of software testing that tests individual software components.

Agile Software Development Process: An evolutionary and iterative approach to software development with focuses on adaptation to changes.

Software Testing Life Cycle (STLC): A series of step-by-step activities performed by a QA team to methodically test the software product.

Manual Testing: A type of test where testers run test cases manually without automation tools.

Test Case: A specification of the inputs, execution conditions, test methods, and expected results that define a single test to be performed to achieve a particular software test goal.

System Testing: The testing of a complete and fully integrated software product.

Alpha Testing: A type of acceptance testing that is performed to identify any potential problems/errors before the product is released to everyday users or the public.

Test Automation: Automating the process of tracking and managing the various tests.

Automated Testing: The process of performing specific tests through automation.

Black Box Testing: A testing technique that tests the functionality of the application under test without knowledge of the internal code structure, implementation details, and internal paths of the software.

Gray Box Testing: Similar to black box testing but designing tests requires knowledge of internal data structures and algorithms.

Complete Chapter List

Search this Book: