SE Notes
SE Notes
Types of Boxes
1. Black Box: A Black Box focuses on the software system input-output
relationship without considering the internal workings or implementation
details. This abstraction focuses on what the component does, not how it does
it, making it ideal for specifying interfaces and high-level system requirements.
The function 'f' is applied to a sequence of inputs (stimuli) 'S' and transforms
them into an output (response) 'R'.
2.State Box: A State Box represents the internal states of the software system
and how they change over time based on inputs. It helps in understanding the
system's dynamic behavior, state transitions, and interactions between
different components of the system.
The Black Box’g’ receives inputs ('S') from external sources and the current
state (T') from the system's internal state to figure out response ’S’ and next
state ’T’.
3. Clear Box: A Clear Box provides a detailed view of the software system's
functionality, including the internal logic, algorithms, and data structures used
to implement the system. It helps in understanding how the system processes
inputs to produce the expected outputs.
A Clear Box that replaces the Black Box 'g' with a sequence of steps that
includes a conditional statement . We can continue to break down these steps
into smaller, more specific Clear Boxes using a process called stepwise
refinement
4p
The four Ps - people, product, process, and project are essential for effective
software project management. Each of these areas is interrelated and must be
managed effectively for successful
outcomes in software development projects.these four Ps helps in managing all
aspects of a software development project effectively and plays a vital role in
balancing resources, quality and project-timeline.
People
– This refers to the team members involved in the software development
process.
– people plays a crucial role as they bring unique skills,expertise and
creativity to development process
– Effective management of people involves organizing them into
effective teams, motivating them to do high-quality software work,
● People are the backbone of any software project. Their skills,
Unit Test Considerations refer to the important factors that should be taken into
account when conducting unit testing. Unit tests are illustrated schematically in
the below figure.
The important considerations are given below.
Module Interface: The module interface is the way in which a module
communicates with other parts of the program. It ensure that information flows
properly into and out of the program unit under test.
Local Data Structures: Local data structures are temporary data structures
used by a module during its execution. It ensure that data stored temporarily
maintains its integrity during all steps in an algorithm's execution.
Independent Paths: Independent paths refer to all possible paths through a
module's control structure that do not depend on other parts of the program
Boundary Conditions:it refer to limits or restrictions established for processing
within a module. It ensure that the module operates properly without any
unexpected behavior or errors.
Error-Handling Paths: it refers to. how modules handles error and exception
during its execution.
design meets the requirements and is free of errors. it helos the team
catch potential issues early in the development process, which can
save time, effort, and resources.
– Code Generation and Inspection: This step ensures that the code
accurately reflects the design and that potential defects are
minimized. Inspections help catch errors before they propagate
through the system, leading to more reliable and robust software.
– Statistical Testing: The team conducts testing based on usage
scenarios and operational profiles to assess the software's
reliability.identify potential issues, such as performance bottlenecks or
unexpected behavior.
– Certification: The team evaluates the results of statistical testing and
correctness verification to ensure the software meets quality
standards. Certification provides confidence that the software
increment is reliable, correct, and ready for use by end-users.
White-Box Testing
White-box testing is a software testing technique that involves examining the
internal structure of a software application to ensure that it functions correctly.
This type of testing is based on the knowledge of the internal workings of the
software and involves analyzing its code, architecture, and design to identify
potential issues and defects.White Box Testing is considered more technical
than functional testing.
Characteristics of White Box Testing
• it is focused on the internal workings of the software application, including its
code, architecture, and design.
• it is based on how the system carries out the operations instead of how it is
perceived by the users.
• it involves testing all possible paths to ensure that every line of code is
executed at least once during testing.
it deep understanding of the software's internal workings to identify potential
issues and defects.
• White Box Testing can be automated using tools such as unit test frameworks
or code coverage tools
• White Box Testing provides better coverage as it tests the whole code in
detail, ensuring that errors involved can easily be removed.
• White Box Testing is particularly useful for identifying complex defects that
may be difficult to
• White Box Testing can be time-consuming because it involves testing all
possible paths
Techniques
● Statement Coverage: it ensure that every statement in the source
code is executed at least once.
● Branch Coverage: This technique ensures that every branch of
conditional statement is executed at least once during testing.
● Path Coverage: it aims to execute all possible paths through the code
at least once.
● Condition Coverage: it involves testing all possible outcomes of a
Boolean expression or condition within the code are executed at least
once during testing.
Statement Coverage
• Statement coverage is a white-box testing technique that aims to ensure that
each line of code in the software is executed at least once during testing.
• The primary objective of statement coverage is to identify any coding errors
that may occur at the individual statement level.
• To achieve statement coverage, testers create test cases that exercise each
line of code in the software. During testing, the software is executed with these
test cases, and each line of code is checked to ensure that it has been
executed at least once.
Branch coverage is a white-box testing technique that aims to ensure that all
posible branches or decision points within the code are executed at least once
during testing.
• The goal of branch coverage is to identify any issues related to the control
flow of the software.
. To achieve branch coverage, testers create test cases that exercise al possible
branches or decision points within the code.