Software Testing: Levels, Types, Methods and Techniques
Learning Objectives
To understand the standard software testing, Types, Levels, and Methods\Techniques
Software Testing
Testing is the process of exercising or evaluating a system or system component by manual or Automated means to verify that it satisfies specified requirements
Software Development & Test Model
Plan Acceptance Tests
Requirements Plan System Tests Acceptance Testing System Testing
Plan Integration Tests
Specification
Design
Integration Testing Plan Unit Tests Unit Testing
Implementation
Testing Levels
Client Needs SRS
Acceptance Testing System Testing
Integration Testing Unit Testing
Design
Coding
Software Testing Levels
Unit Testing [Component Testing]: verifies the functioning of software modules, programs, objects, classes etc that are separately testable. It also includes testing of functionality and specific non-functional characteristics. One approach to unit testing is to prepare and automate test cases before coding Integration Testing: Integration testing interfaces between components, interactions with different parts of a system such as the operating system, file system and hardware, and interfaces between systems.
Software Testing Levels
There can be more than one level of integration testing: Test the interaction between software components and is done after unit testing Tests the interaction between different system or between hardware and software and may be done after system testing Testing of specific non-functional characteristics may be included in integration testing as well as functional testing System Testing: System Testing should investigate functional and non functional requirements of the system. Testing system as whole. System testing is testing conducted on a complete, integrated system to evaluate the system's compliance with its specified requirements. It includes
Software Testing Levels
Functional/ Regression Testing Usability Testing Compatibility Testing Performance Testing Security Testing etc
Acceptance Testing: Acceptance testing assess the systems readiness for deployment use, although it is not necessarily the final level of testing. Acceptance testing may occur at various times of life cycle.
Software Testing Types
Static Testing: It rely on manual examination(reviews) and automated analysis (static analysis) of the code. Reviews are ways of testing software work product and can be performed before dynamic test execution Dynamic Testing: Execution based testing Functional Testing : The functions that a system , sub system or component are to perform may be described in work product such as SRS, use cases or FS or they may be undocumented. Functional test may be performed at all test levels. It is the testing what system does.
Software Testing Types
Non-Functional Testing: Non functional testing consider the external behavior of the software and in most cases uses black-box test design techniques to accomplish that. Non Functional Requirements:
Look and Feel Req Usability Req [level of comfort with software] Performance Req [How fast, accurate, safe , reliable etc] Social Cultural, and political Req [human factor , usability by handicapped ppl ] Legal Req [Conformance to applicable law] Security Req [ the security, confidentiality and integrity of the product] Maintainability and Portability Req [how changeable the product must be]
Software Testing Types
Structural Testing: Structural (white-box ) testing may be performed at all test levels. Structural testing may be based on architecture of the system. Regression Testing: is the repeated testing of an already tested program , after modification , to discover any defects introduced or uncovered as a result of the change[s]. Regression testing may be performed at all test levels, and includes functional, non functional and structural testing.
Testing Techniques
Black Box Testing: Testing based on an analysis of the specification of a piece of software without reference to its internal workings The system is treated as a black box and the internal working of the system are unknown The system is given an input and if the output is what was expected, then the test passes
Testing Techniques
Black Box Testing:
Black Box
X=2
Y=4
Testing Techniques
White Box Testing:
Testing based on an analysis of internal workings and structure of a piece of software
Testing Techniques
White Box Testing:
In white box testing, an input must still produce the correct result in order to pass, but now we are also concerned with whether or not the process worked correctly.
Testing Technique
White Box Testing:
White Box
X=2
Y=2X
Y=4
While both black and white box testing can determine if the system is doing what it is supposed to do, only white box testing is effective at determining if the how part of the equation is correct
Trying it all together
Testing Types Testing Methods\ Techniques White Box, Black Box Functional, Nonfunctional, Structural, Regression , Usability, Performance, Security, Statement coverage, Condition coverage Testing Levels
Unit, Integration, System, UAT
Discussion/Questions?