Software Testing
Hi friends
this blog is mainly for the user who is interested in software
testing or who want to start his career in software testing. Before going
depth we will discuss about some important points.
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.
Software Testing Types:
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.
very useful info..
ReplyDeletecan u explain about Exploratory testing?
ReplyDelete