SE Unit 5
SE Unit 5
• Software testing is a process of identifying the correctness of software by considering its all
attributes (Reliability, Scalability, Portability, Re-usability, Usability) and evaluating the execution of
software components to find the software bugs or errors or defects.
• Testing includes an examination of code and also the execution of code in various environments,
conditions as well as all the examining aspects of the code.
Type of Software testing:-
• Automation testing is a process of converting any manual test cases into the test scripts with the
help of automation tools, or any programming language is known as automation testing. With the
help of automation testing, we can enhance the speed of our test execution because here, we do
not require any human efforts. We need to write a test script and execute those scripts.
• Test and Test case terms are used interchangeably. In practice, both are same and
are treated as synonyms. Test case describes an input description and an expected
output description
• The set of test cases is called a test suite. Hence any combination of test cases
may generate a test suite.
2 Black Bo x Testing is also known as functional testing, data- White Bo x Testing is also known as structural testing, clear box Grey Bo x Testing is also known as translucent testing as the
driven testing, and closed box testing. testing, code-based testing, and transparent testing. tester has limited knowledge of coding.
3 The approach towards testing includes trial techniques and White Bo x Testing is proceeded by verifying the system If the tester has knowledge of coding, then it is proceeded
error guessing method because tester does not need knowledge boundaries and data domains inherent in the software as there is no by validating data domains and internal system boundaries
of internal coding of the software. lack of internal coding knowledge. of the software.
4 The testing space of tables for inputs (inputs to be used for The testing space of tables for inputs (inputs to be used for creating The testing space of tables for inputs (inputs to be used for
creating test cases) is pretty huge and largest among all testing test cases) is less as compared to Black Box testing. creating test cases) is smaller than Black Bo x and White
spaces. Box testing.
5 It is very difficult to discover hidden errors of the software It is simp le to discover hidden errors because it can be due to Difficult to discover the hidden error. Might be found in
because errors can be due to internal working wh ich is internal working which is deeply explored in White Box testing. user level testing.
unknown for Black Box testing.
6 It is not considered for algorithm testing. It is well suitable and recommended for algorithm testing. It is not considered for algorithm testing.
7 Time consumption in Black Bo x testing depends upon the White Bo x testing takes a long time to design test cases due to Test cases designing can be done in a short time period.
availability of the functional specifications. lengthy code.
8 Tester, developer and the end user can be the part of testing.
Only tester and developer can be a part of testing; the end user can Tester, developer and the end user can be the part of testing.
not involve.
9 It is the least time-consuming process among all the testing The entire testing process is the most time consuming among all less time consuming than White Box testing.
processes. the testing processes.
10 Resilience and security against viral attacks are covered under Resilience and security against viral attacks are not covered under Resilience and security against viral attacks are not covered
Black Box testing. White Box testing. under Grey Box testing.
11 The base of this testing is external expectations internal The base of this testing is coding which is responsible for internal Testing based on high-level database diagrams and dataflow
behavior is unknown. working. diagrams.
12 It is less exhaustive than White Box and Grey Bo x testing It is most exhaustive between Black Bo x and Grey Bo x testing Partly exhaustive; depends upon the type of test cases are
methods. methods. coding based or GUI based.
Definition It is an informal name specified The Defect is the difference between the actual An Error is a mistake made in the The Fault is a state that causes If the software has lots of defects,
to the defect. outcomes and expected outputs. code; that's why we cannot execute or the software to fail to accomplish it leads to failure or causes failure.
compile code. its essential function.
Raised by The Test Engineers submit The Testers identify the defect. And it was also The Developers and automation test Human mistakes cause fault. The failure finds by the manual
the bug. solved by the developer in the development phase engineers raise the error. test engineer through
or stage. the development cycle.
Different •Different type of bugs are as •Different type of Defects are as follows: •Different type of Error is as •Different type of Fault are as
types follows: Based on priority:High below:Syntactic Error follows:Business Logic Faults -----
•Medium •User interface error •Functional and Logical Faults
•Logic bugs •Low •Flow control error •Faulty GUI
•Algorithmic bugs •And based on the severity:Critical •Error handling error •Performance Faults
•Resource bugs •Major •Calculation error •Security Faults
•Minor •Hardware error •Software/ hardware fault
•Trivial •Testing Error
Reasons Following are reasons which The below reason leads to the defects: The reasons for having an error are as The reasons behind the fault are as Following are some of the
follows: follows:
behind may cause the bugs: Giving incorrect and wrong inputs. Errors in the code.
most important reasons behind
A Fault may occur by an improper
Missing coding Dilemmas and errors in the outside behavior The M istake of some values. the failure:
step in the initial stage, process, or
Wrong coding and inside structure and design. If a developer is unable to compile or run a Environmental condition
data definition.
program successfully.
Extra coding An error in coding or logic affects the software Confusions and issues in programming. Inconsistency or issue in the System usage
and causes it to breakdown or the failure. Invalid login, loop, and syntax. program. Users
Inconsistency between actual and expected An irregularity or loophole in the Human error
outcomes. software that leads the software to
Blunders in design or requirement actions. perform improperly .
M isperception in understanding the
requirements of the application.
Way to Following are the way to stop With the help of the following, we can prevent Below are ways to prevent the Errors: of software design and The way to prevent failure are as
prevent the the bugs: the Defects: Implementing several innovative Enhance the software quality with system programminThe fault can be follows:
Test-driven development. programming methods. review and programming. prevented with the help of the Confirm re-testing.
reasons Offer programming language Use of primary and correct software development Detect the issues and prepare a suitable following: Review the requirements and revisit
support. techniques. mitigation plan. Peer review. the specifications.
Adjusting, advanced, and operative Peer review Validate the fixes and verify their quality Assess the functional necessities of Implement current protective
development procedures. It is executing consistent code reviews to evaluate its and precision. the software. techniques.
Evaluating the code systematically. quality and correctness. Execute the detailed code analysis. Categorize and evaluate errors and
Verify the correctness g. issues.
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 101
Verification and Validation(CO5)
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 102
Verification and Validation(CO5)
• Program Verification:
• It is the process of checking that a software achieves its goal
without any bugs.
• It is the process to ensure whether the product that is developed is
right or not.
• Are we building the product, right?
• Program Validation:
• It is the process of checking whether the software product is up to
the mark or in other words product has high level requirements.
• It is the process of checking the validation of product i.e. it
checks what we are developing is the right product.
• Are we building the right product?
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 103
Verification and Validation(CO5)
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 104
Difference between Verification and Validation(CO5)
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 105
Black Box and White Box Testing
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 106
1- Black Box/Functional Testing (CO5)
• black box testing is a process of checking the functionality of an application as per the
customer requirement. The source code is not visible in this testing; that's why it is
known as black-box testing.
• Test cases are designed from an examination of the input/output values only and no
knowledge of design, or code is required.
• It is also known as Functional Testing
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 107
1- Black Box/Functional Testing (CO5)
The following are the main approaches to designing black box test cases.
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 108
1.1- Boundary Value Analysis
Consider a program with two input variables x and y. These input variables
have specified boundaries as:
a ≤x ≤b
c ≤y ≤d
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 109
1.1- Boundary Value Analysis
The boundary value analysis test cases for our program with two
inputs variables (x and y) that may have any value from 100 to 300
are: (200,100), (200,101), (200,200), (200,299), (200,300), (100,200),
(101,200), (299,200) and (300,200). This input domain is shown in Fig.
8.5. Each dot represent a test case and inner rectangle is the domain
of legitimate inputs. Thus, for a program of n variables, boundary
value analysis yield 4n + 1 test cases
Fig. : Input domain of two variables x and y with boundaries [100,300] each
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 110
Example
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 111
Example
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 112
1.2- Robustness Testing
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 113
1.3- Worst-case testing
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 114
1.4- Equivalence Class Testing
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 115
1.4- Equivalence Class Testing
Most of the time, equivalence class testing defines classes of the input
domain. However, equivalence classes should also be defined for
output domain. Hence, we should design equivalence classes based on
input and output
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 116
2- White Box Testing(Structural Testing)
1. Path Testing
2. Cyclomatic Complexity
3. Graph Matrices
4. Data Flow Testing
5. Mutation Testing
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 117
2.1- Path Testing
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 118
2.2- Cyclomatic Complexity
• The purpose of implementing the white box testing is to emphasize the flow of inputs and
outputs over the software and enhance the security of an application.
• McCabe’s cyclomatic metric M = e – n + 2P.
For example, a flow graph shown in in Fig with entry node ‘a ’ and exit node ‘f ’
M = E – N + 2P
where,
E = the number of edges in the control flow graph
N = the number of nodes in the control flow graph
P = the number of connected components
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 119
2.2- Cyclomatic Complexity
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 120
2.2- Cyclomatic Complexity
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 121
2.3- Graph Matrices
A graph matrix is a square matrix with one row and one column
for every node in the graph. The size of the matrix (i.e., the
number of rows and columns) is equal to the number of nodes
in the flow graph. Some examples of graphs and associated
matrices are shown in figure
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 122
2.4- Data Flow Testing
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 123
2.4- Data Flow Testing
The definitions refer to a program P that has a program graph G(P) and
a set of program variables V. The G(P) has a single entry node and a
single exit node. The set of all paths in P is PATHS(P)
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 124
2.4- Data Flow Testing
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 125
2.5- Mutation testing
➢ If a mutant remains alive even after all the test cases have been
exhausted, the test data is enhanced to kill the mutant.
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 126
2.5- Mutation testing
Disadvantage:
• it is computationally very expensive, due to a large number of possible
mutants can be generated.
• it is not suitable for manual testing. Mutation testing should be used in
conjunction of some testing tool which would run all the test cases
automatically. Version
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 127
Level Of Testing
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 128
1- Unit Testing (CO5)
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 129
Stub and Driver
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 130
2-Integration Testing (CO5)
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 131
2-Integration Testing (CO5)
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 132
2.1- Bottom-Up Integration
• Only terminal modules (i.e., the modules that do not call other modules) are
tested in isolation
• Modules at higher level are tested using the previously tested lower level
modules
• Non-terminal modules are not tested in isolation
• Requires a module driver for each module to feed the test case input to the
interface of the module being tested
• However, stubs are not needed since we are starting with the terminal
modules and use already tested modules when testing modules in the
lower levels
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 133
2.1- Bottom-Up Integration
A B
C H
E F G I
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 134
2.2- Top-down Integration
• Only modules tested in isolation are the modules which are at the
highest level
• After a module is tested, the modules directly called by that module
are merged with the already tested module and the combination is
tested
• Requires stub modules to simulate the functions of the missing
modules that may be called
• However, drivers are not needed since we are starting with the
modules which is not used by any other module and use already
tested modules when testing modules in the higher levels
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 135
2.2- Top-down Integration
A B
C
H
E F G I
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 136
2.3- Other Integration Approaches
• Sandwich Integration
• Compromise between bottom-up and top-down
testing
• Simultaneously begin bottom-up and top-down testing
and meet at a predetermined point in the middle
• Big Bang Integration
• Every module is unit tested in isolation
• After all of the modules are tested they are all
integrated together at once and tested
• No driver or stub is needed
• However, in this approach, it may be hard to isolate the
bugs!
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 137
Difference between Top-down and Bottom-Up Integration
S.N Comparison Basis Top-Down Integration Testing Bottom-up Integration Testing
O.
1. Definition We will add the modules incrementally or one by one and test the data The lower- level modules are tested with higher- level modules until
flow in similar order. all the modules have been tested successfully.
2. Executed on The top-down integration testing approach will be executed on the The bottom-up integration testing approach will be executed on
Structure or procedure-oriented programming languages. Object-oriented programming languages.
3. Observation In the top-down approach, the observation of test output is more In the bottom- up approach, the observation of test output is more
complicated. accessible.
4. Risk analysis We are collaborating on the impact of internal operational failures. To analyze the individual process, we can use the Models.
5. Work on The top-down integration testing approach will work on major to minor The bottom-down integration testing approach will work on the
components. miner to significant components.
6. Complexity The complexity of the top-down approach is simple. The complexity of the bottom- up approach is complex and highly
data intensive.
7. Stub/Drive r Stub modules must be created in the top-down testing approach. The driver modules must be created in the bottom-up testing
creation approach.
8. Managed from It is performed from main-module to sub-module. It is performed from the sub-module to the main module.
9. Advantage •Following are some of the significant benefits of using top-down •Below are some of the essential advantages of using bottom- up
integration testing:In this, the early prototype is possible. integration testing:We do not need to wait for the development of
•Fault Localization is easier. all the modules as it saves time.
•Identification of defects is easy.
10. Disadvantage •Some of the most common drawbacks of the top-down approach are as •The disadvantage of the bottom- up approach is as
follows:Lower- level modules are tested ineffectively. follows:Compulsory modules are tested last, due to which the
•Due to the high number of stubs, it gets pretty complicated. defects can occur.
•Critical Modules are tested first so that fewer chances of defects. •There is no possibility of an early prototype.
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 139
Alpha, Beta and Acceptance Testing (CO5)
• The term Acceptance Testing is used when the software is developed for
a specific customer. A series of tests are conducted to enable the customer
to validate all requirements. These tests are conducted by the end user /
customer and may range from adhoc tests to well planned systematic
series of tests.
• The terms alpha and beta testing are used when the software is developed
as a product for anonymous customers.
• Alpha Tests are conducted at the developer’s site by some potential
customers. These tests are conducted in a controlled environment. Alpha
testing may be started when formal testing process is near completion.
• Beta Tests are conducted by the customers / end users at their sites.
Unlike alpha testing, developer is not present here. Beta testing is
conducted in a real environment that cannot be controlled by the developer.
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 140
3- System Testing (CO5)
Performance testing : Performance testing is carried out to check whether the system needs
the nonfunctional requirements identified in the SRS document. All performance tests can be
considered as black-box tests.
• Stress testing
• Volume testing
• Configuration testing
• Compatibility testing
• Regression testing
• Recovery testing
• Maintenance testing
• Documentation testing
• Usability testing
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 141
3- System Testing (CO5)
Stress testing : Stress tests are black box tests which are designed to impose a range of
abnormal and even illegal input conditions so as to stress the capabilities of the software. For
example, suppose an operating system is supposed to support 15 multi programmed jobs, the
system is stressed by attempting to run 15 or more jobs simultaneously. A real-time system
might be tested to determine the effect of simultaneous arrival of several high-priority
interrupts.
• Volume testing: It is especially important to check whether the data structures (arrays,
queues, stacks, etc.) have been designed to successfully extraordinary situations. For
example, a compiler might be tested to check whether the symbol table overflows when a
very large program is compiled
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 142
3- System Testing (CO5)
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 143
3- System Testing (CO5)
• Regression testing: This type of testing is required when the system being tested is an
upgradation of an already existing system to fix some bugs or enhance functionality,
performance, etc.
• Recovery testing : Recovery testing tests the response of the system to the presence of
faults, or loss of power, devices, services, data, etc.
• Maintenance testing : This testing addresses the diagnostic programs, and other procedures
that are required to be developed to help maintenance of the system. It is verified that the
artifacts exist and they perform properly.
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 144
3- System Testing (CO5)
• Usability testing: Usability testing concerns checking the user interface to see if it meets
all user requirements concerning the user interface.
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 145
Bug Life Cycle
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 148
Code Walk Through (CO5)
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 150
Code inspection (CO5)
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 151
Daily Quiz
1) Software testing is:
(a) The process of demonstrating that errors are not present
(b) The process of establishing confidence that a program does what it is supposed to do
(c) The process of executing a program to show it is working as per specifications
(d) The process of executing a program with the intent of finding errors
2) Software mistakes during coding are known as:
(a) failures (b) defects (c) bugs (d) errors
3) Functional testing is known as:
(a) Structural testing (b) Behavior testing (c) Regression testing (d) None
4) Regression testing is primarily related to:
(a) Functional testing (b) Data flow testing
(c) Development testing (d) Maintenance testing
5)Validation is
(a) Checking the product with respect to customer’s expectation
(b) Checking the product with respect to specifications
(c) Checking the product with respect to the constraints of the project
(d) All of the above
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 152
Daily Quiz
6) For a function of n variables, boundary value analysis yields:
(a) 4n+3 test cases (b) 4n+1 test cases
(c) n+4 test cases (d) None of the above
7 ) Beta testing is carried out by
(a) Users (b) Developers
(c) Testers (d) All of the above
8) Equivalence class partitioning is related to
(a) Structural testing (b) Black box testing
(c) Mutation testing (d) All of the above
9) Cause effect graphing techniques is one form of
(a) Maintenance testing (b) Structural testing
(c) Function testing (d) Regression testing
10) During validation
(a) Process is checked (b) Product is checked
(c) Developer’s performance is evaluated (d) The customer checks the product
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 153
Assignment 5
7. Why does software fail after it has passed from acceptance testing? Explain.
8. What are various kinds of functional testing? Describe any one in detail.
9. Explain the boundary value analysis testing techniques with the help of an example.
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 155
Faculty Video Links, Youtube & NPTEL Video Links and Online
Courses Details
• https://nptel.ac.in/courses/106/105/106105182/
• https://www.youtube.com/watch?v=mGrajqMLenI&list=PLyqSpQzTE6M-
sBjDcT21Gpnj8grR2fDgc&index=16
• https://www.youtube.com/watch?v=biKUffL8cm4&list=PLyqSpQzTE6M-
sBjDcT21Gpnj8grR2fDgc&index=2
• https://www.youtube.com/watch?v=0kkUnL1mdUY&list=PLyqSpQzTE6M-
sBjDcT21Gpnj8grR2fDgc&index=4
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 156
MCQ
1 For a function of two variables, how many cases will be generated by
robustness testing?
(a) 9 (b) 13
(c) 25 (d) 42
2 For a function of n variables robustness testing of boundary value analysis
yields: (a) 4n+1 (b) 4n+3
(c) 6n+1 (d) None of the above
3 Regression testing is primarily related to:
(a) Functional testing (b) Data flow testing
(c) Development testing (d) Maintenance testing
4 A node with indegree=0 and out degree ≠ 0 is called
(a) Source node (b) Destination node
(c) Transfer node (d) None of the above
5 A node with indegree ≠ 0 and out degree=0 is called
(a) Source node (b) Predicate node
(c) Destination node (d) None of the above
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 157
MCQ
6 A decision table has
(a) Four portions (b) Three portions
(c) Five portions (d) Two portions
7 Beta testing is carried out by
(a) Users (b) Developers
(c) Testers (d) All of the above
8 Equivalence class partitioning is related to
(a) Structural testing (b) Blackbox testing
(c) Mutation testing (d) All of the above
9 Cause effect graphing techniques is one form of
(a) Maintenance testing (b) Structural testing
(c) Function testing (d) Regression testing
10 During validation
(a) Process is checked (b) Product is checked
(c) Developer’s performance is evaluated (d) The customer checks the product
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 158
Glossary
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 160
Old Question Papers
23-11-2023 161
Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5
Old Question Papers
23-11-2023 162
Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5
Expected Questions for University Exam
1. Why does software fail after it has passed from acceptance testing?
2. What are various kinds of functional testing? Describe any one in detail.
3. Explain the boundary value analysis testing techniques with the help of an example.
4. Describe the equivalence class testing method. Compare this with boundary value
analysis techniques.
5. Discuss cause effect graphing technique with an example
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 163
Recap of Unit 5
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 164
REFRENCES
23-11-2023 Ms. Rifa Nizam Khan ACSBS0304 Software Engineering Unit 5 165