Unit-I Basics of Software Testing and Testing Methods
Software
testing is an essential process to ensure the quality of software products or
services. It involves executing a software component or system component to
evaluate one or more properties of interest.
Basics of Software Testing:
- Purpose: Software testing helps identify
defects or discrepancies between the actual and expected outcomes.
- Importance: It ensures the software meets
business requirements, functions as expected, can be implemented with the
same characteristics consistently, and satisfies the needs of
stakeholders.
- Levels: Testing is performed at various
stages of software development.
- Unit Testing: Test individual units or
components of a software.
- Integration Testing: Test interfaces
between components or integrated units.
- System Testing: Test complete integrated
systems.
- Acceptance Testing: Check if the system
meets business requirements and is ready for delivery.
Types of Testing Methods:
- Manual Testing: Test cases are executed
manually without any tool support.
- Automated Testing: Test cases are executed
with the help of tools, scripts, and software.
Testing Techniques:
- Black Box Testing: Testing based on external
or functional specifications without knowledge of how the system is
constructed.
- Examples: Functional testing, Non-functional
testing, Usability testing.
- White Box Testing: Testing based on internal
structures of an application.
- Examples: Statement coverage, Branch coverage,
Path testing.
- Grey Box Testing: Combines both Black Box
and White Box testing methods.
Common Testing Methods:
- Functional Testing: Validate the software
system to ensure it behaves according to the specified requirements.
- Non-functional Testing: Validate
non-functional attributes like performance, usability, reliability, etc.
- Examples: Performance testing, Load testing,
Stress testing, Usability testing.
- Regression Testing: Ensure that new code
changes don't negatively impact existing functionalities.
- Smoke Testing: Conduct preliminary testing
to check the software's basic functionalities.
- Sanity Testing: Check specific
functionalities for correctness after a minor change.
- Exploratory Testing: Explore the application
to identify defects without any predefined test cases.
- Ad-hoc Testing: Similar to exploratory
testing, but it's random and doesn't follow any test design techniques.
- Compatibility Testing: Ensure that the
software runs in different environments: devices, operating systems,
network environments, etc.
- Security Testing: Identify vulnerabilities
and weaknesses in the software system.
- User Acceptance Testing (UAT): Final phase
of testing where end-users ensure the software system meets their business
needs.
- Beta Testing: Release the software to a
limited group of individuals to get feedback before the final release.
Conclusion:
Software
testing is a vast field that encompasses various techniques, methods, and
types, each with a specific goal. The right mix of these methodologies ensures
the release of a high-quality software product. Proper testing reduces the risk
of software failures and defects in the production environment, leading to
higher user satisfaction and lower maintenance costs.