Software testing is an investigation to provide stakeholders with information about the quality of the product or service under test. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation. In this video we describe the fundamentals of software testing.
Types of Software Testing Process
- Unit Testing: The purpose is to validate that each unit of the software performs as designed. A unit is the smallest testable part of any software. It usually has one or a few inputs and usually a single output.
- Integration Testing: Here individual software modules are combined. Then tested as a group.
- Functionality Testing: It is a type of black box testing that bases its test cases on the specifications of the software component under test.
- Usability Testing: A product is being evaluated by testing it on users.
- System Testing: It is testing conducted on a complete, integrated system. This is to evaluate the system’s compliance with its specified requirements.
- Performance Testing: It is testing that is performed to determine how fast some aspect of a system performs. Hence, under a particular workload.
- Load Testing: It refers to the practice of modeling the expected usage of a software program by simulating multiple users accessing the program concurrently.
- Stress Testing: Is a software testing activity that determines the robustness of software by testing beyond the limits of normal operation.
Software Testing Process
Planning and Control
Test Planning : Test planning involves producing a document that describes an overall approach and test objectives. It involves reviewing the test basis, identifying the test conditions based on analysis of test items, writing test cases and Designing the test environment. Completion or exit criteria must be specified so that we know when testing (at any stage) is complete.
Control : This is the activity of comparing actual progress against the plan, and reporting the status, including deviations from the plan. It involves taking actions necessary to meet the mission and objectives of the project.
Analysis and Design
Test analysis and Test Design has the following major tasks:
- To review the test basis. The test basis is the information on which test cases are based, such as requirements, design specifications, product risk analysis, architecture and interfaces
- Identify test conditions
- To design the tests
- Design the test environment set-up and identify the required infrastructure and tools
Implementation and Execution
Test execution involves actually running the specified test on a computer system either manually or by using an automated test tool.
Evaluating Exit criteria and Reporting
Evaluating exit criteria is a process defining when to stop testing. It depends on coverage of code, functionality or risk. Basically it also depends on business risk, cost and time and vary from project to project.
Test Closure activities
Test closure activities are done when software is ready to be delivered.
Software testing is a vast subject. There are software applications and system engineered for numerous domains and industries, and for a tester, every testing project is a new challenge because he has to understand the client’s point of view and the domain before moving on with testing activities. From project to project, a tester may have to change the testing methodologies as well. It is therefore very important to keep the fundamentals right. Getting the fundamentals right in the first place is biggest prerequisite to become successful in software testing.
Testing is necessary because it helps us in identifying the faults in software. So, software testing is necessary so that bug free applications can be developed and delivered. When a company decides to develop software for a client there are certain legal, contractual and industry-specific requirements based on the deal is made. A quality conscious company will definitely include software testing in its best practices.