0% found this document useful (0 votes)
3 views29 pages

STQA Chapter 2

The document outlines the fundamentals of software testing, including its definition, objectives, roles, and the importance of early defect detection to improve software quality and customer satisfaction. It describes the software testing life cycle (STLC), the principles of software testing, and the concepts of verification and validation, emphasizing the need for systematic testing procedures. Additionally, it discusses the causes of software failures and the economic implications of effective testing practices.

Uploaded by

sudeshmal2004
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views29 pages

STQA Chapter 2

The document outlines the fundamentals of software testing, including its definition, objectives, roles, and the importance of early defect detection to improve software quality and customer satisfaction. It describes the software testing life cycle (STLC), the principles of software testing, and the concepts of verification and validation, emphasizing the need for systematic testing procedures. Additionally, it discusses the causes of software failures and the economic implications of effective testing practices.

Uploaded by

sudeshmal2004
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

2 Software Testing Fundamentals

2.1. Definition & Objectives of Testing


Testing: Testing is the process of evaluating something to ensure it works correctly and meets its
intended purpose. The objectives of testing are to identify and fix problems, and to ensure the
quality and reliability of the product.

Objectives of testing
The objective of testing is to ensure that the software is reliable, efficient, and meets the user's
requirements. Preventing defects is an essential part of the testing process. If defects are not
prevented, they can become errors or bugs in the final product, which can lead to significant
problems.
 Find defects: Identify bugs and errors in the product
 Prevent defects: Find and fix problems early in the development process
 Ensure quality: Ensure the product is reliable, efficient, and meets user needs
 Mitigate risk: Identify and manage risks associated with product failure
 Ensure customer satisfaction: Verify that the product meets customer expectations
Software testing
 Software testing is a critical phase in software development
 Testing phases include unit, integration, system, and acceptance testing
 Testing helps ensure the quality of the software before it's released to end users

2.2. Role of testing and its effect on quality

Testing
1. Software Testing is a method to assess the functionality of the software program. The
process checks whether the actual software matches the expected requirements and ensures
the software is bug-free. The purpose of software testing is to identify the errors, faults, or
missing requirements in contrast to actual requirements. It mainly aims at measuring the
specification, functionality, and performance of a software program or application.
2. Perform end-to-end test automation, including AI-powered codeless testing, mobile app,
cross-browser, visual UI testing, and more with TestGrid . It is a highly secure and scalable
software testing tool that offers extensive integration with CI/CD pipelines for continuous
testing.

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 1


Software testing can be divided into two steps
3. Verification: It refers to the set of tasks that ensure that the software correctly
implements a specific function. It means “Are we building the product right?”.
2. Validation: It refers to a different set of tasks that ensure that the software that has been
built is traceable to customer requirements. It means “Are we building the right product?”.

Role of Software Testing


 Defects can be identified early: Software testing is important because if there are any
bugs they can be identified early and can be fixed before the delivery of the software.
 Improves quality of software: Software Testing uncovers the defects in the software,
and fixing them improves the quality of the software.
 Increased customer satisfaction: Software testing ensures reliability, security, and high
performance which results in saving time, costs, and customer satisfaction.
 Helps with scalability: Software testing type non-functional testing helps to identify the
scalability issues and the point where an application might stop working.
 Saves time and money: After the application is launched it will be very difficult to trace
and resolve the issues, as performing this activity will incur more costs and time. Thus, it
is better to conduct software testing at regular intervals during software development.

Testing Effect on Quality:


Testing can improve the quality of learning and software products.
Learning
The testing effect is the phenomenon where learning is improved when material is tested,
rather than just studied. Testing helps strengthen memory and recall.
Software quality
Testing can help ensure that software is functional, usable, and compatible. It can also help
identify bugs and errors, and improve user satisfaction.
Testing in learning
Active retrieval: Testing encourages active retrieval of information, which strengthens
memory.
Feedback: Tests can provide feedback on how well material is understood.
Forward testing effect: Retrieval practice of previously studied information can help learn and
remember new information.
Testing in software development
Acceptance testing: Ensures that software meets stakeholders' acceptance criteria.
Regression testing: Helps identify bugs and errors in software.
Completeness testing: Ensures that all data fields are loaded into the target database.
Automated testing: Increases test coverage and reduces human error.

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 2


Continuous integration: Integrates code changes into a product multiple times a day, and runs
tests on each code change.

2.3. Causes of software failure: Definition of -Error, Bug, Fault,


Defect and Failure,

Cause of Software Failure:


Software failures can be caused by a number of factors, including bugs, poor testing, and unclear
requirements.

Bugs
 Coding errors: Careless or incompetent coding can lead to bugs
 Ambiguities: Ambiguities in the software's specifications can lead to errors
 Misinterpretation: Misinterpreting the software's specifications can lead to errors
Testing
 Inadequate testing: Not testing enough can lead to bugs
 Poor test coverage: Not having enough test coverage can lead to bugs
 Wrong testing framework: Choosing the wrong testing framework can lead to bugs
 No test reporting system: Not having a test reporting system can lead to bugs
Requirements
 Unclear requirements
Unclear requirements can lead to scope creep, missed deadlines, and a product that doesn't
meet user expectations
 Changing requirements
Changing requirements can lead to scope creep, missed deadlines, and a product that doesn't
meet user expectations
Other causes Lack of collaboration, Lack of planning, Management inefficiencies, and
Insufficient resources.

Effects
Software failures can cause system downtime, which can lead to lost productivity, missed
deadlines, and financial losses.

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 3


Definition of -Error, Bug, Fault, Defect and Failure,
Error, bug, fault, defect, and failure are all terms used in software development to describe issues
with a program.

Error
 A mistake made by a programmer while coding
 Can be caused by negligence, miscommunication, or inexperience

Bug
 An error that is detected during the development phase of testing
 A coding error that causes the program to behave in an unexpected way

Defect
 A problem with the software's functionality or design that is detected during testing
 A difference between the expected and actual result of the software

Fault
 An incorrect step, process, or data definition in the software
 A state that prevents the software from performing its intended function

Failure
 When the software is unable to perform its operations as expected
 Can be caused by undetected defects

2.4. Economics of Testing


The economics of testing is the study of how to optimize testing procedures within a budget to
minimize the cost of defects. It involves analyzing the potential impact of defects and taking
action to prevent them.

Why is testing important?


 Cost: The longer a defect goes undetected, the more expensive it is to fix.
 Impact: Defects can lead to lost revenue, bad public relations, and litigation.
 Trust: Thorough testing helps build user trust and reuse, which can reduce the cost of redesigns.
How can testing be more economical?
 Test early: Test as early as possible in the project lifecycle to identify and fix defects before they
become more expensive to fix.

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 4


 Analyze specifications: Analyze specifications during test preparation to identify faults early
and prevent them from spreading.
 Prevent defects: Identify the causes of defects and take action to prevent them.

2.5 Seven Principles of software testing – Software Testing


Software testing is an important aspect of software development, ensuring that applications
function correctly and meet user expectations.
In this article, we will go into the principles of software testing, exploring key concepts and
methodologies to enhance product quality. From test planning to execution and analysis,
understanding these principles is vital for delivering robust and reliable software solutions.

Principles of Software Testing


Below-mentioned are the principles of software testing:
1. Testing shows the presence of defects
2. Exhaustive testing is not possible
3. Early testing
4. Defect clustering
5. Pesticide paradox
6. Testing is Context-Dependent
7. Absence of Errors fallacy
1. Testing shows the Presence of Defects
The goal of software testing is to make the software fail. Software testing reduces the presence of
defects. Software testing talks about the presence of defects and doesn’t talk about the absence of
defects. Software testing can ensure that defects are present but it can not prove that software is

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 5


defect-free. Even multiple tests can never ensure that software is 100% bug-free. Testing can
reduce the number of defects but not remove all defects.
2. Exhaustive Testing is not Possible
It is the process of testing the functionality of the software in all possible inputs (valid or invalid)
and pre-conditions is known as exhaustive testing. Exhaustive testing is impossible means the
software can never test at every test case. It can test only some test cases and assume that the
software is correct and it will produce the correct output in every test case. If the software will
test every test case then it will take more cost, effort, etc., which is impractical.
3. Early Testing
To find the defect in the software, early test activity shall be started. The defect detected in the
early phases of SDLC will be very less expensive. For better performance of software, software
testing will start at the initial phase i.e. testing will perform at the requirement analysis phase.
4. Defect Clustering
In a project, a small number of modules can contain most of the defects. The Pareto Principle for
software testing states that 80% of software defects come from 20% of modules.
5. Pesticide Paradox
Repeating the same test cases, again and again, will not find new bugs. So it is necessary to
review the test cases and add or update test cases to find new bugs.
6. Testing is Context-Dependent
The testing approach depends on the context of the software developed. Different types of
software need to perform different types of testing. For example, The testing of the e-commerce
site is different from the testing of the Android application.
7. Absence of Errors Fallacy
If a built software is 99% bug-free but does not follow the user requirement then it is unusable. It
is not only necessary that software is 99% bug-free but it is also mandatory to fulfill all the
customer requirements.

2.6. Software Testing Life cycle (STLC)


The procedure of software testing is also known as STLC (Software Testing Life Cycle)
which includes phases of the testing [Link] testing process is executed in a well-
planned and systematic manner. All activities are done to improve the quality of the
software product.

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 6


Software testing life cycle contains the following steps:

1. Requirement Analysis
2. Test Plan Creation
3. Environment setup
4. Test case Execution
5. Defect Logging
6. Test Cycle Closure

Requirement Analysis:

The first step of the manual testing procedure is requirement analysis. In this phase, tester
analyses requirement document of SDLC (Software Development Life Cycle) to examine
requirements stated by the client. After examining the requirements, the tester makes a test plan
to check whether the software is meeting the requirements or not

Test Plan Creation:

Test plan creation is the crucial phase of STLC where all the testing strategies are defined. Tester
determines the estimated effort and cost of the entire project. This phase takes place after the
successful completion of the Requirement Analysis Phase. Testing strategy and effort
estimation documents provided by this phase. Test case execution can be started after the
successful completion of Test Plan Creation.

Environment setup:

Setup of the test environment is an independent activity and can be started along with Test Case
Development. This is an essential part of the manual testing procedure as without environment
testing is not possible. Environment setup requires a group of essential software and hardware to

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 7


create a test environment. The testing team is not involved in setting up the testing environment,
its senior developers who create it.

Test case Execution:

Test case Execution takes place after the successful completion of test planning. In this phase,
the testing team starts case development and execution activity. The testing team writes down the
detailed test cases, also prepares the test data if required. The prepared test cases are reviewed by
peer members of the team or Quality Assurance leader.

RTM (Requirement Traceability Matrix) is also prepared in this phase. Requirement Traceability
Matrix is industry level format, used for tracking requirements. Each test case is mapped with the
requirement specification. Backward & forward traceability can be done via RTM.

Defect Logging:

Testers and developers evaluate the completion criteria of the software based on test coverage,
quality, time consumption, cost, and critical business objectives. This phase determines the
characteristics and drawbacks of the software. Test cases and bug reports are analyzed in depth
to detect the type of defect and its severity.

Defect logging analysis mainly works to find out defect distribution depending upon severity and
[Link] any defect is detected, then the software is returned to the development team to fix the
defect, then the software is re-tested on all aspects of the testing

Once the test cycle is fully completed then test closure report, and test metrics are prepared.

Test Cycle Closure:

The test cycle closure report includes all the documentation related to software design,
development, testing results, and defect reports.

This phase evaluates the strategy of development, testing procedure, possible defects in order to
use these practices in the future if there is a software with the same specification.

2.7. Validation & Verification Concepts - V Model and W Model

Verification and Validation is the process of investigating whether a software system


satisfies specifications and standards and fulfills the required purpose. Barry
Boehm described verification and validation as the following:
Verification: Are we building the product right?
Validation: Are we building the right product?
Verification

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 8


Verification is the process of checking that software achieves its goal without any bugs. It is
the process to ensure whether the product that is developed is right or not. It verifies whether
the developed product fulfills the requirements that we have. Verification is simply known
as Static Testing.
Static Testing
Verification Testing is known as Static Testing and it can be simply termed as checking
whether we are developing the right product or not and also whether our software is fulfilling
the customer’s requirement or not. Here are some of the activities that are involved in
verification.
 Inspections
 Reviews
 Walkthroughs
 Desk-checking

Validation
Validation is the process of checking whether the software product is up to the mark or in
other words product has high-level requirements. It is the process of checking the validation
of the product i.e. it checks what we are developing is the right product. it is a validation of
actual and expected products. Validation is simply known as Dynamic Testing.
Dynamic Testing
Validation Testing is known as Dynamic Testing in which we examine whether we have
developed the product right or not and also about the business needs of the client. Here are
some of the activities that are involved in Validation.
1. Black Box Testing
2. White Box Testing
3. Unit Testing
4. Integration Testing
IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 9
V-Model
V-Model also referred to as the Verification and Validation Model. In this, each phase of SDLC
must complete before the next phase starts. It follows a sequential design process same as the
waterfall model. Testing of the device is planned in parallel with a corresponding stage of
development.

Verification: It involves a static analysis method (review) done without executing code. It is the
process of evaluation of the product development process to find whether specified requirements
meet.

Validation: It involves dynamic analysis method (functional, non-functional), testing is done by


executing code. Validation is the process to classify the software after the completion of the
development process to determine whether the software meets the customer expectations and
requirements.

So V-Model contains Verification phases on one side of the Validation phases on the other side.
Verification and Validation process is joined by coding phase in V-shape. Thus it is known as V-
Model.

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 10


There are the various phases of Verification Phase of V-model:

1. Business requirement analysis: This is the first step where product requirements
understood from the customer's side. This phase contains detailed communication to
understand customer's expectations and exact requirements.
2. System Design: In this stage system engineers analyze and interpret the business of the
proposed system by studying the user requirements document.
3. Architecture Design: The baseline in selecting the architecture is that it should
understand all which typically consists of the list of modules, brief functionality of each
module, their interface relationships, dependencies, database tables, architecture
diagrams, technology detail, etc. The integration testing model is carried out in a
particular phase.
4. Module Design: In the module design phase, the system breaks down into small
modules. The detailed design of the modules is specified, which is known as Low-Level
Design
5. Coding Phase: After designing, the coding phase is started. Based on the requirements, a
suitable programming language is decided. There are some guidelines and standards for
coding. Before checking in the repository, the final build is optimized for better
performance, and the code goes through many code reviews to check the performance.

There are the various phases of Validation Phase of V-model:

1. Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed during the module
design phase. These UTPs are executed to eliminate errors at code level or unit level. A
unit is the smallest entity which can independently exist, e.g., a program module. Unit
testing verifies that the smallest entity can function correctly when isolated from the rest
of the codes/ units.
2. Integration Testing: Integration Test Plans are developed during the Architectural
Design Phase. These tests verify that groups created and tested independently can coexist
and communicate among themselves.
3. System Testing: System Tests Plans are developed during System Design Phase. Unlike
Unit and Integration Test Plans, System Tests Plans are composed by the client?s
business team. System Test ensures that expectations from an application developer are
met.
4. Acceptance Testing: Acceptance testing is related to the business requirement analysis
part. It includes testing the software product in user atmosphere. Acceptance tests reveal
the compatibility problems with the different systems, which is available within the user
atmosphere. It conjointly discovers the non-functional problems like load and
performance defects within the real user atmosphere.

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 11


W Model of verification and Validation:

With the same definition of each phase – Requirement Review, System Design, Architecture,
Low-level Design, using W model helps ensure that the testing of the product begins from
the very first day of the product’s development.
W-model

Advantages of the W model:

 Testing can run in parallel with the development process


 No division between constructive and destructive tasks
 Often Developer is responsible for removing defects

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 12


Disadvantages of the W model

 Complex to track the progress


 Testing has equal weight and workload as many activities in the development process

2.8. Agile Testing- Test Driven Software Development


Test Driven Development (TDD) is a software development methodology that emphasizes
writing tests before writing the actual code. It ensures that code is always tested and
functional, reducing bugs and improving code quality. In TDD, developers write small,
focused tests that define the desired functionality, then write the minimum code necessary to
pass these tests, and finally, refactor the code to improve structure and performance.
This cyclic process helps in creating reliable, maintainable, and efficient software. By
following TDD, teams can enhance code reliability, accelerate development cycles, and
maintain high standards of software quality

What is Test Driven Development (TDD)?


Test-driven development (TDD) is a method of coding in which you first write a test and it
fails, then write the code to pass the test of development, and clean up the code. This process
recycled for one new feature or change. In other methods in which you write either all the
code or all the tests first, TDD will combine and write tests and code together into one.
Test-Driven Development (TDD) is a method in software development where the focus is on
writing tests before writing the actual code for a feature. This approach uses short
development cycles that repeat to ensure quality and correctness.

Process of Test Driven Development (TDD)

It is the process in which test cases are written before the code that validates those cases. It
depends on the repetition of a concise development cycle. Test-driven Development is a
technique in which automated Unit tests are used to drive the design and free decoupling of
dependencies.
The following sequence of steps is generally followed:

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 13


Test Driven Development (TDD)

 Run all the test cases and make sure that the new test case fails.
 Red – Create a test case and make it fail, Run the test cases
 Green – Make the test case pass by any means.
 Refactor – Change the code to remove duplicate/[Link] code – This is done
to remove duplication of code.
 Repeat the above-mentioned steps again and again
Write a complete test case describing the function. To make the test cases the developer must
understand the features and requirements using user stories and use cases.

2.9 Level of Testing


In this section, we are going to understand the various levels of software testing.

As we learned in the earlier section of the software testing tutorial that testing any application or
software, the test engineer needs to follow multiple testing techniques.

In order to detect an error, we will implement software testing; therefore, all the errors can be
removed to find a product with more excellent quality.

What are the levels of Software Testing?

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 14


Testing levels are the procedure for finding the missing areas and avoiding overlapping and
repetition between the development life cycle stages. We have already seen the various phases
such as Requirement collection, designing, coding testing, deployment, and
maintenance of SDLC (Software Development Life Cycle).

In order to test any application, we need to go through all the above phases of SDLC. Like
SDLC, we have multiple levels of testing, which help us maintain the quality of the software.

Different Levels of Testing


The levels of software testing involve the different methodologies, which can be used while we
are performing the software testing.

In software testing, we have four different levels of testing, which are as discussed below:

1. Unit Testing
2. Integration Testing
3. System Testing
4. Acceptance Testing

As we can see in the above image that all of these testing levels have a specific objective which
specifies the value to the software development lifecycle.

For our better understanding, let's see them one by one:

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 15


2.9.1 Level1: Unit Testing
2.9.1 Unit testing is the first level of software testing, which is used to test if software modules
are satisfying the given requirement or not.

The first level of testing involves analyzing each unit or an individual component of the
software application.

Unit testing is also the first level of functional testing. The primary purpose of executing unit
testing is to validate unit components with their performance.

A unit component is an individual function or regulation of the application, or we can say that it
is the smallest testable part of the software. The reason of performing the unit testing is to test
the correctness of inaccessible code.

Unit testing will help the test engineer and developers in order to understand the base of code
that makes them able to change defect causing code quickly. The developers implement the unit.

2.9.2 Level2: Integration Testing


The second level of software testing is the integration testing. The integration testing process
comes after unit testing.

It is mainly used to test the data flow from one module or component to other modules.

In integration testing, the test engineer tests the units or separate components or modules of the
software in a group.

The primary purpose of executing the integration testing is to identify the defects at the
interaction between integrated components or units.

Advertisement

When each component or module works separately, we need to check the data flow between the
dependent modules, and this process is known as integration testing.

We only go for the integration testing when the functional testing has been completed
successfully on each application module.

In simple words, we can say that integration testing aims to evaluate the accuracy of
communication among all the modules.

For more information on integration testing, refers to the following link:

2.9.3 Level 3: System Testing


The third level of software testing is system testing, which is used to test the software's
functional and non-functional requirements.

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 16


It is end-to-end testing where the testing environment is parallel to the production environment.
In the third level of software testing, we will test the application as a whole system.

To check the end-to-end flow of an application or the software as a user is known as System
testing.

In system testing, we will go through all the necessary modules of an application and test if the
end features or the end business works fine, and test the product as a complete system.

In simple words, we can say that System testing is a sequence of different types of tests to
implement and examine the entire working of an integrated software computer system against
requirements.

For more information on System testing, refers to the following link:

2.9.4 Level4: Acceptance Testing


The last and fourth level of software testing is acceptance testing, which is used to evaluate
whether a specification or the requirements are met as per its delivery.

The software has passed through three testing levels (Unit Testing, Integration Testing,
System Testing). Some minor errors can still be identified when the end-user uses the system in
the actual scenario.

In simple words, we can say that Acceptance testing is the squeezing of all the testing
processes that are previously done.

The acceptance testing is also known as User acceptance testing (UAT) and is done by the
customer before accepting the final product.

Usually, UAT is done by the domain expert (customer) for their satisfaction and checks whether
the application is working according to given business scenarios and real-time scenarios.

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 17


2.10. Test Types [Link]
testing/

1. Manual Testing
Manual testing is a technique to test the software that is carried out using the
functions and features of an application. In manual software testing, a tester
carries out tests on the software by following a set of predefined test cases. In this
testing, testers make test cases for the codes, test the software, and give the final
report about that software. Manual testing is time-consuming because it is done
by humans, and there is a chance of human errors.
2. Automation Testing
Automated Testing is a technique where the Tester writes scripts on their own
and uses suitable Software or Automation Tool to test the software. It is an
Automation Process of a Manual Process. It allows for executing repetitive tasks
without the intervention of a Manual Tester.
Types of Manual Testing

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 18


1. White Box Testing
2. Black Box Testing
3. Gray Box Testing
1. White Box Testing
White box testing techniques analyze the internal structures the used data
structures, internal design, code structure, and the working of the software rather
than just the functionality as in black box testing. It is also called glass box
testing clear box testing or structural testing. White Box Testing is also known as
transparent testing or open box testing.
White box testing is a software testing technique that involves testing the internal
structure and workings of a software application. The tester has access to the
source code and uses this knowledge to design test cases that can verify the
correctness of the software at the code level.
2. Black Box Testing
Black-box testing is a type of software testing in which the tester is not concerned
with the internal knowledge or implementation details of the software but rather
focuses on validating the functionality based on the provided specifications or
requirements.
Advantages of Black Box Testing:
 The tester does not need to have more functional knowledge or programming
skills to implement the Black Box Testing.
 It is efficient for implementing the tests in the larger system.
 Tests are executed from the user’s or client’s point of view.
 Test cases are easily reproducible.
 It is used to find the ambiguity and contradictions in the functional
specifications.
3. Gray Box Testing
Gray Box Testing is a software testing technique that is a combination of
the Black Box Testing technique and the White Box Testing technique.
1. In the Black Box Testing technique, the tester is unaware of the internal
structure of the item being tested and in White Box Testing the internal
structure is known to the tester.
2. The internal structure is partially known in Gray Box Testing.
3. This includes access to internal data structures and algorithms to design the
test cases.
Advantages of Gray Box Testing:
1. Clarity of goals: Users and developers have clear goals while doing testing.
2. Done from a user perspective: Gray box testing is mostly done from the user
perspective.

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 19


3. High programming skills not required: Testers are not required to have
high programming skills for this testing.
4. Non-intrusive: Gray box testing is non-intrusive.
5. Improved product quality: Overall quality of the product is improved.
Types of Black Box Testing
1. Functional Testing
2. Non-Functional Testing
1. Functional Testing
Functional Testing is a type of Software Testing in which the system is tested
against the functional requirements and specifications. Functional testing ensures
that the requirements or specifications are properly satisfied by the application.
This type of testing is particularly concerned with the result of processing. It
focuses on the simulation of actual system usage but does not develop any system
structure assumptions. The article focuses on discussing function testing.
2. Non-Functional Testing
Non-functional Testing is a type of Software Testing that is performed to verify
the non-functional requirements of the application. It verifies whether the
behavior of the system is as per the requirement or not. It tests all the aspects that
are not tested in functional testing. Non-functional testing is a software testing
technique that checks the non-functional attributes of the system. Non-functional
testing is defined as a type of software testing to check non-functional aspects of
a software application. It is designed to test the readiness of a system as per
nonfunctional parameters which are never addressed by functional testing. Non-
functional testing is as important as functional testing.
Types of Functional Testing
1. Unit Testing
2. Integration Testing
3. System Testing
4. End-to-end Testing
5. Acceptance testing
1. Unit Testing
Unit testing is a method of testing individual units or components of a software
application. It is typically done by developers and is used to ensure that the
individual units of the software are working as intended. Unit tests are usually
automated and are designed to test specific parts of the code, such as a particular
function or method. Unit testing is done at the lowest level of the software
development process , where individual units of code are tested in isolation.

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 20


2. Integration Testing
Integration testing is a method of testing how different units or components of a
software application interact with each other. It is used to identify and resolve
any issues that may arise when different units of the software are combined.
Integration testing is typically done after unit testing and before functional testing
and is used to verify that the different units of the software work together as
intended.
Integration testing is of four types: (i) Top-down (ii) Bottom-up (iii)
Sandwich (iv) Big-Bang
Example:
1. Black Box testing: It is used for validation. In this, we ignore internal
working mechanisms and focus on “what is the output?”
2. White box testing: It is used for verification. In this, we focus on internal
mechanisms i.e. how the output is achieved.
3. System Testing
System testing is a type of software testing that evaluates the overall functionality
and performance of a complete and fully integrated software solution. It tests if
the system meets the specified requirements and if it is suitable for delivery to the
end-users. This type of testing is performed after the integration testing and
before the acceptance testing.
4. End-to-end Testing
End-to-end testing is the type of software testing used to test entire software from
starting to the end along with its integration with external interfaces. The main
purpose of end-to-end testing is to identify system dependencies and to make sure
that the data integrity and communication with other systems, interfaces and
databases to exercise complete production.
5. Acceptance Testing
It is formal testing according to user needs, requirements, and business processes
conducted to determine whether a system satisfies the acceptance criteria or not
and to enable the users, customers, or other authorized entities to determine
whether to accept the system or not.
Types of Integration Testing
1. Incremental Testing
2. Non-Incremental Testing
1. Incremental Testing
Like development, testing is also a phase of SDLC (Software Development Life
Cycle) . Different tests are performed at different stages of the development
cycle. Incremental testing is one of the testing approaches that is commonly used

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 21


in the software field during the testing phase of integration testing which is
performed after unit testing. Several stubs and drivers are used to test the modules
one after one which helps in discovering errors and defects in the specific
modules.
1. Top-down Integration Testing
Top-down testing is a type of incremental integration testing approach in which
testing is done by integrating or joining two or more modules by moving down
from top to bottom through the control flow of the architecture structure. In these,
high-level modules are tested first, and then low-level modules are tested. Then,
finally, integration is done to ensure that the system is working properly. Stubs
and drivers are used to carry out this project. This technique is used to increase or
stimulate the behavior of Modules that are not integrated into a lower level.
2. Bottom-up Integration Testing
Bottom-up Testing is a type of incremental integration testing approach in which
testing is done by integrating or joining two or more modules by moving upward
from bottom to top through the control flow of the architecture structure. In these,
low-level modules are tested first, and then high-level modules are tested. This
type of testing or approach is also known as inductive reasoning and is used as a
synthesis synonym in many cases. Bottom-up testing is user-friendly testing and
results in an increase in overall software development. This testing results in high
success rates with long-lasting results.
2.11 Types of Non-functional Testing
1. Performance Testing
2. Usability Testing
3. Compatibility Testing
2.11.1 Performance Testing
1. Performance Testing is a type of software testing that ensures software
applications perform properly under their expected workload. It is a testing
technique carried out to determine system performance in terms of sensitivity,
reactivity, and stability under a particular workload.
2. Usability Testing
You design a product (say a refrigerator) and when it becomes completely ready,
you need a potential customer to test it to check it working. To understand
whether the machine is ready to come on the market, potential customers test the
machines. Likewise, the best example of usability testing is when the software
also undergoes various testing processes which is performed by potential users
before launching into the market. It is a part of the software development
lifecycle (SDLC).

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 22


Advantages and Disadvantages of Usability Testing
Usability testing is preferred to evaluate a product or service by testing it with the
proper users. In Usability testing, the development and design teams will use to
identify issues before coding and the result will be earlier issues will be solved.
During a Usability test, you can,
 Learn if participants will be able to complete the specific task completely.
 identify how long it will take to complete the specific task.
 Gives excellent features and functionalities to the product
 Improves user satisfaction and fulfills requirements based on user feedback
 The product becomes more efficient and effective

3. Compatibility Testing
Compatibility testing is software testing that comes under the non functional
testing category, and it is performed on an application to check its compatibility
(running capability) on different platforms/environments. This testing is done
only when the application becomes stable. This means simply this compatibility
test aims to check the developed software application functionality on various
software, hardware platforms, networks browser etc. This compatibility testing is
very important in product production and implementation point of view as it is
performed to avoid future issues regarding compatibility.
There are 4 Types of Performance Testing
1. Load Testing
2. Stress Testing
3. Scalability Testing
4. Stability Testing

1. Load Testing
Load testing determines the behavior of the application when multiple users use it
at the same time. It is the response of the system measured under varying load
conditions.
1. The load testing is carried out for normal and extreme load conditions.
2. Load testing is a type of performance testing that simulates a real-world load
on a system or application to see how it performs under stress.
3. The goal of load testing is to identify bottlenecks and determine the maximum
number of users or transactions the system can handle.
4. It is an important aspect of software testing as it helps ensure that the system
can handle the expected usage levels and identify any potential issues before
the system is deployed to production.

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 23


Advantages of Load Testing:
Load testing has several advantages that make it an important aspect of software
testing:
1. Identifying bottlenecks: Load testing helps identify bottlenecks in the system
such as slow database queries, insufficient memory, or network congestion.
This helps developers optimize the system and ensure that it can handle the
expected number of users or transactions.
2. Improved scalability: By identifying the system’s maximum capacity, load
testing helps ensure that the system can handle an increasing number of users
or transactions over time. This is particularly important for web-based
systems and applications that are expected to handle a high volume of traffic.
3. Improved reliability: Load testing helps identify any potential issues that
may occur under heavy load conditions, such as increased error rates or slow
response times. This helps ensure that the system is reliable and stable when it
is deployed to production.

2. Stress Testing
In Stress Testing, we give unfavorable conditions to the system and check how it
perform in those conditions.
Example:
1. Test cases that require maximum memory or other resources are executed.
2. Test cases that may cause thrashing in a virtual operating system.
3. Test cases that may cause excessive disk requirement Performance Testing.
It is designed to test the run-time performance of software within the context of
an integrated system. It is used to test the speed and effectiveness of the program.
It is also called load testing. In it, we check, what is the performance of the
system in the given load.
Example:
Checking several processor cycles.

Other Types of Testing


1. Smoke Testing
2. Sanity Testing
3. Regression Testing
4. Acceptance Testing
5. User Acceptance Testing
6. Exploratory Testing
7. Adhoc Testing
8. Security Testing
9. Globalization Testing

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 24


10. Regression Testing
11. Smoke Testing
12. Alpha Testing
13. Beta Testing
14. Object-Oriented Testing
1. Smoke Testing
Smoke Testing is done to make sure that the software under testing is ready or
stable for further testing
It is called a smoke test as the testing of an initial pass is done to check if it did
not catch fire or smoke in the initial switch-on.
Example:
If the project has 2 modules so before going to the module make sure that module
1 works properly.
2.12 2. Sanity Testing
It is a subset of regression testing . Sanity testing is performed to ensure that the
code changes that are made are working properly. Sanity testing is a stoppage to
check whether testing for the build can proceed or not. The focus of the team
during the sanity testing process is to validate the functionality of the application
and not detailed testing. Sanity testing is generally performed on a build where
the production deployment is required immediately like a critical bug fix.
3. Regression Testing
The process of testing the modified parts of the code and the parts that might get
affected due to the modifications ensures that no new errors have been introduced
in the software after the modifications have been made. Regression means the
return of something and in the software field, it refers to the return of a bug.
4. Acceptance Testing
Acceptance testing is done by the customers to check whether the delivered
products perform the desired tasks or not, as stated in the requirements. We use
Object-Oriented Testing for discussing test plans and for executing the projects.
2.12 11. Smoke Testing
Smoke Testing is done to make sure that the software under testing is ready or
stable for further testing
It is called a smoke test as the testing of an initial pass is done to check if it did
not catch fire or smoke in the initial switch-on.
Example:
If the project has 2 modules so before going to the module make sure that module
1 works properly.

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 25


12. Alpha Testing
Alpha testing is a type of validation testing. It is a type of acceptance testing that
is done before the product is released to customers. It is typically done by QA
people.
Example:
When software testing is performed internally within the organisation.
13. Beta Testing
The beta test is conducted at one or more customer sites by the end-user of the
software. This version is released for a limited number of users for testing in a
real-time environment.
Example:
When software testing is performed for the limited number of people.

2.11.4 Portability Testing:

Portability testing is a type of software testing that determines how easy it is to


move a software application from one environment to another. It's a non-
functional testing methodology that ensures a software application can be
installed, uninstalled, and operated in different environments.
Purpose
 Ensures that a software application can be moved between different environments
with minimal changes
 Assures that a software application functions properly across different
subsystems and browser versions
How it's done
 Software is installed in one environment and then tested in another
 The results are compared to the software system's portability requirement
 The cost of adapting the software to the new environment is compared to the cost
of re-developing it
Examples
 Testing a product that works well in Windows 7 and measuring how it behaves in
Windows 8
 Testing a product that works well in one browser and measuring how it behaves
in another browser

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 26


2.11.5 Security Testing is a type of Software Testing that uncovers
vulnerabilities in the system and determines that the data and resources of the
system are protected from possible intruders. It ensures that the software system
and application are free from any threats or risks that can cause a loss. Security
testing of any system is focused on finding all possible loopholes and weaknesses
of the system that might result in the loss of information or repute of the
organization.

Security testing is a type of software testing that focuses on evaluating the


security of a system or application. The goal of security testing is to identify
vulnerabilities and potential threats and to ensure that the system is protected
against unauthorized access, data breaches, and other security-related issues.
The goal of Security Testing
The goal of security testing is to:
 To identify the threats in the system.
 To measure the potential vulnerabilities of the system.
 To help in detecting every possible security risk in the system.
 To help developers fix security problems through coding.
 The goal of security testing is to identify vulnerabilities and potential threats
in a system or application and to ensure that the system is protected against
unauthorized access, data breaches, and other security-related issues. The
main objectives of security testing are to:
 Identify vulnerabilities: Security testing helps identify vulnerabilities in the
system, such as weak passwords, unpatched software, and misconfigured
systems, that could be exploited by attackers.
 Evaluate the system’s ability to withstand an attack: Security testing evaluates
the system’s ability to withstand different types of attacks, such as network
attacks, social engineering attacks, and application-level attacks.
 Ensure compliance: Security testing helps ensure that the system meets
relevant security standards and regulations, such as HIPAA, PCI DSS, and
SOC2.
 Provide a comprehensive security assessment: Security testing provides a
comprehensive assessment of the system’s security posture, including the
identification of vulnerabilities, the evaluation of the system’s ability to
withstand an attack, and compliance with relevant security standards.
 Help organizations prepare for potential security incidents: Security testing
helps organizations understand the potential risks and vulnerabilities that they
face, enabling them to prepare for and respond to potential security incidents.

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 27


 Identify and fix potential security issues before deployment to production:
Security testing helps identify and fix security issues before the system is
deployed to production. This helps reduce the risk of a security incident
occurring in a production environment.
Principle of Security Testing
Below are the six basic principles of security testing:
 Confidentiality
 Integrity
 Authentication
 Authorization
 Availability
 Non-repudiation
Major Focus Areas in Security Testing
 Network Security
 System Software Security
 Client-side Application Security
 Server-side Application Security
 Authentication and Authorization: Testing the system’s ability to properly
authenticate and authorize users and devices. This includes testing the
strength and effectiveness of passwords, usernames, and other forms of
authentication, as well as testing the system’s access controls and permission
mechanisms.
 Network and Infrastructure Security: Testing the security of the system’s
network and infrastructure, including firewalls, routers, and other network
devices. This includes testing the system’s ability to defend against common
network attacks such as denial of service (DoS) and man-in-the-middle
(MitM) attacks.
 Database Security: Testing the security of the system’s databases, including
testing for SQL injection, cross-site scripting, and other types of attacks.
 Application Security: Testing the security of the system’s applications,
including testing for cross-site scripting, injection attacks, and other types of
vulnerabilities.
 Data Security: Testing the security of the system’s data, including testing for
data encryption, data integrity, and data leakage.
 Compliance: Testing the system’s compliance with relevant security
standards and regulations, such as HIPAA, PCI DSS, and SOC2.
 Cloud Security: Testing the security of cloud-

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 28


2.11.6 Localization & Internationalization

Internationalization (i18n) and localization (L10n) testing are two phases of


software development that prepare a product for global use.
Internationalization testing
 Ensures that a product can be adapted to different regions without changing
the code
 Focuses on making a product usable for a global audience
 Checks that the product's core architecture and design can handle international
support
 Detects issues that could prevent the product from being globalized
Localization testing
 Ensures that a product works correctly in a specific region or culture
 Focuses on making a product usable for a specific audience
 Involves translating content, adjusting formats, and ensuring the product
functions as expected
Benefits of internationalization and localization testing
 Create a seamless user experience across different locales
 Expand the product's market reach
 Maintain a brand's reputation in a globalized world

IT-22 STQA Prof. Atul Nimbalkar, IBMRD Ahilyanagar. Page 29

You might also like