Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
313 views44 pages

RGPV Unit-4-SEM-Software Testing and Maintenance 2024

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
313 views44 pages

RGPV Unit-4-SEM-Software Testing and Maintenance 2024

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 44

Department of Computer Application (MCA) 1

MCA-203- Software Engineering & UML {UNIT-IV}


Department of Computer Application
MCA-203- Software Engineering & UML

UNIT-IV
UNIT IV: Software Testing and Maintenance, Software Testing Fundamentals – Software testing
strategies – Black Box Testing – White Box Testing – System Testing – Functional Testing – Structural
Testing – Regression Testing - Testing Tools – Test Case Management – Challenges of Software
Maintenance – Types of Maintenance. Software Maintenance Organization – Maintenance Report.

Software Testing Fundamentals


Software testing is a process of identifying the correctness of a 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.

Software testing provides an independent view and objective of the software and gives surety of fitness of the
software. It involves testing of all components under the required services to confirm whether it is satisfying the
specified requirements or not. The process also provides the client with information about the quality of the
software.

Testing is mandatory because it will be a dangerous situation if the software fails at any time due to lack of
testing. So, without testing software cannot be deployed to the end user.

Testing is a group of techniques to determine the correctness of the application under the predefined script but,
testing cannot find all the defect of application. The main intent of testing is to detect failures of the application
so that failures can be discovered and corrected. It does not demonstrate that a product functions properly under
all conditions but only that it is not working in some specific conditions.

Testing furnishes comparison that compares the behaviour and state of software against mechanisms because
the problem can be recognized by the mechanism. The mechanism may include past versions of the same
specified product, comparable products, and interfaces of expected purpose, relevant standards, or other criteria
but not limited up to these.

Testing includes an examination of code and the execution of code in various environments, conditions as well
as all the examining aspects of the code. In the current scenario of software development, a testing team may be

Virendra Kumar Tiwari | 1|PAGE


Department of Computer Application (MCA) 2
MCA-203- Software Engineering & UML {UNIT-IV}
separate from the development team so that Information derived from testing can be used to correct the process
of software development.

The success of software depends upon acceptance of its targeted audience, easy graphical user interface, strong
functionality load test, etc. For example, the audience of banking is totally different from the audience of a
video game. Therefore, when an organization develops a software product, it can assess whether the software
product will be beneficial to its purchasers and other audience.

Software Testing Life Cycle (STLC)


The procedure of software testing is also known as STLC (Software Testing Life Cycle) which includes phases of the testing process.
The testing process is executed in a well-planned and systematic manner. All activities are done to improve the quality of the software
product.

Software testing life cycle contains the following steps:

1. Requirement Analysis
2. Test Plan Creation
3. Environment setup
4. Test case Execution
5. Defect Logging
6. Test Cycle Closure

Virendra Kumar Tiwari | 2|PAGE


Department of Computer Application (MCA) 3
MCA-203- Software Engineering & UML {UNIT-IV}

Black box testing


Black box testing is a technique of software testing which examines the functionality of software without
peering into its internal structure or coding. The primary source of black box testing is a specification of
requirements that is stated by the customer.

In this method, tester selects a function and gives input value to examine its functionality, and checks whether
the function is giving expected output or not. If the function produces correct output, then it is passed in testing,
otherwise failed. The test team reports the result to the development team and then tests the next function. After
completing testing of all functions if there are severe problems, then it is given back to the development team
for correction.

Black box testing, also known as behavioural testing, is a method of software testing that examines the
functionality of an application without peering into its internal structures or workings. This method is primarily
concerned with the input and output of the software system and does not consider the code structure,
implementation details, or internal paths.

Generic steps of black box testing


o The black box test is based on the specification of requirements, so it is examined in the beginning.
o In the second step, the tester creates a positive test scenario and an adverse test scenario by selecting
valid and invalid input values to check that the software is processing them correctly or incorrectly.
o In the third step, the tester develops various test cases such as decision table, all pairs test, equivalent
division, error estimation, cause-effect graph, etc.
o The fourth phase includes the execution of all test cases.
o In the fifth step, the tester compares the expected output against the actual output.
o In the sixth and final step, if there is any flaw in the software, then it is cured and tested again.

Key Characteristics of Black Box Testing


1. Focus on Functional Requirements: Black box testing is based on the specifications of the software.
Testers derive test cases from the requirements and specifications to ensure the system behaves as
expected.

Virendra Kumar Tiwari | 3|PAGE


Department of Computer Application (MCA) 4
MCA-203- Software Engineering & UML {UNIT-IV}
2. No Need for Internal Knowledge: Testers do not need to know the internal code, architecture, or
design. The tests are conducted purely from the user's perspective.
3. Test Types:
o Functional Testing: Ensures that the software functions according to the specified requirements.
o Non-functional Testing: Includes performance testing, usability testing, and reliability testing,
focusing on aspects like speed, scalability, and user experience.
4. Test Case Design Techniques:
o Equivalence Partitioning: Divides input data into valid and invalid partitions to reduce the
number of test cases.
o Boundary Value Analysis: Focuses on the values at the boundaries.
o Decision Table Testing: Uses a table to represent combinations of inputs and their
corresponding outputs.
o State Transition Testing: Tests the system's response to different events, particularly where it
involves state changes.
o Error Guessing: Based on experience, testers guess the problematic areas of the application and
create test cases to uncover potential defects.

Test procedure!
The test procedure of black box testing is a kind of process in which the tester has specific knowledge about the
software's work, and it develops test cases to check the accuracy of the software's functionality.

It does not require programming knowledge of the software. All test cases are designed by considering the input
and output of a particular function. A tester knows about the definite output of a particular input, but not about
how the result is arising. There are various techniques used in black box testing for testing like decision table
technique, boundary value analysis technique, state transition, All-pair testing, cause-effect graph technique,
equivalence partitioning technique, error guessing technique, use case technique and user story technique. All
these techniques have been explained in detail within the tutorial.

Test cases!
Test cases are created considering the specification of the requirements. These test cases are generally created
from working descriptions of the software including requirements, design parameters, and other specifications.
For the testing, the test designer selects both positive test scenario by taking valid input values and adverse test
scenario by taking invalid input values to determine the correct output. Test cases are mainly designed for
functional testing but can also be used for non-functional testing. Test cases are designed by the testing team,
there is not any involvement of the development team of software.

Techniques Used in Black Box Testing


Decision Table Decision Table Technique is a systematic approach where various input
Technique combinations and their respective system behavior are captured in a tabular
form. It is appropriate for the functions that have a logical relationship between
two and more than two inputs.

Boundary Value Boundary Value Technique is used to test boundary values, boundary values

Virendra Kumar Tiwari | 4|PAGE


Department of Computer Application (MCA) 5
MCA-203- Software Engineering & UML {UNIT-IV}
Technique are those that contain the upper and lower limit of a variable. It tests, while
entering boundary value whether the software is producing correct output or
not.

State Transition State Transition Technique is used to capture the behavior of the software
Technique application when different input values are given to the same function. This
applies to those types of applications that provide the specific number of
attempts to access the application.

All-pair Testing All-pair testing Technique is used to test all the possible discrete combinations
Technique of values. This combinational method is used for testing the application that
uses checkbox input, radio button input, list box, text box, etc.

Cause-Effect Cause-Effect Technique underlines the relationship between a given result and
Technique all the factors affecting the result.It is based on a collection of requirements.

Equivalence Equivalence partitioning is a technique of software testing in which input data


Partitioning divided into partitions of valid and invalid values, and it is mandatory that all
Technique partitions must exhibit the same behavior.

Error Guessing Error guessing is a technique in which there is no specific method for
Technique identifying the error. It is based on the experience of the test analyst, where the
tester uses the experience to guess the problematic areas of the software.

Use Case Use case Technique used to identify the test cases from the beginning to the
Technique end of the system as per the usage of the system. By using this technique, the
test team creates a test scenario that can exercise the entire software based on
the functionality of each function from start to end.

Decision table technique in Black box testing


Decision table technique is one of the widely used case design techniques for black box testing. This is a
systematic approach where various input combinations and their respective system behavior are captured in a
tabular form.

That's why it is also known as a cause-effect table. This technique is used to pick the test cases in a systematic
manner; it saves the testing time and gives good coverage to the testing area of the software application.

Decision table technique is appropriate for the functions that have a logical relationship between two and more
than two inputs.

This technique is related to the correct combination of inputs and determines the result of various combinations
of input. To design the test cases by decision table technique, we need to consider conditions as input and
actions as output.

Let's understand it by an example:

Virendra Kumar Tiwari | 5|PAGE


Department of Computer Application (MCA) 6
MCA-203- Software Engineering & UML {UNIT-IV}
Most of us use an email account, and when you want to use an email account, for this you need to enter the
email and its associated password.

If both email and password are correctly matched, the user will be directed to the email account's homepage;
otherwise, it will come back to the login page with an error message specified with "Incorrect Email" or
"Incorrect Password."

Now, let's see how a decision table is created for the login function in which we can log in by using email and
password. Both the email and the password are the conditions, and the expected result is action.

In the table, there are four conditions or test cases to test the login function. In the first condition if both email
and password are correct, then the user should be directed to account's Homepage.

In the second condition if the email is correct, but the password is incorrect then the function should display
Incorrect Password. In the third condition if the email is incorrect, but the password is correct, then it should
display Incorrect Email.

Now, in fourth and last condition both email and password are incorrect then the function should display
Incorrect Email.

In this example, all possible conditions or test cases have been included, and in the same way, the testing team
also includes all possible test cases so that upcoming bugs can be cured at testing level.

To find the number of all possible conditions, tester uses 2n formula where n denotes the number of inputs; in
the example there is the number of inputs is 2 (one is true and second is false).

Number of possible conditions = 2^ Number of Values of the second condition


Number of possible conditions =2^2 = 4

While using the decision table technique, a tester determines the expected output, if the function produces
expected output, then it is passed in testing, and if not then it is failed. Failed software is sent back to the
development team to fix the defect.

Boundary Value Analysis


Boundary value analysis is one of the widely used case design technique for black box testing. It is used to test
boundary values because the input values near the boundary have higher chances of error.

Whenever we do the testing by boundary value analysis, the tester focuses on, while entering boundary value
whether the software is producing correct output or not.

Virendra Kumar Tiwari | 6|PAGE


Department of Computer Application (MCA) 7
MCA-203- Software Engineering & UML {UNIT-IV}
Boundary values are those that contain the upper and lower limit of a variable. Assume that age is a variable of
any function, and its minimum value is 18 and the maximum value is 30, both 18 and 30 will be considered as
boundary values.

The basic assumption of boundary value analysis is, the test cases that are created using boundary values are
most likely to cause an error.

There is 18 and 30 are the boundary values that's why tester pays more attention to these values, but this doesn't
mean that the middle values like 19, 20, 21, 27, 29 are ignored. Test cases are developed for each and every
value of the range.

Testing of boundary values is done by making valid and invalid partitions. Invalid partitions are tested because
testing of output in adverse condition is also essential.

Let's understand via practical:

Imagine, there is a function that accepts a number between 18 to 30, where 18 is the minimum and 30 is the
maximum value of valid partition, the other values of this partition are 19, 20, 21, 22, 23, 24, 25, 26, 27, 28 and
29. The invalid partition consists of the numbers which are less than 18 such as 12, 14, 15, 16 and 17, and more
than 30 such as 31, 32, 34, 36 and 40. Tester develops test cases for both valid and invalid partitions to capture
the behaviour of the system on different input conditions.

Virendra Kumar Tiwari | 7|PAGE


Department of Computer Application (MCA) 8
MCA-203- Software Engineering & UML {UNIT-IV}

The software system will be passed in the test if it accepts a valid number and gives the desired output, if it is
not, then it is unsuccessful. In another scenario, the software system should not accept invalid numbers, and if
the entered number is invalid, then it should display error massage.

If the software which is under test, follows all the testing guidelines and specifications then it is sent to the
releasing team otherwise to the development team to fix the defects.

White Box Testing


White Box Testing, also known as clear box testing, glass box testing, or structural testing, is a method of
software testing that involves testing the internal structures or workings of an application, as opposed to its
functionality (black box testing). This approach requires knowledge of the internal code structure, design, and
implementation.

The box testing approach of software testing consists of black box testing and white box testing. We are
discussing here white box testing which also known as glass box is testing, structural testing, clear box
testing, open box testing and transparent box testing. It tests internal coding and infrastructure of a software
focus on checking of predefined inputs against expected and desired outputs. It is based on inner workings of an
application and revolves around internal structure testing. In this type of testing programming skills are required
to design test cases. The primary goal of white box testing is to focus on the flow of inputs and outputs through
the software and strengthening the security of the software.

The term 'white box' is used because of the internal perspective of the system. The clear box or white box or
transparent box name denote the ability to see through the software's outer shell into its inner workings.

Test cases for white box testing are derived from the design phase of the software development lifecycle. Data
flow testing, control flow testing, path testing, branch testing, statement and decision coverage all these
techniques used by white box testing as a guideline to create an error-free software.

Virendra Kumar Tiwari | 8|PAGE


Department of Computer Application (MCA) 9
MCA-203- Software Engineering & UML {UNIT-IV}

White box testing follows some working steps to make testing manageable and easy to understand what the
next task to do. There are some basic steps to perform white box testing.

Generic steps of white box testing


o Design all test scenarios, test cases and prioritize them according to high priority number.
o This step involves the study of code at runtime to examine the resource utilization, not accessed areas of
the code, time taken by various methods and operations and so on.
o In this step testing of internal subroutines takes place. Internal subroutines such as nonpublic methods,
interfaces can handle all types of data appropriately or not.
o This step focuses on testing of control statements like loops and conditional statements to check the
efficiency and accuracy for different data inputs.
o In the last step white box testing includes security testing to check all possible security loopholes by
looking at how the code handles security.

Key Concepts of White Box Testing


1. Internal Knowledge: White box testing requires the tester to have knowledge of the internal workings
of the software, including its source code, architecture, and algorithms.
2. Coverage: This type of testing aims to achieve thorough testing coverage. Common coverage metrics
include:
o Code Coverage: Ensuring that all code statements are executed at least once.
o Branch Coverage: Ensuring that all branches in the control structures (like if statements) are tested.
o Path Coverage: Ensuring that all possible paths through the code are executed.
3. Techniques: Various techniques are used in white box testing:
o Unit Testing: Testing individual units or components of the software to ensure they function correctly.
o Integration Testing: Testing the interactions between different units or components.
o Static Code Analysis: Reviewing the code without executing it to find potential errors or vulnerabilities.
o Dynamic Code Analysis: Executing the code and examining its behavior during execution.
4. Tools: Several tools can assist with white box testing, such as:
o JUnit: A popular framework for unit testing in Java.
o PyTest: A framework for testing Python applications.
o SonarQube: A tool for static code analysis that helps in identifying code quality issues.
o Coverage.py: A tool for measuring code coverage in Python programs.

Virendra Kumar Tiwari | 9|PAGE


Department of Computer Application (MCA) 10
MCA-203- Software Engineering & UML {UNIT-IV}

Reasons for white box testing


o It identifies internal security holes.
o To check the way of input inside the code.
o Check the functionality of conditional loops.
o To test function, object, and statement at an individual level.

Advantages of White box testing


o White box testing optimizes code so hidden errors can be identified.
o Test cases of white box testing can be easily automated.
o This testing is more thorough than other testing approaches as it covers all code paths.
o It can be started in the SDLC phase even without GUI.

Disadvantages of White box testing


o White box testing is too time consuming when it comes to large-scale programming applications.
o White box testing is much more expensive and complex.
o It can lead to production error because it is not detailed by the developers.
o White box testing needs professional programmers who have a detailed knowledge and understanding of
programming language and implementation.

Techniques Used in White Box Testing


Data Flow Data flow testing is a group of testing strategies that examines the control flow of
Testing programs to explore the sequence of variables according to the sequence of events.

Control Control flow testing determines the execution order of statements or instructions of
Flow the program through a control structure. The control structure of a program is used to
Testing develop a test case for the program. In this technique, a particular part of a large
program is selected by the tester to set the testing path. Test cases represented by the
control graph of the program.

Branch Branch coverage technique is used to cover all branches of the control flow graph. It
Testing covers all the possible outcomes (true and false) of each condition of decision point
at least once.

Statement Statement coverage technique is used to design white box test cases. This technique
Testing involves execution of all statements of the source code at least once. It is used to
calculate the total number of executed statements in the source code, out of total
statements present in the source code.

Decision This technique reports true and false outcomes of Boolean expressions. Whenever
Testing there is a possibility of two or more outcomes from the statements like do while
statement, if statement and case statement (Control flow statements), it is considered
as decision point because there are two outcomes either true or false.

Virendra Kumar Tiwari | 10 | P A G E


Department of Computer Application (MCA) 11
MCA-203- Software Engineering & UML {UNIT-IV}

Black Box Testing vs. White Box Testing vs. Grey Box
Testing
Index Black Box Testing White Box Testing Grey Box Testing

1 Knowledge of internal Knowledge of internal Partially Knowledge of


working structure (Code) is working structure (Coding of the internal working
not required for this type of software) is necessarily structure is required.
testing. Only GUI (Graphical required for this type of
User Interface) is required for testing.
test cases.

2 Black Box Testing is also White Box Testing is also Grey Box Testing is also
known as functional testing, known as structural testing, known as translucent
data-driven testing, and closed clear box testing, code-based testing as the tester has
box testing. testing, and transparent testing. limited knowledge of
coding.

3 The approach towards testing White Box Testing is If the tester has
includes trial techniques and proceeded by verifying the knowledge of coding,
error guessing method because system boundaries and data then it is proceeded by
tester does not need domains inherent in the validating data domains
knowledge of internal coding software as there is no lack of and internal system
of the software. internal coding knowledge. boundaries of the
software.

4 The testing space of tables for The testing space of tables for The testing space of
inputs (inputs to be used for inputs (inputs to be used for tables for inputs (inputs
creating test cases) is pretty creating test cases) is less as to be used for creating
huge and largest among all compared to Black Box test cases) is smaller than
testing spaces. testing. Black Box and White
Box testing.

5 It is very difficult to discover It is simple to discover hidden Difficult to discover the


hidden errors of the software errors because it can be due to hidden error. Might be
because errors can be due to internal working which is found in user level
internal working which is deeply explored in White Box testing.
unknown for Black Box testing.
testing.

6 It is not considered for It is well suitable and It is not considered for


algorithm testing. recommended for algorithm algorithm testing.
testing.

7 Time consumption in Black White Box testing takes a long Test cases designing can
Box testing depends upon the time to design test cases due to be done in a short time
availability of the functional lengthy code. period.
specifications.

Virendra Kumar Tiwari | 11 | P A G E


Department of Computer Application (MCA) 12
MCA-203- Software Engineering & UML {UNIT-IV}
8 Tester, developer and the end Only tester and developer can Tester, developer and the
user can be the part of testing. be a part of testing; the end end user can be the part
user can not involve. of testing.

9 It is the least time-consuming The entire testing process is less time consuming than
process among all the testing the most time consuming White Box testing.
processes. among all the testing
processes.

10 Resilience and security against Resilience and security against Resilience and security
viral attacks are covered under viral attacks are not covered against viral attacks are
Black Box testing. under White Box testing. not covered under Grey
Box testing.

11 The base of this testing is The base of this testing is Testing based on high-
external expectations internal coding which is responsible for level database diagrams
behavior is unknown. internal working. and dataflow diagrams.

12 It is less exhaustive than White It is most exhaustive between Partly exhaustive;


Box and Grey Box testing Black Box and Grey Box depends upon the type of
methods. testing methods. test cases are coding
based or GUI based.

System testing
The System Testing includes testing of a fully integrated software system. Generally, a computer system is
made with the integration of software (any software is only a single element of a computer system). The
software is developed in units and then interfaced with other software and hardware to create a complete
computer system. In other words, a computer system consists of a group of software to perform the various
tasks, but only software cannot perform the task; for that software must be interfaced with compatible
hardware. System testing is a series of different types of tests with the purpose to exercise and examine the
full working of an integrated software computer system against requirements.
To check the end-to-end flow of an application or the software as a user is known as System testing. In this,
we navigate (go through) all the necessary modules of an application and check if the end features or the end
business works fine and test the product as a whole system.
It is end-to-end testing where the testing environment is like the production environment.
There are four levels of software testing: unit testing, integration testing, system testing and acceptance
testing, all are used for the testing purpose. Unit Testing is used to test a single piece of software; Integration
Testing is used to test a group of units of software, System Testing used to test a whole system and
Acceptance Testing used to test the acceptability of business requirements. Here we are discussing system
testing which is the third level of testing levels.

Virendra Kumar Tiwari | 12 | P A G E


Department of Computer Application (MCA) 13
MCA-203- Software Engineering & UML {UNIT-IV}
Hierarchy of Testing Levels

There are mainly two widely used methods for software testing, one is White box testing which uses internal
coding to design test cases, and another is black box testing which uses GUI or user perspective to develop test
cases.
o White box testing
o Black box testing

System testing falls under Black box testing as it includes testing of the external working of the software.
Testing follows the user’s perspective to identify minor defects.

System Testing includes the following steps.

o Verification of input functions of the application to test whether it is producing the expected output or
not.
o Testing of integrated software by including external peripherals to check the interaction of various
components with each other.
o Testing of the whole system for End-to-End testing.
o Behavior testing of the application via a user's experience.

Example of System testing

Suppose we open an application, let say www.rediff.com, and there we can see that an advertisement is
displayed on the top of the homepage, and it remains there for a few seconds before it disappears. These types
of Ads are done by the Advertisement Management System (AMS). Now, we will perform system testing for
this type of field.

The below application works in the following manner:

o Let's say that Amazon wants to display a promotion ad on January 26 at precisely 10:00 AM on the
Rediff's home page for the country India.
o Then, the sales manager logs onto the website and creates a request for an advertisement dated for the
above day.
o He/she attaches a file that is likely an image file or the video file of the AD and applies.

Virendra Kumar Tiwari | 13 | P A G E


Department of Computer Application (MCA) 14
MCA-203- Software Engineering & UML {UNIT-IV}
o The next day, the AMS manager of Rediff mail login into the application and verifies the awaiting Ad
request.
o The AMS manager will check those Amazons ad requests are pending, and then he/she will check if the
space is available for the date and time.
o If space is there, then he/she evaluates the cost of putting up the Ad at 15$ per second, and the overall
Ad cost for 10 seconds is approximately 150$.
o The AMS manager clicks on the payment request and sends the estimated value along with the request
for payment to the Amazon manager.
o Then the amazon manager login into the Ad status and confirms the payment request, and he/she makes
the payment as per all the details and clicks on the Submit and Pay
o As soon as Rediff's AMs manager gets the amount, he/she will set up the Advertisement for the specific
date and time on Rediff mail’s home page.

The various system test scenarios are as follows:

Scenario1: The first test is the general scenario, as we discussed above. The test engineer will do the system
testing for the underlying situation where the Amazon manager creates a request for the Ad and that Ad is used
at a particular date and time.

Scenario2: Suppose the Amazon manager feels that the AD space is too expensive and cancels the request. At
the same time, the Flipkart requests the Ad space on January 26 at 10:00 AM. Then the request of Amazon has
been cancelled. Therefore, Flipkart's promotion ad must be arranged on January 26 at 10 AM.

After all, the request and payment have been made. Now, if Amazon changes their mind and they feel that they
are ready to make payment for January 26 at 10 AM, which should be given because Flipkart has already used
that space. Hence, another calendar must open up for Amazon to make their booking.

Scenario3: in this, first, we login as AMS manger, then click on Set Price page and set the price for AD space
on logout page to 10$ per second.

Virendra Kumar Tiwari | 14 | P A G E


Department of Computer Application (MCA) 15
MCA-203- Software Engineering & UML {UNIT-IV}

Then login as Amazon manager and select the date and time to put up and Ad on the logout page. And the
payment should be 100$ for 10 seconds of an Ad on Rediff mail logout page.

Types of System Testing

System testing is divided into more than 50 types, but software testing companies typically uses some of them.
These are listed below:

Virendra Kumar Tiwari | 15 | P A G E


Department of Computer Application (MCA) 16
MCA-203- Software Engineering & UML {UNIT-IV}

Functional Testing
It is a type of software testing which is used to verify the functionality of the software application, whether the
function is working according to the requirement specification. In functional testing, each function tested by
giving the value, determining the output, and verifying the actual output with the expected value. Functional
testing performed as black box testing which is presented to confirm that the functionality of an application or
system behaves as we are expecting. It is done to verify the functionality of the application.

Functional testing also called as black-box testing, because it focuses on application specification rather than
actual code. Tester has to test only the program rather than the system.

Goal of functional testing

The purpose of the functional testing is to check the primary entry function, necessarily usable function, the
flow of screen GUI. Functional testing displays the error message so that the user can easily navigate
throughout the application.

Virendra Kumar Tiwari | 16 | P A G E


Department of Computer Application (MCA) 17
MCA-203- Software Engineering & UML {UNIT-IV}
Process of functional testing

Testers follow the following steps in the functional testing:

o Tester verifies verification of the requirement specification in the software application.


o After analysis, the requirement specification tester will plan.
o After planning the tests, the tester will design the test case.
o After designing the test, the case tester will make a document of the traceability matrix.
o The tester will execute the test case design.
o Analysis of the coverage to examine the covered testing area of the application.
o Defect management should do to manage defect resolving.

Complete process to perform functional testing:

There are the following steps to perform functional testing:

o There is a need to understand the software requirement.


o Identify test input data
o Compute the expected outcome with the selected input values.
o Execute test cases
o Comparison between the actual and the computed result

Virendra Kumar Tiwari | 17 | P A G E


Department of Computer Application (MCA) 18
MCA-203- Software Engineering & UML {UNIT-IV}

Smoke Testing: Functional testing by smoke testing. Smoke testing includes only the basic (feature)
functionality of the system. Smoke testing is known as "Build Verification Testing." Smoke testing aims to
ensure that the most important function work.

Virendra Kumar Tiwari | 18 | P A G E


Department of Computer Application (MCA) 19
MCA-203- Software Engineering & UML {UNIT-IV}
For example, Smoke testing verifies that the application launches successfully will check that GUI is
responsive.

Sanity Testing: Sanity testing involves the entire high-level business scenario is working correctly. Sanity
testing is done to check the functionality/bugs fixed. Sanity testing is little advance than smoke testing.

For example, login is working fine; all the buttons are working correctly; after clicking on the button navigation
of the page is done or not.

The white box testing needs the analysis of the internal structure of the component or system.

User acceptance testing: It is a type of testing performed by the client to certify the system according to
requirement. The final phase of testing is user acceptance testing before releasing the software to the market or
production environment. UAT is a kind of black box testing where two or more end-users will involve.

Retesting: Retesting is a type of testing performed to check the test cases that were unsuccessful in the final
execution are successfully pass after the defects fixed. Usually, tester assigns the bug when they find it while
testing the product or its component. The bug allocated to a developer, and he fixes it. After fixing, the bug is
assigned to a tester for its verification. This testing is known as retesting.

Database Testing: Database testing is a type of testing which checks the schema, tables, triggers, etc. of the
database under test. Database testing may involve creating complex queries to load/stress test the database and
check its responsiveness. It checks the data integrity and consistency.

Example: let us consider a banking application whereby a user makes a transaction. Now from database testing
following, things are important. They are:

o Application store the transaction information in the application database and displays them correctly to
the user.
o No information lost in this process
o The application does not keep partially performed or aborted operation information.
o The user information is not allowed individuals to access by the

Ad-hoc testing: Ad-hoc testing is an informal testing type whose aim is to break the system. This type of
software testing is unplanned activity. It does not follow any test design to create the test cases. Ad-hoc testing
is done randomly on any part of the application; it does not support any structured way of testing.

Recovery Testing: Recovery testing is used to define how well an application can recover from crashes,
hardware failure, and other problems. The purpose of recovery testing is to verify the system's ability to recover
from testing points of failure.

Static Testing: Static testing is a software testing technique by which we can check the defects in software
without executing it. Static testing is done to avoid errors in the early stage of the development as it is easier to
find failure in the early stages. Static testing used to detect the mistakes that may not found in dynamic testing.

Virendra Kumar Tiwari | 19 | P A G E


Department of Computer Application (MCA) 20
MCA-203- Software Engineering & UML {UNIT-IV}
What are functional testing tools?

The functional testing can also be executed by various apart from manual testing. These tools simplify the
process of testing and help to get accurate and useful results.

It is one of the significant and top priority based techniques which were decided and specified before the
development process.

The tools used for functional testing are:

Tools Features/ Characteristics

Sahi o It is an open-source and automation testing tool, released under Apache License open-source license, used
for testing of the web application.
o Sahi is written in Java and JavaScript and considered for most of the testing techniques.
o It runs as a proxy server; it is browser independent.

SoapUI o It is an open-source functional testing tool, used for web application testing.
o It is simple and easy to design.
o It supports multiple environments, i.e., at any instance, the target environment may be set up.

Watir o Watir, is an abbreviated form of web application testing in ruby, is an open-source tool for automating web
browser.
o It uses a ruby scripting language, which is concise and easy to use./li>
o Watir supports multiple browsers on various platform.

Selenium o The open-source tool, used for functional testing on both web application and applications of the desktop.

o It automates browsers and web applications for testing purpose.


o It gives the flexibility to customize the automated test case
o Provides the advantage of writing test scripts, as per the requirements, using web driver.

Canoo o An open-source tool for performing functional testing of web applications.


WebTest
o Platform independent
o Easy and fast
o Easy to extend to meet growing and incoming requirements.

Cucumber o Cucumber is an open-source testing tool written in Ruby language. This tool works best for test-driven

Virendra Kumar Tiwari | 20 | P A G E


Department of Computer Application (MCA) 21
MCA-203- Software Engineering & UML {UNIT-IV}
development. It is used to test many other languages like java, c#, and python. Cucumber for testing using
some programming.

What are the advantages of Functional Testing?


Advantages of functional testing are:

o It produces a defect-free product.


o It ensures that the customer is satisfied.
o It ensures that all requirements are met.
o It ensures the proper working of all the functionality of an application/software/product.
o It ensures that the software/ product works as expected.
o It ensures security and safety.
o It improves the quality of the product.

Example: Here, we are giving an example of banking software. In a bank when money transferred from bank A
to bank B. And the bank B does not receive the correct amount, the fee is applied, or the money not converted
into the correct currency, or incorrect transfer or bank A does not receive statement advice from bank B that the
payment has received. These issues are critical and can be avoided by proper functional testing.

What are the disadvantages of functional testing?

Disadvantages of functional testing are:

o Functional testing can miss a critical and logical error in the system.
o This testing is not a guarantee of the software to go live.
o The possibility of conducting redundant testing is high in functional testing.

Regression Testing

Regression testing is a black box testing technique. It is used to authenticate a code change in the software that
does not impact the existing functionality of the product. Regression testing is making sure that the product
works fine with new functionality, bug fixes, or any change in the existing feature.

Regression testing is a type of software testing. Test cases are re-executed to check the previous functionality of
the application is working fine, and the new changes have not produced any bugs.

Regression testing can be performed on a new build when there is a significant change in the original
functionality. It ensures that the code still works even when the changes are occurring. Regression means Re-
test those parts of the application, which are unchanged.

Virendra Kumar Tiwari | 21 | P A G E


Department of Computer Application (MCA) 22
MCA-203- Software Engineering & UML {UNIT-IV}
Regression tests are also known as the Verification Method. Test cases are often automated. Test cases are
required to execute many times and running the same test case again and again manually, is time-consuming
and tedious too.

Example of Regression testing


Here we are going to take a case to define the regression testing efficiently:

Consider a product Y, in which one of the functionalities is to trigger confirmation, acceptance, and dispatched
emails. It also needs to be tested to ensure that the change in the code not affected them. Regressing testing does
not depend on any programming language like Java, C++, C#, etc. This method is used to test the product for
modifications, or any updates done. It ensures that any change in a product does not affect the existing module
of the product. Verify that the bugs fixed, and the newly added features did not create any problem in the
previous working version of the Software.

When can we perform Regression Testing?


We do regression testing whenever the production code is modified.

We can perform regression testing in the following scenario, these are:

1. When new functionality added to the application.

Example:
A website has a login functionality which allows users to log in only with email. Now providing a new feature
to do login using Facebook.

2. When there is a Change Requirement.

Example:

Remember password removed from the login page which is applicable previously.

3. When the defect fixed

Example:

Assume login button is not working in a login page and a tester reports a bug stating that the login button is
broken. Once the bug fixed by developers, tester tests it to make sure Login Button is working as per the
expected result. Simultaneously, tester tests other functionality which is related to the login button.

4. When there is a performance issue fix

Example:

Loading of a home page takes 5 seconds, reducing the load time to 2 seconds.

5. When there is an environment change

Example:
Virendra Kumar Tiwari | 22 | P A G E
Department of Computer Application (MCA) 23
MCA-203- Software Engineering & UML {UNIT-IV}
When we update the database from MySql to Oracle.

How to perform Regression Testing?


The need for regression testing comes when software maintenance includes enhancements, error corrections,
optimization, and deletion of existing features. These modifications may affect system functionality. Regression
Testing becomes necessary in this case.

Regression testing can be performed using the following techniques:

1. Re-test All:

Re-Test is one of the approaches to do regression testing. In this approach, all the test case suits should be re-
executed. Here we can define re-test as when a test fails, and we determine the cause of the failure is a software
fault. The fault is reported, we can expect a new version of the software in which defect fixed. In this case, we
will need to execute the test again to confirm that the fault fixed. This is known as re-testing. Some will refer to
this as confirmation testing.

The re-test is very expensive, as it requires enormous time and resources.

2. Regression test Selection:

o In this technique, a selected test-case suit will execute rather than an entire test-case suit.
o The selected test case suits divided in two cases.
1. Reusable Test cases.
2. Obsolete Test cases.
o Reusable test cases can be used in succeeding regression cycle.
o Obsolete test cases can't be used in succeeding regression cycle.

3. Prioritization of test cases:

Prioritize the test case depending on business impact, critical and frequently functionality used. Selection of test
cases will reduce the regression test suite.

Virendra Kumar Tiwari | 23 | P A G E


Department of Computer Application (MCA) 24
MCA-203- Software Engineering & UML {UNIT-IV}
What are the Regression Testing tools?

Regression Testing is a vital part of the QA process, while performing the regression we may face the below
challenges:

o Time Consuming
Regression Testing consumes a lot of time to complete. Regression testing involves existing tests again,
so testers are not excited to re-run the test.
o Complex
Regression Testing is complex as well when there is a need to update any product; lists of the test are
also increasing.
o Communicating business rule
Regression Testing ensures the existing product features are still in working order. Communication
about regression testing with a non-technical leader can be a difficult task. The executive wants to see
the product move forward and make a considerable time investment in regression testing to ensure
existing functionality working can be hard.
o Identify Impact Area
o Test Cases Increases Release by Release
o Less Resources
o No Accuracy
o Repetitive Task
o Monotonous Job

Types of Regression Testing

The different types of Regression Testing are as follows:

1. Unit Regression Testing [URT]


2. Regional Regression Testing [RRT]
3. Full or Complete Regression Testing [FRT]

Virendra Kumar Tiwari | 24 | P A G E


Department of Computer Application (MCA) 25
MCA-203- Software Engineering & UML {UNIT-IV}

Advantages of Regression Testing

Advantages of Regression Testing are:

o Regression Testing increases the product's quality.


o It ensures that any bug fix, or changes do not impact the existing functionality of the product.
o Automation tools can be used for regression testing.
o It makes sure the issues fixed do not occur again.

Disadvantages of Regression Testing

There are several advantages of Regression Testing though there are disadvantages as well.

o Regression Testing should be done for small changes in the code because even a slight change in the code can create issues
with the existing functionality.
o If in case automation is not used in the project for testing, it will be a time consuming and tedious task to execute the test
again and again.

Structural Software Testing


Structural testing is a type of software testing that uses the internal design of the software for testing or in
other words the software testing which is performed by the team which knows the development phase of the
software, is known as structural testing.
Structural testing is related to the internal design and implementation of the software i.e. it involves the
development team members in the testing team. It tests different aspects of the software according to its types.
Structural testing is just the opposite of behavioural testing.

There are 4 types of Structural Testing:

Virendra Kumar Tiwari | 25 | P A G E


Department of Computer Application (MCA) 26
MCA-203- Software Engineering & UML {UNIT-IV}

Types of Structural Testing

• Control Flow Testing:


Control flow testing is a type of structural testing that uses the programs’ control flow as a model. The entire
code, design and structure of the software have to be known for this type of testing. Often this type of testing is
used by the developers to test their own code and implementation. This method is used to test the logic of the
code so that required result can be obtained.
• Data Flow Testing:
It uses the control flow graph to explore the unreasonable things that can happen to data. The detection of data
flow anomalies is based on the associations between values and variables. Without being initialized usage of
variables. Initialized variables are not used once.
• Slice Based Testing:
It was originally proposed by Weiser and Gallagher for the software maintenance. It is useful for software
debugging, software maintenance, program understanding and quantification of functional cohesion. It divides
the program into different slices and tests that slice which can majorly affect the entire software.
• Mutation Testing:
Mutation Testing is a type of Software Testing that is performed to design new software tests and evaluate the
quality of already existing software tests. Mutation testing is related to modification a program in small ways. It
focuses to help the tester develop effective tests or locate weaknesses in the test data used for the program.

Advantages of Structural Testing


• It provides thorough testing of the software.
• It helps in finding defects at an early stage.
• It helps in elimination of dead code.
• It is not time consuming as it is mostly automated.
Disadvantages of Structural Testing
• It requires knowledge of the code to perform test.
• It requires training in the tool used for testing.
• Sometimes it is expensive.

Virendra Kumar Tiwari | 26 | P A G E


Department of Computer Application (MCA) 27
MCA-203- Software Engineering & UML {UNIT-IV}

Software Testing Tools


Software Testing tools are the tools that are used for the testing of software. Software testing tools are often
used to assure firmness, thoroughness, and performance in testing software products. Unit testing and
subsequent integration testing can be performed by software testing tools. These tools are used to fulfill all the
requirements of planned testing activities. These tools also work as commercial software testing tools. The
quality of the software is evaluated by software testers with the help of various testing tools.

Types of Testing Tools


Software testing is of two types, static testing, and dynamic testing. Also, the tools used during these testing are
named accordingly on these tastings. Testing tools can be categorized into two types which are as follows:

1. Static Test Tools: Static test tools are used to work on the static testing processes. In the testing through
these tools, the typical approach is taken. These tools do not test the real execution of the software. Certain
input and output are not required in these tools. Static test tools consist of the following:
• Flow analyzers: Flow analyzers provide flexibility in the data flow from input to output.
• Path Tests: It finds the not used code and code with inconsistency in the software.
• Coverage Analyzers: All rationale paths in the software are assured by the coverage analyzers.
• Interface Analyzers: They check out the consequences of passing variables and data in the
modules.

2. Dynamic Test Tools: Dynamic testing process is performed by the dynamic test tools. These tools test the
software with existing or current data. Dynamic test tools comprise the following:
• Test driver: The test driver provides the input data to a module-under-test (MUT).
• Test Beds: It displays source code along with the program under execution at the same time.
• Emulators: Emulators provide the response facilities which are used to imitate parts of the system
not yet developed.
• Mutation Analyzers: They are used for testing the fault tolerance of the system by knowingly
providing the errors in the code of the software.

There is one more categorization of software testing tools. According to this classification, software testing
tools are of 10 types:
1. Test Management Tools: Test management tools are used to store information on how testing is to
be done, help to plan test activities, and report the status of quality assurance activities. For example,
JIRA, Redmine, Selenium, etc.
2. Automated Testing Tools: Automated testing tools helps to conduct testing activities without
human intervention with more accuracy and less time and effort. For example, Appium, Cucumber,
Ranorex, etc.
3. Performance Testing Tools: Performance testing tools helps to perform effectively and efficiently
performance testing which is a type of non-functional testing that checks the application for
parameters like stability, scalability, performance, speed, etc. For example, WebLOAD, Apache
JMeter, Neo Load, etc.
4. Cross-browser Testing Tools: Cross-browser testing tools helps to perform cross-browser testing
that lets the tester check whether the website works as intended when accessed through different
browser-OS combinations. For example, Testsigma, Testim, Perfecto, etc.

Virendra Kumar Tiwari | 27 | P A G E


Department of Computer Application (MCA) 28
MCA-203- Software Engineering & UML {UNIT-IV}
5. Integration Testing Tools: Integration testing tools are used to test the interface between the
modules and detect the bugs. The main purpose here is to check whether the specific modules are
working as per the client’s needs or not. For example, Citrus, FitNesse, TESSY, etc.
6. Unit Testing Tools: Unit testing tools are used to check the functionality of individual modules and
to make sure that all independent modules works as expected. For example, Jenkins, PHPUnit,
JUnit, etc.
7. Mobile Testing Tools: Mobile testing tools are used to test the application for compatibility on
different mobile devices. For example, Appium, Robotium, Test IO, etc.
8. GUI Testing Tools: GUI testing tools are used to test the graphical user interface of the software.
For example, EggPlant, Squish, AutoIT, etc.
9. Bug Tracking Tools: Bug tracking tool helps to keep track of various bugs that come up during the
application lifecycle management. It helps to monitor and log all the bugs that are detected during
software testing. For example, Trello, JIRA, GitHub, etc.
10. Security Testing Tools: Security testing is used to detect the vulnerabilities and safeguard the
application against the malicious attacks. For example, NetSparker, Vega, ImmuniWeb, etc.

Top 10 Software Testing Tools


1. Browser Stack Test Management: Browser Stack Test management is the latest software test management
platform that offers a centralized test case repository with the best-in-class UI/UX. Integrates with other
Browser Stack software testing tools such as Live, Test Observability, Automate & App Automate.
Features:
• Facilitates two-way integration with Jira, enhancing traceability for test cases and runs.
• Provides a rich dashboard for real-time reports & insights.
• Users can import data from existing tools using APIs or CSVs, with smart parsing for CSV fields.
• Test results can be uploaded from Test Observability or report formats like JUnit-XML/BDD-JSON.
• Supports test automation frameworks such as TestNG, WebdriverIO, Nightwatch.js, Appium,
Playwright, etc.
• Integrates with CI/CD tools such as Jenkins, Azure Pipelines, Bamboo & CircleCI.
2. LambdaTest: LambdaTest is an AI-powered test orchestration and execution platform that allows
developers and testers to perform manual and automated software testing at scale across different permutations
of real browsers, devices, and operating systems.
Features:
• Run your test scripts on a cloud grid using popular test automation frameworks like Selenium,
Playwright, Cypress, Appium, and more.
• Accelerate your software release cycles by multiple fold folds with parallel test execution.
• Test locally hosted projects with LambdaTest Tunnel and UnderPass before going live with your
websites.
• Leverage the HyperExecute platform to perform end-to-end test orchestration and get high-test
execution speed up to 70% faster than traditional cloud grids.
• Integrate LambdaTest with third-party tools like Jira, Asana, Jenkins, GitHub Actions, and more as
per your project requirements.
3. TestGrid: TestGrid is a leading cloud-based end-to-end testing and test infrastructure platform designed to
streamline and enhance the automated testing of web and mobile applications. The platform integrates
seamlessly with leading test automation frameworks like Selenium, Appium, and Cypress, allowing for the
automated execution of test scripts and enhancing testing efficiency and reliability.
Features:
• It supports integration with popular CI/CD tools such as Jenkins, CircleCI, and GitLab.

Virendra Kumar Tiwari | 28 | P A G E


Department of Computer Application (MCA) 29
MCA-203- Software Engineering & UML {UNIT-IV}
• Offers true scriptless testing for test case generation & execution
• It allows remote access to testers and developers for manual testing and debugging.
• It offers detailed reporting and analytics features for testing results.
• It enables cross-browser and cross-device testing.
• Both private and on-premise browser and mobile cloud infrastructure are available
4. TestRail: TestRail is a test management tool that helps to streamline software testing processes, get visibility
into QA. This tool is used by testers, developers, and team leads to manage, track, and organize software testing
efforts.
Features:
• It helps to manage test cases, plans, and runs.
• It helps to increase test coverage.
• It helps to get real-time insights into your QA progress.
• It helps to document test plans and track real-time progress.
5. Xray: Xray is a test management app for Jira that helps to plan, execute, and track quality assurance with
requirements traceability.
Features:
• It promotes Native Quality Management, where all tools, tests used by QA are built natively into
development environment like Jira.
• It integrates with leading automation frameworks like Cucumber, Selenium, and JUnit to automate
testing.
• It allows easy integration with CI tools like Jenkins, Bamboo, and GitLab.
• It helps to easily map stories using BDD.
6. Zephyr Scale: Zephyr Scale is a test management provides a smarter and more structured way to plan,
manage, and measure tests inside Jira.
Features:
• It offers cross-project integration, traceability, and a structured designed useful in large
environments.
• It helps to scale tests in Jira.
• It helps to improve visibility, data analysis, and collaboration.
• It provides detailed changed history, test case versioning, and end-to-end traceability with Jira issues
and challenges.
7. Selenium: Selenium provides a playback tool for authoring tests across most web browsers without the need
to learn a test scripting language.
Features:
• It provides multi-browser support.
• It makes it easy to identify web elements on the web apps with the help of its several locators.
• It is able to execute test cases quicker than the other tools.
8. Ranorex: Ranorex Studio is a GUI test automation framework used for testing web-based, desktop, and
mobile applications. It does not have its own scripting language to automate application.
Features:
• It helps to automate tests on Windows desktop, then execute locally or remotely on real or virtual
machines.
• It runs tests in parallel to accelerate cross-browser testing for Chrome, Firefox, Safari, etc.
• It tests on real iOS or Android devices, simulators, emulators, etc.
9. TestProject: TestProject is a test automation tool that allows users to create automated tests for mobile and
web applications. It is built on top of popular frameworks like Selenium and Appium.
Features:
• It is a free end-to-end test automation platform for web, mobile, and API testing.

Virendra Kumar Tiwari | 29 | P A G E


Department of Computer Application (MCA) 30
MCA-203- Software Engineering & UML {UNIT-IV}
• Tests are saved as local files directly on your machine with no cloud-footprint to get a complete
offline experience.
• It helps to create reliable codeless tests powered by self-healing, adaptive wait, and community add-
ons.
• It provides insights about release quality, step-by-step detailed report with screenshots and logs.
10. Katalon Platform: Katalon Platform is a comprehensive quality management platform that enables team to
easily and efficiently test, launch, and optimize the best digital experiences.
Features:
• It is designed to create and reuse automated test scripts for UI without coding.
• It allows running automated tests of UI elements including pop-ups, iFrames, and wait-time.
• It eases deployment and allows wider set of integrations compared to Selenium.

Virendra Kumar Tiwari | 30 | P A G E


Department of Computer Application (MCA) 31
MCA-203- Software Engineering & UML {UNIT-IV}
What is Test Case Management?
Test Case Management (TCM) is the process of creating, organizing, managing, and tracking test cases within a
software testing environment. It involves designing, executing, and monitoring test cases to ensure the quality
and reliability of software applications.
Software test case management primarily deals with:
• Test Case Creation
• Organization and Structuring
• Version Control
• Execution and Tracking
• Defect Tracking
• Reporting and Analysis

Software Test Case Management tools provide a centralized platform to facilitate these activities. These tools
offer features like test case creation, version control, test execution, reporting, integration with other
development tools, and collaboration capabilities, streamlining the testing process and enhancing overall
software quality.

Why is Test Case Management important?


Poor Software quality costs nearly USD 2.41 Trillion each year in the US. Also, 48% of the software projects
fail due to Poor Documentation.

Virendra Kumar Tiwari | 31 | P A G E


Department of Computer Application (MCA) 32
MCA-203- Software Engineering & UML {UNIT-IV}
You can prevent common software project failure reasons by effective test case management.

Test case management is crucial for software development from productivity and efficency perspective. It helps
with:

• Better Documentation and Organization


• Faster Release
• Reusability of Test Cases
• Efficient Resource Utilization
• Cost-effectiveness
• Better Visibility and Control

Better Documentation and Organization

Poor documentation is a major reason for software failure. With Test Case Management, you can ensure
standardization in Test Case Documentation. It helps create, manage and track the test cases efficiently.

Proper documentation and organization make test case more traceable and relevant with respect to the
requirements, which improves the overall accuracy and maintainability of test cases.

Faster release
Effective Test Management ensures Test Reusability, better Test Coverage, and optimized Test Execution. This
leads to faster release of high-quality software. Using Test Case Management, you can set priority of test cases,
use automation wherever possible, and enhance traceability of test cases.

Reusability of Test Cases


Did you know 60% of the test cases can be reused and plugged to a new project by utilizing the existing
blocks of test cases

Test Case Management standardize test creation, which enhances reusability of test cases on similar test
scenarios. It saves time, effort and resources to create test cases. It shows significant efficiency in larger
projects with high volume of test cases.

Virendra Kumar Tiwari | 32 | P A G E


Department of Computer Application (MCA) 33
MCA-203- Software Engineering & UML {UNIT-IV}
Efficient Resource Utilization
Test case management optimizes the utilization of testing resources by allowing teams to prioritize test cases
based on critical functionalities, risk factors, or business priorities. This ensures that limited resources are used
efficiently for maximum test coverage. It makes the testing process efficient and uses resources optimally,
preventing wastage or under-resourcing from causing software project failure.

Cost-effectiveness
Did you know software bugs cause economic damage of $316 billion per year globally?

An effective test case management system increases the chances of finding and fixing bugs in the testing stage.
This helps save costs related to fixing defects by up to 85%. The faster the defect is caught, the lesser cost is
incurred in fixing the defect.

Moreover, test case management provides traceability between requirements, test cases, and defects, which
makes debugging more efficient.

Better Visibility and Control


Test Case Management allows project stakeholders to track progress of test cases. It helps them identify
bottlenecks and make informed decisions, especially for larger projects due to better traceability and
accountability. It enables project managers to have better control over the test cases.

Since QA is allocated almost over 50% of the total software development budget, having control over the
process is crucial. Test Case Management allows you to have more organized documentation for seamless
handovers, especially for long-running projects.

Virendra Kumar Tiwari | 33 | P A G E


Department of Computer Application (MCA) 34
MCA-203- Software Engineering & UML {UNIT-IV}

Who needs Test Case Management?


Test Case Management is used for delivering high-quality software applications by:

• Developers, who perform unit testing and debug code based on test results, to deliver error-free
code. Clear test cases aid in understanding the intended functionalities, helping developers write more
robust code and perform effective unit testing.

• QAs, who organize, execute, and track test cases, ensuring comprehensive coverage and effective defect
management.

• Product Managers, who foresee the product lifecycle, allocate resources and make decisions for future
trajectory of product development based on the visibility into testing progress.

• Business Analysts, who ensure all the test cases are well aligned with the business requirements specs
at every stage, keeping users’ interests in mind.

Understanding Test Case Management Process


The Test Case Management (TCM) process involves several key steps to create, execute, and track test cases.

Virendra Kumar Tiwari | 34 | P A G E


Department of Computer Application (MCA) 35
MCA-203- Software Engineering & UML {UNIT-IV}

Creating Test Cases


• Requirement Analysis: Understand the requirements and align it with the software’s functionalities and
business needs

• Test Case Design: Create detailed test cases that cover different scenarios, including positive and
negative cases, edge cases, and boundary conditions. Each test case should have clear steps, inputs,
expected outcomes, and prerequisites.

Test Case Execution


• Organizing Test Case: Categories and organize test cases based on modules, functionalities, priority, or any
other relevant criteria for easy navigation and management of test cases.

• Test Case Execution: Execute test cases according to the test plan. Document the actual results, any deviations
from expected outcomes, and encountered defects.

Tracking and Maintenance of Test Case


• Defect Tracking and Management: Record defects found during test case execution. Use a defect
tracking system to prioritize, assign, and monitor the status of each defect until resolution.

• Test Reporting and Analysis: Generate reports summarizing test execution results, including pass/fail
rates, defect density, test coverage, and other metrics. Analyze these reports to identify trends, areas
needing improvement, and overall project status.

• Test Case Maintenance: Regularly review and update test cases to reflect changes in requirements,
functionalities, or fixes. Keep the test cases current and relevant to ensure accurate testing.

Virendra Kumar Tiwari | 35 | P A G E


Department of Computer Application (MCA) 36
MCA-203- Software Engineering & UML {UNIT-IV}
An efficient Test Case Management process ensures that testing activities are well-organized, thorough, and
aligned with project objectives. It contributes to higher software quality, faster defect resolution, and overall
project success.

Software Maintenance
Software maintenance is a part of the Software Development Life Cycle. Its primary goal is to modify and
update software application after delivery to correct errors and to improve performance. Software is a model of
the real world. When the real-world changes, the software require alteration wherever possible.

Software Maintenance is an inclusive activity that includes error corrections, enhancement of capabilities,
deletion of obsolete capabilities, and optimization.

Need for Maintenance


Software Maintenance is needed for: -

o Correct errors
o Change in user requirement with time
o Changing hardware/software requirements
o To improve system efficiency
o To optimize the code to run faster
o To modify the components
o To reduce any unwanted side effects.

Thus, the maintenance is required to ensure that the system continues to satisfy user requirements.

Virendra Kumar Tiwari | 36 | P A G E


Department of Computer Application (MCA) 37
MCA-203- Software Engineering & UML {UNIT-IV}
Types of Software Maintenance

1. Corrective Maintenance
Corrective maintenance aims to correct any remaining errors regardless of where they may cause specifications,
design, coding, testing, and documentation, etc.

2. Adaptive Maintenance
It contains modifying the software to match changes in the ever-changing environment.

3. Preventive Maintenance
It is the process by which we prevent our system from being obsolete. It involves the concept of reengineering
& reverse engineering in which an old system with old technology is re-engineered using new technology. This
maintenance prevents the system from dying out.

4. Perfective Maintenance
It defines improving processing efficiency or performance or restricting the software to enhance changeability.
This may contain enhancement of existing system functionality, improvement in computational efficiency, etc.

Virendra Kumar Tiwari | 37 | P A G E


Department of Computer Application (MCA) 38
MCA-203- Software Engineering & UML {UNIT-IV}

Causes of Software Maintenance Problems

Lack of Traceability

o Codes are rarely traceable to the requirements and design specifications.


o It makes it very difficult for a programmer to detect and correct a critical defect affecting customer operations.
o Like a detective, the programmer pores over the program looking for clues.
o Life Cycle documents are not always produced even as part of a development project.

Lack of Code Comments

o Most of the software system codes lack adequate comments. Lesser comments may not be helpful in certain
situations.

Obsolete Legacy Systems

o In most of the countries worldwide, the legacy system that provides the backbone of the nation's critical
industries, e.g., telecommunications, medical, transportation utility services, were not designed with maintenance
in mind.
o They were not expected to last for a quarter of a century or more!

Virendra Kumar Tiwari | 38 | P A G E


Department of Computer Application (MCA) 39
MCA-203- Software Engineering & UML {UNIT-IV}
o Therefore, the code supporting these systems is devoid of traceability to the requirements, compliance to design
and programming standards and often includes dead, extra and uncommented code, which all make the
maintenance task next to the impossible.

Software Maintenance Process

Program Understanding

The first step consists of analysing the program to understand.

Generating a Particular maintenance problem

The second phase consists of creating a particular maintenance proposal to accomplish the implementation of
the maintenance goals.

Ripple Effect

Virendra Kumar Tiwari | 39 | P A G E


Department of Computer Application (MCA) 40
MCA-203- Software Engineering & UML {UNIT-IV}
The third step consists of accounting for all the ripple effects as a consequence of program modifications.

Modified Program Testing

The fourth step consists of testing the modified program to ensure that the revised application has at least the
same reliability level as prior.

Maintainability

Each of these four steps and their associated software quality attributes is critical to the maintenance process.
All these methods must be combined to form maintainability.

SOFTWARE MAINTENANCE PROCESS

The software maintenance process consists of the following seven-steps:

Step 1 – Change Management

Step 2 – Impact Analysis

Step 3 – System Release Planning

Step 4 – Design Changes

Step 5 – Coding

Step 6 – Testing

Step 7 – System Release

Step 1 – Change Management

It is used to uniquely identify, describe and track the status of each requested change. In an
organization, change requests are recorded and tracked through all stages of the maintenance
process in a Change Management Tracking System. Moreover, Project Management and Quality
Assurance receive information about the status of the Change Requests.

Step 2 – Impact Analysis

An Impact Analysis identifies all systems/system products affected by a change request


developing an estimate of the resources needed to accomplish the change. It consists of two
important steps namely the evaluation of change requests and the estimation of resources.

Virendra Kumar Tiwari | 40 | P A G E


Department of Computer Application (MCA) 41
MCA-203- Software Engineering & UML {UNIT-IV}
Step 3 – System Release Planning

The aims of system release planning are to establish the schedule of system releases and to
determine the contents of a system release. Moreover, the System Release/Version Description
Document describes the contents / timing of a system release, communicates between maintainers
and users and provides the guidelines to plan hardware, operational procedures and backup
procedures.

Step 4 – Design Changes

The aims of design changes are to develop a revised logical (system level) and physical (program
level) design for the change. It analyses and makes the design changes, updates the documentation,
updates the configuration management system, and updates the change request for management. It
is useful to design the changes for each of the categories of maintenance.

Step 5 – Code

The aim: of coding is to clarify existing code and simplify changing it. It includes the Re-
Engineering of Source Code by restructuring it and by performing the redesign and rewriting of the
code. Finally, codes are reviewed as it is done for design.

Step 6 – Software Testing

Software testing is also necessary during the maintenance phase for comparing the maintenance
and development differences. The testing carried out during the maintenance phase must ensure the
following

Step 7 – System Release

The main aim of system release is to package the system for release. It consists of many
components including documentation, software design checking, training, comparison with other
products and by proper maintenance of the hardware. It helps to deliver the system to the user and
to install the system release with backup procedures.

Virendra Kumar Tiwari | 41 | P A G E


Department of Computer Application (MCA) 42
MCA-203- Software Engineering & UML {UNIT-IV}

Test your skills (Questions):

Short questions

1. What is the primary objective of software testing?


2. Define verification and validation in the context of software testing.
3. Why is it important to test software during development?
4. Describe the difference between proactive and reactive testing strategies.
5. What are the main phases involved in a typical software testing strategy?
6. What is black box testing, and what does it focus on?
7. List three techniques used in black box testing.
8. How does equivalence partitioning work in black box testing?
9. What is white box testing, and what aspects of the software does it examine?
10. Explain the concept of code coverage in white box testing.
11. What are the advantages of using white box testing?
12. What is system testing, and when is it performed in the software development lifecycle?
13. How does system testing differ from integration testing?
14. What types of tests are typically included in system testing?
15. Define functional testing.
16. How is functional testing different from non-functional testing?
17. Provide an example of a functional test case.
18. What is structural testing?
19. Describe the difference between statement coverage and branch coverage.
20. Why is structural testing important?
21. What is regression testing?
22. Why is regression testing critical after software modifications?
23. Describe the process of selecting test cases for regression testing.
24. What are software testing tools, and why are they used?
25. Name three popular software testing tools and their primary functions.
26. How can automated testing tools benefit a testing process?
27. What is test case management?
28. Why is it important to manage test cases effectively?
29. Describe a feature of a good test case management tool.
30. What are some common challenges associated with software maintenance?
31. How can poor documentation impact software maintenance?
32. Why is it essential to manage software maintenance efficiently?
33. Define corrective maintenance.
34. What is adaptive maintenance?
35. Explain the difference between perfective and preventive maintenance.
36. What is the role of a software maintenance organization?
37. How should a software maintenance team be structured for effectiveness?
38. What key activities are involved in organizing software maintenance?
39. What information is typically included in a maintenance report?
40. Why is it important to generate regular maintenance reports?
41. How can maintenance reports help in improving the software maintenance process?

Long questions

Virendra Kumar Tiwari | 42 | P A G E


Department of Computer Application (MCA) 43
MCA-203- Software Engineering & UML {UNIT-IV}
1. Discuss the fundamental principles of software testing and explain why each principle is important in ensuring the
quality of software products.
2. Compare and contrast verification and validation. Provide examples of activities involved in each process and
discuss their significance in the software development lifecycle.
3. Explain the various software testing strategies (e.g., unit testing, integration testing, system testing, acceptance
testing). Discuss the objectives, methods, and challenges associated with each strategy.
4. How do proactive and reactive testing strategies differ? Provide examples of situations where each strategy would
be appropriate and discuss their advantages and disadvantages.
5. Describe black box testing. Discuss the key techniques used in black box testing, such as equivalence partitioning,
boundary value analysis, and decision table testing, and provide examples of how these techniques are applied.
6. What are the limitations of black box testing? How can these limitations impact the overall testing process, and
what measures can be taken to mitigate them?
7. Define white box testing and discuss its main objectives. Explain the concepts of code coverage, including
statement coverage, branch coverage, and path coverage, and illustrate with examples how each type of coverage
is measured.
8. What are the primary advantages and disadvantages of white box testing? Discuss scenarios where white box
testing would be particularly beneficial and situations where it might not be the best approach.
9. Describe the process and objectives of system testing. How does system testing integrate with other stages of the
software development lifecycle, and what types of tests are typically performed during system testing?
10. Explain how system testing differs from integration testing. Provide examples of system testing activities and
discuss the challenges that might be encountered during system testing.
11. Define functional testing and explain its significance in ensuring software quality. Describe the process of
creating and executing functional test cases, and provide examples of functional testing scenarios.
12. Compare functional testing with non-functional testing. Discuss the different aspects evaluated by each type of
testing and explain why both are essential in a comprehensive testing strategy.
13. What is structural testing, and how does it differ from functional testing? Discuss the techniques used in structural
testing, such as control flow testing and data flow testing, and provide examples of how these techniques are
applied.
14. Explain the importance of structural testing in detecting defects that might not be found through functional testing
alone. Discuss the challenges associated with structural testing and how they can be addressed.
15. What is regression testing, and why is it crucial in the software maintenance process? Describe the steps involved
in performing regression testing and discuss how to select test cases for regression testing effectively.
16. How can automated regression testing tools improve the efficiency and effectiveness of the regression testing
process? Provide examples of popular regression testing tools and their key features.
17. Discuss the role of software testing tools in the software development and testing process. Compare manual and
automated testing tools, highlighting their advantages and disadvantages, and provide examples of commonly
used tools for each type.
18. Explain how test management tools can enhance the organization and execution of testing activities. Discuss the
features of an effective test management tool and provide examples of popular tools used in the industry.
19. What is test case management, and why is it important in the software testing process? Describe the key
components of a test case and the criteria for writing effective test cases.
20. How can a test case management system support the testing process? Discuss the features and benefits of using a
test case management tool and provide examples of how it can be integrated into a testing workflow.
21. Identify and discuss the common challenges associated with software maintenance. Explain how these challenges
can impact the software lifecycle and suggest strategies to overcome them.

Virendra Kumar Tiwari | 43 | P A G E


Department of Computer Application (MCA) 44
MCA-203- Software Engineering & UML {UNIT-IV}
22. Discuss the role of documentation in software maintenance. Explain how inadequate documentation can hinder
maintenance efforts and provide recommendations for maintaining comprehensive and up-to-date documentation.
23. Define and differentiate between corrective, adaptive, perfective, and preventive maintenance. Provide examples
of activities involved in each type of maintenance and discuss their significance in maintaining software quality
and performance.
24. How does the nature of the software and its usage environment influence the type of maintenance required?
Discuss scenarios where each type of maintenance would be necessary and explain how organizations can
prioritize maintenance activities.
25. Describe the structure and responsibilities of a software maintenance organization. Explain how a well-organized
maintenance team can contribute to the efficient and effective maintenance of software systems.
26. Discuss the key activities involved in organizing and managing software maintenance. Explain the importance of
processes and standards in maintenance and provide examples of best practices for maintaining software systems.
27. What is a maintenance report, and what information is typically included in it? Discuss the purpose and benefits
of generating maintenance reports and explain how they can be used to improve the software maintenance
process.
28. How can maintenance reports be utilized to identify trends and issues in software performance and reliability?
Discuss the role of maintenance reports in decision-making and provide examples of how they can support
continuous improvement efforts in software maintenance.

Virendra Kumar Tiwari | 44 | P A G E

You might also like