INDIRA GANDHI DELHI TECHNICAL UNIVERSITY FOR
WOMEN
Software Engineering
BIT -205
SW Assignment
SUBMITTED BY: SUBMITTED TO:
Suhani Bamania(21001012024) [Link] Thannaya
[Link]. CSE-3(3rd Semester) CSE Department
SOFTWARE ENGINEERING ASSIGNMENT
Unit: Automated Testing Tools & Software
Maintenance
1. Automated Testing Tools
Software testing is a critical activity in the software development life cycle
(SDLC), aimed at ensuring that a system functions as intended, is free of
defects, and meets the requirements given by the client. Automated testing
refers to the process where test cases are executed using specialized tools
rather than manual execution. Today, automation significantly reduces human
effort, increases accuracy, and accelerates testing for large software systems.
1.1 Selenium
Selenium is one of the most popular open-source tools used for automating
the testing of web applications. It supports multiple browsers such as
Chrome, Firefox, Edge, and Safari, and is compatible with several
programming languages including Java, Python, C#, Ruby, and JavaScript.
Features of Selenium
• Supports cross-browser and cross-platform testing.
• Allows parallel test execution.
• Integrates easily with CI/CD tools like Jenkins.
• Provides detailed test reports.
• Highly extendable through WebDriver and Selenium Grid.
Components of Selenium
Component Purpose
Selenium IDE Record-and-playback tool to create simple test cases
without coding.
Selenium Most powerful component that interacts with browsers
WebDriver using programming.
Selenium Used for distributed and parallel test execution across
Grid multiple machines.
Advantages
• Free and open source.
• Works with multiple OS & languages.
• Supports dynamic web applications.
Limitations
• Only for web applications, not desktop apps.
• Requires programming knowledge for advanced testing.
• No built-in reporting mechanism.
1.2 JUnit
JUnit is a widely-used automated testing framework for Java applications. It
follows a unit testing approach, meaning the smallest parts (units) of code are
tested individually.
Features
• Supports Test-Driven Development (TDD).
• Provides annotations like @Test, @Before, @After.
• Offers assertion libraries to validate outputs.
• Integrates with Maven, Gradle, Jenkins for CI pipelines.
JUnit Annotations
Annotation Use
@Test Marks a method as a test case.
@BeforeClass Runs once before all tests.
@AfterClass Runs once after all tests.
@Before Executes before every test.
@After Executes after every test.
Example JUnit Code
import [Link];
import static [Link].*;
public class AddTest {
@Test
public void addition() {
assertEquals(10, 5+5);
}
}
1.3 Web Application Testing
Web applications must be tested thoroughly due to their wide user base and
real-time accessibility. Testing ensures that the application is functional,
secure, fast, and user-friendly.
Types of Web Testing
1. Functional Testing – verifies features like login, forms, links.
2. Usability Testing – checks design, navigation, and user experience.
3. Performance Testing – load, stress, scalability testing.
4. Security Testing – authentication, data protection.
5. Compatibility Testing – browser compatibility, mobile responsiveness.
Common Tools
• Selenium
• Apache JMeter
• Postman API Tester
• Bugzilla / Jira for issue tracking
1.4 Security Testing
Security testing ensures that the application is protected from attacks and
vulnerabilities. This is especially important for systems dealing with financial
transactions, healthcare, and personal user data.
Major Security Testing Activities
• Authentication Testing
• Authorization Validation
• SQL Injection Testing
• Cross-Site Scripting (XSS)
• Penetration and Vulnerability Analysis
Popular Tools
Tool Use
OWASP ZAP Detects security vulnerabilities.
Burp Suite Performs penetration testing.
Nessus Vulnerability scanning.
1.5 Software Testing
Software Testing is the process of evaluating a software product to detect
differences between expected and actual outcomes. It ensures reliability,
performance, and quality.
Categories
1. Manual Testing
2. Automated Testing
3. White-Box and Black-Box Testing
4. Unit, Integration, System, Acceptance Testing
Benefits
• Reduces risks and errors.
• Ensures product quality.
• Improves customer satisfaction.
2. Software Maintenance
Software maintenance is the process of modifying and enhancing software
after deployment. Software is not static; it evolves over time due to changing
technology, new user requirements, and detected issues.
2.1 Types of Software Maintenance
Type Purpose
Corrective Fixes bugs, faults, and defects found after
Maintenance delivery.
Adaptive Modifies system for new environments (OS,
Maintenance hardware, regulations).
Perfective Enhances performance, user interface, and
Maintenance features.
Preventive Improves maintainability, prevents future
Maintenance faults.
2.2 Software Maintenance Models
1. Quick Fix Model
o Fixes issues immediately without restructuring code.
o Fast but reduces maintainability.
1. Iterative Enhancement Model
o Software evolves through multiple updates.
o Improves long-term performance.
1. Boehm’s Maintenance Model
o Considers cost, risk, and quality.
o Suitable for large long-term systems.
1. Re-use Oriented Model
o Uses existing reusable components to reduce development effort.
2.3 Reverse Engineering & Re-Engineering
Reverse Engineering
Extracting knowledge from an existing product to understand its design and
implementation.
Used when documentation is missing or to recover lost code logic.
Applications
• Malware analysis
• Legacy system understanding
• Cloning or competitive analysis
Re-Engineering
Improving and modifying initial software to enhance performance and
maintainability.
Often takes place after reverse engineering.
Steps
1. Reverse engineer the system.
2. Analyze and restructure source code.
3. Optimize database, architecture, and UI.
4. Convert into a better upgraded version.
2.4 Change Management Process
Change management ensures modifications are controlled, documented, and
do not break the existing system.
Steps in Change Management
1. Request for Change (RFC) is raised
2. Impact analysis is performed
3. Approval or rejection by Change Control Board (CCB)
4. Change implementation & testing
5. Release to production
6. Documentation & version creation
Advantages
• Prevents unexpected system failures
• Maintains version control
• Enhances traceability and accountability