Software Testing is a process, to evaluate the functionality of a software application with an intent to find whether the developed software met the specified requirements or not and to identify the defects to ensure that the product is defect-free in order to produce a quality product.
Types
of Software Testing Technique:
Software testing
techniques can be majorly classified into two categories
· Black Box Testing
· White Box Testing
Black
box testing:
Black box testing is a technique of
software testing which examines the functionality of software without knowing
into its internal structure or coding. It is the method that does not consider
the internal structure, design, and product implementation to be tested. Also known as functional testing or
input-output driven testing. A software testing method whereby the inner
mechanism of the item being tested are not known by the tester is called
black-box testing.
In Black-box testing, a tester doesn’t have any information about the internal working of the software system. The Black Box only evaluates the external behavior of the system. The inputs received by the system and the outputs or responses it produces are tested.
This testing approach focuses on the input that goes into the software, and the output that is produced. Black box testing involves testing a system with no prior knowledge of its internal workings. The testing team does not cover the inside details such as code, server logic, and development method.
Black box testing involves testing
against a system where the code and paths are invisible. It is a process
of checking the functionality of an application as per the customer
requirement. The source code is not visible in this testing; that's why it is
known as black-box
testing. Black-Box testing treats the software as a
“Black Box” – with no information of inner working and it only checks the
essential aspects of the system. While performing black box testing, a tester must
know the system design and will not have access to the source code.
Black box testing is based on the requirements and checks the system to validate against predefined requirements. The testing is done without the internal knowledge of the products. Black-box testing is commonly known as behavioral testing, since we follow the behavior of the overall design.
In black box testing, test cases are designed from an examination of the input/output values only and no knowledge of design or code is required. For this reason, black box testing is also known as functional testing.
Types of Black Box Testing:
There are
three types of black-box testing namely: functional testing, non-functional
testing, and regression testing.
Functional Testing:
This is a type of black box testing which deals with the functional requirements or specifications of a system. Here, different
actions or functions of the system are being tested by providing the input and
comparing the actual output with the expected output.
Functional testing is concerned only with the functional requirements of a
system and covers how well the system executes its functions. Software testers are
responsible for carrying out this test.
Non-Functional Testing:
This black box testing type is not related to testing of
specific functionality. Black box testing can check
additional aspects of the software, beyond features and functionality.
Non functional testing
is concerned with the non-functional requirements and is designed specifically
to evaluate the readiness of a system according to the various criteria which
are not covered by functional testing.
Apart from
the functionalities of the requirements, there are several non-functional
aspects that are required to be tested to improve the quality and performance
of the application. It is solely focused on non-functional
requirements like usability, scalability and performance.
Regression Testing:
Regression Testing is done after code fixes, upgrades or
any other system maintenance to check the new changes has not affected any
existing functionality. The motive is to examine the new code and its
effect on the existing code.
Techniques
of Black Box Testing:
In order to systematically test a set of
functions, it is necessary to design test cases. Testers can create test cases
from the requirement specification document using the following Black Box
Testing techniques:
1. Equivalence Partitioning
2. Boundary Value Analysis
3. State Transition Testing
4. Decision Table Testing
5. Graph-based
testing
6. Error Guessing
7. Comparison Testing
Equivalence Partitioning:
This technique is also known as Equivalence Class
Partitioning (ECP). In this technique, input values to the system or
application are divided into different classes or groups based on its
similarity in the outcome.
Hence, instead of using each and every input value, we can
now use any one value from the group/class to test the outcome. This way, we
can maintain test coverage while we can reduce the amount of rework and most
importantly the time spent.
Boundary Value Analysis:
Boundary value testing is focused on the
values at boundaries.. The two ends, the inner and the outer limits are
considered in this type of testing. We set a boundary value lower or
higher than the actual limit to check the behavior of our system in both
conditions.
Boundary value analysis tests the
software with test cases with extreme values of test data. It is used to
identify the flaws or errors that arise due to the limits of input data. This
technique determines whether a certain range of values are acceptable by the
system or not
State Transition Testing:
State Transition Testing is a technique that is used to test the different states of the system under test. The state of the system changes depending upon the conditions or events. If there are different responses during transition from one state to another then state transition testing can be incorporated.
This testing technique uses the inputs, outputs, and the state of the system during the testing phase. It checks the software against the sequence of transitions or events among the test data.
Based on the type of software that is tested,
it checks for the behavioral changes of a system in a particular state or
another state while maintaining the same inputs.
Decision Table Testing:
This approach creates test cases based on various possibilities. It considers multiple test cases in a decision table format where each condition is checked and fulfilled, to pass the test and provide accurate output. It is preferred in case of various input combinations and multiple possibilities.
If
the results are obtained depending on certain conditions it comes under
Decision table testing. If the conditions are combined they form rules. The
outputs of these rules are formed and the test cases are structured.
Graph-Based Testing:
It is similar to a decision-based test case
design approach where the relationship between links and input cases are
considered.
Error Guessing Technique:
Error Guessing is a
technique based on guessing the errors that can stay in the application. This
method of designing test cases is about guessing the output and input to fix
any errors that might be present in the system. It depends on the skills and
judgment of the tester. There’s no specific set
of rules to test the behavior of a system with this technique.
It can help to look for various
faults which systematic techniques may fail to detect. The method almost always
depends on the tester’s prior experience and their foresight to guess where
defects can occur in the future.
Comparison Testing:
In this method, different
independent versions of the same software are used to compare to each other for
testing.
White
Box Testing:
White box testing is a testing technique
which evaluates the code and the internal structure of software. It is the
detailed investigation of internal logic and structure of the code. White-Box
Testing is the testing of a software solution's inner coding and
infrastructure.
Open-box testing is a software evaluating method used to
examine the internal structure, design, coding and inner-working of software.
Developers use this testing method to verify the flow of inputs and outputs
through the application, improving usability and design and strengthening
security.
In order to perform white-box testing
on an application, a tester needs to know the internal workings of the code.
White box testing involves testing the product's underlying structure,
architecture, and code to validate input-output flow and enhance design,
usability, and security.
The white box test method is the one
that looks at the code and structure of the product to be tested and uses that
knowledge to perform the tests. Designing white box test cases require a
thorough knowledge of the internal structure of a program, and therefore white
box testing is also called structural
testing.
The other name of white box testing is clear box testing because unlike black box testing the code is
available and visible. A few of the other names given to white box testing are
open box testing, transparent box testing, glass testing, and code-based
testing. White box testing is called "open box" because the code is visible to the tester
during the examination.
Types of White Box Testing:
White Box testing can be classified into
any of the following types:
Mutation
testing: Mutation
testing is a type of testing based on alterations or mutations. Minute
modifications are made to the source code to see if the provided test cases can
discover bugs in the code. Developers
commonly use this testing to test the code that they have modified after
detecting bugs or making corrections.
Unit Testing: Unit testing is performed on each unit or block
of code as it is developed. The developer tests a few
lines of code, a single function or an object for correct working.
Unit testing ensures that each
component performs as intended. Bugs
identified in this stage are cheaper and easy to fix. Unit
testing is helpful as it identifies the majority of errors early in the
development cycle, making them cheaper and easier to fix.
Integration testing:
This method is concerned with combining individual unit or components of the
source code and testing them as a group. The purpose of this testing is to
expose any errors in the interaction of different components together.
Integration testing
is performed to check that modules/components operate as intended when
combined, i.e. to ensure that modules that performed fine independently do not
have difficulties when merged.
Penetration
Testing: This method is used to check if errors from
outside the system can affect it. This test involves attacking the code from
all directions to expose security threats. It's concerned about the
software's integration with external factors and errors from outside that can
bring the system down. The aim is to attack the
code from several angles to expose security threats.
Regression Testing: In regression testing, the tester performs
further tests to verify that a recent change in the application’s code has not
harmed existing functionalities. The already executed test cases are rerun to
confirm that previously created and tested features are working as desired. It
verifies that the old code still works even after fixing bugs, adding extra
security features, or implementing any changes.
White Box Testing Techniques:
There are Different Types of White Box testing techniques available to use. Following are important White Box Testing Techniques:
- Statement Coverage
- Branch Coverage
- Path Coverage
- Decision Coverage
- Condition Coverage
- Multiple Condition Coverage
- Basis path Testing
- Loop testing
Statement Coverage: Statement coverage is the most basic form of code coverage
analysis in white box software testing. This technique includes every
possible statement in the code. In this technique, the tester tests every
statement at least once, thereby assuring that all of the code is tested.
A statement is a line of code or an instruction. Statement coverage
ensures
every single line of code is tested.
This technique examines each line of code at least once. In this technique, the aim is to traverse all
statements at least once. Hence, each line of code is tested.
Branch
Coverage: Branch coverage is a white box software
testing technique that measures the number of branches of the control
structures that have been executed. In branch coverage, we check if each branch is processed at least once.
This technique is running a series of tests to ensure that all branches
are tested at least once.
Branch coverage ensures every branch is
tested. In this technique,
test cases are designed so that each branch from all decision points is
traversed at least once. Using this technique, each possible path
or decision point of a software application is checked for accuracy.
Path Coverage- ensures all possible paths
are tested. Path coverage examines all the paths in a given
program. This is a thorough strategy that assures that all program paths are
explored at least once. Path coverage is more effective than branch coverage. This technique corresponds to testing all possible
paths which means that each statement and branch is covered.
Decision Coverage: This includes
testing every possible decision condition and other conditional loops at least
once. Decision Coverage is a white box testing methodology that
reports the true or false results of each boolean expression present in the
source code.
Condition Coverage: This technique covers all individual conditions. In this technique, all individual conditions are
checked. With condition coverage, all of the conditions in the program to be evaluate
as both true and false at least once. The
purpose of condition coverage is to examine the outcome of each logical
condition.
Multiple Condition Coverage: In this testing technique,
all the different combinations of conditions for each decision are evaluated.
Basis
Path Testing: Each independent path in the code is
taken for testing. In this
technique, control flow graphs are created from either code or flowchart. Cyclomatic
complexity is then calculated to define the number of independent paths so that
the minimal number of test cases can be designed for each independent path.
Loop
Testing: The technique focuses on
loops. Loops
are commonly used in white box testing and are fundamental to many algorithms.
Problems are often found at the beginning or the end of a loop. This technique checks the reliability of loops, and
involves simple, nested and concatenated loops.
0 Comments
if you have any doubts plz let me know...