Software Engineering Project
Software Engineering Project
Lab Manual
Software Engineering (3150711)
A.Y. – 2023-24 (ODD)
Semester – V
Vision of the Institute
To be an exemplary institute, transforming students into competent
professionals with human values.
Experiment 1:
Identifying the requirements from the problem statement via role play.
Requirements are:
1.User Needs:
● Essential conditions or functionalities that users require to address a problem
or accomplish a specific goal.
2.System Criteria:
● Conditions or capabilities that a system or its components must possess to
fulfil contractual agreements, standards, specifications, or other formal mandates.
Types of requirements:
Functional requirements:
These are the requirements that the end user specifically demands as basic facilities
that the system should offer. All these functionalities need to be necessarily
incorporated into the system as a part of the contract. These are represented or stated
in the form of input to be given to the system, the operation performed and the output
expected.
Non-functional requirements:
These are basically the quality constraints that the system must satisfy according to the
project contract. The priority or extent to which these factors are implemented varies
from one project to another. They are also called non-behavioral requirements.
230470107209
Abstracts:
Virtual Skill Swap is a web-based platform that enables users to exchange skills by
connecting with others who want to learn and teach. Instead of traditional paid courses,
users list the skills they can teach and those they wish to learn. The system matches users
based on their preferences, allowing them to schedule sessions and grow together
through peer-to-peer [Link] project promotes accessible, collaborative, and
cost-free learning, built using modern web technologies for a seamless user experience.
Functional requirements:
Profile Management:
●Users can create and update their profiles.
●Profiles must display skills offered and skills wanted.
●Option to add availability, bio, and profile picture.
Messaging System:
●Users can chat within the platform to discuss session details.
●Optional: Video chat integration for live sessions.
Notifications:
●Email or in-app notifications for new matches, messages, and session reminders.
230470107209
Dashboard:
●Users can view upcoming sessions, pending requests, and profile insights.
Admin Panel:
●Admin can manage users, reported content, and monitor platform activity.
●Option to manage skill categories and feedback.
230470107209
Non-functional requirements:
Performance
●The system should respond to user actions (e.g., login, matching, messaging) within 2
seconds.
●It should support at least 100 concurrent users without noticeable slowdown.
Scalability
●The architecture should allow easy scaling to accommodate more users and sessions in
the future.
●Use of scalable backend (e.g., [Link] with MongoDB/MySQL) and hosting (e.g., Cloud
services).
Usability
●The platform must have a clean, intuitive, and responsive UI suitable for all devices
(mobile, tablet, desktop).
●Clear navigation, minimal learning curve, and accessible design.
Security
●User data must be securely stored and transmitted (use of HTTPS and password
encryption).
●Role-based access control (e.g., users vs. admin).
●Protection against common attacks like SQL injection, XSS, and CSRF.
Maintainability
●Codebase should be modular and well-documented to support future updates or
bug fixes.
●Follows coding standards and version control practices (e.g., Git).
Portability
●The application should be deployable across different environments (e.g.,
Windows, Linux servers).
●Should run smoothly on all modern web browsers.
230470107209
Experiment 2:
Prepare SRS document for identify problem statement.
What is SRS?
Every software has specific goals and serves particular purposes. Each goal and
purpose translate a process or several processes that the software aims to solve or
to automate. To deliver the right software product, we should define well the
software from the beginning.
Why SRS?
In order to fully understand one’s project, it is very important that they come up
with a SRS listing out their requirements, how are they going to meet it and how
will they complete the project.
It helps the team to save upon their time as they are able to comprehend how are
going to go about the project. Doing this also enables the team to find out about the
limitations and risks early on.
Facilitating reviews.
Describing the scope of work.
Providing a reference to software designers (i.e. navigation aids, document).
230470107209
Characteristics of SRS:
1.Introduction
1)Purpose
2)Document conventions
▪ Version History:
o Version: 2.0.0
o Date: 15th July, 2025
o Author: Zaheen Vora and Mahek Zinzuvadiya
o Description: Bugs and minor error fixing. Also, low data
consumption.
▪ Testers: In order to have an exact list of the features and functions that
has to respond according to requirements and provided diagrams.
▪ End Users: In order to get familiar with the idea of the project and
suggest other features that would make it even more functional.
▪ This project is a prototype for The Virtual Skills Swap Website. This has
been implemented under the guidance of college professors.
230470107209
4)Project Scope
5)References
1. [Link]
2. [Link]
3. [Link]
4. [Link]
230470107209
1)Product Perspective
2)Product Features
▪ User registration and login
▪ Session scheduling
▪ User dashboard
▪ Notifications
▪ Admin panel
4)Operating environment
▪ Operating System: Windows, Mac OS, Linux, Ubuntu
▪ RAM: 2 GB or above
▪ Front-end:
o HTML
o CSS
o JavaScript
▪ Back-end
o JAVA or PHP
o MySQL
3.System features
1)functional requirements
▪ Skill Selection:
Users can select or enter the skills they want to learn and the skills they are
willing to teach.
▪ User Matching:
The system automatically matches users based on mutual skill interests and
availability.
▪ Profile Management:
Users can create and update their profiles, including personal info, skills,
availability, and a short bio.
▪ Session Scheduling:
230470107209
Users can set their available time slots and schedule one-on-one learning
sessions with matched users.
▪ In-app Messaging:
Matched users can chat securely within the platform to plan and coordinate
learning sessions.
▪ Notifications:
Users receive alerts for new matches, messages, session reminders, and
request statuses.
▪ Admin Panel:
Admin can manage user accounts, reported issues, and system content (like
skill categories).
230470107209
1)User Interfaces
▪ With combination of front and back-end this product will easily usable
and perform task related to service provider.
2)Hardware Interfaces
▪ GPS
▪ 2GB Ram
▪ Low memory
▪ Internet
3)Software Interfaces
4)Communication Interfaces
▪ All communication is carried out through online mode via the web
platform.
▪ Users can send and receive messages through the in-app chat system after a
successful skill match.
▪ System notifications are used to confirm:
▪ Session scheduling
230470107209
▪ Session reminders
▪ Feedback received
5.Non-functional Requirements
1)Performance Requirements
▪ The system will manage skill swap bookings based on user-defined
conditions (skills, availability, location, etc.).
▪ It will efficiently perform searching and matching operations using filters
like skill type, user rating, and time slots.
▪ The platform will be entirely online, accessible through modern web
browsers.
▪ Response time for key actions (e.g., search, request, messaging) should be
within 2–3 seconds under normal load.
2)Safety Requirements
▪ Users will have access to a "Forgot Password" feature to recover their
account securely.
▪ Inactive login sessions will automatically expire after 5–10 days for
security, requiring the user to log in again.
3)Security Requirements
▪ The system uses authentication mechanisms to ensure that only
registered users can log in and access the platform.
▪ Unauthorized access is prevented through login validation, session
management, and role-based access controls.
▪ Sensitive user data, including passwords, will be encrypted and securely
stored
▪ Session expiration and logout mechanisms are implemented to enhance
security.
▪ Admin access is restricted and protected through elevated permissions.
Experiment 3:
Estimation of project matrixes for problem statement.
A software endeavour encompasses more than crafting a mere few hundred lines of
code to fulfil a specific goal. The scale of a software project is notably extensive,
potentially spanning multiple years for fruition. Nevertheless, the term "extensive"
might only provide a somewhat imprecise qualitative insight. Similar to other fields of
science and engineering, there exists a curiosity to quantify the intricacy of a project.
Thus, a pivotal task during the project's planning stage involves predicting diverse
project metrics to facilitate well-informed decisions.
COCOMO:
Software Project a b
Intermediate Model:
1)Product attributes –
● Required software reliability extent
● Size of the application database
● The complexity of the product
2)Project attributes –
● Use of software tools
● Application of software engineering methods
● Required development schedule.
230470107209
3)Hardware attributes –
● Memory constraints
● Run-time performance constraints
● The volatility of the virtual machine environment
● Required turnabout time
4)Personnel attributes –
● Analyst capability
● Software engineering capability
● Applications experience
● Virtual machine experience
● Programming language experience
Software
Project a b
Embedded Model:
.
Detailed COCOMO incorporates all characteristics of the intermediate
version with an assessment of the cost driver’s impact on each step of the
software engineering process.
The detailed model uses different effort multipliers for each cost driver attribute.
The Six phases of detailed COCOMO are:
1. Planning and requirements
2. System design
3. Detailed design
4. Module code and test
5. Integration and test
6. Cost Constructive model.
230470107209
Case Study :
Virtual Skills Swap
1. Project Description :
● The project involves developing a platform where users can exchange
skills by teaching and learning from one another. Users can list the skills
they are willing to teach (e.g., guitar, graphic design, coding) and the
skills they want to learn. The system matches users based on these
preferences.
● Users can browse available skill partners, check their expertise and
availability, and schedule learning sessions online. The platform
promotes free, peer-to-peer learning and aims to make education more
accessible and collaborative.z
7. Summary :
● Effort: Approximately 20.389 person-months.
● Development Time: Approximately 7.475 month
So, the project can be categorized as semi-detached cocomo model and is supposed to
be completed by 8 months.
230470107209
Experiment 4:
Modelling UML Use Case Diagrams and Capturing Use Case Scenarios.
A use case diagram is a visual representation of how a system interacts with its users
(actors) and the various functions or features (use cases) it provides. Use case
diagrams are commonly used in software engineering and systems analysis to depict
the high-level functionality of a system.
3. Relationships:
▪ Lines connecting actors and use cases represent relationships or
interactions.
▪ There are mainly two types of relationships: association and
include/extend relationships.
▪ Association: A solid line connecting an actor and a use case indicates that
the actor interacts with that use case.
▪ Include Relationship: A dashed line with an arrow pointing to an included
use case indicates that the behaviour of one-use case is included in another
use case.
▪ Extend Relationship: A dashed line with an arrow pointing to an extending
use case indicates that the behaviour of one-use case can be extended by
another use case under certain conditions.
5. Generalization/Inheritance
▪ Actors or use cases can be organized into a hierarchy using generalization
relationships.
▪ This is represented by a solid line with an arrowhead pointing to the more
general actor or use case.
6. Multiplicity:
▪ Multiplicity notations can be added to relationships to indicate how
many instances of an actor can be associated with a use case and vice
versa.
▪ For example, "1..*" means one or more instances, while "1" means exactly
one instance.
Notations :
1. Actors:
1) Learner: Individuals looking to learn new skills.
2) Teacher: Individuals that teaches skills in return of other skills .
3) Admin: Manages the users and the website.
230470107209
1) Registration:
✔ Actor: Learner,Teacher
✔ Description: Users create accounts by providing personal information,
including name, email, and password. This step ensures user access to the
platform.
2) Login:
✔ Actor: Learner,Teacher
✔ Description: Registered users enter their credentials (username/email and
password) to access the platform's features and their personalized
accounts.
4) Verification:
✔ Actor: Learner,Teacher
✔ Description: After registration, users receive a verification email. Clicking
the link confirms their email addresses. Additionally, email is used for
important notifications.
9) Chat:
✔ Actor: Learner,Teacher
✔ Description: The users can chat with each other when they want to
schedule the session of learning and can solve doubts.
10) Feedback :
✔ Actor: Learner,Teacher,Admin
✔ Description: The users can give the feedback about how was the
experience of learning and teaching skills and the admin can work on the
changes by seeing the feedback.
✔ Description: User can search the skills they want to learn by browsing the
skills.
14) Logout:
✔ Actor: Learner,Teacher
Experiment 5:
E-R Modelling from the Problem Statements.
Components of ER diagram:
ER diagram Notations:
1. Entity:
▪ Entities are objects or concepts that represent important data. They are
typically nouns, e.g. customer, supervisor, location, or promotion.
▪ Strong entities exist independently from other entity types. They always
possess one or more attributes that uniquely distinguish each occurrence of
the entity.
▪ Weak entities depend on some other entity type. They don't possess unique
attributes (also known as a primary key) and have no meaning in the
diagram without depending on another entity.
230470107209
2. Relationship:
▪ Relationships are meaningful associations between or among entities. They
are usually verbs, e.g. assign, associate, or track.
▪ Weak relationships, or identifying relationships, are connections that exist
between a weak entity type and its owner.
3. Attributes:
▪ Attributes are characteristics of an entity, a many-to-many relationship, or
a one-to- one relationship.
▪ Multivalued attributes are those that are capable of taking on more than
one value.
▪ Derived attributes are attributes whose value can be calculated from
related attribute values.
4. Association:
ER diagram
Entities:
1. User:
✔ Attributes: user_id (primary key),Name,Email,profile_id
2. Admin:
✔ Attributes: admin_id(primary key),user_id(foreign key)
3. Profile:
✔ Attributes:profile_id(primary key),Bio,Skills,Profile Pic
4. Message:
✔ Attributes: message_id(primary key),sender_id(foreign key),receiver_id(foreign
key),Content
230470107209
5. Skills:
✔ Attributes: skill_id(primary key),Skill Name,Description
6. Request:
✔ Attributes: request_id(primary key),sender_rid(foreign
key),receiver_rid(foreign key),skill_id(foreign key),Status
7. Feedback:
✔ Attributes: feedback_id(primary key),from_user_id,to_user_id,Rating,Comment
230470107209
Relationships:
Experiment 6:
Identifying Domain Classes from the Problem Statements.
Class diagram:
Class Notation:
A class notation consists of three parts:
1.Class Name:
The name of the class appears in the first partition.
2.Class Attributes:
Attributes are shown in the second partition.
The attribute type is shown after the colon.
Attributes map onto member variables (data members) in code.
Classes:
1. User
✔ Attributes: user_id(PK) : int, Name : String, Email : String, profile_id(FK) :int
✔ Methods:
● register()
● login()
● updateProfile()
2. Admin
✔ Attributes:admin_id(PK) : int, user_id (FK) : int
✔ Methods:
230470107209
● approveUser()
● removeUser()
● viewAllUsers()
● manageFeedback()
3. Profile
✔ Attributes: profile_id(PK) : int, Bio : String, Skills : String, Profile Pic : String
✔ Methods:
● updateBio()
● updateSkills()
● updateProfilePic()
● viewProfile()
4. Message
✔ Attributes: message_id(PK) : int, sender_id : int, receiver_id : int, Content : String
✔ Methods:
● sendMessage()
● getMessageByUser()
● deleteMessage()
5. Skills
✔ Attributes: skill_id(PK) : int, Skill Name : String, Description : String
✔ Methods:
● addSkill()
● updateSkill()
● deleteSkill()
● getAllSkills()
6. Feedback
✔ Attributes: feedback_id(PK) : int,from_user_id : int, to_user_id : int, Rating : int,
Comment : String
✔ Methods:
● addFeedback()
● updateFeedback()
● deleteFeedback()
● viewFeedbackForUser()
7. Request
✔ Attributes: request_id(PK) : int, sender_rid : int, receiver_rid : int, Status :
String, skill_id (FK) : int
✔ Methods:
● createRequest()
● updateStatus()
● getRequestsByUser()
230470107209
Relationships:
Experiment 7:
State chart and Activity Modelling for problem statement.
Purpose
To model the dynamic aspect of a system.
To model the life time of a reactive system.
To describe different states of an object during its life time.
Define a state machine to model the states of an object.
230470107209
Activity diagram:
Here are some key elements and symbols commonly used in activity diagrams:
1. Initial Node: Represents the starting point of the activity diagram and is usually
depicted as a solid circle.
2. Activity: Represents a specific action or task within the process. It is usually
shown as a rounded rectangle with a verb or brief description inside.
3. Decision Node (Diamond): Represents a decision point in the process where one
or more alternative paths can be taken. Depending on the outcome of the decision,
the flow follows different paths.
4. Merge Node (Diamond): Represents the merging of multiple flow paths into a
single path after a decision has been made.
5. Fork Node (Bar): Indicates the parallel execution of multiple activities or paths. It
splits the flow into two or more concurrent paths.
6. Join Node (Bar): Indicates the convergence of multiple parallel paths into a single
path.
7. Final Node: Represents the end point of the activity diagram and is usually
depicted as a solid circle with a border.
8. Control Flow Arrow: Arrows connecting various elements to show the sequence
or flow of activities. These arrows indicate the order in which activities are
executed or decisions are made.
230470107209
230470107209
Experiment 8:
Modelling UML Class Diagrams and Sequence diagrams for problem
statement.
In software engineering, A UML class diagram is a visual tool for illustrating class
structure and relationships in software. It's crucial in object-oriented system
design and documentation.
Sequence diagram:
Experiment 9:
Modelling Data Flow Diagrams for problem statement.
DFD diagram:
Symbols of DFD:
Using any convention’s DFD rules or guidelines, the symbols depict the four components
of data flow diagrams.
2. Process:
Any process that changes the data, producing an output. It might perform
computations, or sort data based on logic, or direct the data flow based on
business rules.
DFD Level 0
Level 0 DFDs, also known as context diagrams, are the most basic data flow
diagrams.
They provide a broad view that is easily digestible but offers little detail. Level 0
data flow diagrams show a single process node and its connections to external
entities.
230470107209
DFD Level 1
Level 1 DFDs are still a general overview, but they go into more detail than a
context diagram.
In a level 1 data flow diagram, the single process node from the context diagram is
broken down into sub processes.
As these processes are added, the diagram will need additional data flows and
data stores to link them together.
230470107209
DFD Level 2:
Level 2 DFDs simply break processes down into more detailed sub processes.
Level 3 data flow diagrams are detailed enough that it doesn’t usually make
sense to break them down further.
230470107209
Experiment 10:
Estimation of Test Coverage Metrics and Structural Complexity for problem
statement.
Introduction:
A visual representation of flow of control within a program may help the developer
to perform static analysis of his code.
One could break down his program into multiple basic blocks, and connect them
with directed edges to draw a Control Flow Graph (CFG). A CFG of a program helps
in identifying how complex a program is. It also helps to estimate the maximum
number of test cases one might require to test the code.
In this experiment, we will learn about basic blocks and how to draw a CFG using
them. We would look into paths and linearly independent paths in context of a CFG.
Finally, we would learn about McCabe's cyclomatic complexity, and classify a given
program based on that.
Theory:-
A control flow graph (CFG) is a directed graph where the nodes represent different
instructions of a program, and the edges define the sequence of execution of such
instructions. Figure 1 shows a small snippet of code (compute the square of an
integer) along with it's CFG. For simplicity, each node in the CFG has been labeled
with the line numbers of the program containing the instructions.
A directed edge from node #1 to node #2 in figure 1 implies that after execution of
the first statement, the control of execution is transferred to the second instruction.
int x = 10, x_2 = 0; x_2 = x * x; return x_2;
A real life application seldom could be written in a few lines. In fact, it might consist
of thousand of lines. A CFG for such a program is likely to become very large, and it
would contain mostly straight-line connections. To simplify such a graph different
sequential statements could be grouped together to form a basic block.
Let G be a given CFG. Let E denote the number of edges, and N denote the number of
nodes. Let V(G) denote the Cyclomatic complexity for the CFG. V(G) can be obtained
in either of the following three ways:
A quick summary of how different types of statements affect V(G) could be found in.
Once the complexities of individual modules of a program are known, complexity of
the program (or class) could be determined by,
V(G) = SUM( V(Gi) ) - COUNT( V(Gi) ) + 1
where COUNT( V(Gi) ) gives the total number of procedures (methods) in the program
(class).
It has been suggested that the Cyclomatic complexity of any module should not
exceed. Doing so would make a module difficult to understand for humans.
If any module is found to have Cyclomatic complexity greater than 10, the module
should be considered for redesign.
Note that, a high value of V(G) is possible for a given module if it contains multiple
cases in C like switch-casestatements.
McCabe had exempted such modules from the limit of V(G) as 10.
Merits:
McCabe's Cyclomatic complexity has certain advantages:
• Independent of programming language
• Helps in risk analysis during development or maintenance phase
• Gives an idea about the maximum number of test cases to be executed (hence,
the required effort) for a given module
230470107209
Demerits:
Cyclomatic complexity doesn't reflect on cohesion and coupling of modules.
McCabe's Cyclomatic complexity was originally proposed for procedural languages.
One may look in to get an idea of how the complexity calculation could be modified
for object-oriented languages. In fact, one may also wish to make use of Chidamber-
Kemerer metrics (or any other similar metric), which has been designed for object-
oriented programming.
Cyclomatic complexity is a source code complexity measurement that is being
correlated to a number of coding errors.
It is calculated by developing a Control Flow Graph of the code that measures the
number of linearly-independent paths through a program module.
Lower the Program's cyclomatic complexity, lower the risk to modify and easier to
understand.
It can be represented using the below formula:
Example :
IF A = 10 THEN
IF B > C
THEN A = B
ELS
EA=C
ENDIF
ENDIF
Print A
Print B
Print C
230470107209
The Cyclomatic complexity is calculated using the above control flow diagram that
shows seven nodes(shapes) and eight edges (lines), hence the
Cyclomatic complexity = E - N + 2*P
Cyclomatic complexity is 8 - 7 + 2*1 = 3
230470107209
Experiment 11:
Designing Test Suites
Introduction
Development of a new software, like any other product, remains incomplete until it
subjected to exhaustive tests. The primary objective of testing is not to verify that all
desired features have been implemented correctly. However, it also includes
verification of the software behaviour in case of “bad inputs.”
In this experiment we discuss in brief about different types of testing, and provide
mechanisms to have hands-on experience on unit testing.
IEEE 829-1998 is known as the 829 Standard for Software Test Documentation. It is
an IEEE
standard that specifies the form of a set of documents for use in software testing.
There are other different standards discussed below.
▪ IEEE 1008, a standard for unit testing
▪ IEEE 1012, a standard for Software Verification and Validation
▪ IEEE 1028, a standard for software inspections
▪ IEEE 1044, a standard for the classification of software anomalies
230470107209
Testing Frameworks
There are many reasons for why we should test software, such as:
Software testing identifies the software faults. The removal of faults helps reduce the
number of system failures. Reducing failures improves the reliability and the quality
of the systems.
Software testing can also improves the other system qualities such as maintainability,
usability, and testability.
In order to meet the condition that the last few years of the 20th century systems had
to be shown to be free from the ‘millennium bug’.
In order to meet industry specific standards such as the Aerospace, Missile and
Railway Signaling standards.
Testing is done in every stage of software development life cycle, but the testing done
at each level of software development is different in nature and has different
objectives. There are different types of testing, such as stress testing, volume testing,
configuration testing, compatibility testing, recovery testing, maintenance testing,
documentation testing, and usability testing.
Software testing are mainlyof following types
1. Unit Testing
2. Integration Testing
3. System Testing
Unit Testing
Unit testing is done at the lowest level. It tests the basic unit of software, that is the
smallest testable piece of software. The individual component or unit of a program
are tested in unit testing. Unit testing are of two types.
Black box testing: This is also known as functional testing, where the test cases are
designed based on input output values only. There are many types of Black Box
Testing but following are the prominent ones.
Equivalence class partitioning: In this approach, the domain of input values to a
program is divided into a set of equivalence classes. e.g. Consider a software
program that computes whether an integer number is even or not that is in the
range of 0 to 10. Determine the equivalence class test suite. There are three
equivalence classes for this program. - The set of negative integer - The integers
in the range 0 to 10 - The integer larger than 10
Boundary value analysis: In this approach, while designing the test cases, the
values at boundaries of different equivalence classes are taken into consideration.
e.g. In the above given example as in equivalence class partitioning, a boundary
values based test suite is { 0, -1, 10, 11 }
White box testing: It is also known as structural testing. In this testing, test cases are
designed on the basis of examination of the code. This testing is performed based on
the knowledge of how the system is implemented. It includes analyzing data flow,
control flow, information flow, coding practices, exception and error handling within
the system, to test the intended and unintended software behavior. White box testing
can be performed to validate whether code implementation follows intended design,
to validate implemented security functionality, and to uncover exploitable
vulnerabilities. This testing requires access to the source code. Though white box
testing can be performed any time in the life cycle after the code is developed, but it is
a good practice to perform white box testing during the unit testing phase.
230470107209
Integration Testing
Integration testing is performed when two or more tested units are combined into a
larger structure. The main objective of this testing is to check whether the different
modules of a program interface with each other properly or not. This testing is mainly
of two types:
1. Top-down approach
2. Bottom-up approach
In bottom-up approach, each subsystem is tested separately and then the full system
is tested.
But the top-down integration testing starts with the main routine and one or two
subordinate routines in the system. After the top-level ‘skeleton’ has been tested, the
immediately subroutines of the ‘skeleton’ are combined with it and tested.
System Testing
System testing tends to affirm the end-to-end quality of the entire system. System
testing is often based on the functional / requirement specification of the system.
Non-functional quality attributes, such as reliability, security, and maintainability are
also checked.
There arethree types of system testing
Alpha testing is done by the developers who develop the software. This testing is
also done by the client or an outsider with the presence of developer or we can
say tester.
Beta testing is done by very few number of end users before the delivery, where
the change requests are fixed, if the user gives any feedback or reports any type
of defect.
User Acceptance testing is also another level of the system testing process where
the system is tested for acceptability. This test evaluates the system’s compliance
with the client requirements and assess whether it is acceptable for software
delivery.
An error correction may introduce new errors. Therefore, after every round of error-
fixing, another testing is carried out, i.e. called regression testing. Regression testing
does not belong to either unit testing, integration testing, or system testing, instead, it
is a separate dimension to these three forms of testing.
Regression Testing
The purpose of regression testing is to ensure that bug fixes and new functionality
introduced in a software do not adversely affect the unmodified parts of the program.
Regression testing is an important activity at both testing and maintenance phases.
When a piece of software is modified, it is necessary to ensure that the quality of the
software is preserved. To this end, regression testing is to retest the software using
the test cases selected from the original test suite.
230470107209
Example: Write a program to calculate the square of a number in the range 1-100
#include
<stdio.h> Int
main(){
int n, res;
printf(“Enter a number:
“); scanf(“%d”, &n);
if (n >= 1 && n <= 100) {
res = n * n;
printf(“\n Square of %d is %d\n”;, n, res);
}
else if (n<= 0 || n > 100)
printf(“Beyond the range”);
return 0;
}
Output:
Inputs Outputs
I1: -2 O1: Beyond the
range I2: 0 O2: Beyond the
range I3: 1 O3: Square of 1
is 1
I4: 100 O4: Square of 100 is 10000 I5:
101 O5: Beyond the range
I6: 4 O6: Square of 4 is 16
I7: 62 O7: Square of 62 is 3844
Test Cases
T1: {I1 ,O1}
T2: {I2 ,O2}
T3: {I3, O3}
T4: {I4, O4}
T5: {I5, O5}
T6: {I6, O6}
T7: {I7, O7}
Some Remarks:
Testing is not a phase that occurs after coding; it's an ongoing process that begins
early, even before coding is done. Test cases are prepared based on the finalized
requirements in the SRS document to verify system features. Good testing not only
validates correct software functioning but also identifies any existing bugs. It's a
continuous, proactive practice integral to the entire software development process
from the start.