Unit 3
Unit 3
Static Testing
Static Testing is a type of Software Testing method that is performed to check the
defects in software without actually executing the code of the software application.
Whereas in Dynamic Testing checks, the code is executed to detect the defects.
o Informal reviews
In informal review, the document designer place the contents in front of viewers, and
everyone gives their view; therefore, bugs are acknowledged in the early stage.
o Walkthrough
Generally, the walkthrough review is used to performed by a skilled person or expert to
verify the bugs. Therefore, there might not be problem in the development or testing
phase.
1
o Peer review
In Peer review, we can check one another's documents to find and resolve the bugs,
which is generally done in a team.
o Inspection
In review, the inspection is essentially verifying the document by the higher
authority, for example, the verification of SRS [software requirement specifications]
document.
o
o
o Validation Activites
o unit testing
o The unit testing is the first level of functional testing to perform any testing on the
software application.
o We will perform the unit testing whenever the application is ready and given to the Test
engineer. He/she will start checking every component of the module or application
independently or one by one. And this process is known as components testing.
o The primary objective to perform unit testing is to test the correctness of remote code
and validate the unit components with their performance.
Integration testing
o When we have successfully done the unit testing on the specific software, we will go for
the integration testing. The integration testing will help us to combined individual units
and tested as a group. And it is the second levelof functional testing.
o When all the components or modules are working independently, we will check the data
flow between the dependent modules, which is known as integration testing.
o The developers and the test engineer perform the integration testing. And the main
purpose of the integration is to identify the faults in the interaction between the
integrated units.
System testing
o System testing is used to check the end-to-end flow of an application or the software as
a user.
o System testing is also known as end-to-end testing as the testing environment is
similar to the production environment.
o In the third level (system testing) of functional testing, we go through all the necessary
modules of an application and check if the end features or the end business works fine,
and test the product as a whole system.
User acceptance testing
2
o The user acceptance testing is performed to certify the system according to
requirements. The customer or client does it before accepting the final product.
o In other words, we can say that the UAT is done by the customer (domain expert) for
their satisfaction and check whether the application is working according to given
business scenarios and real-time scenarios.
o It is the last level of functional testing, which is execute before releasing the software to
the market or production environment where two or more end-users will involve.
The main objective of performing the non-functional testing is to test the software system's reading speed
according to the non-functional parameters because these parameters are never tested before the
functional testing.
Non-functional testing plays a vital role in customer satisfaction while testing the software or the
application.
It reduces the risk of production and related costs of the software, and it provides a thorough knowledge
of product behavior and used technologies.
Furthermore, the non-functional testing is divided into various parts, which can be performed at the test
level.
o Performance testing
o Usability testing
o Compatibility testing
o Recovery testing
o Security testing
Let's understand them in details one by one:
Performance Testing
o In usability testing, we will check the user-friendliness, efficiency, and accuracy of the
software application.
o If we are using usability testing, it ensures that the developed software is easy to test
while using the system without facing any problem and makes end-user life easier.
Compatibility testing
3
o The next type of non-functional testing is compatibility testing, which is used to
check the functionality of an application on different software, hardware platforms,
network, and browsers.
o The compatibility testing is not performed for all the applications; we will use the
compatibility testing only for those applications where we don't have control over the
platform used by users.
Recovery testing
o In recovery testing, we can verify how well a system can recover from hardware
failures and crashes.
o It reproduced the failure modes or essential producing failures in a controlled
environment.
o The recovery testing is performed to confirm that a system is fault-tolerant and can
improve well from failures.
Security testing
o The security testing is used to discover the weaknesses, risks, or threats in the software
application and help us stop the nasty attack from outsiders and ensure our software
applications' security.
o The main purpose of security testing is to identify all the possible uncertainties and
vulnerabilities of the application so that the software does not stop working.
Regression Testing
Regression testing is like a software quality checkup after any changes are made.
It involves running tests to make sure that everything still works as it should, even
after updates or tweaks to the code. This ensures that the software remains
reliable and functions properly, maintaining its integrity throughout its development
lifecycle.
When to do regression testing?
When new functionality is added to the system and the code has been modified
to absorb and integrate that functionality with the existing code.
When some defect has been identified in the software and the code is
debugged to fix it.
When the code is modified to optimize its working.
Process of Regression testing
Firstly, whenever we make some changes to the source code for any reason like
adding new functionality, optimization, etc. then our program when executed fails
in the previously designed test suite for obvious reasons. After the failure, the
source code is debugged to identify the bugs in the program. After identification of
the bugs in the source code, appropriate modifications are made. Then appropriate
test cases are selected from the already existing test suite which covers all the
4
modified and affected parts of the source code. We can add new test cases if
required. In the end, regression testing is performed using the selected test cases.
progressive testing vs regression testing
5
Objectives of Regressive Testing
Checks if bug has been addressed: The first objective in bug-fix testing is to check whether
the bug fixing has worked or not. Therefore, you run exactly the same test that was executed
when the problem was first found. If the program fails on this testing, it means the bug has not
been fixed correctly and there is no need to do any regression testing further.
Finds other related bugs: It may be possible that the developer has fixed only the symptoms
of the reported bugs without fixing the underlying bug. Moreover, there may be various ways to
produce that bug. Therefore, regression tests are necessary to validate that the system does
not have any related bugs.
Check effect on other parts of program: It may be possible that bug-fixing has unwanted
consequences on other parts of a program. Therefore, regression tests are necessary to check
the influence of change in one part on other parts of the program.
6
However, when the modification to a system is small, this method of testing is not
recommended. Also, It is not recommended to perform this testing for every
software product because of time constraints as most of the clients prefer avoiding
this.
Step 2. After that, it selects a subset of test cases from an existing test suite(set
of test cases) that covers the components of software affected by the changes
or modifications.
Step 3. Then, it tests the changed program to create the correctness of the
program.
Step 4. After that, it examines the test results to identify the software failure.
Step 5. If it finds any fault then it corrects that fault(s) that causes that failure.
Step 6. At last, it updates the test suite and test history of the program.
Various types of testing are used by software engineers and testers. Therefore,
every tester needs to find the right testing type and set of processes so that they
can save cost and energy and work with great efficiency.
Regression techniques
Regression testing can be performed using the following techniques:
7
1. Re-test All:
Re-Test is one of the approaches to do regression testing. In this approach, all the test case suits should
be re-executed. Here we can define re-test as when a test fails, and we determine the cause of the failure
is a software fault. The fault is reported, we can expect a new version of the software in which defect
fixed. In this case, we will need to execute the test again to confirm that the fault fixed. This is known as
re-testing. Some will refer to this as confirmation testing.
o In this technique, a selected test-case suit will execute rather than an entire test-case
suit.
o The selected test case suits divided in two cases
Prioritize the test case depending on business impact, critical and frequently functionality used. Selection
of test cases will reduce the regression test suite