Types of software Testing
Black box
testing – Internal system design is not considered
in this type of testing. Tests are based on requirements and functionality.
White box
testing – This testing is based on knowledge of the
internal logic of an application’s code. Also known as Glass box Testing.
Internal software and code working should be known for this type of testing.
Tests are based on coverage of code statements, branches, paths, conditions.
Unit testing – Testing of individual software components or modules. Typically
done by the programmer and not by testers, as it requires detailed knowledge of
the internal program design and code. May require developing test driver
modules or test harnesses.
Incremental integration
tests – Bottom up approach for testing i.e.
continuous testing of an application as new functionality is added; Application
functionality and modules should be independent enough to test separately. Done
by programmers or by testers.
Integration
testing – Testing of integrated modules to verify
combined functionality after integration. Modules are typically code modules,
individual applications, client and server applications on a network, etc. This
type of testing is especially relevant to client/server and distributed
systems.
Functional
testing – This type of testing ignores the internal
parts and focus on the output is as per requirement or not. Black-box type
testing geared to functional requirements of an application.
System
testing – Entire system is tested as per the
requirements. Black-box type testing that is based on overall requirements
specifications, covers all combined parts of a system.
End-to-end
testing – Similar to system testing, involves
testing of a complete application environment in a situation that mimics
real-world use, such as interacting with a database, using network
communications, or interacting with other hardware, applications, or systems if
appropriate.
Sanity
testing - Testing to determine if a new software
version is performing well enough to accept it for a major testing effort. If
application is crashing for initial use then system is not stable enough for
further testing and build or application is assigned to fix.
Regression testing – Testing the application as a whole for the modification in any
module or functionality. Difficult to cover all the system in regression
testing so typically automation tools are used for these testing types.
Acceptance
testing -Normally this type of testing is done to
verify if system meets the customer specified requirements. User or customer
does this testing to determine whether to accept application.
Load testing – It’s a performance testing to check system behavior under load.
Testing an application under heavy loads, such as testing of a web site under a
range of loads to determine at what point the system’s response time degrades
or fails.
Stress
testing – System is stressed beyond its
specifications to check how and when it fails. Performed under heavy load like
putting large number beyond storage capacity, complex database queries,
continuous input to system or database load.
Performance
testing – Term often used interchangeably with ‘stresses
and ‘load’ testing. To check whether system meets performance requirements.
Used different performance and load tools to do this.
Usability
testing – User-friendliness check. Application flow
is tested, Can new user understand the application easily, Proper help
documented whenever user stuck at any point. Basically system navigation is
checked in this testing.
Install/uninstall
testing - Tested for full, partial, or upgrade
install/uninstall processes on different operating systems under different
hardware, software environment.
Recovery
testing – Testing how well a system recovers from
crashes, hardware failures, or other catastrophic problems.
Security
testing – Can system be penetrated by any hacking way?
Testing how well the system protects against unauthorized internal or external
access. Checked if system database is safe from external attacks.
Compatibility
testing – Testing how well software performs in a
particular hardware/software/operating system/network environment and different
combination s of above.
Comparison
testing – Comparison of product strengths and
weaknesses with previous versions or other similar products.
Alpha testing – In house virtual user environment can be created for this type of
testing. Testing is done at the end of development. Still minor design changes
may be made as a result of such testing.
Beta testing – Testing typically done by end-users or others. Final testing
before releasing application for commercial purpose.
Comments
Post a Comment