CMMI Framework for Software Risk Management
CMMI Framework for Software Risk Management
SRS STRUCTURE:-
Tools support for requirement engineering:-
1. Introduction
Observation reports(user observation)
Purpose
Questionaries
Intended audience
Use cases
Scope
User stories
Definations
Requirement workshops
References.
Mind mapping 2. Overall Description
Role-playing User interfaces
Prototyping System Interfaces
Constraints,Assumptions and dependencies
User charcateristics
Functional vs Non-functional requirements:-
3. System features and requirements
Functional Requirements
Use cases
External interface requirements
Logical database requirement
Non-functional requirements
4. Deliver for approval
User requirememts:-
Process of Software Review 2. Management Preparation: To get ready for
the review process, assign roles, gather
resources and provide brief management.
3. Review Planning: Establish the review’s
goals and scope, invite relevant
parties and set a time for the meeting.
4. Preparation: Distribute appropriate
resources, give reviewers time to get
familiar and promote issue identification
to help them prepare.
5. Examination and Exit Evaluation: Reviewers
should collaborate to examine the results,
record concerns, and encourage candid
communication in meetings. It assess the
results, make remedial plans based on flaws
that have been reported and assess the
process’s overall efficacy.
Types of Software Reviews
There are mainly 3 types of software
reviews:
1. Software Peer Review
Peer review is the process of assessing the
technical content and quality of the product
and it is usually conducted by the author of
the work product along with some other
developers.
Software Review process
Peer review is performed in order to examine
or resolve the defects in the software, whose
1. Entry Evaluation: By confirming quality is also checked by other members of
documentation, fulfilling entry the team.
requirements and assessing stakeholder and Peer Review has following types:
team preparation, you can determine the 1. Code Review: Computer source code is
software’s availability. examined in a systematic way.
2. Pair Programming: It is a code review where 3. It can be used to train technical authors.
two developers develop code together at the 4. It can be used to remove process
same platform. inadequacies that encourage defects.
3. Walkthrough: Members of the development
team is guided by author and other
interested parties and the participants ask
questions and make comments about defects.
4. Technical Review: A team of highly
qualified individuals examines the software
product for its client’s use and identifies
technical defects from specifications and
standards.
5. Inspection: In inspection the reviewers
follow a well-defined process to find
defects.
2. Software Management Review
Software Management Review evaluates the work
status. In this section decisions regarding
downstream activities are taken.
3. Software Audit Review
Software Audit Review is a type of external
review in which one or more critics, who are
not a part of the development team, organize
an independent inspection of the software
product and its processes to assess their
compliance with stated specifications and
standards. This is done by managerial level
people.
Advantages of Software Review
1. Defects can be identified earlier stage of
development (especially in formal review).
2. Earlier inspection also reduces the
maintenance cost of software.
Unit-6 implement all the functionalities of the
Design engineering system.
2. Efficiency: A good software design should
address the resources, time, and cost
optimization issues.
Introduction of Software 3. Flexibility: A good software design should
Design Process – have the ability to adapt and accommodate
changes easily. It includes designing the
Last Updated : 25 Feb, 2024 software in a way, that allows for
modifications, enhancements, and
scalability without requiring significant
Software Design is the process of rework or causing major disruptions to the
transforming user requirements into a existing functionality.
suitable form, which helps the programmer in 4. Understandability: A good design should be
software coding and implementation. During easily understandable, it should be
the software design phase, the design modular, and all the modules are arranged
document is produced, based on the customer in layers.
requirements as documented in the SRS 5. Completeness: The design should have all
document. Hence, this phase aims to the components like data structures,
transform the SRS document into a design modules, external interfaces, etc.
document. 6. Maintainability: A good software design
The following items are designed and aims to create a system that is easy to
documented during the design phase: understand, modify, and maintain over
1. Different modules are required. time. This involves using modular and
2. Control relationships among modules. well-structured design principles
3. Interface among different modules. e.g.,(employing appropriate naming
4. Data structure among the different conventions and providing clear
modules. documentation). Maintainability in
5. Algorithms are required to be implemented Software and design also enables
among the individual modules. developers to fix bugs, enhance features,
Objectives of Software Design and adapt the software to changing
1. Correctness: A good design should be requirements without excessive effort or
correct i.e., it should correctly introducing new issues.
Software Design Concepts Software Design Concepts
centered style. The client software
The software needs an architectural design to accesses a central repository. Variations
represent the design of the software. IEEE of this approach are used to transform the
defines architectural design as “the process repository into a blackboard when data
related to the client or data of interest
for the client change the notifications to filter and it has a set of components
client software. called filters connected by lines.
This data-centered architecture will Pipes are used to transmitting data from
promote integrability. This means that the one component to the next.
existing components can be changed and new Each filter will work independently and is
client components can be added to the designed to take data input of a certain
architecture without the permission or form and produces data output to the next
concern of other clients. filter of a specified form. The filters
Data can be passed among clients using the don’t require any knowledge of the working
blackboard mechanism. of neighboring filters.
Advantages of Data centered architecture: If the data flow degenerates into a single
Repository of data is independent of line of transforms, then it is termed as
clients batch sequential. This structure accepts
Client work independent of each other the batch of data and then applies a series
It may be simple to add additional clients. of sequential components to transform it.
Modification can be very easy Advantages of Data Flow architecture:
It encourages upkeep, repurposing, and
modification.
With this design, concurrent execution is
supported.
Disadvantage of Data Flow architecture:
It frequently degenerates to batch
sequential system
Data flow architecture does not allow
Data centered architecture applications that require greater user
engagement.
It is not easy to coordinate two different
2] Data flow architectures:
but related streams
This kind of architecture is used when
input data is transformed into output data
through a series of computational
manipulative components.
The figure represents pipe-and-filter
architecture since it uses both pipe and
Data Flow architecture
Layered architecture
Different Types of Software Testing
Techniques
Different Levels of Software Testing
Best Practices for Software Testing
Benefits of Software Testing
Conclusion
Unit-7
Frequently Asked Questions on Software
Testing Testing
The process of software testing aims not only
at finding faults in the existing software
What is Software Testing? but also at finding measures to improve the
software in terms of efficiency, accuracy,
Last Updated : 25 Jul, 2024 and usability. The article focuses on
discussing Software Testing in detail.
It is important to learn the basics whether
Software testing is an important process in it is software testing or anything else you
the software development lifecycle . It
always need to start from the basics and make
involves verifying and validating that
a software application is free of bugs, meets your foundation strong and then proceed to
the technical requirements set by the advance level. If you want to learn
its design and development , and satisfies software testing in a structure approach then
user requirements efficiently and you can enroll in our manual to automation
effectively. testing course.
This process ensures that the application can What is Software Testing?
handle all exceptional and boundary cases,
Software Testing is a method to assess the
providing a robust and reliable user
functionality of the software program. The
experience. By systematically identifying and
process checks whether the actual software
fixing issues, software testing helps deliver
matches the expected requirements and ensures
high-quality software that performs as
the software is bug-free. The purpose of
expected in various scenarios.
software testing is to identify the errors,
Table of Content faults, or missing requirements in contrast
What is Software Testing? to actual requirements. It mainly aims at
Different Types Of Software Testing measuring the specification, functionality,
and performance of a software program or high performance which results in saving
application. time, costs, and customer satisfaction.
Perform end-to-end test automation, including Helps with scalability: Software testing
AI-powered codeless testing, mobile app, type non-functional testing helps to
cross-browser, visual UI testing, and more identify the scalability issues and the
with TestGrid . It is a highly secure and point where an application might stop
scalable software testing tool that offers working.
extensive integration with CI/CD Saves time and money: After the application
pipelines for continuous testing. is launched it will be very difficult to
Software testing can be divided into two trace and resolve the issues, as performing
steps this activity will incur more costs and
1. Verification: It refers to the set of tasks time. Thus, it is better to conduct
that ensure that the software correctly software testing at regular intervals
implements a specific function. It means during software development.
“Are we building the product right?”.
2. Validation: It refers to a different set of
tasks that ensure that the software that
Different Types Of Software Testing
has been built is traceable to customer
requirements. It means “Are we building the Explore diverse software testing methods
right product?”. including manual and automated testing for
Importance of Software Testing improved quality assurance . Enhance
software reliability and performance through
Defects can be identified early: Software
functional and non-functional testing,
testing is important because if there are
ensuring user satisfaction. Learn about the
any bugs they can be identified early and
significance of various testing approaches
can be fixed before the delivery of the
for robust software development.
software.
Improves quality of software: Software
Testing uncovers the defects in the
software, and fixing them improves the
quality of the software.
Increased customer satisfaction: Software
testing ensures reliability, security, and
1. Functional testing : It is a type of
software testing that validates the
software systems against the functional
requirements. It is performed to check
whether the application is working as per
the software’s functional requirements or
not. Various types of functional testing
are Unit testing, Integration testing,
System testing, Smoke testing, and so on.
2. Non-functional testing : It is a type of
software testing that checks the
application for non-functional
requirements like performance,
scalability, portability, stress, etc.
Various types of non-functional testing
are Performance testing, Stress testing,
Usability Testing, and so on.
3. Maintenance testing : It is the process of
changing, modifying, and updating the
software to keep up with the customer’s
needs. It involves regression testing that
verifies that recent changes to the code
have not adversely affected other
previously working parts of the software.
Apart from the above classification software
testing can be further divided into 2 more
ways of testing:
1. Manual testing : It includes testing
software manually, i.e., without using any
Types Of Software Testing automation tool or script. In this type,
the tester takes over the role of an end-
Software Testing can be broadly classified user and tests the software to identify
into 3 types: any unexpected behavior or bug. There are
different stages for manual testing such
as unit testing, integration testing, code, and is conducted by making sure that
system testing, and user acceptance all internal operations are performed
testing. Testers use test plans, test according to the specifications is known
cases, or test scenarios to test software as white box testing.
to ensure the completeness of testing. 3. Grey Box Testing : Testing in which the
Manual testing also includes exploratory testers should have knowledge of
testing, as testers explore the software implementation, however, they need not be
to identify errors in it. experts.
2. Automation testing : It is also known as
Black Box White Box
Test Automation, is when the tester writes
scripts and uses another software to test S No. Testing Testing
the product. This process involves the
automation of a manual process. Automation Internal Knowledge of the
Testing is used to re-run the test workings of an internal
scenarios quickly and repeatedly, that 1
application are workings is a
were performed manually in manual testing. not required. must.
Apart from Regression testing , Automation
testing is also used to test the application
from a load, performance, and stress point Also known as Also known as
of view. It increases the test coverage, closed clear
improves accuracy, and saves time and money 2
box/data-driven box/structural
when compared to manual testing. testing. testing.
Different Types of Software Testing Techniques
Software testing techniques can be majorly
classified into two categories: End users, Normally done by
1. Black box Testing : Testing in which the 3 testers, and testers and
tester doesn’t have access to the source developers. developers.
code of the software and is conducted at
the software interface without any concern
with the internal logical structure of the Data domains and
software known as black-box testing. 4 This can only
internal
2. White box Testing : Testing in which the be done by a
boundaries can
tester is aware of the internal workings
of the product, has access to its source
and assess whether it is acceptable for
Black Box White Box
delivery.
S No. Testing Testing Best Practices for Software Testing
Below are some of the best practices for
trial and error be better software testing:
Continuous testing : Project teams test
method. tested.
each build as it becomes available thus it
enables software to be validated in real
Different Levels of Software Testing environments earlier in the development
Software level testing can be majorly cycle, reducing risks and improving the
classified into 4 levels: functionality and design.
1. Unit testing : It a level of the software Involve users: It is very important for
testing process where individual the developers to involve users in the
units/components of a software/system are process and open-ended questions about the
tested. The purpose is to validate that functionality required in the application.
each unit of the software performs as This will help to develop and test the
designed. software from the customer’s perspective.
2. Integration testing : It is a level of the Divide tests into smaller parts: Dividing
software testing process where individual tests into smaller fractions save time and
units are combined and tested as a group. other resources in environments where
The purpose of this level of testing is to frequent testing needs to be conducted.
expose faults in the interaction between This also helps teams to make better
integrated units. analyses of the tests and the test
3. System testing : It is a level of the results.
software testing process where a complete, Metrics and Reporting: Reporting enables
integrated system/software is tested. The the team members to share goals and test
purpose of this test is to evaluate the results. Advanced tools integrate the
system’s compliance with the specified project metrics and present an integrated
requirements. report in the dashboard that can be easily
4. Acceptance testing : It is a level of the reviewed by the team members to see the
software testing process where a system is overall health of the project.
tested for acceptability. The purpose of Don’t skip regression testing: Regression
this test is to evaluate the system’s testing is one of the most important steps
compliance with the business requirements as it encourages the validation of the
application. Thus, it should not be long term. If the bugs are caught in the
skipped. early phases of software testing, it costs
Programmers should avoid writing tests: less to fix those errors.
Test cases are usually written before the Security: Security testing is a type of
start of the coding phase so it is software testing that is focused on
considered a best practice for programmers testing the application for security
to avoid writing test cases as they can be vulnerabilities from internal or external
biased towards their code and the sources.
application.
Service virtualization: Service
virtualization simulates the systems and
services that are not yet developed or are
missing. Thus, enabling teams to reduce
dependency and start the testing process
sooner. They can modify, and reuse the Software Testing Strategies
configuration to test different scenarios
without having to alter the original Last Updated : 06 Feb, 2023
environment.
Benefits of Software Testing
Software testing is the process of evaluating
Product quality: Testing ensures the
a software application to identify if it
delivery of a high-quality product as the meets specified requirements and to identify
errors are discovered and fixed early in any defects. The following are common testing
the development cycle. strategies:
Customer satisfaction: Software testing
aims to detect the errors or 1. Black box testing – Tests the functionality
vulnerabilities in the software early in of the software without looking at the
the development phase so that the detected internal code structure.
bugs can be fixed before the delivery of 2. White box testing – Tests the internal code
the product. Usability testing is a type structure and logic of the software.
of software testing that checks the 3. Unit testing – Tests individual units or
application for how easily usable it is components of the software to ensure they
for the users to use the application. are functioning as intended.
Cost-effective: Testing any project on
time helps to save money and time for the
4. Integration testing – Tests the integration or not and does it fulfill the requirements
of different components of the software to or not is called testing.
ensure they work together as a system. When the number of errors found during the
5. Functional testing – Tests the functional testing is high, it indicates that the
requirements of the software to ensure they testing was good and is a sign of good test
are met. case.
6. System testing – Tests the complete Finding an unknown error that wasn’t
software system to ensure it meets the discovered yet is a sign of a successful
specified requirements. and a good test case.
7. Acceptance testing – Tests the software to The main objective of software testing is to
ensure it meets the customer’s or end- design the tests in such a way that it
user’s expectations. systematically finds different types of
8. Regression testing – Tests the software errors without taking much time and effort so
after changes or modifications have been that less time is required for the
made to ensure the changes have not development of the software. The overall
introduced new defects. strategy for testing software includes:
9. Performance testing – Tests the software to
determine its performance characteristics
such as speed, scalability, and stability.
10. Security testing – Tests the software to
identify vulnerabilities and ensure it
meets security requirements.
Software Testing is a type of investigation
to find out if there is any default or error
present in the software so that the errors
can be reduced or removed to increase the
quality of the software and to check whether
it fulfills the specifies requirements or
not.
According to Glen Myers, software testing has
the following objectives:
The process of investigating and checking a
program to find whether there is an error
the product in a quantifiable
manner. Different characteristics quality
of the software is there such as
maintainability that means the ability to
update and modify, the probability that
means to find and estimate any risk, and
usability that means how it can easily be
used by the customers or end-users. All
these characteristic qualities should be
specified in a particular order to obtain
clear test results without any error.
2. Specifying the objectives of testing in a
clear and detailed manner. Several
objectives of testing are there such as
effectiveness that means how effectively
the software can achieve the target, any
failure that means inability to fulfill the
requirements and perform functions, and the
cost of defects or errors that mean the
cost required to fix the error. All these
objectives should be clearly mentioned in
the test plan.
3. For the software, identifying the user’s
category and developing a profile for each
user. Use cases describe the interactions
and communication among different classes
of users and the system to achieve the
target. So as to identify the actual
requirement of the users and then testing
the actual use of the product.
4. Developing a test plan to give value and
focus on rapid-cycle testing. Rapid Cycle
1. Before testing starts, it’s necessary to Testing is a type of test that improves
identify and specify the requirements of quality by identifying and measuring the
any changes that need to be required for 8. For the testing process, developing a
improving the process of software. approach for the continuous development. As
Therefore, a test plan is an important and a part of a statistical process control
effective document that helps the tester to approach, a test strategy that is already
perform rapid cycle testing. measured should be used for software
5. Robust software is developed that is testing to measure and control the quality
designed to test itself. The software during the development of software.
should be capable of detecting or
identifying different classes of errors. Advantages or Disadvantages:
Moreover, software design should allow
automated and regression testing which
Advantages of software testing:
tests the software to find out if there is
any adverse or side effect on the features
of software due to any change in code or 1. Improves software quality and reliability –
program. Testing helps to identify and fix defects
6. Before testing, using effective formal early in the development process, reducing
reviews as a filter. Formal technical the risk of failure or unexpected behavior
reviews is technique to identify the errors in the final product.
that are not discovered yet. The effective 2. Enhances user experience – Testing helps to
technical reviews conducted before testing identify usability issues and improve the
reduces a significant amount of testing overall user experience.
efforts and time duration required for 3. Increases confidence – By testing the
testing software so that the overall software, developers and stakeholders can
development time of software is reduced. have confidence that the software meets the
7. Conduct formal technical reviews to requirements and works as intended.
evaluate the nature, quality or ability of 4. Facilitates maintenance – By identifying
the test strategy and test cases. The and fixing defects early, testing makes it
formal technical review helps in detecting easier to maintain and update the software.
any unfilled gap in the testing approach. 5. Reduces costs – Finding and fixing defects
Hence, it is necessary to evaluate the early in the development process is less
ability and quality of the test strategy expensive than fixing them later in the
and test cases by technical reviewers to life cycle.
improve the quality of software.
Disadvantages of software testing: ensures that the software meets the
specified requirements. The article focuses
1. Time-consuming – Testing can take a on discussing Conventional testing in
significant amount of time, particularly if detail.
thorough testing is performed. What is Conventional Testing?
2. Resource-intensive – Testing requires Conventional testing is defined as
specialized skills and resources, which can traditional testing where the main aim is to
be expensive. check whether all the requirements stated by
3. Limited coverage – Testing can only reveal the user are achieved.
defects that are present in the test cases, The difference between conventional
and it is possible for defects to be testing and other testing approach is that
missed. it concentrates on checking all the
4. Unpredictable results – The outcome of requirements given by the user rather than
testing is not always predictable, and following a software development life
defects can be hard to replicate and fix. cycle.
5. Delays in delivery – Testing can delay the Conventional testing mainly focuses on
delivery of the software if testing takes functional testing.
longer than expected or if significant This testing is being performed by a
defects are identified. dedicated team of software testers.
Conventional testing also known as the
Traditional approach of software testing
involves a series of activities that aim to
identify the defects in the software and
Stages of Conventional Testing resources that will be required for
performing testing.
2. Requirement Analysis
Software Requirements are being analyzed in
this phase. These requirements help to
identify the scope of testing and risks and
for the preparation of test cases.
3. Design
In this stage, test cases are designed. If
the test cases are successful it means that
test cases are achieved. If not test cases
are failed to achieve.
4. Execution
Execution is the process where test cases
are executed. The errors encountered during
execution are documented.
5. Reporting
In reporting phase, all the documented
errors are sent to the development team for
fixing.
6. Retesting
Retesting is the stage where all the test
cases are performed again. It checks whether
all the failed test cases meet. All the
requirements specified by the user are
achieved.
Conventional testing follows a sequential
approach. It consists of various stages. 7. Release
Such as In the last stage, the software is released
1. Planning for the users. It is verified that all the
requirements stated by the user or client
Planning is the first stage of conventional
are successfully working before the release
testing. This stage consists of planning
of the software product.
regarding the objective of testing
developing a complete test plan and
Types of Conventional Testing again in order to check that the changes
1. Unit Testing made are being fixed and the system is
Unit Testing is defined as a type of testing working accordingly.
where the various modules and units are Benefits of Conventional Testing
being tested individually. Unit testing 1. Cost Effective: Conventional Testing is
makes sure that each individual component of cost-effective as manual testing is being
the system works well and eventually checks used. Manual testing requires less
whether all the requirements stated by financial investment as compared to
clients are achieved successfully. automation testing.
2. Integration Testing 2. Flexible: Conventional testing has the
Integration Testing is defined as a type of advantage of flexibility. Manual testing
testing where multiple modules or components has the ability to adopt the changes that
are tested together in order to check that take place while testing the product.
they work accordingly once integrated with 3. Testing of Non-functional Requirements
each other. It makes sure that interaction also: Manual testing can test functional
and communication between different modules as well as non-functional requirements
work well. such as accessibility, and usability which
3. Performance Testing is different from automation testing.
Performance Testing is defined as a type of 4. Understanding User Experience more
testing that checks for performance-related effectively: Conventional Testing makes
parameters for a software product. use of manual testing which helps to
Performance testing helps to find out the understand the user experience more
loopholes in the system and improve effectively as the manual tester can test
performance. the requirements with multiple scenarios.
4. Acceptance Testing 5. Provides better communication between
testers and developers: Manual testing
Acceptance Testing is defined as a type of
allows better communication between
testing that is used to check the
testers, developers, and other clients
requirements according to the user’s point
regarding issues and wrong outputs.
of view. It makes sure that all requirements
Limitations of Conventional Testing
specified by the user are achieved.
1. Time-consuming: Conventional Testing can
5. Regression Testing
be time-consuming as with manual testing
Regression Testing is defined as a type of it can take more time for large
testing in which test cases are executed
applications and accordingly delay further Boehm described verification and validation as
deployment process of the project. the following:
2. Subjective: The manual tester performing Verification: Are we building the product
the testing can have their own views and right?
opinions which can in turn result in the Validation: Are we building the right product?
quality of testing that is being Table of Content
performed.
Verification
3. Repetitive: Manual testing can lead to
Validation
repetition by performing the testing for
Questions For Practice
the same test cases. It can consume more
Conclusion
time than it is required.
Frequently Asked Questions
4. Limited Coverage: Manual testing can miss
Verification
some of the test cases and it will be not
Verification is the process of checking that
notified by the tester. This can result in
software achieves its goal without any bugs.
delivering the software product with
It is the process to ensure whether the product
errors or untasted test cases.
that is developed is right or not. It verifies
whether the developed product fulfills the
requirements that we have. Verification is
simply known as Static Testing.
Static Testing
Verification Testing is known as Static
Testing and it can be simply termed as checking
whether we are developing the right product or
erification and Validation in not and also whether our software is fulfilling
Software Engineering the customer’s requirement or not. Here are
some of the activities that are involved in
Last Updated : 19 Jun, 2024 verification.
Inspections
Reviews
Verification and Validation is the process of Walkthroughs
investigating whether a software system Desk-checking
satisfies specifications and standards and
fulfills the required purpose. Barry
Dynamic Testing
Validation Testing is known as Dynamic
Testing in which we examine whether we have
developed the product right or not and also
about the business needs of the client. Here
are some of the activities that are involved
in Validation.
1. Black Box Testing
2. White Box Testing
3. Unit Testing
4. Integration Testing
Note: Verification is followed by Validation.
2. Branch Coverage
In this technique, test cases are designed
so that each branch from all decision points
is traversed at least once. In a flowchart,
all edges must be traversed at least once. 4 test cases are required such that all branches of all decisions
Structural Well-
Functional testing, Not suited and Not
testing, clear box Algorithm suitable recommende suitable
data-driven testing, Translucen Testing d
testing, code-based t testing
closed box testing, Depends on High due Moderate,
Other testing transparen Time functional to complex faster
Names t testing Consumpti specificati code than White
on ons analysis Box
Verificati
Trial and on of Combinatio
error, internal n of both
based on coding, black box
external system and white Process of White Box Testing
functionali boundaries box 1. Input: Requirements, Functional
ty , and data approaches specifications, design documents, source
Approach domains code.
2. Processing: Performing risk analysis to 2. Access to the source code: White box
guide through the entire process. testing requires access to the
3. Proper test planning: Designing test cases application’s source code, which makes it
to cover the entire code. Execute rinse- possible to test individual functions,
repeat until error-free software is methods, and modules.
reached. Also, the results are 3. Knowledge of programming
communicated. languages: Testers performing white box
4. Output: Preparing the final report of the testing must have knowledge of programming
entire testing process. languages like Java, C++, Python, and PHP
White Testing is performed in 2 Steps to understand the code structure and write
1. Tester should understand the code well tests.
2. Tester should write some code for test 4. Identifying logical errors: White box
cases and execute them testing helps to identify logical errors
Tools required for White box testing: in the code, such as infinite loops or
PyUnit incorrect conditional statements.
Sqlmap 5. Integration testing: White box testing is
Nmap useful for integration testing, as it
Parasoft Jtest allows testers to verify that the
Nunit different components of an application are
VeraUnit working together as expected.
CppUnit 6. Unit testing: White box testing is also
Bugzilla used for unit testing, which involves
Fiddler testing individual units of code to ensure
[Link] that they are working correctly.
OpenGrok 7. Optimization of code: White box testing
Wireshark can help to optimize the code by
HP Fortify identifying any performance issues,
CSUnit redundant code, or other areas that can be
Features of White box Testing improved.
1. Code coverage analysis: White box testing 8. Security testing: White box testing can
helps to analyze the code coverage of an also be used for security testing, as it
application, which helps to identify the allows testers to identify any
areas of the code that are not being vulnerabilities in the application’s code.
tested.
9. Verification of Design: It verifies that 5. Detection of Complex Defects: Testers can
the software’s internal design is identify defects that cannot be detected
implemented in accordance with the through other testing techniques.
designated design documents. 6. Comprehensive Test Cases: Testers can
10. Check for Accurate Code: It create more comprehensive and effective
verifies that the code operates in test cases that cover all code paths.
accordance with the guidelines and 7. Testers can ensure that the code meets
specifications. coding standards and is optimized for
11. Identifying Coding Mistakes: It finds performance.
and fix programming flaws in your code, Disadvantages of White Box Testing
including syntactic and logical errors. 1. Programming Knowledge and Source Code
12. Path Examination: It ensures that each Access: Testers need to have programming
possible path of code execution is knowledge and access to the source code to
explored and test various iterations of perform tests.
the code. 2. Overemphasis on Internal Workings: Testers
13. Determining the Dead Code: It finds and may focus too much on the internal
remove any code that isn’t used when the workings of the software and may miss
programme is running normally (dead code). external issues.
Advantages of White Box Testing 3. Bias in Testing: Testers may have a biased
1. Thorough Testing : White box testing is view of the software since they are
thorough as the entire code and structures familiar with its internal workings.
are tested. 4. Test Case Overhead: Redesigning code and
2. Code Optimization: It results in the rewriting code needs test cases to be
optimization of code removing errors and written again.
helps in removing extra lines of code. 5. Dependency on Tester Expertise: Testers
3. Early Detection of Defects: It can start are required to have in-depth knowledge of
at an earlier stage as it doesn’t require the code and programming language as
any interface as in the case of black box opposed to black-box testing.
testing. 6. Inability to Detect Missing
4. Integration with SDLC: White box testing Functionalities: Missing functionalities
can be easily started in Software cannot be detected as the code that exists
Development Life Cycle. is tested.
7. Increased Production Errors: High chances
of errors in production.
simply, flow graph) is a directed graph which
represents the control structure of a program
or module. A control flow graph (V, E) has V
number of nodes/vertices and E number of
edges in it. A control graph can also have :
Basis Path Testing in Junction Node – a node with more than one
Software Testing arrow entering it.
Decision Node – a node with more than one
Last Updated : 15 Dec, 2022 arrow leaving it.
Region – area bounded by edges and nodes
(area outside the graph is also counted as
Prerequisite – Path Testing Basis Path a region.).
Testing is a white-box testing technique
based on the control structure of a program
or a module. Using this structure, a control
flow graph is prepared and the various
possible paths present in the graph are
executed as a part of testing. Therefore, by
definition, Basis path testing is a technique
of selecting the paths in the control flow
graph, that provide a basis set of execution
paths through the program or module. Since
this testing is based on the control
structure of the program, it requires
complete knowledge of the program’s
structure. To design test cases using this
technique, four steps are followed :
1. Construct the Control Flow Graph
2. Compute the Cyclomatic Complexity of the
Graph
3. Identify the Independent Paths
4. Design Test cases from Independent Paths
Let’s understand each step one by one. 1.
Control Flow Graph – A control flow graph (or
Sequential Statements –
If – Then – Else –