Importance of software testing / QA
Importance of Software Testing
Software Testing is necessary
because we all make mistakes. Some of those mistakes are not important, but
some of them are expensive or dangerous. We need to check everything and
anything we produce because things can always go wrong – humans make mistakes all the time.
Since
we assume that our work may have mistakes hence we all need to check our own
work. However some mistakes come from
bad assumptions and blind spots, so we might make the same mistakes when we
check our own work as we made when we did it. So we may not notice the flaws in
what we have done. Ideally, we should get someone else to check our
work because another person is more likely to spot the flaws.
There are
several reasons which clearly tells us as why Software Testing is important and
what are the major things that we should consider while testing of any product
or application.
Ø Software
testing is really required to point out the defects and errors that were made
during the development phases.
o Example: Programmers may make a mistake
during the implementation of the software. There could be many reasons for this
like lack of experience of the programmer, lack of knowledge of the programming
language, insufficient experience in the domain, incorrect implementation of
the algorithm due to complex logic or simply human error.
Ø It’s
essential since it makes sure that the customer finds the organization reliable
and their satisfaction in the application is maintained.
Ø If the
customer does not find the testing organization reliable or is not satisfied
with the quality of the deliverable, then they may switch to a competitor
organization.
Ø Sometimes
contracts may also include monetary penalties with respect to the timeline and
quality of the product. In such cases, if proper software testing may also
prevent monetary losses.
Ø It is very
important to ensure the Quality of the product. Quality product delivered to
the customers helps in gaining their confidence. (Know more about Software
Quality)
Ø As
explained in the previous point, delivering good quality product on time builds
the customer confidence in the team and the organization.
Ø Testing is
necessary in order to provide the facilities to the customers like the delivery
of high quality product or software application which requires lower
maintenance cost and hence results into more accurate, consistent and reliable
results.
Ø High
quality product typically has fewer defects and requires lesser maintenance
effort, which in turn means reduced costs.
Ø Testing is required
for an effective performance of software application or product.
Ø It’s
important to ensure that the application should not result into any failures
because it can be very expensive in the future or in the later stages of the
development.
Ø Proper testing
ensures that bugs and issues are detected early in the life cycle of the
product or application.
Ø If defects
related to requirements or design are detected late in the life cycle, it can
be very expensive to fix them since this might require redesign, re-implementation
and retesting of the application.
Ø It’s
required to stay in the business.
Ø Users are
not inclined to use software that has bugs. They may not adopt a software if
they are not happy with the stability of the application.
Ø In case of
a product organization or startup which has only one product, poor quality of
software may result in lack of adoption of the product and this may result in
losses which the business may not recover from.
Testing depends on RISK
-
risk of missing important faults
-
risk of incurring failure costs
-
risk of releasing untested or under-tested software
-
risk of losing credibility and market share
-
risk of missing a market window
-
risk of over-testing, ineffective testing
Software
testing is done by
§ Software tester
§ Software developer
§ Project leader / manager
Testing
should begin
Ø Software testing should begin at the early stages of
the software development life cycle and also performed at every stage of the
cycle.
o Test data sets must be derived and their correctness
and consistency should be monitored throughout the development process.
o If we divide the lifecycle of software development
into “Requirements Analysis”, “Design” , “Programming/Construction” and
“Operation and Maintenance”, then testing should accompany each of the above
phases.
o If testing is isolated as a single phase late in the
cycle, errors in the problem statement or design may incur exorbitant costs.
Testing should stop when
·
All the high
priority bugs are fixed.
·
The rate at which
bugs are found is too small.
·
The testing budget
is exhausted.
·
The project
duration is completed.
·
The risk in the
project is under acceptable limit.
Black box testing
Is testing
the external parts that mean UI design without testing the internal codes and
functions and implementation details. It focused on inputs and outputs of the
system. In black box testing it couldn’t consider about where those inputs and
out puts are worked upon.
White box testing
The
detailed investigation of internal logic and structure of the code. Glass
testing or open box testing. Mostly applied at unit and integration testing
levels. The
detailed investigation of internal logic and structure of the code. Tester
needs to possess knowledge of the internal working of the code. Tester needs to
have a look inside the source code and find out which unit/chunk of the code is
behaving inappropriately. Most of the time the programmer who wrote the code
involving in testing the program.
Gray Box Testing
Gray Box Testing is a software testing method, which
is a combination of both White
Box Testing and Black Box Testing method.
There are four levels of testing.
·
Unit testing
·
Integration
testing
·
System testing
·
Acceptance
testing
Functional testing vs Nonfunctional
testing
Functional testing
- Functional testing is a type of testing which verifies that each function of the software application operates in conformance with the requirement specification.
- This testing mainly involves black box testing and it is not concerned about the source code of the application.
- Each and every functionality of the system is tested by providing appropriate input, verifying the output and comparing the actual results with the expected results.
Types
of functional testing
·
Unit Testing
·
Smoke testing
·
Integration Testing
·
Interface Testing
·
System Testing
·
Regression testing
Unit testing
·
The lowest level of testing.
·
Test the units of the software separately.
·
Identify defects and verify the functioning of software
modules, programs, objects, classes, etc.
·
Done in isolation from the rest of the system.
·
Goal is to ensure that the component being tested conforms
to its specifications and is ready to be integrated with other components of
the product.
Integration testing
Ø The
integration testing is done to test the communication between different components
of the software.
Ø All the
modules that a program comprises are being brought together to test whether they
are functioning in correct order with their counterpart.
Ø There are
few approaches are available;
·
Top-down Approach
·
Bottom-up Approach
·
Big bang Approach
Non Functional testing
Ø The nonfunctional
Testing is the type of testing done against the nonfunctional requirements.
Ø Most of the
criteria are not consider in functional testing so it is used to check the readiness
of a system.
Ø Non-functional
requirements tend to be those that reflect the quality of the product, particularly
in the context of the suitability perspective of its users.
Ø It can be
started after the completion of Functional Testing. The nonfunctional tests can
be effective by using testing tools.
·
Performance testing.
·
Load Testing
·
Volume Testing
·
Stress Testing
·
Security Testing
·
Installation Testing
·
Penetration Testing
·
Compatibility Testing
·
Migration Testing
Ways of testing
Manual testing
1. Manual
testing is a method used by software developers to run tests manually.
Automated testing.
1. It is a
method which uses automation tools to run tests that repeat predefined actions,
matches the developed program’s probable and real results.
2. Testing of software can be done in both
Automation and Manual testing method, but it’s totally depends on the project
requirement, budget associated with the project, and which testing method will
be benefited to the project.
The following tools can be used for automation
testing:
Selenium
·
IBM Rational Functional Tester
·
SilkTest
·
TestComplete
·
Testing Anywhere
·
WinRunner
·
LoadRunner
load runner tool |
Skill test tool |
wow. its a great work. keep it up
ReplyDelete