ST
ST
Ex. No: 1 Create Test Cases for the User Login Functionality of the
Date: E-commerce site
AIM:
The aim of this experiment is to develop a comprehensive test plan for testing the functionality and
usability of the e-commerce web/mobile application [Link]
PROCEDURE:
⮚ Step 1: Understand Requirements: Gather and review the functional and non-functional
requirements of the E-commerce application.
⮚ Step 2: Identify Modules: Break down the application into testable modules like Login,
Search, Product Page, Cart, Checkout, Payment, etc.
⮚ Step 3: Define Test Scenarios: Based on the modules, create high-level test scenarios.
⮚ Step 4: Write Test Cases: Convert scenarios into detailed test cases with clear inputs and
expected outputs.
⮚ Step 5: Assign Priorities: Tag each test case as High, Medium, or Low priority.
⮚ Step 6: Review and Approve: Peer review the test cases for accuracy and completeness.
⮚ Step 7: Execute and Report: Execute the test cases in a test environment and report bugs if any.
⮚ Step 8: Retest & Regression: Retest after fixes and run regression tests to ensure nothing else
is broken.
RESULT:
The designed test cases for the E-commerce application were successfully executed. All the
functionalities including login, product search, cart operations, checkout process, payment validation,
and order history retrieval performed as expected. Each test case met the expected outcomes without
any critical failures. Hence, the E-commerce application passed the basic functional testing phase.
Ex. No: 2 Design A Detailed Test Scenario Matrix that Covers all Potential Edge Cases
for the Payment Module in the E-Commerce Site
Date:
AIM:
To design a detailed test scenario matrix that covers all potential edge cases for the payment module
in the e-commerce site.
PROCEDURE:
RESULT:
All edge cases for the Payment Module were tested successfully in a controlled environment. The
module handled valid transactions smoothly and gracefully managed all invalid inputs and edge cases
with appropriate error handling. No critical bugs were encountered, and the system met all the
functional and non-functional requirements. Thus, the payment module passed the testing phase.
AIM:
The aim of white-box testing is to verify the internal logic, flow, and code structure of the application
to ensure that it functions correctly, efficiently, and securely. By having full access to the source code,
the tester can design test cases that check the execution of specific code paths, identify potential
vulnerabilities, and detect logical errors or performance bottlenecks.
PROCEDURE:
o Review the source code and understand the architecture, design, and functionality of
the application.
o Identify all the critical functions, methods, and code paths that need to be tested.
o Develop test cases based on the internal logic of the code. This includes conditions,
loops, statements, and branches.
o Techniques like Statement Coverage, Branch Coverage, Path Coverage, and Loop
Testing can be used to design test cases.
o Execute the test cases on the application to ensure all logic and code paths are
thoroughly tested.
o Track the output and compare it against expected results to determine correctness.
o Review the code for security vulnerabilities, potential performance issues, and
inefficient code.
o Check for logical errors, unused variables, and redundant code.
o Report any defects or vulnerabilities found during testing, including issues related to
incorrect logic, poor performance, or security flaws.
o Based on the findings, suggest code optimizations or refactor the code to improve
performance or security.
o After fixing the issues, rerun the tests to ensure the code modifications did not affect
the existing functionality.
CODE:
Backend:
Frontend:
// frontend/src/[Link]
import React, { useState } from 'react';
import axios from 'axios';
function App() {
const [username, setUsername] = useState('');
const [password, setPassword] = useState('');
const [token, setToken] = useState('');
const [message, setMessage] = useState('');
return (
<div>
<h2>Login</h2>
<input type='text' placeholder='Username' value={username}
onChange={(e) => setUsername([Link])} />
<input type='password' placeholder='Password' value={password}
onChange={(e) => setPassword([Link])} />
<button onClick={login}>Login</button>
<p>{message}</p>
{token && <p>Logged in! Token: {token}</p>}
</div>
);
}
OUTPUT:
RESULT:
White-box testing ensures that every part of the code, including statements, branches, and loops, is
tested for correctness and efficiency. By evaluating the internal logic and execution paths, it helps
identify errors, vulnerabilities, and performance issues. This approach improves code reliability,
security, and overall software quality.
Ex. No: 4 Apply Regression Testing Techniques to Validate the Changes made to a
Web-Based Project Management Application
Date:
AIM:
The aim of this experiment is to apply regression testing techniques to validate and ensure that recent
code changes in the web-based project management application have not adversely affected the
existing functionalities.
PROCEDURE:
⮚ Step 1: Identify the recent changes or updates made to the project management application
(e.g., new feature addition, bug fixes, UI changes).
⮚ Step 2: Define the scope of regression testing by identifying the core modules and
functionalities that could be impacted by the recent changes (e.g., task assignment, project
tracking, calendar integration).
⮚ Step 3: Prepare and update a regression test suite comprising previously executed test cases
that validate the unchanged parts of the system.
⮚ Step 4: Report the findings to the development team for necessary code corrections or
optimizations.
⮚ Step 5: Retest the affected modules after fixes are applied to confirm stability and revalidate
the regression suite if needed.
⮚ Step 6: Finalize and submit the regression testing report summarizing the scope, execution,
results, issues found, and resolution status.
Status
Test Case Test Expected Actual
Module Test Steps (Pass/Fail
ID Scenario Result Result
)
1. Navigate
to login
Validate user page
User should be
TC_REG_ login with 2. Enter As
Login redirected to Pass
01 valid valid email Expected
dashboard page
credentials & password
3. Click
Login
1. Go to
Project
2. Click Task should
TC_REG_ Task Assign a task "Assign appear in the As
Pass
03 Assignment to a user Task" assigned user’s Expected
3. Select task list
user &
submit
Verify 1. Login All widgets and
TC_REG_ dashboard 2. Navigate summary boxes As
Dashboard Pass
04 loads with to should display Expected
widgets Dashboard correctly
1. Open task
Add a 2. Add Comment Commen
TC_REG_
Comments comment to a comment should appear t not Fail
05
task 3. Click under the task saving
Post
1. Assign
Receive
task Notification
TC_REG_ Notification notification As
2. Check should appear Pass
06 s on task Expected
notification instantly
assignment
bell
OUTPUT:
Module Tested: Login, Project Management, Task Assignment, Dashboard, Comments, Notifications
RESULT:
The regression testing was successfully conducted on the updated web-based project management
application. The test suite included major functionalities such as login, project creation, task
assignment, dashboard verification, comments, and notifications.
Ex. No: 5 Design a New Regression Test Plan for a Mobile Banking Application after
Date: Adding a New Feature
AIM:
To design and execute a Regression Test Plan for a Mobile Banking Application to ensure that the
new feature (e.g., QR Code Payments or Budget Tracker) does not affect existing functionalities and
integrates smoothly within the system.
SOFTWARE REQUIRED:
PROCEDURE:
Step 1: Analyze the impact of the newly added feature on existing modules.
Step 2: Identify core modules for regression:
● Login & Authentication
● Account Overview
● Fund Transfers
● Security Features
● Cross-Platform Functionality
Step 3: Prepare test environment:
● Configure environment similar to production.
● Include real devices/emulators for testing UI responsiveness.
Step 4: Compare and contrast their roles, highlighting differences in scope, decision-making, and
execution.
Step 5: Execute tests:
● Run JUnit test cases manually or via script.
● Perform automation if applicable.
● Log all results and track bugs in a defect tracking tool.
Step 6: Verify and validate results:
● Retest failed cases.
● Run performance and security checks.
Step 7: Evaluate exit criteria based on severity of remaining issues.
PROGRAM:
@Test
public void testAddition() {
assertEquals(10, [Link](5, 5));
}
@Test
public void testSubtraction() {
assertEquals(0, [Link](5, 5));
}
@Test
public void testMultiplication() {
assertEquals(25, [Link](5, 5));
}
@Test
public void testDivision() {
assertEquals(1, [Link](5, 5));
}
@Test(expected = [Link])
public void testDivideByZero() {
[Link](5, 0);
}
}
public void testSubtraction() {
assertEquals(0, [Link](5, 5));
}
public void testMultiplication() {
assertEquals(25, [Link](5, 5));
}
public void testDivision() {
assertEquals(1, [Link](5, 5));
}
@Test(expected = [Link])
public void testDivideByZero() {
[Link](5, 0);
}
}
OUTPUT:
JUnit version 4.13.2
Time: 0.012
OK (5 tests)
RESULT:
All existing test cases passed successfully. Regression testing confirmed that the new feature did not
break or alter core functionalities of the mobile banking [Link] system is stable and ready for
release.
Ex. No: 6
White-Box Testing of Banking Transaction Function
Date:
AIM:
To implement white-box testing for a banking system by executing unit tests, analysing code
complexity, and performing coverage testing on the transaction (transfer Money) functionality.
SOFTWARE REQUIRED:
PROCEDURE:
o Invalid input
o Non-existing accounts
o Insufficient balance
o Successful transaction
⮚ Step 4: Perform code complexity analysis using ESLint to ensure function simplicity and
maintainability.
⮚ Step 5:Run coverage testing using Jest to measure the percentage of code exercised.
⮚ Step 6: Refactor code if complexity or line limits are exceeded.
⮚ Step 7:Re-run tests to ensure correctness after changes.
PROGRAM:
const db = require('./database');
async function transferMoney(fromAccount, toAccount, amount) {
if (!fromAccount || !toAccount || amount <= 0) {
throw new Error('Invalid transaction details');
}
const sender = await [Link](fromAccount);
const receiver = await [Link](toAccount);
if (!sender || !receiver) {
return { status: 400, message: 'Invalid account details' };
}
if ([Link] < amount) {
return { status: 400, message: 'Insufficient funds' };
}
[Link] -= amount;
[Link] += amount;
await [Link](sender);
await [Link](receiver);
return { status: 200, message: 'Transfer successful' };
}
[Link] = { transferMoney };
{
"env": {
"node": true,
"jest": true
},
"extends": "eslint:recommended",
"rules": {
"complexity": ["error", { "max": 5 }],
"max-depth": ["error", 4],
"max-lines-per-function": ["error", 20]
}
}
OUTPUT:
RESULT:
White-box testing of the transferMoney function helps ensure that the internal logic, control flows,
and data handling mechanisms operate correctly. This includes validating edge cases, reducing
function complexity, and maximizing test coverage to create a secure and maintainable transaction
system.
Ex. No: 7 Apply Test Management Techniques to Create a Detailed Test Plan for a
Date: Specific Module of a Mobile Banking Application
AIM:
To apply test management techniques and create a detailed test plan for the Fund Transfer module of a
Mobile Banking Application.
PROCEDURE:
⮚ Step 1: Identify the Scope: Determine the scope of testing, including the features and
functionalities that need to be tested.
⮚ Step 2: Define Test Objectives: Specify the primary objectives of testing, such as functional
testing, usability testing, performance testing, security testing, etc.
⮚ Step 3: Identify Test Environment: Define the platforms, browsers, devices, and operating
systems on which the application will be tested.
⮚ Step 4: Determine Test Deliverables: Decide on the documents and artifacts that will be
generated during the testing process, such as test cases, test reports, and defect logs.
⮚ Step 5: Test Case Design: Prepare detailed test cases based on the requirements and
functionalities of the e-commerce application.
⮚ Step 6: Test Data Setup: Arrange test data required for executing the test cases effectively.
⮚ Step 7: Test Execution:
⮚ Run the prepared test cases systematically in the defined test environment. Document the
actual outcomes and compare them with expected results to determine pass/fail status.
⮚ Step 8.: Defect Reporting: Log all identified defects with details like severity, steps to
reproduce, and screenshots. Monitor the status of each defect until it is fixed and verified.
TEST PLAN:
RESULT:
The test plan is essential for outlining the testing strategy of the mobile banking application. It ensures
that key features like login, fund transfers, and account security are thoroughly validated. Systematic
documentation of test cases helps maintain quality and reliability.
Ex. No: 8
Test Process Maturity Model for the Mobile Banking App
Date:
AIM:
To develop and implement a Test Process Maturity Model (TPMM) tailored to a mobile banking
application in order to improve the quality, security, and reliability of the testing lifecycle.
PROCEDURE:
● Understand the features of the mobile banking app: Login, View Balance, Fund Transfer, Bill
Payment, Biometric Authentication, etc.
● Identify critical testing areas:
● Security testing (authentication, data encryption, session management)
● Performance testing (load handling, response time)
● Functional testing (validations, transaction flows)
● Usability testing (UI/UX, accessibility)
Step 2: Define the Customized Test Process Maturity Model (TPMM)
Adapt a 5-level TPMM similar to TMMi, tailored for mobile banking apps:
analysis
● Test coverage
tracking
● Security tools
integration
RESULT:
The implementation of a customized Test Process Maturity Model for the mobile banking app resulted
in significant improvements in testing efficiency, quality assurance, and risk management. The
maturity level increased from Level 2 (Repeatable) to Level 4 (Managed), showcasing clear progress
in testing processes, documentation, automation, and monitoring.
Ex. No: 9 Design and Implement a Comprehensive Automated Test Suite for an
E-Commerce Website Using Selenium.
Date:
AIM:
To design and implement an automated test script using Selenium WebDriver for testing the core
functionalities of an e-commerce website such as Amazon, including launching the browser,
performing a product search, selecting a product, adding it to the cart, and verifying successful
addition — simulating a typical user journey for quality assurance in web applications.
Procedure:
⮚ Step 6: Run the program and observe the automated search in Chrome.
Code:
package firsttest;
import [Link];
import [Link];
import [Link];
import [Link];
[Link]([Link]("twotabsearchtextbox")).sendKeys("laptop",
[Link]);
[Link]([Link](".s-main-slot .s-result-
item h2 a")).click();
[Link]([Link]("add-to-cart-button")).click();
WebElement confirmationMessage =
[Link]([Link]("#sw-gtc .a-button-input"));
if ([Link]()) {
[Link]("Test Passed: Item added to cart
successfully.");
} else {
[Link]("Test Failed: Item not added to
cart.");
}
[Link]();
}
}
Screenshots:
RESULT:
The automated test script was successfully executed using Selenium WebDriver. The script opened
the browser, navigated to Google, searched for "[Link]", visited the Amazon website, searched
for a product, selected the first item from the results, and added it to the cart.
Ex. No: 10 Design A Data-Driven Automated Testing Solution using Selenium that can
Dynamically Generate Test Cases based on Different Sets of Input Data
Date:
AIM:
To design and implement a data-driven automated testing solution using Selenium WebDriver that
dynamically generates and executes test cases based on different sets of input data, thereby improving
test coverage and reducing redundancy.
Procedure
o Open browser
o Navigate to Amazon via Google
o Search each product
o Click the first result
o Attempt to add the item to cart
o Log the result (pass/fail)
⮚ Step 4: Close the browser after all test cases have executed.
⮚ Step 5: Print the summary of test results.
Code:
package firsttest;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
[Link]([Link]("twotabsearchtextbox")).sen
dKeys(product, [Link]); // Search product
[Link]([Link](".s-main-slot .s-
result-item h2 a")).click(); // First product
[Link]([Link]("add-to-cart-
button")).click(); // Add to cart
if ([Link]([Link]("#sw-gtc .a-
button-input")).isDisplayed()) {
[Link]("PASS: " + product + " added
to cart.");
} else {
[Link]("FAIL: " + product + " not
added.");
}
} catch (Exception e) {
[Link]("ERROR: Test for '" + product +
"' failed due to " + [Link]());
} finally {
[Link]();
}
}
}
}
Test Case ID Test Scenario Test Steps Test Data Expected Output
(Input)
TC_DDT_001 Add multiple products 1. Open "laptop" Laptop added to cart
to cart (DDT) browser successfully
2. Navigate to
Google
3. Search for
Amazon
4. Open
Amazon
5. Search
product
6. Click first
result
7. Add to cart
8. Confirm
added
Screenshort:
RESULT:
The data-driven automated testing solution was successfully implemented using Selenium WebDriver.
The script dynamically executed test cases for multiple input products by performing search and add-
to-cart operations on the Amazon website. Each test case ran independently and validated the addition
of the product to the shopping cart. The results for each test case were printed on the console,
confirming successful execution and dynamic test generation based on input data.
Ex. No: 11 Mini Project – Library Management System
Date:
The Library Management System is a web-based application developed using Vite + React for a fast
and responsive frontend, styled with Tailwind CSS, and backed by Cloudflare KV Database for a
low-latency, globally distributed storage layer. The system was deployed using Cloudflare, ensuring
high availability and performance.
OBJECTIVES:
SYSTEM REQUIREMENTS
a. Functional Requirements
b. Non-Functional Requirements
1) Performance: Fast page load and low-latency responses using Cloudflare Edge deployment
2) Security: Basic authentication mechanisms, secure data transfer over HTTPS
3) Usability: Simple, responsive UI using Tailwind CSS for ease of use on all devices
4) Scalability: Globally distributed Cloudflare KV ensures scalability across users and locations
DESIGN PATTERN:
1) Component-Based (React-Specific MVC Adaptation)
o The application follows an MVC-like structure, where:
● State Diagram
● Activity Diagram
SOFTWARE TESTING
• Testing Types Used:
● Unit Testing
● Integration Testing
● System Testing
• Tools Used:
● Manual Testing
● Browser DevTools (for UI behavior)
● Jest (for unit testing React components)
• Sample Test Cases:
Expected Actual
[Link] Test Case Steps Description Status
Result Result
Enter book
List of List of
name in
To test search matching matching
TC001 Book Search search input Passed
functionality books books
→ Click
shown shown
search
Login as user
Book status Book status
→ Click To verify
TC002 Book Borrow Passed updated to updated to
borrow on a borrow process
"borrowed" "borrowed"
book
Login as
librarian → To test book Book Book
Add Book
TC003 Fill form → addition Passed appears in appears in
(Librarian)
Click add functionality catalog catalog
book
Enter wrong
Test error Error Error
credentials
TC004 Invalid Login handling on Passed message message
→ Click
login displayed displayed
login
Responsive Responsive
UI Open site on Test UI
TC005 Passed layout layout
Responsiveness mobile/tablet responsiveness
shown shown
• Bug Tracking:
● No formal tool used. Bugs and fixes tracked manually during development using a shared
Notion page.
Home Page
About Website:
Comments
CONCLUSION:
The Library Management System project successfully demonstrated the application of Object-
Oriented Analysis and Design (OOAD) principles in building a structured and scalable software
solution. The system allowed users to search, borrow, and return books, while administrators could
efficiently manage book inventory—all through a clean, responsive interface developed using Vite +
React and Tailwind CSS. Data persistence and performance were ensured through the integration of
Cloudflare KV, providing global access with low latency.