RGPV Unit-4-SEM-Software Testing and Maintenance 2024
RGPV Unit-4-SEM-Software Testing and Maintenance 2024
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 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
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.
1. Requirement Analysis
2. Test Plan Creation
3. Environment setup
4. Test case Execution
5. Defect Logging
6. Test Cycle Closure
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.
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.
Boundary Value Boundary Value Technique is used to test boundary values, boundary values
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
Black Box Testing vs. White Box Testing vs. Grey Box
Testing
Index Black Box Testing White Box Testing Grey Box Testing
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
System testing is divided into more than 50 types, but software testing companies typically uses some of them.
These are listed below:
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.
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.
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.
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.
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.
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.
Cucumber o Cucumber is an open-source testing tool written in Ruby language. This tool works best for test-driven
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.
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.
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.
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.
Example:
Remember password removed from the login page which is applicable previously.
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.
Example:
Loading of a home page takes 5 seconds, reducing the load time to 2 seconds.
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.
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.
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.
Prioritize the test case depending on business impact, critical and frequently functionality used. Selection of test
cases will reduce the regression test suite.
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
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.
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.
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.
Test case management is crucial for software development from productivity and efficency perspective. It helps
with:
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.
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.
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.
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.
• 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.
• 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: Execute test cases according to the test plan. Document the actual results, any deviations
from expected outcomes, and encountered defects.
• 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.
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.
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.
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.
Lack of Traceability
o Most of the software system codes lack adequate comments. Lesser comments may not be helpful in certain
situations.
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!
Program Understanding
The second phase consists of creating a particular maintenance proposal to accomplish the implementation of
the maintenance goals.
Ripple Effect
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.
Step 5 – Coding
Step 6 – Testing
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.
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.
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.
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
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.
Short questions
Long questions