CH 5 Software Testing and Maintenance2
CH 5 Software Testing and Maintenance2
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:
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.
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.
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.
Corrective Maintenance
Adaptive Maintenance
Perfective Maintenance
Preventive Maintenance
Restructuring code
Optimizing code
Updating documentation
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:
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
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.