Module 5 Se
Module 5 Se
DFD Level 0 is also called a Context Diagram. It’s a basic overview of the whole system or process being
analyzed or modeled. It’s designed to be an at-a-glance view, showing the system as a single high-level
process, with its relationship to external entities. It should be easily understood by a wide audience,
including stakeholders, business analysts, data analysts and developers.
DFD Level 1 provides a more detailed breakout of pieces of the Context Level Diagram. You will
highlight the main functions carried out by the system, as you break down the high-level process of the
Context Diagram into its subprocesses.
DFD Level 2 then goes one step deeper into parts of Level 1. It may require more text to reach the
necessary level of detail about the system’s functioning.
Progression to Levels 3, 4 and beyond is possible, but going beyond Level 3 is uncommon. Doing so can
create complexity that makes it difficult to communicate, compare or model effectively.
Using DFD layers, the cascading levels can be nested directly in the diagram, providing a cleaner look with easy
access to the deeper dive.
By becoming sufficiently detailed in the DFD, developers and designers can use it to write pseudocode, which
is a combination of English and the coding language. Pseudocode facilitates the development of the actual
code.
Structure Charts in Software Engineering
They build upon basic flowcharts with a focus on well-defined structures. Here are the key components of
structured flowcharts:
Processing Steps : These boxes represent actions or calculations performed within the
program. They contain a brief description of the task being executed.
Decision Points : These diamond-shaped symbols depict points where the program needs to
make a choice based on a condition. Typically, one or two arrows will emerge from a decision point,
representing the possible paths based on the condition being true or false.
Connectors : Arrows show the flow of control between different steps in the
flowchart. They indicate the sequence of execution.
Input/Output :These represent points where data enters or exits the program. Data
entering the flowchart (input) is displayed on the left side of the parallelogram, while data leaving
(output) is shown on the right side.
Annotation: You can add brief text descriptions within any component or near arrows for improved
clarity, especially for complex logic.
Structured flowcharts emphasize these core elements to promote a clear and readable visualization of the
program's logic, focusing on:
Use Cases for Decision Tables: Business rule management, risk management, quality assurance, and project
management are just few of the many software development activities that benefit greatly from the usage
of decision tables. They are also applicable in the realms of finance and medical, where nuanced judgements
are often called for.
Elements of a Decision Table
1. Conditions
What should be done depends on the current circumstances. In the decision table, each column
corresponds to a yes or false answer.
2. Actions
The results of a particular set of circumstances are actions. In the decision table, they are also shown as
columns.
3. Rules
Rules are sets of criteria that, when met, dictate what must be done. They are generated by examining the
many permutations of the circumstances and are shown as rows in the decision table.
4. Rows and columns
A decision table consists of columns and rows. The circumstances and responses are shown in columns,
while the alternative outcomes are shown in rows.
Benefits of Using Decision Tables
1. Increased Lucidity
2. Productivity Boost
3. Enhanced Precision
4. Greater Accuracy
5. Enhanced Communication
What Is Testing?
Testing can be defined as a process of analyzing a software item to detect the differences between existing
and required conditions and to evaluate the features of the software item. In this process, we validate and
verify that a software product or application does what it’s supposed to do. The system or its components are
tested to ensure the software satisfies all specified requirements.
By executing the systems, we can identify any gaps, errors, or missing requirements in contrast with the actual
requirements. No one wants the headaches of bug fixes, late deliveries, defects, or serious malfunctions
resulting in damage or death.
The following are important reasons why software testing techniques should be incorporated into application
development:
Identifies defects early. Developing complex applications can leave room for errors. Software testing is
imperative, as it identifies any issues and defects with the written code so they can be fixed before the
software product is delivered.
Improves product quality. When it comes to customer appeal, delivering a quality product is an
important metric to consider. An exceptional product can only be delivered if it's tested effectively
before launch. Software testing helps the product pass quality assurance (QA) and meet the criteria
and specifications defined by the users.
Increases customer trust and satisfaction. Testing a product throughout its development lifecycle
builds customer trust and satisfaction, as it provides visibility into the product's strong and weak
points. By the time customers receive the product, it has been tried and tested multiple times and
delivers on quality.
Detects security vulnerabilities. Insecure application code can leave vulnerabilities that attackers can
exploit. Since most applications are online today, they can be a leading vector for cyber attacks and
should be tested thoroughly during various stages of application development. For example, a web
application published without proper software testing can easily fall victim to a cross-site scripting
attack where the attackers try to inject malicious code into the user's web browser by gaining access
through the vulnerable web application. The nontested application thus becomes the vehicle for
delivering the malicious code, which could have been prevented with proper software testing.
Helps with scalability. A type of nonfunctional software testing process, scalability testing is done to
gauge how well an application scales with increasing workloads, such as user traffic, data volume and
transaction counts. It can also identify the point where an application might stop functioning and the
reasons behind it, which may include meeting or exceeding a certain threshold, such as the total
number of concurrent app users.
Saves money. Software development issues that go unnoticed due to a lack of software testing can
haunt organizations later with a bigger price tag. After the application launches, it can be more difficult
to trace and resolve the issues, as software patching is generally more expensive than testing during
the development stages.
What Is Black Box Testing?
Black box testing or functional testing is a method which is used to examine software functionality without
knowing its internal code structure. It can be applied to all software testing levels but is mostly employed for
the higher level acceptance and system related ones.
To elaborate, a professional using this method to test an application’s functionality will only know about the
input and expected output but not about the program which helps the application reach the desired output.
The professional will only enter valid and invalid inputs and determine the expected outputs without having
any in-depth knowledge of the internal structure.
Black Box Testing Techniques: Test cases in the black box testing method are built around the specifications,
requirements, and design parameters of a software. Some reliable techniques applied to create those test
cases are:
Boundary Value Analysis: The most commonly used black box testing technique, Boundary Value
Analysis or BVA is used to find the error in the boundaries of input values rather than the center.
Equivalence Class Partitioning: This technique is used to reduce the number of possible inputs to small
yet effective inputs. Used to test an application exhaustively and avoid redundancy of inputs, it is done
by dividing inputs into classes and getting value from each class.
Decision Table Based Testing: This approach is the most rigorous one and is ideally implemented when
the number of combinations of actions is taken under varying conditions.
Cause-Effect Graphing Technique: This technique considers a system’s desired external behavior only.
It helps in selecting test cases which relate Causes to Effects to create test cases. In the
aforementioned statement, Cause implies a distinct input condition which results in internal change in
a system while Effect implies an output condition brought by a combination of causes.
Error Guessing: The success of this technique is solely dependent on the experience of the tester.
There are no tools and techniques as such, but one can write test cases either while reading the
document or while encountering an undocumented error during the testing.
White Box Testing Techniques: The most important part in the white box testing method is the code coverage
analysis which empowers a software engineering team to find the area in a code which is unexecuted by a
given set of test case thereby, helping in improving a software application’s quality. There are different
techniques which can be used to perform the code coverage analysis. Some of these are:
Statement Coverage: This technique is used to test every possible statement at least once. Cantata++
is the preferred tool when using this technique.
Decision Coverage: This includes testing every possible decision condition and other conditional loops
at least once. TCAT-PATH, supporting C, C++, and Java applications, is the go-to tool when this
technique is followed.
Condition Coverage: This makes one time code execution mandatory when all the conditions are
tested.
Decision/Condition Coverage: This is a mixed technique which is implemented to test all the Decision /
Condition coverage at least once while the code is executed.
Multiple Condition Coverage: In this type of white box testing technique, each entry point of a system
has to be executed at least once.
Advantages / Pros of White Box Testing
A complex and expensive procedure which requires the adroitness of a seasoned professional,
expertise in programming and understanding of internal structure of a code
Updated test script required when the implementation is changing too often
Exhaustive testing becomes even more complex using the white box testing method if the application
is of large size
Some conditions might be untested as it is not realistic to test every single one
Necessity to create full range of inputs to test each path and condition make the white box testing
method time-consuming
Defects in the code may not be detected or may be introduced considering the ground rule of
analyzing each line by line or path by path.
Unit Testing
Unit testing is one of the core functional testing types that provides the foundation for verifying software
behavior.To elaborate, unit testing focuses on testing the functionality of individual units or components of
code in isolation to verify each part operates correctly on its own.Compared to other types of testing, the
scope of unit tests is quite small and focuses mostly on validating things like:
Unit testing aids in the early detection of flaws or defects in the software code, helping to
avoid them developing into larger problems or spreading to later stages of the software
development cycle.
Helps engineers find and quickly fix errors, which speeds up software development.
Helps guarantee that code is of a high standard and complies with the specifications of the
software.
Gives team members a clear and concise way to discuss the code, which enhances team
communication.
Can assist in locating code that is applicable to different areas of the programme. Developers
can increase the code's modularity.
Unit tests acts as documentation which shows how the code is supposed to operate. These
tests can be used by developers as a guide for comprehending the code, which can assist
prevent misunderstandings and confusion.
Unit testing can take a lot of time, particularly in complicated, large-scale projects.
Unit testing might result in increased code complexity since developers must add more code to
support test scenarios.
Passing unit tests simply validates the functionality of the tested unit; it does not take into account
how the tested unit interacts with other components of the system. An issue in production may arise if
a unit passes all tests but fails in the larger system.
Maintaining unit tests can be difficult, particularly when code modifications happen often.
It could be challenging to obtain 100% test coverage, particularly in complex systems with lots of
interdependent components.
Putting in place a thorough unit testing approach may call for more resources and raise the price of
software development.
Integration Testing
Unlike unit testing, integration testing helps testers determine whether different modules or services work
together harmoniously as intended.
That means after developers have conducted and verified that individual units are working properly, software
testers combine those units and perform integration tests to test them as a group.
Specifically, integration testing helps check if the interface connections between units are working and verify
that the integrated system meets the requirements.
This process helps to confirm that the units tested by developers independently are operating together when
integrated.
What is UAT?
User Acceptance Testing (UAT) is a type of testing performed by the end user or the client to verify/accept the
software system before moving the software application to the production environment. UAT is done in the
final phase of testing after functional, integration and system testing is done.
The main Purpose of UAT is to validate end to end business flow. It does not focus on cosmetic errors, spelling
mistakes or system testing. User Acceptance Testing is carried out in a separate testing environment with
production-like data setup. It is kind of black box testing where two or more end-users will be involved.
UAT is performed by –
Client
End users
What is Test Documentation?
Test documentation is documentation of artifacts created before or during the
testing of software. It helps the testing team to estimate testing effort needed,
test coverage, resource tracking, execution progress, etc. It is a complete suite of
documents that allows you to describe and document test planning, test design,
test execution, test results that are drawn from the testing activity.