0% found this document useful (0 votes)
4 views44 pages

Software Testing Types and Importance

Uploaded by

Eduskill Academy
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)
4 views44 pages

Software Testing Types and Importance

Uploaded by

Eduskill Academy
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

JAI ENTERPRISES

SOFTWARE TESTING

Software
Software is a set of instructions, data or programs used to operate computers and
execute specific tasks.

Application software. The most common type of software, application software is a


computer software package that performs a specific function for a user, or in some
cases, for another application.
graphics software, databases and database management programs, web browsers,
word processors, software development tools, image editors and communication
platforms.
System software. These software programs are designed to run a computer's
application programs and hardware. System software coordinates the activities and
functions of the hardware and software.
The OS is the best example of system software; it manages all the other computer
programs.
The OS is the best example of system software; it manages all the other computer
programs.

Driver software. Also known as device drivers, this software is often considered a type
of system software. Device drivers control the devices and peripherals connected to a
computer, enabling them to perform their specific tasks. Every device that is connected
to a computer needs at least one device driver to function. Examples include software
that comes with any nonstandard hardware, including special game controllers, as well
as the software that enables standard hardware, such as USB storage devices,
keyboards, headphones and printers.

Middleware. The term middleware describes software that mediates between


application and system software or between two different kinds of application software.
For example, middleware enables Microsoft Windows to talk to Excel and Word. It is
also used to send a remote work request from an application in a computer that has
JAI ENTERPRISES
one kind of OS, to an application in a computer with a different OS. It also enables
newer applications to work with legacy ones.

Programming software. Computer programmers use programming software to write


code. Programming software and programming tools enable developers to develop,
write, test and debug other software programs. Examples of programming software
include assemblers, compilers, debuggers and interpreters.

What is Testing
Testing is the process of determining how effective something is.

What is Software Testing


Software testing is a process, to evaluate the functionality of a software application
with an intent to find whether the developed software met the specified requirements
or not and to identify the defects to ensure that the product is defect-free in order to
produce a quality product.

Let’s see the standard definition, testing types such as manual testing and automation
testing, testing methods, testing approaches, and types of black-box testing.

What are the different types of Software Testing?

#1. Manual Testing


Manual testing is the process of testing the software by hand to learn more about it, to
find what is and isn’t working.
This usually includes verifying all the features specified in requirements documents, but
often also includes the testers trying the software with the perspective of their end user’s
in mind.
Manual test plans vary from fully scripted test cases, giving testers detailed steps and
expected results, through to high-level guides that steer exploratory testing sessions.
There are lots of sophisticated tools on the market to help with manual testing,
JAI ENTERPRISES
#2. Automation Testing
Automation testing is the process of using automation testing tools to control the
execution of tests and compare the results against expected outcomes and to find the
defects.
In this process, testers execute the test scripts and generate the test results
automatically by using automation tools.
Some of the famous automation testing tools for functional testing include Selenium,
testRigor, and Katalon Studio.
Selenium is no longer a strange name for web application testers. It offers powerful
capabilities like cross-browser testing but is difficult to learn for those new to
automation or with limited programming experience.
That’s why most QAs freshers and manual testers start out with Selenium Alternatives.
testRigor is one of the best alternatives to selenium.

WHAT IS SOFTWARE QUALITY

Portability: A software device is said to be portable, if it can be freely made to work in various
operating system environments, in multiple machines, with other software products, etc.

Usability: A software product has better usability if various categories of users can easily invoke
the functions of the product.

Reusability: A software product has excellent reusability if different modules of the product
can quickly be reused to develop new products.

Correctness: A software product is correct if various requirements as specified in the SRS


document have been correctly implemented.

Maintainability: A software product is maintainable if bugs can be easily corrected as and


when they show up, new tasks can be easily added to the product, and the functionalities of
the product can be easily modified, etc.

A product is anything that can be offered to a market to solve a problem, or to satisfy a


want or need. Products have a cycle that consists of multiple stages. First, the product is
conceived, then developed, then introduced and managed in the market, and finally, the
product is retired when the need for it diminishes. Products are usually developed by a
product team.
JAI ENTERPRISES
A project is a temporary endeavor that is undertaken to create a unique product or service.
With a project, there is a clear definition of what needs to be delivered by a specified date
in time. As in the previous item, projects are usually carried out by a project team.

Software testing is very important because of the following reasons:

1. Software testing is really required to point out the defects and errors that were
made during the development phase
o Example: Programmers may make a mistake during the implementation
of the software. There could be many reasons for this like lack of
experience of the programmer, lack of knowledge of the programming
language, insufficient experience in the domain, incorrect
implementation of the algorithm due to complex logic or simply human
error.
2. It’s essential since it makes sure that the customer finds the organization
reliable and their satisfaction in the application is maintained.
o If the customer does not find the testing organization reliable or is not
satisfied with the quality of the deliverable, then they may switch to a
competitor organization.
o Sometimes contracts may also include monetary penalties with respect
to the timeline and quality of the product. In such cases, if proper
software testing may also prevent monetary losses.
3. It is very important to ensure the Quality of the product. Quality product
delivered to the customers helps in gaining their confidence
o As explained in the previous point, delivering good quality product on
time builds the customers confidence in the team and the organization.
4. Testing is necessary in order to provide the facilities to the customers like the
delivery of high quality product or software application which requires lower
maintenance cost and hence results into more accurate, consistent and
reliable results.
o High quality product typically has fewer defects and requires lesser
maintenance effort, which in turn means reduced costs.
5. Testing is required for an effective performance of software application or
product.
6. It’s important to ensure that the application should not result into any failure
because it can be very expensive in the future or in the later stages of the
development.
o Proper testing ensures that bugs and issues are detected early in the
life cycle of the product or application.
JAI ENTERPRISES
o If defects related to requirements or design are detected late in the life
cycle, it can be very expensive to fix them since this might require
redesign, re-implementation and retesting of the application.
7. It’s required to stay in the business.
o Users are not inclined to use software that has bugs. They may not
adopt a software if they are not happy with the stability of the application.
o In case of a product organization or startup which has only one product,
poor quality of software may result in lack of adoption of the product and
this may result in losses which the business may not recover from.

What is a bug?
In software testing , a bug is the informal name of defects, which means that software or
application is not working as per the requirement. When we have some coding error, it leads a
program to its breakdown, which is known as a bug. The test engineers use the
terminology Bug.

If a QA(quality analyst) detect a bug, they can reproduce the bug and record it with the help of
the bug report template.

What is a Defect?
When the application is not working as per the requirement is knows as defects. It is specified
as the aberration from the actual and expected result of the application or software.

In other words, we can say that the bug announced by the programmer and inside the code
is called a defect.

What is Error?
The Problem in code leads to errors, which means that a mistake can occur due to the
developer's coding error as the developer misunderstood the requirement or the requirement
was not defined correctly. The developers use the term error.

Why software has bugs


 Miscommunication of requirements introduces error in code
 Unrealistic time schedule for development
 Lack of designing experience
 Lack of coding practices experience
JAI ENTERPRISES
 Human factors introduces errors in code
 Lack of version control
 Buggy third-party tools
 Last minute changes in the requirement introduce error
 Poor Software testing skill
The stages of SDLC are as follows:

Stage1: Planning and requirement analysis

Requirement Analysis is the most important and necessary stage in SDLC.

Business analyst and Project organizer set up a meeting with the client to gather all the data
like what the customer wants to build, who will be the end user, what is the objective of the
product. Before creating a product, a core understanding or knowledge of the product is very
necessary.

For Example, A client wants to have an application which concerns money transactions. In this
method, the requirement has to be precise like what kind of operations will be done, how it will
be done, in which currency it will be done, etc.

Once the required function is done, an analysis is complete with auditing the feasibility of the
growth of a product. In case of any ambiguity, a signal is set up for further discussion.

Once the requirement is understood, the SRS (Software Requirement Specification) document
is created. The developers should thoroughly follow this document and also should be reviewed
by the customer for future reference.
JAI ENTERPRISES
Stage2: Defining Requirements

Once the requirement analysis is done, the next stage is to certainly represent and document
the software requirements and get them accepted from the project stakeholders.

This is accomplished through "SRS"- Software Requirement Specification document which


contains all the product requirements to be constructed and developed during the project life
cycle.

Stage3: Designing the Software

The next phase is about to bring down all the knowledge of requirements, analysis, and design
of the software project.

Stage4: Developing the project

In this phase of SDLC, the actual development begins, and the programming is built. The
implementation of design begins concerning writing code. Developers have to follow the
coding guidelines described by their management and programming tools like compilers,
interpreters, debuggers, etc. are used to develop and implement the code.

Stage5: Testing

After the code is generated, it is tested against the requirements to make sure that the products
are solving the needs addressed and gathered during the requirements stage.

During this stage, unit testing, integration testing, system testing, acceptance testing are done.

Stage6: Deployment

Once the software is certified, and no bugs or errors are stated, then it is deployed.

Then based on the assessment, the software may be released as it is or with suggested
enhancement in the object segment.

After the software is deployed, then its maintenance begins.

Stage7: Maintenance

Once when the client starts using the developed systems, then the real issues come up and
requirements to be solved from time to time.
JAI ENTERPRISES
This procedure where the care is taken for the developed product is known as maintenance.

TYPES OF MODEL:-

WATERFALL MODEL

 Requirement Gathering and analysis − All possible requirements of the system to be


developed are captured in this phase and documented in a requirement specification
document.
 System Design − The requirement specifications from first phase are studied in this phase
and the system design is prepared. This system design helps in specifying hardware and
system requirements and helps in defining the overall system architecture.
 Implementation − With inputs from the system design, the system is first developed in
small programs called units, which are integrated in the next phase. Each unit is developed
and tested for its functionality, which is referred to as Unit Testing.
 Integration and Testing − All the units developed in the implementation phase are
integrated into a system after testing of each unit. Post integration the entire system is
tested for any faults and failures.
 Deployment of system − Once the functional and non-functional testing is done; the
product is deployed in the customer environment or released into the market.
 Maintenance − There are some issues which come up in the client environment. To fix
those issues, patches are released. Also to enhance the product some better versions are
released. Maintenance is done to deliver these changes in the customer environment.
All these phases are cascaded to each other in which progress is seen as flowing steadily downwards
(like a waterfall) through the phases. The next phase is started only after the defined set of goals are
achieved for previous phase and it is signed off, so the name "Waterfall Model". In this model, phases
do not overlap.
JAI ENTERPRISES
APPLICATION:-
 Requirements are very well documented, clear and fixed.
 Product definition is stable.
 Technology is understood and is not dynamic.
 There are no ambiguous requirements.
 Ample resources with required expertise are available to support the product.
 The project is short.

ADVATAGES:-
 Simple and easy to understand and use
 Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a
review process.
 Phases are processed and completed one at a time.
 Works well for smaller projects where requirements are very well understood.
 Clearly defined stages.
 Well understood milestones.
 Easy to arrange tasks.
 Process and results are well documented.

DISADVATAGES:-

 No working software is produced until late during the life cycle.


 High amounts of risk and uncertainty.
 Not a good model for complex and object-oriented projects.
 Poor model for long and ongoing projects.
 Not suitable for the projects where requirements are at a moderate to high risk of
changing. So, risk and uncertainty is high with this process model.
 It is difficult to measure progress within stages.
 Cannot accommodate changing requirements.
 Adjusting scope during the life cycle can end a project.
 Integration is done as a "big-bang. at the very end, which doesn't allow identifying any
technological or business bottleneck or challenges early.

SPIRAL MODEL:-

Spiral Model
It implements the potential for rapid development of new versions of the software. Using the
spiral model, the software is developed in a series of incremental releases. During the early
iterations, the additional release may be a paper model or prototype. During later iterations,
more and more complete versions of the engineered system are produced.
JAI ENTERPRISES

Each cycle in the spiral is divided into four parts:

Objective setting: Each cycle in the spiral starts with the identification of purpose for that cycle,
the various alternatives that are possible for achieving the targets, and the constraints that
exists.

Risk Assessment and reduction: The next phase in the cycle is to calculate these various
alternatives based on the goals and constraints. The focus of evaluation in this stage is located
on the risk perception for the project.

Development and validation: The next phase is to develop strategies that resolve
uncertainties and risks. This process may include activities such as benchmarking, simulation,
and prototyping.

Planning: Finally, the next step is planned. The project is reviewed, and a choice made whether
to continue with a further period of the spiral. If it is determined to keep, plans are drawn up
for the next step of the project.

The development phase depends on the remaining risks. For example, if performance or user-
interface risks are treated more essential than the program development risks, the next phase
may be an evolutionary development that includes developing a more detailed prototype for
solving the risks.
JAI ENTERPRISES
The risk-driven feature of the spiral model allows it to accommodate any mixture of a
specification-oriented, prototype-oriented, simulation-oriented, or another type of approach.
An essential element of the model is that each period of the spiral is completed by a review
that includes all the products developed during that cycle, including plans for the next cycle.
The spiral model works for development as well as enhancement projects.

When to use Spiral Model?


o When deliverance is required to be frequent.
o When the project is large
o When requirements are unclear and complex
o When changes may require at any time
o Large and high budget projects

Advantages
o High amount of risk analysis
o Useful for large and mission-critical projects.

Disadvantages
o Can be a costly model to use.
o Risk analysis needed highly particular expertise
o Doesn't work well for smaller projects.

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.
JAI ENTERPRISES

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.

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.
JAI ENTERPRISES
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.
JAI ENTERPRISES
When to use V-Model?
o When the requirement is well defined and not ambiguous.
o The V-shaped model should be used for small to medium-sized projects where requirements
are clearly defined and fixed.
o The V-shaped model should be chosen when sample technical resources are available with
essential technical expertise.

Advantage (Pros) of V-Model:


1. Easy to Understand.
2. Testing Methods like planning, test designing happens well before coding.
3. This saves a lot of time. Hence a higher chance of success over the waterfall model.
4. Avoids the downward flow of the defects.
5. Works well for small plans where requirements are easily understood.

Disadvantage (Cons) of V-Model:


1. Very rigid and least flexible.
2. Not a good for a complex project.
3. Software is developed during the implementation stage, so no early prototypes of the software
are produced.
4. If any changes happen in the midway, then the test documents along with the required
documents, has to be updated.

What is Static Testing?


Static Testing is a type of software testing in which software application is tested
without code execution. Manual or automated reviews of code, requirement documents
and document design are done in order to find the errors. The main objective of static
testing is to improve the quality of software applications by finding errors in early
stages of software development process.
Static testing involves manual or automated reviews of the documents. This review is
done during an initial phase of testing to catch Defect early in STLC. It examines work
documents and provides review comments. It is also called Non-execution testing or
verification testing.

Examples of Work documents-


JAI ENTERPRISES
 Requirement specifications
 Design document
 Source Code
 Test Plans
 Test Cases
 Test Scripts
 Help or User document
 Web Page content

What is Dynamic Testing?


Under Dynamic Testing, a code is executed. It checks for functional behaviour of
software system, memory/CPU usage and overall performance of the system. Hence the
name “Dynamic”

The main objective of this testing is to confirm that the software product works in
conformance with the business requirements. This testing is also called an Execution
technique or validation testing.

Dynamic testing executes the software and validates the output with the expected
outcome. Dynamic testing is performed at all levels of testing and it can be either black
or white box testing.

Differences between Black Box Testing vs White Box Testing:


S.
No. Black Box Testing White Box Testing

It is a way of software testing in which the It is a way of testing the software in which
internal structure or the program or the the tester has knowledge about the internal
code is hidden and nothing is known structure or the code or the program of the
1. about it. software.

Implementation of code is not needed for Code implementation is necessary for


2. black box testing. white box testing.

3. It is mostly done by software testers. It is mostly done by software developers.

No knowledge of implementation is
4. needed. Knowledge of implementation is required.
JAI ENTERPRISES
S.
No. Black Box Testing White Box Testing

It can be referred to as outer or external It is the inner or the internal software


5. software testing. testing.

6. It is a functional test of the software. It is a structural test of the software.

This testing can be initiated based on the This type of testing of software is started
7. requirement specifications document. after a detail design document.

No knowledge of programming is It is mandatory to have knowledge of


8. required. programming.

9. It is the behaviour testing of the software. It is the logic testing of the software.

It is applicable to the higher levels of It is generally applicable to the lower


10. testing of software. levels of software testing.

11. It is also called closed testing. It is also called as clear box testing.

12. It is least time consuming. It is most time consuming.

It is not suitable or preferred for algorithm


13. testing. It is suitable for algorithm testing.

Can be done by trial and error ways and Data domains along with inner or internal
14. methods. boundaries can be better tested.

Example: Search something on google by Example: By input to check and verify


15. using keywords loops

Black-box test design techniques-


 Decision table testing White-box test design techniques-
 All-pairs testing  Control flow testing
 Equivalence partitioning  Data flow testing
16.  Error guessing  Branch testing
JAI ENTERPRISES
S.
No. Black Box Testing White Box Testing

Types of Black Box Testing: Types of White Box Testing:


 Functional Testing  Path Testing
 Non-functional testing  Loop Testing
17.  Regression Testing  Condition testing

It is less exhaustive as compared to white It is comparatively more exhaustive than


18. box testing. black box testing.

1. Walkthrough:

 It is not a formal process


 It is led by the authors
 Author guide the participants through the document according to his or her thought
process to achieve a common understanding and to gather feedback.
 Useful for the people if they are not from the software discipline, who are not used to
or cannot easily understand software development process.
 Is especially useful for higher level documents like requirement specification, etc.
The goals of a walkthrough:

 To present the documents both within and outside the software discipline in order to
gather the information regarding the topic under documentation.
 To explain or do the knowledge transfer and evaluate the contents of the document
 To achieve a common understanding and to gather feedback.
 To examine and discuss the validity of the proposed solutions
2. Technical review:

 It is less formal review


 It is led by the trained moderator but can also be led by a technical expert
 It is often performed as a peer review without management participation
 Defects are found by the experts (such as architects, designers, key users) who focus
on the content of the document.
 In practice, technical reviews vary from quite informal to very formal
The goals of the technical review are:

 To ensure that an early stage the technical concepts are used correctly
JAI ENTERPRISES
 To access the value of technical concepts and alternatives in the product
 To have consistency in the use and representation of technical concepts
 To inform participants about the technical content of the document
3. Inspection:

 It is the most formal review type


 It is led by the trained moderators
 During inspection the documents are prepared and checked thoroughly by the
reviewers before the meeting
 It involves peers to examine the product
 A separate preparation is carried out during which the product is examined and the
defects are found
 The defects found are documented in a logging list or issue log
 A formal follow-up is carried out by the moderator applying exit criteria
The goals of inspection are:

 It helps the author to improve the quality of the document under inspection
 It removes defects efficiently and as early as possible
 It improve product quality
 It create common understanding by exchanging information
 It learn from defects found and prevent the occurrence of similar defects
Quality Assurance (QA) Quality Control (QC)

It focuses on providing assurance that the It focuses on fulfilling the quality


quality requested will be achieved. requested.

It is the technique of managing quality. It is the technique to verify quality.

It is not included during the


It is involved during the development phase. development phase.

It does not include the execution of the It always includes the execution of
program. the program.

It is process oriented. It is product oriented.


JAI ENTERPRISES
Quality Assurance (QA) Quality Control (QC)

The aim of quality assurance is to prevent The aim of quality control is to identify
defects. and improve the defects.

It is a preventive technique. It is a corrective technique.

It is responsible for the entire software It is responsible for the software


development life cycle. testing life cycle.

It pays main focus is on the intermediate


process. Its primary focus is on final products.

All team members of the project are Generally, the testing team of the
involved. project is involved.

Example: Verification Example: Validation

Quality engineer(QE) -it is automation tester .he writes the code to test system
automatically.

Software engineer(SE)- It is an engineer who writes the code to develop the software.

What Is Incremental Testing


Incremental Testing, also known as Incremental Integration Testing, is one of the approaches of Integration
Testing and incorporates its fundamental concepts.

In this testing, we test each module individually in unit testing phase, and then modules are integrated
incrementally and tested to ensure smooth interface and interaction between modules.

In this approach, every module is combined incrementally, i.e., one by one till all modules or components
are added logically to make the required application, instead of integrating the whole system at once and
then performing testing on the end product. Integrated modules are tested as a group to ensure successful
integration and data flow between modules.
JAI ENTERPRISES
As in integration testing, the primary focus of doing this testing is to check interface, integrated links, and
flow of information between modules. This process is repeated till the modules are combined and tested
successfully.

Ex:-software and they have sub module

Incremental Integration testing approach


 Each Module i.e. M1, M2, M3, etc. are tested individually as part of unit testing
 Modules are combined incrementally i.e. one by one and tested for successful interaction
 In Fig2, Module M1 & Module M2 are combined and tested
 In Fig3, Module M3 is added and tested
 In Fig4, Module M4 is added and testing is done to make sure everything works together
successfully
 Rest of the Modules are also added incrementally at each step and tested for successful
integration

Fig2

Fig3
JAI ENTERPRISES

Fig4

#1) Top Down


As the name suggests, testing takes place from top to bottom, i.e., from the central module to sub module.
Modules framing the top layer of application are tested first.

Top down Incremental Integration Testing Approach


Following test cases will be derived:
Test Case1: Module L and Module O will be integrated and tested
Test Case2: Module L, O and P will be integrated and tested
Test Case3: Module L, O, P and R will be integrated and tested.
#2) Bottom-up
In this approach, testing takes place from bottom to top, i.e., modules at bottom layer are integrated and
tested first and then sequentially other modules are integrated as we move up.
JAI ENTERPRISES

Bottom up Incremental Integration testing approach


Following test cases will be derived:
Test Case1: Unit testing of module Practical and Theory
Test Case2: Integration and testing of Modules Marks-Practical-theory
Test Case3: Integration and testing of Modules Percentage-Marks-Practical-Theory
Test Case4: Unit testing of Module Sports Grade
Test Case5: Integration and testing of Modules Rank-Sports Grade-Percentage-Marks-Practical-Theory
#3) Sandwich Testing
This approach is a hybrid of top-down and bottom-up methodology. Stub and drivers are used for
incomplete or not developed modules.

Testing Approach
 A middle layer is identified from which bottom-up and top-down testing are done. This
middle layer is also known as target layer
 Target layer is identified as per Heuristic approach, i.e., select a layer which allows minimal
use of Stubs and drivers
 Top-down testing starts from middle layer and moves downwards towards lower level
modules. This layer below middle layer is known as Bottom layer
 Bottom-up testing also starts from middle layer and move up towards top layer modules.
This layer above middle layer is known as Top layer
JAI ENTERPRISES
 With use of stubs and drivers, user interface and functions of lower level modules are tested
respectively
 In the end, only middle layer is left for the execution of the final test

Following test cases can be derived with Sandwich Testing Strategy:


Test Case1: Test A, X, Y, and Z individually – where Test A comes under Top layer test and Test X, Y
and Z comes under Bottom layer tests
Test Case2: Test A, G, H and I
Test Case3: Test G, X, and Y
Test Case4: Test Hand Z
Test Case5: Test A, G, H, I, X, Y, and Z

Stubs and Drivers


Stubs and Drivers are the dummy programs in Integration testing used to facilitate the
software testing activity. These programs act as a substitutes for the missing models
in the testing. They do not implement the entire programming logic of the software
module but they simulate data communication with the calling module while testing.
Stub: Is called by the Module under Test.

Driver: Calls the Module to be tested.


JAI ENTERPRISES

What is GUI Testing?


GUI Testing is a software testing type that checks the Graphical User Interface of the
Software. The purpose of Graphical User Interface (GUI) Testing is to ensure the
functionalities of software application work as per specifications by checking screens
and controls like menus, buttons, icons, etc.

Functional Testing Non-functional Testing

It verifies the operations


and actions of an It verifies the behavior of
application. an application.

It is based on
requirements of It is based on expectations
customer. of customer.

It helps to enhance the It helps to improve the


behavior of the performance of the
application. application.

Functional testing is It is hard to execute non-


easy to execute functional testing
manually. manually.

It tests what the product It describes how the


does. product does.

Functional testing is Non-functional testing is


based on the business based on the performance
requirement. requirement.

Examples:
1. Unit Testing
2. Smoke Testing Examples:
3. Integration 1. Performance Testing
Testing 2. Load Testing
4. Regression 3. Stress Testing
Testing 4. Scalability Testing
JAI ENTERPRISES

Retesting vs Regression Testing


Regression Testing Re-testing

Re-testing is carried out


Regression Testing is carried out to confirm whether a recent
failed in the final executi
program or code change has not adversely affected existing features
defects are fixed

The purpose of Regression Testing is that new code changes should


Re-testing is done on the
not have any side effects to existing functionalities

Defect verification is not the part of Regression Testing Defect verification is the

Based on the project and availability of resources, Regression Testing Priority of re-testing is h
can be carried out parallel with Re-testing so it is carried out before

You can do automation for regression testing, Manual Testing could


You cannot automate the
be expensive and time-consuming

Regression testing is known as a generic testing Re-testing is a planned t

Regression testing is done for passed test cases Retesting is done only fo

Re-testing makes sure th


Regression testing checks for unexpected side-effects
corrected

Re-testing executes a de
Regression testing is only done when there is any modification or
the same environment w
changes become mandatory in an existing project
new build

Test cases for regression testing can be obtained from the functional
Test cases for retesting c
specification, user tutorials and manuals, and defect reports in
start testing.
regards to corrected problems
JAI ENTERPRISES
JAI ENTERPRISES

End To End Testing


End To End Testing is a software testing method that validates entire software from
starting to the end along with its integration with external interfaces. The purpose of
end-to-end testing is testing whole software for dependencies, data integrity and
communication with other systems, interfaces and databases to exercise complete
production like scenario.
Along with the software system, it also validates batch/data processing from other
upstream/downstream systems. Hence, the name “End-to-End”. End to End Testing is
usually executed after functional and System Testing.

Positive Testing
Positive testing ensures that software performs as it is expected to do. When writing test cases
for positive testing, only legitimate (valid) inputs are provided as inputs.
In other words, positive testing is the process of evaluating a system or application using
accurate input data.
The primary goal of positive testing is to validate if a software program does what it is intended
to do.
JAI ENTERPRISES
Simply put, a positive test is conducted by providing an expected set of values as inputs to the
test cases.

Negative Testing
It is vice versa for positive testing. In Negative testing, a software program is evaluated against
false or incorrect data.
Negative testing is also known as error path testing or failure.
It is best to check if the computer program reacts as expected to false or invalid user inputs.
Negative testing ensures the software program does not crash and continues running even
with wrong data inputs.
A software tester most likely starts by considering the positive inputs when considering the test
scenarios. Still, it is equally important to know that understanding the importance of negative
tests is always crucial. It is seen as being essential to the execution of test cases.
Negative testing ensures that the software program displays an error when it should and does
not display an error when it should not. Additionally, it helps software developers find more
flaws and improve the software program being tested.

Boundary Value Analysis (BVA)


Boundary value analysis is based on testing at the boundaries between partitions. It
includes maximum, minimum, inside or outside boundaries, typical values and error
values.

It is generally seen that a large number of errors occur at the boundaries of the
defined input values rather than the center. It is also known as BVA and gives a
selection of test cases which exercise bounding values.

This black box testing technique complements equivalence partitioning. This software
testing technique base on the principle that, if a system works well for these
particular values then it will work perfectly well for all values which comes between
the two boundary values.

Guidelines for Boundary Value analysis

 If an input condition is restricted between values x and y, then the test cases
should be designed with values x and y as well as values which are above and
below x and y.
JAI ENTERPRISES
 If an input condition is a large number of values, the test case should be
developed which need to exercise the minimum and maximum numbers. Here,
values above and below the minimum and maximum values are also tested.
 Apply guidelines 1 and 2 to output conditions. It gives an output which reflects
the minimum and the maximum values expected. It also tests the below or
above values.

Example:
Input condition is valid between 1 to 10

Boundary values 0,1,2 and 9,10,11

Equivalence Class Partitioning


Equivalent Class Partitioning allows you to divide set of test condition into a partition
which should be considered the same. This software testing method divides the input
domain of a program into classes of data from which test cases should be designed.

The concept behind this Test Case Design Technique is that test case of a
representative value of each class is equal to a test of any other value of the same
class. It allows you to Identify valid as well as invalid equivalence classes.

Example:

Input conditions are valid between


1 to 10 and 20 to 30
Hence there are five equivalence classes
--- to 0 (invalid)
1 to 10 (valid)
11 to 19 (invalid)
20 to 30 (valid)
31 to --- (invalid)
You select values from each class, i.e.,
-2, 3, 15, 25, 45

Decision Table Based Testing


A decision table is also known as to Cause-Effect table. This software testing
technique is used for functions which respond to a combination of inputs or events.
For example, a submit button should be enabled if the user has entered all required
fields.
JAI ENTERPRISES
The first task is to identify functionalities where the output depends on a combination
of inputs. If there are large input set of combinations, then divide it into smaller
subsets which are helpful for managing a decision table.

For every function, you need to create a table and list down all types of combinations
of inputs and its respective outputs. This helps to identify a condition that is
overlooked by the tester.

Following are steps to create a decision table:

 Enlist the inputs in rows


 Enter all the rules in the column
 Fill the table with the different combination of inputs
 In the last row, note down the output against the input combination.

Example: A submit button in a contact form is enabled only when all the inputs are
entered by the end user.

State Transition
In State Transition technique changes in input conditions change the state of the
Application Under Test (AUT). This testing technique allows the tester to test the
behaviour of an AUT. The tester can perform this action by entering various input
conditions in a sequence. In State transition technique, the testing team provides
positive as well as negative input test values for evaluating the system behaviour.
JAI ENTERPRISES
Guideline for State Transition:

 State transition should be used when a testing team is testing the application
for a limited set of input values.
 The Test Case Design Technique should be used when the testing team wants to
test sequence of events which happen in the application under test.

Example:

In the following example, if the user enters a valid password in any of the first three
attempts the user will be able to log in successfully. If the user enters the invalid
password in the first or second try, the user will be prompted to re-enter the
password. When the user enters password incorrectly 3rd time, the action has taken,
and the account will be blocked.

State Transition Diagram

In this diagram when the user gives the correct PIN number, he or she is moved to
Access granted state. Following Table is created based on the diagram above-
JAI ENTERPRISES

State Transition Table


Correct PIN Incorrect PIN

S1) Start S5 S2

S2) 1st attempt S5 S3

S3) 2nd attempt S5 S4

S4) 3rd attempt S5 S6

S5) Access Granted – –

S6) Account blocked – –


In the above-given table when the user enters the correct PIN, the state is transitioned
to Access granted. And if the user enters an incorrect password, he or she is moved to
next state. If he does the same 3rd time, he will reach the account blocked state.

Error Guessing
Error Guessing is a software testing technique based on guessing the error which can
prevail in the code. The technique is heavily based on the experience where the test
analysts use their experience to guess the problematic part of the testing application.
Hence, the test analysts must be skilled and experienced for better error guessing.
The technique counts a list of possible errors or error-prone situations. Then tester
writes a test case to expose those errors. To design test cases based on this software
testing technique, the analyst can use the past experiences to identify the conditions.

Guidelines for Error Guessing:

 The test should use the previous experience of testing similar applications
 Understanding of the system under test
 Knowledge of typical implementation errors
 Remember previously troubled areas
 Evaluate Historical data & Test results

STLC Phases
There are following six major phases in every Software Testing Life Cycle Model
(STLC Model):
JAI ENTERPRISES

STLC Model Phases

1. Requirement Analysis
2. Test Planning
3. Test case development
4. Test Environment setup
5. Test Execution
6. Test Cycle closure

Each of these stages has a definite Entry and Exit criteria, Activities & Deliverables
associated with it.

What is Entry and Exit Criteria in STLC?


 Entry Criteria: Entry Criteria gives the prerequisite items that must be
completed before testing can begin.
 Exit Criteria: Exit Criteria defines the items that must be completed before
testing can be concluded

You have Entry and Exit Criteria for all levels in the Software Testing Life Cycle
(STLC)

In an Ideal world, you will not enter the next stage until the exit criteria for the
previous stage is met. But practically this is not always possible. So for this tutorial,
we will focus on activities and deliverables for the different stages in STLC life cycle.
Let’s look into them in detail.
JAI ENTERPRISES

Requirement Phase Testing


Requirement Phase Testing also known as Requirement Analysis in which test team
studies the requirements from a testing point of view to identify testable
requirements and the QA team may interact with various stakeholders to understand
requirements in detail. Requirements could be either functional or non-functional.
Automation feasibility for the testing project is also done in this stage.
Activities in Requirement Phase Testing

 Identify types of tests to be performed.


 Gather details about testing priorities and focus.
 Prepare Requirement Traceability Matrix (RTM).
 Identify test environment details where testing is supposed to be carried out.
 Automation feasibility analysis (if required).

Deliverables of Requirement Phase Testing

 RTM
 Automation feasibility report. (if applicable)

Test Planning in STLC


Test Planning in STLC is a phase in which a Senior QA manager determines the test
plan strategy along with efforts and cost estimates for the project. Moreover, the
resources, test environment, test limitations and the testing schedule are also
determined. The Test Plan gets prepared and finalized in the same phase.
Test Planning Activities

 Preparation of test plan/strategy document for various types of testing


 Test tool selection
 Test effort estimation
 Resource planning and determining roles and responsibilities.
 Training requirement

Deliverables of Test Planning

 Test plan /strategy document.


 Effort estimation document.
JAI ENTERPRISES

Test Case Development Phase


The Test Case Development Phase involves the creation, verification and rework of
test cases & test scripts after the test plan is ready. Initially, the Test data is identified
then created and reviewed and then reworked based on the preconditions. Then the
QA team starts the development process of test cases for individual units.
Test Case Development Activities

 Create test cases, automation scripts (if applicable)


 Review and baseline test cases and scripts
 Create test data (If Test Environment is available)

Deliverables of Test Case Development

 Test cases/scripts
 Test data

Test Environment Setup


Test Environment Setup decides the software and hardware conditions under which a
work product is tested. It is one of the critical aspects of the testing process and can
be done in parallel with the Test Case Development Phase. Test team may not be
involved in this activity if the development team provides the test environment. The
test team is required to do a readiness check (smoke testing) of the given
environment.
Test Environment Setup Activities

 Understand the required architecture, environment set-up and prepare


hardware and software requirement list for the Test Environment.
 Setup test Environment and test data
 Perform smoke test on the build

Deliverables of Test Environment Setup

 Environment ready with test data set up


 Smoke Test Results.

Test Execution Phase


Test Execution Phase is carried out by the testers in which testing of the software
build is done based on test plans and test cases prepared. The process consists of test
JAI ENTERPRISES
script execution, test script maintenance and bug reporting. If bugs are reported then
it is reverted back to development team for correction and retesting will be
performed.
Test Execution Activities

 Execute tests as per plan


 Document test results, and log defects for failed cases
 Map defects to test cases in RTM
 Retest the Defect fixes
 Track the defects to closure

Deliverables of Test Execution

 Completed RTM with the execution status


 Test cases updated with results
 Defect reports

Test Cycle Closure


Test Cycle Closure phase is completion of test execution which involves several
activities like test completion reporting, collection of test completion matrices and
test results. Testing team members meet, discuss and analyze testing artifacts to
identify strategies that have to be implemented in future, taking lessons from current
test cycle. The idea is to remove process bottlenecks for future test cycles.
Test Cycle Closure Activities

 Evaluate cycle completion criteria based on Time, Test coverage, Cost,Software,


Critical Business Objectives, Quality
 Prepare test metrics based on the above parameters.
 Document the learning out of the project
 Prepare Test closure report
 Qualitative and quantitative reporting of quality of the work product to the
customer.
 Test result analysis to find out the defect distribution by type and severity.

Deliverables of Test Cycle Closure

 Test Closure report


 Test metrics

Test Plan
JAI ENTERPRISES
A test plan is a detailed document which describes software testing areas and activities. It
outlines the test strategy, objectives, test schedule, required resources (human resources,
software, and hardware), test estimation and test deliverables.

The test plan is a base of every software's testing. It is the most crucial activity which ensures
availability of all the lists of planned activities in an appropriate sequence.

The test plan is a template for conducting software testing activities as a defined process that
is fully monitored and controlled by the testing manager. The test plan is prepared by the Test
Lead (60%), Test Manager(20%), and by the test engineer(20%).

How to write a Test Plan


Making a test plan is the most crucial task of the test management process. According to IEEE
829, follow the following seven steps to prepare a test plan.

o First, analyze product structure and architecture.


o Now design the test strategy.
o Define all the test objectives.
o Define the testing area.
o Define all the useable resources.
o Schedule all activities in an appropriate manner.
o Determine all the Test Deliverables.

Test plan components or attributes


The test plan consists of various parts, which help us to derive the entire testing activity.
JAI ENTERPRISES

What is Use Case?


o In software testing, a use case is a graphic representation of business needs explaining how the
end-user will cooperate with software or an application. And the use cases allow us all the
possible techniques of how the end-user uses the application.
o In simple words, we can express that with the help of use cases; we can define how to use the
system for executing a precise task.
o The use case is not a part of execution which means that it is only a graphic demonstration of a
document that explains how to implement a particular task.
o With the help of the use case, we get to know how the product should work.

What is Test Case?


o A test case is defined as a group of conditions under a test engineer concludes whether a
software application is working as per the customer's requirements or not.
o The test case designing includes preconditions, case name, input conditions, and expected
result.
o These are derived from the test scenarios, and it is a first-level action.
o Mainly, test cases are used to validate the developed software by test engineers that the
particular software is working as per requirement or not.
o A test Caseis described as a group of various testing activities like test inputs, execution
conditions, and expected results that additionally lead to evolving a particular test objective.
JAI ENTERPRISES
o Writing test cases is a one-time attempt that can be used in the future at the time of regression
testing.

What is Test Scenarios?


It is a detailed document of test cases that cover end to end functionality of a software
application in liner statements. The test scenario is a high-level classification of testable
requirements. Before performing the test scenario, the test engineer needs to consider the test
cases for each scenario.

What is a Test Suite?


Test suite is a container that has a set of tests which helps testers in executing and reporting the test
execution status. It can take any of the three states namely Active, Inprogress and completed.
A Test case can be added to multiple test suites and test plans. After creating a test plan, test suites are
created which in turn can have any number of tests.
Test suites are created based on the cycle or based on the scope. It can contain any type of tests, viz -
functional or Non-Functional.
JAI ENTERPRISES
Test Suite - Diagram:

What is Traceability Matrix?


Requirement Traceability Matrix (RTM) is used to trace the requirements to the
tests that are needed to verify whether the requirements are fulfilled.
JAI ENTERPRISES

What is a Test Environment?


A testing environment is a setup of software and hardware for the testing teams to
execute test cases. In other words, it supports test execution with hardware, software
and network configured.

Test bed or test environment is configured as per the need of the Application Under
Test. On a few occasion, test bed could be the combination of the test environment
and the test data it operates.

Setting up a right test environment ensures software testing success. Any flaws in this
process may lead to extra cost and time to the client.

What is Test Execution?


Test execution is the process of executing the code and comparing the expected and actual results.
Following factors are to be considered for a test execution process:
 Based on a risk, select a subset of test suite to be executed for this cycle.
 Assign the test cases in each test suite to testers for execution.
 Execute tests, report bugs, and capture test status continuously.
 Resolve blocking issues as they arise.
 Report status, adjust assignments, and reconsider plans and priorities daily.
 Report test cycle findings and status.
 1. Error or Mistake:

 Error is a human action that produces an incorrect result. It is deviation from


actual and expected value. The mistakes made by programmer is known as
an ‘Error’.
JAI ENTERPRISES
 2. Bug:

 A Bug is the result of a coding Error or Fault in the program which causes the
program to behave in an unintended manner.

 3. Defect or Fault:

 A Defect is a deviation from the Requirements. A Software Defect is a


condition in a software product which does not meet a software requirement
or end-user expectations.

 Bug vs. Defect

 A Bug is the result of a coding Error and A Defect is a deviation from the
Requirements. A defect does not necessarily mean there is a bug in the code,

 5. Failure:

 If an end-user detects an issue in the product, then that particular issue is


called a failure.

 A Sample Defect report or Bug report:

 Defect ID – Every bug or defect has it’s unique identification number

 Defect Description – This includes the abstract of the issue.

 Product Version – This includes the product version of the application in


which the defect is found.
JAI ENTERPRISES
 Detail Steps – This includes the detailed steps of the issue with the
screenshots attached so that developers can recreate it.

 Date Raised – This includes the Date when the bug is reported

 Reported By – This includes the details of the tester who reported the bug
like Name and ID

 Status – This field includes the Status of the defect like New, Assigned, Open,
Retest, Verification, Closed, Failed, Deferred, etc.

 Fixed by – This field includes the details of the developer who fixed it like
Name and ID

 Date Closed – This includes the Date when the bug is closed

 Severity – Based on the severity (Critical, Major or Minor) it tells us about


impact of the defect or bug in the software application

 Priority – Based on the Priority set (High/Medium/Low) the order of fixing the
defect can be made.

Defects are classified from the QA team perspective as Priority and from the development perspective
as Severity (complexity of code to fix it). These are two major classifications that play an important role
in the timeframe and the amount of work that goes in to fix defects.

What is Priority?
Priority is defined as the order in which the defects should be resolved. The priority status is usually set
by the QA team while raising the defect against the dev team mentioning the timeframe to fix the defect.
The Priority status is set based on the requirements of the end users.
For example, if the company logo is incorrectly placed in the company's web page then the priority is
high but it is of low severity.

Priority Listing
A Priority can be categorized in the following ways −
JAI ENTERPRISES
 Low − This defect can be fixed after the critical ones are fixed.
 Medium − The defect should be resolved in the subsequent builds.
 High − The defect must be resolved immediately because the defect affects the
application to a considerable extent and the relevant modules cannot be used until it is
fixed.
 Urgent − The defect must be resolved immediately because the defect affects the
application or the product severely and the product cannot be used until it has been fixed.
What is Severity?
Severity is defined as the impishness of defect on the application and complexity of code to fix it from
development perspective. It is related to the development aspect of the product. Severity can be decided
based on how bad/crucial is the defect for the system. Severity status can give an idea about the deviation
in the functionality due to the defect.
Example − For flight operating website, defect in generating the ticket number against reservation is
high severity and also high priority.

Severity Listing
Severity can be categorized in the following ways −
 Critical /Severity 1 − Defect impacts most crucial functionality of Application and the
QA team cannot continue with the validation of application under test without fixing it.
For example, App/Product crash frequently.
 Major / Severity 2 − Defect impacts a functional module; the QA team cannot test that
particular module but continue with the validation of other modules. For example, flight
reservation is not working.
 Medium / Severity 3 − Defect has issue with single screen or related to a single function,
but the system is still functioning. The defect here does not block any functionality. For
example, Ticket# is a representation which does not follow proper alpha numeric
characters like the first five characters and the last five as numeric.
 Low / Severity 4 − It does not impact the functionality. It may be a cosmetic defect, UI
inconsistency for a field or a suggestion to improve the end user experience from the UI
side. For example, the background colour of the Submit button does not match with that
of the Save button.

Defect Resolution
Defect Resolution in software testing is a step by step process of fixing the defects.
Defect resolution process starts with assigning defects to developers, then developers
schedule the defect to be fixed as per priority, then defects are fixed and finally
developers send a report of resolution to the test manager. This process helps to fix
and track defects easily.

Common questions

Powered by AI

In the Waterfall Model, project milestones are planned and achieved sequentially. The model's linear and phase-dependent nature means each milestone marks the completion of a development phase, with strict exit criteria to move to the next phase . Conversely, the V-Model maps each development milestone to a corresponding testing phase milestone, ensuring that each stage of development is validated before proceeding further. This approach allows for a more structured and concurrent attainment of objectives, emphasizing early defect detection and correction and facilitating a smoother progression through project stages .

The Waterfall Model and Spiral Model differ significantly in their approach to risk management. The Waterfall Model lacks early risk detection since its phases are completed sequentially without overlapping, which means that risks and issues can only be identified late in the development cycle . In contrast, the Spiral Model is explicitly designed to manage and mitigate risks throughout the development process. It incorporates continuous risk assessment and reduction as a core part of its iterative cycles, allowing for the identification and resolution of risks at each stage of development .

The V-Model offers several advantages over the Waterfall Model regarding testing and defect management by linking each development phase directly to its corresponding testing phase. This ensures that testing activities such as unit testing, integration testing, and system testing are prepared and executed in parallel with development, allowing for early defect identification and correction . Unlike the Waterfall Model, where testing occurs after all development phases, the V-Model reduces the risk of downward defect flow and makes it easier to identify integration issues before they affect the entire system .

The V-Model addresses defect identification by integrating testing phases parallel to each stage of development, which corresponds to verification and validation steps. This allows for the early detection and resolution of defects and prevents their downward flow through phases. Testing activities such as unit testing, integration testing, system testing, and acceptance testing are planned alongside respective development phases, providing ongoing opportunities to catch defects early and ensure quality throughout the process . This contrasts with models such as Waterfall, where testing is only performed at the end after all development phases are complete, often leading to difficulty in identifying defects early on .

In the Waterfall Model, test planning occurs as a separate phase after all development is complete . It involves detailed documentation outlining testing strategies, schedules, and resources; it is typically fixed once set, reflecting the inherent rigidity and sequential structure of the Waterfall approach. Conversely, in agile methodologies, test planning is integrated continuously throughout the development cycle with a focus on adaptability and responsiveness to changes. Test cases are developed iteratively alongside coding and requirements refinement, allowing for more flexible and responsive test planning .

The Spiral Model is preferable over the V-Model in scenarios where projects are large, high-budget, and involve complex or unclear requirements that might evolve over time. Its iterative nature allows for frequent deliverables and revisiting of risk assessment, making it suitable for projects where requirements may change across the development cycle . In contrast, the V-Model is best suited for small to medium-sized projects where requirements are fixed and well-defined, as its rigid sequential structure does not accommodate changes well and involves testing mainly planned post-development .

The use of prototypes in the Spiral Model significantly influences the development process by providing a tangible early representation of the system, which helps in refining requirements through user feedback and risk assessments in subsequent iterations . This iterative prototyping assists in the identification and mitigation of potential issues early in the development cycle, reducing uncertainty and aligning the project's goals more closely with user needs and expectations. Additionally, it helps in validating concepts and testing for feasibility, ultimately facilitating a more informed and adaptable development process . Without prototyping, the Spiral Model would lack an essential tool for addressing change and complexity effectively.

The "big-bang" integration characteristic of the Waterfall Model significantly diminishes its effectiveness for complex software development projects. It postpones system integration until all components are fully developed, which can make it difficult to pinpoint integration issues early on . This approach heightens the risk of major integration problems surfacing late during development, potentially leading to increased rework and delays. Complex projects, which benefit from iterative and continuous integration, find this approach particularly challenging as it extends the time taken to identify and resolve inter-module dependencies and compatibility issues .

The rigidity of the Waterfall Model is largely unsuitable for dynamic projects due to its strict sequential phase completion approach. In this model, each phase must be completed and signed off before the next begins, and there is no overlap between phases . This lack of flexibility means changes in requirements cannot easily be incorporated once a phase is complete, resulting in potential project delays or increased costs if requirements evolve. Additionally, the "big-bang" integration at the end does not allow for early detection of integration issues, which is a significant drawback for projects that may develop dynamically over time .

The effectiveness of the Spiral Model heavily relies on the expertise in risk analysis due to its risk-driven nature. Risk assessment and reduction are integral parts of each iteration, requiring a deep understanding of potential project risks and how to mitigate them. If the team lacks sufficient expertise in risk analysis, it may misidentify risks or inadequately assess their impact, making the entire model less effective and potentially leading to project failures or costly delays . Therefore, the presence of skilled personnel in risk management is crucial for the successful implementation of the Spiral Model's strategies .

You might also like