You are on page 1of 13

10.

SOFTWARE MAINTENANCE

Software maintenance is the process of changing, modifying, and

updating software to keep up with customer needs. Software

maintenance is done after the product has launched for several reasons

including improving the software overall, correcting issues or bugs, to

boost performance, and more.

Software maintenance is a natural part of SDLC (software

development life cycle). Software developers don’t have the luxury of

launching a product and letting it run, they constantly need to be on the

lookout to both correct and improve their software to remain competitive

and relevant. Using the right software maintenance techniques and

strategies is a critical part of keeping any software running for a long

period of time and keeping customers and users happy.

software maintenance important

 Creating a new piece of software and launching it into the world is an

exciting step for any company. A lot goes into creating your software

and its launch including the actual building and coding, licensing

models, marketing, and more. However, any great piece of software

must be able to adapt to the times.

 This means monitoring and maintaining properly. As technology is

changing at the speed of light, software must keep up with the

market changes and demands.

Types of software maintenance

The four different types of software maintenance are each performed

for different reasons and purposes. A given piece of software may have

to undergo one, two, or all types of maintenance throughout its lifespan.


The four types are:

 Corrective Software Maintenance

 Preventative Software Maintenance

 Perfective Software Maintenance

 Adaptive Software Maintenance

Corrective Software Maintenance

Corrective software maintenance is the typical, classic form of

maintenance (for software and anything else for that matter). Corrective

software maintenance is necessary when something goes wrong in a

piece of software including faults and errors. These can have a

widespread impact on the functionality of the software in general and

therefore must be addressed as quickly as possible.

Many times, software vendors can address issues that require

corrective maintenance due to bug reports that users send in. If a

company can recognize and take care of faults before users discover

them, this is an added advantage that will make your company seem

more reputable and reliable (no one likes an error message after all).

Preventative Software Maintenance

Preventative software maintenance is looking into the future so that

your software can keep working as desired for as long as possible.

This includes making necessary changes, upgrades, adaptations and

more. Preventative software maintenance may address small issues

which at the given time may lack significance but may turn into larger

problems in the future. These are called latent faults which need to be

detected and corrected to make sure that they won’t turn into effective

faults.
Perfective Software Maintenance

As with any product on the market, once the software is released to

the public, new issues and ideas come to the surface. Users may see the

need for new features or requirements that they would like to see in the

software to make it the best tool available for their needs. This is when

perfective software maintenance comes into play.

Perfective software maintenance aims to adjust software by adding new

features as necessary and removing features that are irrelevant or not

effective in the given software. This process keeps software relevant as

the market, and user needs, change.

Adaptive Software Maintenance

Adaptive software maintenance has to do with the changing

technologies as well as policies and rules regarding your software. These

include operating system changes, cloud storage, hardware, etc. When

these changes are performed, your software must adapt in order to

properly meet new requirements and continue to run well.

The Software Maintenance Process

The software maintenance process involves various software

maintenance techniques that can change according to the type of

maintenance and the software maintenance plan in place.

Most software maintenance process models include the following steps:

1. Identification & Tracing – The process of determining what part of

the software needs to be modified (or maintained). This can be

user -generated or identified by the software developer itself

depending on the situation and specific fault.


2. Analysis – The process of analyzing the suggested modification

including understanding the potential effects of such a change. This

step typically includes cost analysis to understand if the change is

financially worthwhile.

3. Design – Designing the new changes using requirement

specifications

4. Implementation – The process of implementing the new modules by

programmers.

5. System Testing – Before being launched, the software and system

must be tested. This includes the module itself, the system and the

module, and the whole system at once.

6. Acceptance Testing- Users test the modification for acceptance. This

is an important step as users can identify ongoing issues and

generate recommendations for more effective implementation and

changes.

7. Delivery – Software updates or in some cases new installation of the

software. This is when the changes arrive at the customers.

9. SOFTWARE TESTING

Software testing is widely used technology because it is compulsory to

test each and every software before deployment.

What is Software Testing

Software testing is a process of identifying the correctness of

software by considering its all attributes (Reliability, Scalability,

Portability, Re-usability, Usability) and evaluating the execution of

software components to find the software bugs or errors or defects.


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 that whether it is satisfying the specified requirements or not.

The process is also providing the client with information about the quality

of the software.

Testing is mandatory because it will be a dangerous situation if the

software fails any of 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 behavior 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 also 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 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.

Type of Software testing

We have various types of testing available in the market, which are

used to test the application or the software. With the help of below

image, we can easily understand the type of software testing:

Manual testing

The process of checking the functionality of an application as per

the customer needs without taking any help of automation tools is known

as manual testing. While performing the manual testing on any

application, we do not need any specific knowledge of any testing tool,

rather than have a proper understanding of the product so we can easily

prepare the test document. Manual testing can be further divided into

three types of testing, which are as follows:

 White box testing


 Black box testing

 Gray box testing

White-box testing.

The white box testing is done by Developer, where they check

every line of a code before giving it to the Test Engineer. Since the code

is visible for the Developer during the testing, that's why it is also known

as White box testing.

Black box testing.

The black box testing is done by the Test Engineer, where they can

check the functionality of an application or the software according to the

customer / client's needs. In this, the code is not visible while performing

the testing that's why it is known as black-box testing.

Gray Box testing.

Gray box testing is a combination of white box and Black box

testing. It can be performed by a person who knew both coding and

testing. And if the single person performs white box, as well as black-box

testing for the application, is known as Gray box testing.

How to perform Manual Testing.

 First, tester observes all documents related to software, to select


testing areas.
 Tester analyses requirement documents to cover all requirements
stated by the customer.
 Tester develops the test cases according to the requirement
document.
 All test cases are executed manually by using Black box testing and
white box testing.
 If bugs occurred then the testing team informs the development
team.
 The Development team fixes bugs and handed software to the
testing team for a retest.

Advantages of Manual Testing.

 It does not require programming knowledge while using the Black


box method.
 It is used to test dynamically changing GUI designs.
 Tester interacts with software as a real user so that they are able to
discover usability and user interface issues.
 It ensures that the software is a hundred percent bug-free.
 It is cost-effective and Easy to learn for new testers.

Disadvantages of Manual Testing.

 It requires a large number of human resources.


 It is very time-consuming.
 Tester develops test cases based on their skills and experience.
There is no evidence that they have covered all functions or not.
 Test cases cannot be used again. Need to develop separate test
cases for each new software.
 It does not provide testing on all aspects of testing.
 Since two teams work together, sometimes it is difficult to
understand each other's motives, it can mislead the process.
Manual testing tools.

In manual testing, different types of testing like unit, integration,

security, performance, and bug tracking, we have various tools such

as Jira, Bugzilla, Mantis, Zap, NUnit, Tessy, LoadRunner, Citrus,

SonarQube, etc. available in the market. Some of the tools are open-

source, and some are commercial.


Automation testing.

Automation testing is a process of converting any manual test

cases into the test scripts with the help of automation tools, or any

programming

language is known as automation testing. With the help of automation

testing, we can enhance the speed of our test execution because here,

we do not require any human efforts. We need to write a test script and

execute those scripts.

The execution of automation testing provides us various

advantages, which are as discussed below:

 Reusability

 Consistency

 Running tests anytime (24/7)

 Early Bug detection

 Less Human Resources

1. Reusability

We can re-use the test scripts in automation testing, and we don't

need to write the new test scripts again and again. And, we can also re-

create the steps which are detailed as the earlier ones.


2. Consistency

As compared to manual testing, automation testing is more

consistent and way faster than executing the regular monotonous tests

that cannot be missed but may cause faults when tested manually.

3. Running Tests 24/7


In automation testing, we can start the testing process from
anywhere in the world and anytime we want to. And even we can do that
remotely if we don't have many approaches or the option to purchase
them.

4. Early Bug Detection

We can easily detect the critical bugs in the software development

process's initial phases by executing automation testing. It also helps us

spend fewer working hours to fix these problems and reduce costs

5. Less Human Resources

To implement the automation test script, we need a test

automation engineer who can write the test scripts to automate our

tests, rather than having several people who are repeatedly performing

the manual tests.

Automation Testing Methodologies

Automation testing contains the following three different

methodologies and approaches, which will help the test engineer to

enhance the software product's quality.

 GUI Testing

 Code-Driven

 Test Automation Framework

Automation Testing Process


The automation testing process is a systematic approach to organize

and execute testing activities in a manner that provides maximum test

coverage with limited resources. The structure of the test involves a

multi-step process that supports the required, detailed and inter-related

activities to perform the task.

Automation Testing Tools

Automation testing tools can describe in two categories, which are as

follows:

 Functional Testing Tools

 Non-Functional Testing Tools

Functional Automation Testing Tools

The automation test engineer uses the functional automation

testing tool to implement the functional test cases. For example, the

Repetitive Regression tests are automated under the function automation

testing tools. This type of tools can be further divided into two different

parts, which are as below:

 Commercial Tool

 Open-source Tool

Non-functional Automation Testing Tools

The automation test engineer uses the non-functional automation

testing tool to execute the non-functional performance test cases.


For example, testing the application's response time under significant

load, let say, 100 users. Just like functional automation testing tools, the

non-functional automation testing tools divided into two different

categories, which are as below:

 Commercial Tools

 Open-source Tools

Advantages of Automation Testing

 Automation testing takes less time than manual testing.

 A tester can test the response of the software if the execution of the

same operation is repeated several times.

 Automation Testing provides re-usability of test cases on testing of

different versions of the same software.

 Automation testing is reliable as it eliminates hidden errors by

executing test cases again in the same way.

 Automation Testing is comprehensive as test cases cover each and

every feature of the application.

 It does not require many human resources, instead of writing test

cases and testing them manually, they need an automation testing

engineer to run them.

 The cost of automation testing is less than manual testing because it

requires a few human resources.

Disadvantages of Automation Testing

 Automation Testing requires high-level skilled testers.

 It requires high-quality testing tools.

 When it encounters an unsuccessful test case, the analysis of the

whole event is complicated.


 Test maintenance is expensive because high fee license testing

equipment is necessary.

 Debugging is mandatory if a less effective error has not been

solved, it can lead to fatal results.

You might also like