Professional Documents
Culture Documents
Scm,Black,White Final3
Scm,Black,White Final3
Introduction
This Software Configuration Management Plan (SCMP) outlines the procedures and activities
necessary to manage software configurations for the Hotel Booking System. The plan ensures
the identification, control, implementation, and reporting of changes to maintain system integrity
and traceability throughoutits lifecycle.
3. SCM Tasks
3.1 Identification
• Program Title: SCM
• Teams: SQA Team, SCM Team, Software Engineers
Description: The SCM leader will analyze all current design specifications and break down
the software into subsystems. Any submitted changes will be traced backward through the
system todetermine their impact.
Work Products: An SCI document will contain the breakdown of subsystems and their
interrelations.Approved changes will be returned to the software engineer with a change
approval sheet, listing all possible affected subsystems and any additional necessary
information.
3.2 Configuration Control
Description: Software engineers will submit change requests to the SCM leader. The SCM leader
willanalyze requests using the SCI document, project design document, and current software
prototype. Decisions will be based on the impact of changes on the entire system and
corresponding subsystems.Tasks:
3.2.1 Submitting Change Requests: Software engineers submit change requests via
email or word ofmouth, which the SCM leader documents. All requests are
recorded in the SCM Request
Library, including the requesting engineer’s name, date, request subject, and approval
status.
3.2.2 Request Analysis: The SCM leader analyzes the request using relevant
documents andprototypes to assess its impact on the system.
3.2.3 Request Disapproval: If deemed unnecessary, the SCM leader explains the
decision to therequesting engineer, who may discuss and resubmit a
modified request.
3.2.4 Request Approval: If approved, the SCI document is updated, and the software
engineer is notified of all possible affected subsystems. Drastic changes may
require client approval beforeimplementation.
a. Preparation
1. Understand the Code:
o Code Review: Conduct thorough code reviews to understand the application’s
architecture and logic.
o Documentation: Ensure that the code is well-documented and understand the
functionality of each module.
2. Identify Test Cases:
o Path Testing: Identify all possible paths through the code to create comprehensive
test cases.
o Branch Testing: Focus on testing all decision branches to ensure they work as
expected.
o Statement Testing: Ensure that every statement in the code is executed at least once
during testing.
b. Testing Process
1. Unit Testing:
o Modular Testing: Test individual modules in isolation to ensure they function
correctly.
o Mocking: Use mocking frameworks to simulate interactions with external systems or
dependencies.
2. Integration Testing:
o Interface Testing: Test the interfaces between different modules to ensure they
interact correctly.
o System Integration Testing: Ensure that integrated modules work together as
expected.
c. Tools
1. Unit Testing Frameworks:
o JUnit (Java)
o NUnit (C#/.NET)
o PyTest (Python)
o RSpec (Ruby)
o Mocha (JavaScript)
o JaCoCo (Java)
o Cobertura (Java)
o Istanbul (JavaScript)
o SonarQube
o PMD (Java)
o Checkstyle (Java)
Black Box Testing
Black box testing involves testing the application's functionality without looking at the
internal code structure. The tester is unaware of the internal workings of the application and
focuses on testing the inputs and outputs. Here’s a detailed breakdown:
a. Preparation
1. Understand Requirements:
o Requirement Analysis: Review functional and non-functional requirements to
understand what needs to be tested. This includes understanding the user stories, use
cases, and business rules.
o Specification Documents: Use requirement specification documents, user manuals,
and design documents to gather information about the expected behavior of the
application.
b. Testing Process
1. Functional Testing:
o Manual Testing: Perform manual testing for scenarios that require human judgment,
such as user interface testing and usability testing.
o Automated Testing: Use automation tools to repeatedly test common and critical
scenarios. This helps in saving time and ensuring consistency.
2. Non-Functional Testing:
o Performance Testing: Use tools like JMeter or LoadRunner to test the application’s
performance under various conditions. This includes load testing, stress testing, and
endurance testing.
o Usability Testing: Conduct usability tests to ensure the application is user-friendly.
This involves testing the application's ease of use, navigation, and overall user
experience.