software
Testing
Software testing is the process of
evaluation a software item to detect differences between given input and
expected output. Also to assess the feature of A software item. Testing
assesses the quality of the product. Software testing is a process that should
be done during the development process. In other words software testing is a
verification and validation process.
Verification
Verification is the process to make
sure the product satisfies the conditions imposed at the start of the
development phase. In other words, to make sure the product behaves the way we
want it to.
Validation
Validation is the process to make
sure the product satisfies the specified requirements at the end of the
development phase. In other words, to make sure the product is built as per
customer requirements.
Basics
of software testing
There are two basics of software
testing: blackbox testing and whitebox testing.
Blackbox
Testing
Black box testing is a testing
technique that ignores the internal mechanism of the system and focuses on the
output generated against any input and execution of the system. It is also
called functional testing.
Whitebox
Testing
White box testing is a testing
technique that takes into account the internal mechanism of a system. It is
also called structural testing and glass box testing.
Black box testing is often used for
validation and white box testing is often used for verification.
Types
of testing
There are many types of testing like
- Unit Testing
- Integration Testing
- Functional Testing
- System Testing
- Stress Testing
- Performance Testing
- Usability Testing
- Acceptance Testing
- Regression Testing
- Beta Testing
Unit
Testing
Unit testing is the testing of an
individual unit or group of related units. It falls under the class of white
box testing. It is often done by the programmer to test that the unit he/she
has implemented is producing expected output against given input.
Integration
Testing
Integration testing is testing in
which a group of components are combined to produce output. Also, the
interaction between software and hardware is tested in integration testing if
software and hardware components have any relation. It may fall under both
white box testing and black box testing.
Functional
Testing
Functional testing is the testing to
ensure that the specified functionality required in the system requirements
works. It falls under the class of black box testing.
System
Testing
System testing is the testing to
ensure that by putting the software in different environments (e.g., Operating
Systems) it still works. System testing is done with full system implementation
and environment. It falls under the class of black box testing.
Stress
Testing
Stress testing is the testing to
evaluate how system behaves under unfavorable conditions. Testing is conducted
at beyond limits of the specifications. It falls under the class of black box
testing.
Performance
Testing
Performance testing is the testing
to assess the speed and effectiveness of the system and to make sure it is
generating results within a specified time as in performance requirements. It
falls under the class of black box testing.
Usability
Testing
Usability testing is performed to
the perspective of the client, to evaluate how the GUI is user-friendly? How
easily can the client learn? After learning how to use, how proficiently can
the client perform? How pleasing is it to use its design? This falls under the
class of black box testing.
Acceptance
Testing
Acceptance testing is often done by
the customer to ensure that the delivered product meets the requirements and
works as the customer expected. It falls under the class of black box testing.
Regression
Testing
Regression testing is the testing after
modification of a system, component, or a group of related units to ensure that
the modification is working correctly and is not damaging or imposing other
modules to produce unexpected results. It falls under the class of black box
testing.
Beta
Testing
Beta testing is the testing which is done by end users, a team outside
development, or publicly releasing full pre-version of the product which is
known as beta version. The aim of beta testing is to cover unexpected errors.
It falls under the class of black box 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 testing – 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 do this testing to
determine whether to accept application.
Load testing – Its 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 ‘stress’ 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.
0 comments:
Post a Comment