0% found this document useful (0 votes)
7 views

Software Engineering Unit 4

The document provides comprehensive notes on software engineering, specifically focusing on software testing, its processes, objectives, and strategies. It outlines the importance of testing in identifying defects, ensuring product quality, and meeting user expectations, while distinguishing between verification and validation. Additionally, it emphasizes the necessity of early testing, the principles of effective testing, and the need for a structured testing approach to deliver reliable software products.

Uploaded by

business.karsiya
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Software Engineering Unit 4

The document provides comprehensive notes on software engineering, specifically focusing on software testing, its processes, objectives, and strategies. It outlines the importance of testing in identifying defects, ensuring product quality, and meeting user expectations, while distinguishing between verification and validation. Additionally, it emphasizes the necessity of early testing, the principles of effective testing, and the need for a structured testing approach to deliver reliable software products.

Uploaded by

business.karsiya
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 35

Software Engineering Notes 2023

SOFTWARE ENGINEERING

DR. TEJASHREE TEJPAL MOHAREKAR


MCA, NET, Ph. D
Assistant Professor
Shivaji University, Kolhapur

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 1


Software Engineering Notes 2023

UNIT 4

Introduction to Testing: A Strategic Approach to Software Testing, Strategic Issues, Unit


testing, Integration testing, Validation Testing, System Testing, Black box testing and white box
testing, The Art of Debugging. Testing web applications- testing strategy, testing process,
content testing, user interface testing, navigation testing, configuration testing, security testing,
performance testing. Study of software testing tool.

WHAT IS TESTING

Testing is a group of techniques to determine the correctness of the application under the
predefined script but, testing cannot find all the defect of application. The main intent of testing
is to detect failures of the application so that failures can be discovered and corrected. It does not
demonstrate that a product functions properly under all conditions but only that it is not working
in some specific conditions.

Testing furnishes comparison that compares the behavior and state of software against
mechanisms because the problem can be recognized by the mechanism. The mechanism may
include past versions of the same specified product, comparable products, and interfaces of
expected purpose, relevant standards, or other criteria but not limited up to these.

Testing includes an examination of code and also the execution of code in various environments,
conditions as well as all the examining aspects of the code. In the current scenario of software
development, a testing team may be separate from the development team so that Information
derived from testing can be used to correct the process of software development.

The success of software depends upon acceptance of its targeted audience, easy graphical user
interface, strong functionality load test, etc. For example, the audience of banking is totally
different from the audience of a video game. Therefore, when an organization develops a
software product, it can assess whether the software product will be beneficial to its purchasers
and other audience.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 2


Software Engineering Notes 2023

SOFTWARE TESTING

Software testing tutorial provides basic and advanced concepts of software testing. Our software
testing tutorial is designed for beginners and professionals.

Software testing is widely used technology because it is compulsory to test each and every
software before deployment.

Software Testing is the process of identifying the accuracy and quality of the software product
and service under test. Apparently, it was born to validate whether the product fulfills the
particular prerequisites, needs, and desires of the client. At the end of the day, testing executes a
framework or application with a specific end goal to point out bugs, errors or defects. The
responsibility of testing is to point out the issues of bugs and give Dev (Developers) a clue to
help them fix it right following the requirements.

Software Testing Objectives

 Uncover as many as errors (or bugs) as possible in a given product.

 Demonstrate a given software product matching its requirement specifications.

 Validate the quality of a software using the minimum cost and efforts.

 Generate high-quality test cases, perform effective tests, and issue correct and helpful
problem reports.

Software testing is often divided into 2 main processes: Verification and Validation.

 Verification in software testing is the process when your team just need to check whether the
software, system or framework consistent, aligned with the requirements of a documentation.

 Validation is the process that your team needs to verify the accuracy of the system. In this
process, you will look back to the product, system and think about what users actually want
and what has been done.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 3


Software Engineering Notes 2023

Verification testing

Verification testing includes different activities such as business requirements, system


requirements, design review, and code walkthrough while developing a product.

It is also known as static testing, where we are ensuring that "we are developing the right
product or not". And it also checks that the developed application fulfilling all the requirements
given by the client.

Validation testing

Validation testing is testing where tester performed functional and non-functional testing.
Here functional testing includes Unit Testing (UT), Integration Testing (IT) and System Testing
(ST), and non-functional testing includes User acceptance testing (UAT).

Validation testing is also known as dynamic testing, where we are ensuring that "we have
developed the product right." And it also checks that the software meets the business needs of
the client.

DIFFERENCE BETWEEN VERIFICATION AND VALIDATION

Verification Validation

Verification is the process to find whether the The validation process is checked whether the
software meets the specified requirements for software meets requirements and expectation
particular phase. of the customer.

It estimates an intermediate product. It estimates the final product.

The objectives of verification is to check The objectives of the validation is to check


whether software is constructed according to whether the specifications are correct and
requirement and design specification. satisfy the business need.

It describes whether the outputs are as per the It explains whether they are accepted by the
inputs or not. user or not.

Verification is done before the validation. It is done after the verification.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 4


Software Engineering Notes 2023

Plans, requirement, specification, code are Actual product or software is tested under
evaluated during the verifications. validation.

It manually checks the files and document. It is a computer software or developed program
based checking of files and document.

In Software Testing, there is the difference between Errors, Defects, and Bugs that we should
distinguish clearly to avoid misunderstanding problem.

Error is a deviation from the actual and the expected result. It represents the mistakes made by
people.

Bug is an error found BEFORE the application goes into production. A programming error that
causes a program to work poorly, produce incorrect results, or crash. An error in software or
hardware that causes a program to malfunction.

Defect happens once the error is identified during testing, it is logged as a ‘Defect’ in the
tracking system.

Failure is the incapacity of a system to conduct its required functions within clarified
performance requirements, literally a disappointment or a letdown. And no one wants to do
business with a failure.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 5


Software Engineering Notes 2023

In short, “A mistake in coding is called Error, Error found by the tester is called Defect, Defect
accepted by development team then it is called Bug, build does not meet the requirements then it
is a Failure.”

PROCESS OF TESTING

1 Planning and control

2. Analysis and design

3. Implementation and execution

4. Evaluating exit criteria and reporting

5. Test closure activities

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 6


Software Engineering Notes 2023

1. Planning and Control

In test planning, it is necessary to understand the goals and objectives of the customer,
stakeholders, project and risks.

Following are the major tasks for test planning:

 To determine the scope and risk, recognize the objectives of testing.

 Determine the test approach i.e techniques, test items, coverage, recognizing and
interfacing with the teams involved in testing.

 Implement the test policy or test strategy.

 Determine the essential test resources i.e people, test environment, PC's.

 Schedule test analysis and design tasks, test implementation, execution and evaluation. It
is necessary to schedule all the tasks and activities in such a way that the tester can
complete the testing on time.

 Determine the exit criteria. It is necessary to set the coverage criteria. This criteria is
executed during the testing.

Following are the major tasks for test control:

 The results of reviews and testing are measured and analyzed.

 It is important to inform project team how much testing has been completed, what are the
results, conclusions and the outcome of risk assessment.

 Provide information on testing. It is necessary to provide regular reports to project


manager, customer and other stakeholders to help them and informed about the project
status.

 In test control, begin the corrective actions and make decisions.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 7


Software Engineering Notes 2023

2. Analysis and design

Test analysis and design has the following major tasks:

 Review the test basis i.e risk analysis, requirement architecture, design specifications and
interfaces. Test basis is the information which is necessary to start the test analysis and
create own test cases.

 Recognize the test conditions on the basis of test items, their specifications, behavior and
structure.

 Design the tests and evaluate the testability of requirements and system.

 Design the test environment set-up and recognize any needed infrastructure and tools.

3. Implementation and execution

Test implementation has the following major tasks to be performed:

 In implementation, test cases are developed using decided techniques and test data for
those test cases is generated.

 For the efficient test execution generate test suites from the test cases.

 It is necessary to implement and check the test environment.

Following are the major tasks for test execution:

 To execute the test suites and individual test cases, use the text execution tools as stated
by planned sequence or perform manual testing.

 In execution, compare the actual results with the expected result.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 8


Software Engineering Notes 2023

4. Evaluating exit criteria and reporting

On the basis of risk evaluation of the project, set the criteria for each test level and measure
“enough testing” against this criteria. This criteria varies from project to project and is called
as exit criteria

Following are the major tasks for evaluating exit criteria:

 The exit criteria is defined in test planning. Here, test records are checked across the exit
criteria.

 Evaluate more test if designed tests do not run.

 Write a test summary report to all the customers and stakeholders.

5. Test closure activities

 In test closure activity, collect data from completed test activities.

 Test closure activities are completed at the time of delivery of software.

 Finalize testware i.e scripts, test environment for the future use.

THE NECESSITY OF TESTING

Following are the important reasons to perform testing:

 Software testing is required to identify the defects and errors during the development
phases.

 It is necessary for customer reliability and their satisfaction.

 It is necessary to verify the quality of the product.

 It is necessary to give the facilities to the customers i.e the delivery of the quality product
or software application that requires lower maintenance cost as results are accurate,
consistent and reliable.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 9


Software Engineering Notes 2023

 Testing is needed for an effective performance of the software product.

Basic testing Principles

THE BASIC PRINCIPLES OF TESTING ARE:

i) Testing shows presence of defects: Testing shows the defects that are present, but it cannot
prove there is no defect.

ii) Exhaustive testing is impossible: Testing everything is not possible. Instated of testing
exhaustive testing use risks and priorities to focus testing efforts.

iii) Early testing: Testing activities are necessary to start as early as possible in the software
development life cycle.

iv) Defect clustering: In testing, most of the defects are related to small number of modules in a
system.

v) Pesticide paradox

 If the same tests are running again and again then the same set of test cases no longer find
the new defects.

 To overcome this 'pesticide paradox' test cases need to be regularly reviewed and revised.

vi) Testing is context dependent: Testing is context dependent. Various kinds of sites are tested
differently.

vii) Absence-of-errors fallacy: If the system built is unusable and does not meet the user
expectation, then finding and fixing defect does not help.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 10


Software Engineering Notes 2023

5 REASONS FOR TESTING

To ensure there is no difference between the actual and the expectation

Software testing is created to detect any problems occurred during coding and developing a new
function or feature of a software product before it is delivered to the end users. These upcoming
features should be correctly matched with what it is supposed to be. Also, Testing tool will be a
gadget checking whether your team decently refers to the requirement. Hence, it basically is a
device helping to close the gap between actual and expectation in making a software product.

To make sure your product is powerful enough no matter how many people are using.

There is a big distinction when there is a person using your product referring to hundreds of
people trying to do the same thing at the same time. Your software needs to be strong enough to
guarantee that there will be no crashing down or loading annoying happened when a number of
people are trying to run your products. Therefore, it should be smoothly and perfectly working
with everyone.

To figure out as many as possible the chance of bugs generating.

It can’t be denied to say that nothing is perfect. There is always some unseen problems which
may generate during using your application. The responsibility of testing tool is to avoid bugs
found by users. We, who develop this application/software product should take the duty of
falling down as many as possible the number of bugs which may interrupt users in future, so
deliver the best experience for our users whilst using our apps.

To offer a product that can perfectly work on different browsers and tech devices

At the booming moment of this technology era, we, fortunately, welcome the existence of
a number of technology devices, browsers, and operating systems, giving us the chance to
choose different technology instruments to greater our tech experience. Therefore, the stress of
creating an application or product which could perfectly work on most of the technology
instruments has never been so great before.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 11


Software Engineering Notes 2023

To deliver the best product that we can.

Again, testing tool is created to provide the most excellent software product and service to the
end users. Of course, we couldn’t bring the best (since there is nothing perfect, we all know) but
we could minimize the chance of bugs occurred within our capability. Before releasing, we could
be proud and confident enough on the product we bring to market. In any case, unseen bugs may
have a real impact on a real person. Therefore, if we could have a chance to encounter the bug
before the users find it out, nothing could be greater than this.

SOFTWARE TESTING STRATEGIES

Before testing starts, it’s necessary to identify and specify the requirements of the product
in a quantifiable manner.

Different characteristics quality of the software is there such as maintainability that means the
ability to update and modify, the probability that means to find and estimate any risk, and
usability that means how it can easily be used by the customers or end-users. All these

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 12


Software Engineering Notes 2023

characteristic qualities should be specified in a particular order to obtain clear test results without
any error.

Specifying the objectives of testing in a clear and detailed manner.

Several objectives of testing are there such as effectiveness that means how effectively the
software can achieve the target, any failure that means inability to fulfill the requirements and
perform functions, and the cost of defects or errors that mean the cost required to fix the error.
All these objectives should be clearly mentioned in the test plan.

For the software, identifying the user’s category and developing a profile for each user.

Use cases describe the interactions and communication among different classes of users and the
system to achieve the target. So as to identify the actual requirement of the users and then testing
the actual use of the product.

Developing a test plan to give value and focus on rapid-cycle testing.

Rapid Cycle Testing is a type of test that improves quality by identifying and measuring the any
changes that need to be required for improving the process of software. Therefore, a test plan is
an important and effective document that helps the tester to perform rapid cycle testing.

Robust software is developed that is designed to test itself.

The software should be capable of detecting or identifying different classes of errors. Moreover,
software design should allow automated and regression testing which tests the software to find
out if there is any adverse or side effect on the features of software due to any change in code or
program.

Before testing, using effective formal reviews as a filter

Formal technical reviews is technique to identify the errors that are not discovered yet. The
effective technical reviews conducted before testing reduces a significant amount of testing
efforts and time duration required for testing software so that the overall development time of
software is reduced.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 13


Software Engineering Notes 2023

Conduct formal technical reviews to evaluate the nature, quality or ability of the test
strategy and test cases.

The formal technical review helps in detecting any unfilled gap in the testing approach. Hence, it
is necessary to evaluate the ability and quality of the test strategy and test cases by technical
reviewers to improve the quality of software.

For the testing process, developing a approach for the continuous development

As a part of a statistical process control approach, a test strategy that is already measured should
be used for software testing to measure and control the quality during the development of
software.

Advantages of software testing:

1. Improves software quality and reliability – Testing helps to identify and fix defects early
in the development process, reducing the risk of failure or unexpected behavior in the final
product.

2. Enhances user experience – Testing helps to identify usability issues and improve the
overall user experience.

3. Increases confidence – By testing the software, developers and stakeholders can have
confidence that the software meets the requirements and works as intended.

4. Facilitates maintenance – By identifying and fixing defects early, testing makes it easier to
maintain and update the software.

5. Reduces costs – Finding and fixing defects early in the development process is less
expensive than fixing them later in the life cycle.

Disadvantages of software testing:

1. Time-consuming – Testing can take a significant amount of time, particularly if thorough


testing is performed.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 14


Software Engineering Notes 2023

2. Resource-intensive – Testing requires specialized skills and resources, which can be


expensive.

3. Limited coverage – Testing can only reveal defects that are present in the test cases, and it is
possible for defects to be missed.

4. Unpredictable results – The outcome of testing is not always predictable, and defects can be
hard to replicate and fix.

5. Delays in delivery – Testing can delay the delivery of the software if testing takes longer
than expected or if significant defects are identified.

STRATEGIC ISSUES

Following are the issues considered to implement software testing strategies.

 Specify the requirement before testing starts in a quantifiable manner.

 According to the categories of the user generate profiles for each category of user.

 Produce a robust software and it's designed to test itself.

 Should use the Formal Technical Reviews (FTR) for the effective testing.

 To access the test strategy and test cases FTR should be conducted.

 To improve the quality level of testing generate test plans from the users feedback.

TYPES OF SOFTWARE TESTING

The categorization of software testing is a part of diverse testing activities, such as test strategy,
test deliverables, a defined test objective, etc. And software testing is the execution of the
software to find defects.

The purpose of having a testing type is to confirm the AUT (Application Under Test).

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 15


Software Engineering Notes 2023

To start testing, we should have a requirement, application-ready, necessary resources available.


To maintain accountability, we should assign a respective module to different test engineers.

The software testing mainly divided into two parts, which are as follows:

o Manual Testing

o Automation Testing

What is Manual Testing?

Testing any software or an application according to the client's needs without using any
automation tool is known as manual testing.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 16


Software Engineering Notes 2023

In other words, we can say that it is a procedure of verification and validation. Manual testing
is used to verify the behavior of an application or software in contradiction of requirements
specification.

We do not require any precise knowledge of any testing tool to execute the manual test cases.
We can easily prepare the test document while performing manual testing on any application.

Classification of Manual Testing

In software testing, manual testing can be further classified into three different types of testing,
which are as follows:

o White Box Testing

o Black Box Testing

o Grey Box Testing

White Box Testing

In white-box testing, the developer will inspect every line of code before handing it over to the
testing team or the concerned test engineers. Subsequently, the code is noticeable for developers
throughout testing; that's why this process is known as WBT (White Box Testing).

In other words, we can say that the developer will execute the complete white-box testing for the
particular software and send the specific application to the testing team.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 17


Software Engineering Notes 2023

The purpose of implementing the white box testing is to emphasize the flow of inputs and
outputs over the software and enhance the security of an application.

White box testing is also known as open box testing, glass box testing, structural testing,
clear box testing, and transparent box testing.

Black Box Testing

Another type of manual testing is black-box testing. In this testing, the test engineer will
analyze the software against requirements, identify the defects or bug, and sends it back to the
development team.

Then, the developers will fix those defects, do one round of White box testing, and send it to the
testing team.

Here, fixing the bugs means the defect is resolved, and the particular feature is working
according to the given requirement.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 18


Software Engineering Notes 2023

The main objective of implementing the black box testing is to specify the business needs or the
customer's requirements.

In other words, we can say that black box testing 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.

Types of Black Box Testing

Black box testing further categorizes into two parts, which are as discussed below:

o Functional Testing

o Non-function Testing

Functional Testing

The test engineer will check all the components systematically against requirement specifications
is known as functional testing. Functional testing is also known as Component testing.

In functional testing, all the components are tested by giving the value, defining the output, and
validating the actual output with the expected value.

Functional testing is a part of black-box testing as its emphases on application requirement rather
than actual code. The test engineer has to test only the program instead of the system.

Types of Functional Testing

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 19


Software Engineering Notes 2023

Just like another type of testing is divided into several parts, functional testing is also classified
into various categories.

The diverse types of Functional Testing contain the following:

o Unit Testing

o Integration Testing

o System Testing

1. Unit Testing

Unit testing is the first level of functional testing in order to test any software. In this, the test
engineer will test the module of an application independently or test all the module functionality
is called unit testing.

The primary objective of executing the unit testing is to confirm the unit components with their
performance. Here, a unit is defined as a single testable function of a software or an application.
And it is verified throughout the specified application development phase.

2. Integration Testing

Once we are successfully implementing the unit testing, we will go integration testing. It is the
second level of functional testing, where we test the data flow between dependent modules or
interface between two features is called integration testing.

The purpose of executing the integration testing is to test the statement's accuracy between each
module.

Types of Integration Testing

Integration testing is also further divided into the following parts:

o Incremental Testing

o Non-Incremental Testing

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 20


Software Engineering Notes 2023

Incremental Integration Testing

Whenever there is a clear relationship between modules, we go for incremental integration


testing. Suppose, we take two modules and analysis the data flow between them if they are
working fine or not.

If these modules are working fine, then we can add one more module and test again. And we can
continue with the same process to get better results.

In other words, we can say that incrementally adding up the modules and test the data flow
between the modules is known as Incremental integration testing.

Types of Incremental Integration Testing

Incremental integration testing can further classify into two parts, which are as follows:

1. Top-down Incremental Integration Testing

2. Bottom-up Incremental Integration Testing

Let's see a brief introduction of these types of integration testing:

1. Top-down Incremental Integration Testing

In this approach, we will add the modules step by step or incrementally and test the data flow
between them. We have to ensure that the modules we are adding are the child of the earlier
ones.

2. Bottom-up Incremental Integration Testing

In the bottom-up approach, we will add the modules incrementally and check the data flow
between modules. And also, ensure that the module we are adding is the parent of the earlier
ones.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 21


Software Engineering Notes 2023

Non-Incremental Integration Testing/ Big Bang Method

Whenever the data flow is complex and very difficult to classify a parent and a child, we will go
for the non-incremental integration approach. The non-incremental method is also known as the
Big Bang method..

3. System Testing

Whenever we are done with the unit and integration testing, we can proceed with the system
testing. In system testing, the test environment is parallel to the production environment. It is
also known as end-to-end testing.

In this type of testing, we will undergo each attribute of the software and test if the end feature
works according to the business requirement. And analysis the software product as a complete
system.

Non-function Testing

The next part of black-box testing is non-functional testing. It provides detailed information on
software product performance and used technologies. Non-functional testing will help us
minimize the risk of production and related costs of the software. Non-functional testing is a
combination of performance, load, stress, usability and, compatibility testing.

Types of Non-functional Testing

Non-functional testing categorized into different parts of testing, which we are going to discuss
further:

o Performance Testing

o Usability Testing

o Compatibility Testing

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 22


Software Engineering Notes 2023

1. Performance Testing

In performance testing, the test engineer will test the working of an application by applying some
load.

In this type of non-functional testing, the test engineer will only focus on several aspects, such
as Response time, Load, scalability, and Stability of the software or an application.

Classification of Performance Testing

Performance testing includes the various types of testing, which are as follows:

o Load Testing

o Stress Testing

o Scalability Testing

o Stability Testing

Load Testing

While executing the performance testing, we will apply some load on the particular application
to check the application's performance, known as load testing. Here, the load could be less than
or equal to the desired load. It will help us to detect the highest operating volume of the software
and bottlenecks.

Stress Testing

It is used to analyze the user-friendliness and robustness of the software beyond the common
functional limits.

Primarily, stress testing is used for critical software, but it can also be used for all types of
software applications.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 23


Software Engineering Notes 2023

Scalability Testing

To analysis, the application's performance by enhancing or reducing the load in particular


balances is known as scalability testing.

In scalability testing, we can also check the system, processes, or database's ability to meet an
upward need. And in this, the Test Cases are designed and implemented efficiently.

Stability Testing

Stability testing is a procedure where we evaluate the application's performance by applying the
load for a precise time. It mainly checks the constancy problems of the application and the
efficiency of a developed product. In this type of testing, we can rapidly find the system's defect
even in a stressful situation.

2. Usability Testing

Another type of non-functional testing is usability testing. In usability testing, we will analyze
the user-friendliness of an application and detect the bugs in the software's end-user interface.

Here, the term user-friendliness defines the following aspects of an application:

o The application should be easy to understand, which means that all the features must be
visible to end-users.

o The application's look and feel should be good that means the application should be
pleasant looking and make a feel to the end-user to use it.

3. Compatibility Testing

In compatibility testing, we will check the functionality of an application in specific hardware


and software environments. Once the application is functionally stable then only, we go
for compatibility testing.

Here, software means we can test the application on the different operating systems and other
browsers, and hardware means we can test the application on different sizes.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 24


Software Engineering Notes 2023

Grey Box Testing

Another part of manual testing is Grey box testing. It is a collaboration of black box and
white box testing.

Since, the grey box testing includes access to internal coding for designing test cases. Grey box
testing is performed by a person who knows coding as well as testing.

In other words, we can say that if a single-person team done both white box and black-box
testing, it is considered grey box testing.

Automation Testing

The most significant part of Software testing is Automation testing. It uses specific tools to
automate manual design test cases without any human interference.

Automation testing is the best way to enhance the efficiency, productivity, and coverage of
Software testing.

It is used to re-run the test scenarios, which were executed manually, quickly, and repeatedly.

In other words, we can say that whenever we are testing an application by using some tools is
known as automation testing.

We will go for automation testing when various releases or several regression cycles goes on the
application or software. We cannot write the test script or perform the automation testing without
understanding the programming language

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 25


Software Engineering Notes 2023

THE ART OF DEBUGGING

Software testing is a process that can be systematically planned and specified. Test case design
can be conducted, a strategy can be defined, and results can be evaluated against prescribed
expectations.

Debugging occurs as a consequence of successful testing. That is, when a test case uncovers an
error, debugging is the process that results in the removal of the error. Although debugging can
and should be an orderly process, it is still very much an art. A software engineer, evaluating the
results of a test, is often confronted with a "symptomatic" indication of a software problem. That
is, the external manifestation of the error and the internal cause of the error may have no obvious
relationship to one another. The poorly understood mental process that connects a symptom to a
cause is debugging.

Debugging is the process of identifying and resolving errors, or bugs, in a software system. It is
an important aspect of software engineering because bugs can cause a software system to
malfunction, and can lead to poor performance or incorrect results. Debugging can be a time-
consuming and complex task, but it is essential for ensuring that a software system is functioning
correctly.

There are several common methods and techniques used in debugging, including:

1. Code Inspection: This involves manually reviewing the source code of a software system to
identify potential bugs or errors.

2. Debugging Tools: There are various tools available for debugging such as debuggers, trace
tools, and profilers that can be used to identify and resolve bugs.

3. Unit Testing: This involves testing individual units or components of a software system to
identify bugs or errors.

4. Integration Testing: This involves testing the interactions between different components of
a software system to identify bugs or errors.

5. System Testing: This involves testing the entire software system to identify bugs or errors.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 26


Software Engineering Notes 2023

6. Monitoring: This involves monitoring a software system for unusual behavior or


performance issues that can indicate the presence of bugs or errors.

7. Logging: This involves recording events and messages related to the software system, which
can be used to identify bugs or errors.

It is important to note that debugging is an iterative process, and it may take multiple attempts to
identify and resolve all bugs in a software system. Additionally, it is important to have a well-
defined process in place for reporting and tracking bugs, so that they can be effectively managed
and resolved.

In summary, debugging is an important aspect of software engineering, it’s the process of


identifying and resolving errors, or bugs, in a software system. There are several common
methods and techniques used in debugging, including code inspection, debugging tools, unit
testing, integration testing, system testing, monitoring, and logging. It is an iterative process that
may take multiple attempts to identify and resolve all bugs in a software system.

THE DEBUGGING PROCESS

Debugging is not testing but always occurs as a consequence of testing.4 Referring to figure, the
debugging process begins with the execution of a test case. Results are assessed and a lack of
correspondence between expected and actual performance is encountered. In many cases, the non
corresponding data are a symptom of an underlying cause as yet hidden. The debugging process
attempts to match symptom with cause, thereby leading to error correction.

Debugging Process: Steps involved in debugging are:

 Problem identification and report preparation.

 Assigning the report to the software engineer defect to verify that it is genuine.

 Defect Analysis using modeling, documentation, finding and testing candidate flaws, etc.

 Defect Resolution by making required changes to the system.

 Validation of corrections.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 27


Software Engineering Notes 2023

The debugging process will always have one of two outcomes :

1. The cause will be found and corrected.

2. The cause will not be found.

Later, the person performing debugging may suspect a cause, design a test case to help validate
that suspicion and work toward error correction in an iterative fashion.

During debugging, we encounter errors that range from mildly annoying to catastrophic. As the
consequences of an error increase, the amount of pressure to find the cause also increases. Often,
pressure sometimes forces a software developer to fix one error and at the same time introduce
two more.

Debugging Approaches/Strategies:

1. Brute Force: Study the system for a larger duration in order to understand the system. It
helps the debugger to construct different representations of systems to be debugged
depending on the need. A study of the system is also done actively to find recent changes
made to the software.

2. Backtracking: Backward analysis of the problem which involves tracing the program
backward from the location of the failure message in order to identify the region of faulty
code. A detailed study of the region is conducted to find the cause of defects.

3. Forward analysis of the program involves tracing the program forwards using breakpoints
or print statements at different points in the program and studying the results. The region
where the wrong outputs are obtained is the region that needs to be focused on to find the
defect.

4. Using past experience with the software debug the software with similar problems in nature.
The success of this approach depends on the expertise of the debugger.

5. Cause elimination: it introduces the concept of binary partitioning. Data related to the error
occurrence are organized to isolate potential causes.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 28


Software Engineering Notes 2023

6. Static analysis: Analyzing the code without executing it to identify potential bugs or errors.
This approach involves analyzing code syntax, data flow, and control flow.

7. Dynamic analysis: Executing the code and analyzing its behavior at runtime to identify
errors or bugs. This approach involves techniques like runtime debugging and profiling.

8. Collaborative debugging: Involves multiple developers working together to debug a


system. This approach is helpful in situations where multiple modules or components are
involved, and the root cause of the error is not clear.

9. Logging and Tracing: Using logging and tracing tools to identify the sequence of events
leading up to the error. This approach involves collecting and analyzing logs and traces
generated by the system during its execution.

10. Automated Debugging: The use of automated tools and techniques to assist in the
debugging process. These tools can include static and dynamic analysis tools, as well as tools
that use machine learning and artificial intelligence to identify errors and suggest fixes.

WHAT IS WEB TESTING?

Web Testing, or website testing is checking your web application or website for potential bugs
before its made live and is accessible to general public. Web Testing checks for functionality,
usability, security, compatibility, performance of the web application or website.

During this stage issues such as that of web application security, the functioning of the site, its
access to handicapped as well as regular users and its ability to handle traffic is checked.

HOW TO TEST WEB APPLICATION OR WEBSITE

In Software Engineering, the following testing types/technique may be performed depending on


your web testing requirements.

1. Functionality Testing of a Website

Functionality Testing of a Website is a process that includes several testing parameters like
user interface, APIs, database testing, security testing, client and server testing and basic website

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 29


Software Engineering Notes 2023

functionalities. Functional testing is very convenient and it allows users to perform both manual
and automated testing. It is performed to test the functionalities of each feature on the website.

Web based Testing Activities includes:

Test all links in your webpages are working correctly and make sure there are no broken links.
Links to be checked will include –

 Outgoing links

 Internal links

 Anchor Links

 MailTo Links

Test Forms are working as expected. This will include-

 Scripting checks on the form are working as expected. For example- if a user does not fill
a mandatory field in a form an error message is shown.

 Check default values are being populated

 Once submitted, the data in the forms is submitted to a live database or is linked to a
working email address

 Forms are optimally formatted for better readability

Test Cookies are working as expected. Cookies are small files used by websites to primarily
remember active user sessions so you do not need to log in every time you visit a website.
Cookie Testing will include

 Testing cookies (sessions) are deleted either when cache is cleared or when they reach
their expiry.

 Delete cookies (sessions) and test that login credentials are asked for when you next visit
the site.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 30


Software Engineering Notes 2023

Test HTML and CSS to ensure that search engines can crawl your site easily. This will include

 Checking for Syntax Errors

 Readable Color Schemas

 Standard Compliance. Ensure standards such W3C, OASIS, IETF, ISO, ECMA, or WS-I
are followed.

Test business workflow– This will include

 Testing your end – to – end workflow/ business scenarios which takes the user through a
series of webpages to complete.

 Test negative scenarios as well, such that when a user executes an unexpected step,
appropriate error message or help is shown in your web application.

Tools that can be used: QTP , IBM Rational , Selenium

2. Usability testing:

Usability Testing has now become a vital part of any web based project. It can be carried out by
testers like you or a small focus group similar to the target audience of the web application.

Test the site Navigation:

 Menus, buttons or Links to different pages on your site should be easily visible and
consistent on all webpages

Test the Content:

 Content should be legible with no spelling or grammatical errors.

 Images if present should contain an “alt” text

Tools that can be used: Chalkmark, Contentsquare, and Clixpy

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 31


Software Engineering Notes 2023

3.Interface Testing:

Three areas to be tested here are – Application, Web and Database Server

 Application: Test requests are sent correctly to the Database and output at the client side
is displayed correctly. Errors if any must be caught by the application and must be only
shown to the administrator and not the end user.

 Web Server: Test Web server is handling all application requests without any service
denial.

 Database Server: Make sure queries sent to the database give expected results.

Test system response when connection between the three layers (Application, Web and
Database) cannot be established and appropriate message is shown to the end user.

Tools that can be used: Ranorex

4. Database Testing:

Database is one critical component of your web application and stress must be laid to test it
thoroughly. Testing activities will include-

 Test if any errors are shown while executing queries

 Data Integrity is maintained while creating, updating or deleting data in database.

 Check response time of queries and fine tune them if necessary.

 Test data retrieved from your database is shown accurately in your web application

Tools that can be used: QTP, Selenium

5. Compatibility testing.

Compatibility tests ensures that your web application displays correctly across different devices.
This would include-

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 32


Software Engineering Notes 2023

Browser Compatibility Test: Same website in different browsers will display differently. You
need to test if your web application is being displayed correctly across browsers, JavaScript,
AJAX and authentication is working fine. You may also check for Mobile Browser
Compatibility.

The rendering of web elements like buttons, text fields etc. changes with change in Operating
System. Make sure your website works fine for various combination of Operating systems such
as Windows, Linux, Mac and Browsers such as Firefox, Internet Explorer, Safari etc.

Tools that can be used: Dynatrace

6. Performance Testing:

This will ensure your site works under all loads. Software Testing activities will include but not
limited to –

 Website application response times at different connection speeds

 Load test your web application to determine its behavior under normal and peak loads

 Stress test your web site to determine its break point when pushed to beyond normal
loads at peak time.

 Test if a crash occurs due to peak load, how does the site recover from such an event

 Make sure optimization techniques like gzip compression, browser and server side cache
enabled to reduce load times

Tools that can be used: Loadrunner, JMeter

7. Security testing:

Security Testing is vital for e-commerce website that store sensitive customer information like
credit cards. Testing Activities will include-

 Test unauthorized access to secure pages should not be permitted

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 33


Software Engineering Notes 2023

 Restricted files should not be downloadable without appropriate access

 Check sessions are automatically killed after prolonged user inactivity

 On use of SSL certificates, website should re-direct to encrypted SSL pages.

INTRUDER

Intruder is a powerful vulnerability scanner that will help you uncover the many weaknesses
lurking in your web applications and underlying infrastructure. Offering industry-leading
security checks, continuous monitoring and an easy-to-use platform, Intruder keeps businesses of
all sizes safe from hackers.

Features

 Best-in-class threat coverage with over 10,000 security checks

 Checks for configuration weaknesses, missing patches, application weaknesses (such as


SQL injection & cross-site scripting) and more

 Automatic analysis and prioritisation of scan results

 Intuitive interface, quick to set-up and run your first scans

 Proactive security monitoring for the latest vulnerabilities

 AWS, Azure, and Google Cloud connectors

 API integration with your CI/CD pipeline

8. Crowd Testing:

You will select a large number of people (crowd) to execute tests which otherwise would have
been executed a select group of people in the company. Crowdsourced testing is an interesting
and upcoming concept and helps unravel many a unnoticed defects.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 34


Software Engineering Notes 2023

Tools that can be used:

This concludes the tutorial. It includes almost all testing types applicable to your web
application.

As a Web-tester its important to note that web testing is quite an arduous process and you are
bound to come across many obstacles. One of the major problems you will face is of
course deadline pressure. Everything is always needed yesterday! The number of times
the code will need changing is also taxing. Make sure you plan your work and know clearly
what is expected of you. Its best define all the tasks involved in your web testing and
then create a work chart for accurate estimates and planning.

Dr. Tejashree Tejpal Moharekar ( MCA, NET, Ph. D ) Page 35

You might also like