0% found this document useful (0 votes)
14 views

CH 5 Software Testing and Maintenance2

Software Engineering - Testing and Maintenance

Uploaded by

nishitabaruah385
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

CH 5 Software Testing and Maintenance2

Software Engineering - Testing and Maintenance

Uploaded by

nishitabaruah385
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

Software Testing and Maintenance

Testing Strategies

Black Box Testing, also known as Behavioral Testing, is a software testing method
in which the internal structure/ design/ implementation of the item being tested is not
known to the tester. These tests can be functional or non-functional, though usually
functional.

This method is named so because the software program, in the eyes of the tester, is
like a black box; inside which one cannot see. This method attempts to find errors in
the following categories:

 Incorrect or missing functions


 Interface errors
 Errors in data structures or external database access
 Behavior or performance errors
 Initialization and termination errors

For Example: A tester, without knowledge of the internal structures of a website,


tests the web pages by using a browser; providing inputs (clicks, keystrokes) and
verifying the outputs against the expected outcome.

Black Box Testing, method is applicable to the following levels of software testing:

 Integration Testing
 System Testing
 Acceptance Testing

The higher the level, the bigger and complex, the Black Box Testing method
becomes.
Following are some techniques that can be used for designing black box tests.

 Equivalence partitioning: It is a software test design technique that involves


dividing input values into valid and invalid partitions and selecting
representative values from each partition as test data.
 Boundary Value Analysis: It is a software test design technique that involves
determination of boundaries for input values and selecting values that are at
the boundaries and just inside/ outside of the boundaries as test data.
 Cause Effect Graphing: It is a software test design technique that involves
identifying the cases (input conditions) and effects (output conditions),
producing a Cause-Effect Graph, and generating test cases accordingly.

Advantages
 Tests are done from a user’s point of view and will help in exposing
discrepancies in the specifications.
 Tester need not know programming languages or how the software has been
implemented.
 Tests can be conducted by a body independent from the developers, allowing
for an objective perspective and the avoidance of developer-bias.
 Test cases can be designed as soon as the specifications are complete.

Disadvantages
 Only a small number of possible inputs can be tested and many program
paths will be left untested.
 Without clear specifications, which are the situation in many projects, test
cases will be difficult to design.
 Tests can be redundant if the software designer/ developer has already run a
test case.
 Ever wondered why a soothsayer closes the eyes when foretelling events? So
is almost the case in Black Box Testing.

White Box Testing is a software testing method in which the internal structure/
design/ implementation of the item being tested is known to the tester. The tester
chooses inputs to exercise paths through the code and determines the appropriate
outputs. Programming know-how and the implementation knowledge is essential.
White box testing is testing beyond the user interface and dives into the details of a
system.

This method is named so because the software program, in the eyes of the tester, is
like a white/ transparent box; inside which one clearly sees.
For example: A tester, usually a developer as well, studies the implementation code
of a certain field on a webpage, determines all legal (valid and invalid) AND illegal
inputs and verifies the outputs against the expected outcomes, which is also
determined by studying the implementation code.

White Box Testing method is applicable to the following levels of software testing:

 Unit Testing
 Integration Testing
 System Testing

Advantages
 Testing can be commenced at an earlier stage. One need not wait for the GUI
to be available.
 Testing is more thorough, with the possibility of covering most paths.

Disadvantages
 Since tests can be very complex, highly skilled resources are required, with
thorough knowledge of programming and implementation.
 Test script maintenance can be a burden if the implementation changes too
frequently.
 Since this method of testing is closely tied with the application being testing,
tools to cater to every kind of implementation/platform may not be readily
available.
Testing Architecture

Software Testing Life Cycle (STLC) defines the steps/ stages/ phases in testing of
software. However, there are no fixed standards for STLC and it varies as per the
organization.

Software Testing Life Cycle comprises of the following phases:


Note that the STLC phases mentioned above do not necessarily have to be in the
order as listed above; some phases can sometimes run in parallel. And, in extreme
cases, the phases might also be reversed.

Testing Tools

Following are the examples of the Testing Tools:

HP & Mercury
 Winrunner: HP Winrunner software was an automated functional GUI testing
tool that allowed a user to record and play-back user interface (UI) interactions
as test scripts. As a functional test suite, it worked with HP Quick Test
Professional and supported enterprise quality assurance. It captured, verified
and replayed user interactions automatically, in order to identify defects and
determine whether business processes worked as designed.
 Quick Test Professional: HPE Unified Functional Testing software, formerly
known as HP Quick Test Professional (QTP), provides functional and
regression test automation for software applications and environments. HPE
Unified Functional Testing can be used for enterprise quality assurance.HPE
Unified Functional Testing supports keyword and scripting interfaces and
features a graphical user interface. It uses the Visual Basic Scripting Edition
(VBScript) scripting language to specify a test procedure, and to manipulate
the objects and controls of the application under test.
 Test Director: Test Director is a; Mercury Interactive software, test
management tool. It helps quality assurance personnel, plan and organize the
testing process. With Test Director you can create a database of manual and
automated tests, build test cycles, run tests, and report and track defects. You
can also create reports and graphs to help review the progress of planning
tests, running tests, and tracking defects before a software release.
 Quality Center: HP Quality Center is a quality management software solution
offered by the HP Software Division of Hewlett Packard Enterprise, with many
capabilities acquired from Mercury Interactive Corporation. HP Quality Center
offers software quality assurance, including requirements management, test
management and business process testing for IT and application
environments. HP Quality Center is a component of the HP Application
Lifecycle Management software solution set.
IBM Rational
 Rational Robot: Rational Robot is an automated functional, regression testing
tool for automating Windows, Java, IE and ERP applications under windows
platform. Rational Robot provides test cases for common objects such as
menus, lists, bitmaps and specialized test cases for objects, specific to the
development environment.
 Rational Performance Tester: Rational Performance Tester is a tool for
automated performance testing of web and server based applications, from
the Rational Software division of IBM. It allows users to create tests that mimic
user transactions between an application, client and server. During test
execution, these transactions are replicated in parallel to simulate a large
transaction load on the server. Server response time measurements are
collected to identify the presence and cause of any potential application
bottlenecks. It is primarily used by Software Quality Assurance teams to
perform automated software performance testing.
 Rational Functional Tester: Rational Functional Tester is a tool for
automated testing of software applications from the Rational Software division
of IBM. It allows users to create tests that mimic the actions and assessments
of a human tester. It is primarily used by Software Quality Assurance teams to
perform automated regression testing.
 Rational Test Manager: Rational Test Manager is a testing tool that
encompasses all aspects of test analysis from test management to execution
to reporting. It supports all kinds of testing from pure manual test approaches
to various automated paradigms including unit testing, functional regression
testing and performance testing.

Borland/Segue/Micro Focus
 Silk Test: Silk Test is a tool for automated function and regression testing of
enterprise applications. It was originally developed by Segue Software which
was acquired by Borland in 2006. Borland was acquired by Micro Focus
International in 2009. Silk Test is the industry’s leading functional testing
product for e-business applications, whether Window based, Web, Java, or
traditional client/server-based.
 Silk Performer: Silk Performer is a software performance testing tool across
web, mobile and enterprise applications. It was originally developed by Segue
Software which was acquired by Borland in 2006. Borland was acquired by
Micro Focus International in 2009. Silk Performer ensures that applications
and server up times are maintained when faced with peak customer usage.
Silk Performer allows identification of such problems using integrated
diagnostics and trending reports.
Maintenance

Although Software does not show aging or wear or tear with use, but with
upcoming advanced technologies and changing user requirements, Software
products get outdated or fail to support the changes in their environment.
Maintenance can only happen efficiently if the earlier phases are done properly.
Maintenance costs developers time, effort and money. Hence, Maintenance phase
should be as efficient as possible.

There are four major problems that can slow down the maintenance process:

 Unstructured Code
 Maintenance Programmers having insufficient knowledge of the system.
 Documentation not available or Out of date.

The success of the Maintenance phase relies on these problems fixed earlier.

Maintenance consists of four parts:

 Corrective Maintenance
 Adaptive Maintenance
 Perfective Maintenance
 Preventive Maintenance

Corrective Maintenance: Corrective Maintenance deals with the repair of faults or


defects found. A defect can result from design error, coding error or logic error.
Defects are also caused by data processing errors and system performance errors.
All these errors sometimes called as ‘residual errors or ‘bugs’, prevent the software
from conforming to its agreed specification. The need for Corrective Maintenance is
usually initiated by the bug reports drawn up by the end users.

Adaptive Maintenance: It consists of adaptation of Software to the changing


environment, such as hardware or operating system. The term environment refers to
the totality of all conditions, which act from outside upon the system. The need for
Adaptive Maintenance can be recognized only by monitoring the environment.

Perfective Maintenance: This type of Maintenance is for accommodating, new or


changed requirements of the users. Perfective Maintenance is concerned with
functional enhancements to the system, activities to increase the system
performance or activities to enhance user interface. This is based on the premise
that, as the software becomes useful; the users tend to experiment with new
features, which are beyond the scope of, initial purpose of the developed Software.

Preventive Maintenance: Here, activities intended at increasing system’s


maintainability, such as updating documentation, adding comments, improving the
modular structure of the system, are executed. As a large program is continuously
changed, its complexity increases; unless work is done to reduce or maintain it. This
work is known as ‘Preventive Change’. The change is usually initiated from within
the maintenance organization, with the intention of making programs easier to
understand and also to, facilitate future maintenance work. Examples of Preventive
Maintenance include:

 Restructuring code
 Optimizing code
 Updating documentation

Risks in Software Maintenance

 Software Maintenance leads to correction and enhancements in software, but


it also bears the major risk of partial or complete failure of the software.
 While correcting the residual errors in the software, modifications can, in-turn
introduce new bugs, in other linked parts too.
 Detecting this needs rigorous testing of all the altered areas of the software
and all its linked components.
 The cost, efforts and time consumption for these activities are usually very
high, leading to high maintenance cost.
 Hence, initialization of any maintenance thread needs highly mature analysis,
conclusive decisions, established management and prime technical expertise.
Defect Analysis

A Software Defect or a Bug is a condition in a software product which does not meet
a software requirement or end-user expectations. In other words, a defect is an error
in coding or logic that causes a program to malfunction or to produce incorrect or
unexpected results. In other words:

 Any deviation from the specification


 Anything that causes user dissatisfaction
 Incorrect output
 Software does not do that, what is intended from it

Categories of Defects
Defect categorization helps the software developers to prioritize their tasks. That
means this kind of priority helps the developers, in fixing those defects first, that are
highly crucial.
Examples of Defects
 User gives wrong or incomplete requirements
 Analyst interprets requirement incorrectly
 Requirements are not recorded correctly
 Incorrect Design Specification
 Incorrect Program Specification
 Errors in Coding
 Data entry errors
 Errors in testing i.e. falsely detect an error or fail to detect existing error
 Mistakes in error corrections

Different Levels of Testing

Unit Testing
Unit Testing is a level of software testing where individual units/ components of a
software are tested. The purpose is to validate, that each unit of the software
performs as designed.

A unit is the smallest testable part of software. It usually has one or a few inputs and
usually a single output. In procedural programming a unit may be an individual
program, function, procedure, etc. In object-oriented programming, the smallest unit
is a method, which may belong to a base/ super class, abstract class or derived/
child class.
Integration Testing
Integration Testing is a level of software testing where individual units are combined
and tested as a group.

The purpose of this level of testing is to expose faults in the interaction between
integrated units. Test drivers and test stubs are used to assist in Integration Testing.

System Testing
System Testing is a level of the software testing where a complete and integrated
software is tested. The purpose of this test is to evaluate the system’s compliance
with the specified requirements.
Acceptance Testing
The purpose of this test is to evaluate the system’s compliance with the business
requirements and assess whether it is acceptable for delivery.

Ref: (Click Here)

You might also like