Testing and Debuging
Testing and Debuging
1. Testing
Testing Techniques is the method applied to evaluate a system or a component with a purpose to
find if it satisfies the given requirements. Testing of a system helps to identify gaps, errors, or
any kind of missing requirements differing from the actual requirements. Testing techniques are
the best practices used by the testing team to assess the developed software in regards to a given
requirements. These techniques ensure the overall quality of the product or software including
performance, security, customer experience, and so on. Testing is a five-fold system for any
testing that the user wants to do. They are:
All types of testing involve the above five dimensions. The testing techniques enable the user to
focus on one or more dimensions to achieve the result.
2. Testing categories
Static and Dynamic testing are the two testing approaches that are occasionally inseparable but
are mostly discussed separately. The Static testing approach is done without executing the
program and is called “verification activities”, while the Dynamic testing approach involves
executing the program with real inputs, most of the current literature refers to the dynamic
testing as “testing”.
a) Static Testing:
This involves source code only and it deals with program and symbolic analysis, model
checking, error handling, and code inspection to ensure functional requirements, design, and
coding standards are observed and estimate program quality without any reference to actual
executions. Desk checking, Code walkthrough, and Formal inspections are the commonly
used techniques here.
b) Dynamic Testing:
This involves actual code executions to ascertain and/or approximate software quality and it
deals with a combination of inputs, use of structurally dictated testing procedures, and
automation of testing environment generation to test the internal design of the software.
3. Testing Techniques
Based on the requirements of the software, a suitable testing technique is employed. Each testing
technique offers various features and benefits to serve the purpose better.
Though there are several types of testing techniques available, we shall focus on Black box
testing and White box testing.
Functional Testing
Functional testing is an approach that is used to verify every functionality of the software and
each function complies with the given requirement. Functional testing is divided into four types:
a. Unit Testing
In unit testing, each component or individual units of the software shall be tested. The
aim of the unit testing is to check internal data structures, logic, boundary conditions for
input and output data as per the design.
b. Integration Testing
In integration testing, individual units are integrated and tested to understand if the
integrated components work efficiently.
c. System Testing
The purpose of system testing is to verify that all the system elements are tested and its
overall function and performance comply with the specific requirements. In this
approach, the system’s hardware and software components are integrated and tested as a
whole.
d. Acceptance Testing
Is the developed software ready for delivery? This type of testing helps to identify if the
application is ready for delivery and meets the business requirements. Alpha testing and
Beta testing are the two types of acceptance testing.
Non-functional Testing
The non-functional attributes of software such as performance, usability, security, reliability, and
quality are tested in non-functional types of testing. The quality and performance of the software
can be enhanced with non-functional testing. Various types of non-functional testing include:
a. Performance testing
Performance testing is performed to ensure that the software applications should be able
to handle the workload well with increased performance. There are four kinds of
performance testing, which include Load testing, Stress testing, Endurance testing, Spike
testing.
b. Security testing
Security experts use the security level of testing to ensure that the system and application
are protected from all types of loopholes. This testing provides security to the application
and protects the loss of information.
c. Usability testing
The usability testing checks for usability and user-friendliness of the software. This test is
performed to determine if the software is seamless to use by any user.
d. Compatibility testing
In this level of testing, compatibility of the software is tested for different operating
system, internet browsers, and so on. Such as an Android app is checked if it is
compatible with different versions of Android OS.
7. Debugging
The important technique to find and remove the number of errors or bugs or defects in a program
is called Debugging. It is a multistep process in software development. It involves identifying the
bug, finding the source of the bug and correcting the problem to make the program error-free. In
software development, the developer can locate the code error in the program and remove it
8. Debugging Techniques
To perform the debugging process easily and efficiently, it is necessary to follow some
techniques. The most commonly used debugging strategies are,
a) Debugging by brute force
b) Induction strategy
c) Deduction strategy
d) Backtracking strategy and
e) Debugging by testing.
a) Debugging by brute force is the most commonly used technique. This is done by taking
memory dumps of the program which contains a large amount of information with
intermediate values and analyzing them, but analyzing the information and finding the
bugs leads to a waste of time and effort.
b) Induction strategy includes the Location of relevant data, the Organization of data, the
devising hypothesis (provides possible causes of errors), and the proving hypothesis.
c) Deduction strategy includes Identification of possible causes of bugs or hypothesis
elimination of possible causes using the information refining of the hypothesis (analyzing
one-by-one)
d) The backtracking strategy is used to locate errors in small programs. When an error
occurs, the program is traced one step backward during the evaluation of values to find
the cause of bug or error.
e) Debugging by testing is the conjunction with debugging by induction and debugging by
deduction technique. The test cases used in debugging are different from the test cases
used in the testing process.
d. Review
Review is a step to ensure the bug you fixed is working correctly now. Also the changes
are not affecting other parts of the application and working properly in the target
platform;
Debugging is the inevitable work in programming and I could say it is the most annoying work
in programming because it is time consuming and will not create any extra values.
Debugging
Debugging is the process of fixing a bug in the software. It can define as the identifying,
analyzing and removing errors. This activity begins after the software fails to execute properly
and concludes by solving the problem and successfully testing the software. It is considered to be
an extremely complex and tedious task because errors need to be resolved at all stages of
debugging. Table 1 outlined the differences between Testing and Debugging
Table 1: difference between Testing and Debugging:
Testing Debugging
Testing is the process to find bugs and Debugging is the process to correct the bugs
errors. found during testing.
It is the process to identify the failure of It is the process to give the absolution to
implemented code. code failure.
There is no need of design knowledge in the Debugging can’t be done without proper
testing process. design knowledge.
Testing can be done by insider as well as Debugging is done only by insider. Outsider
outsider. can’t do debugging.
It is based on different testing levels i.e. unit Debugging is based on different types of
testing, integration testing, system testing etc. bugs.