Page 262 - DCAP305_PRINCIPLES_OF_SOFTWARE_ENGINEERING
P. 262
Principles of Software Engineering
Notes • Understand the black box
• Explain equivalence class partitioning
• Explain white box
• Define control flow based
Introduction
The aspire of the testing process is to identify all defects obtainable in a software product.
However, for most practical systems, even after satisfactorily carrying out the testing phase, it
is not probable to guarantee that the software is fault free. This is because of the fact that the
input data domain of most software products is very large. It is not practical to test the software
exhaustively with respect to each value that the input data may assume. Even with this sensible
limitation of the testing process, we should not underestimate the significance of testing. We
must remember that testing does expose many defects existing in a software product. Therefore,
we can safely conclude that testing provides a practical way of reducing defects in a system and
increasing the users’ confidence in a developed system. Software testing is any activity aimed
at evaluating an attribute or capability of a program or system and determining that it meets
its required results. Although crucial to software quality and widely deployed by programmers
and testers, software testing still remains an art, due to limited understanding of the principles
of software. The difficulty in software testing stems from the complexity of software. We cannot
completely test a program with moderate complexity. Testing is more than just debugging. The
purpose of testing can be quality assurance, verification and validation, or reliability estimation.
Testing can be used as a generic metric as well. Correctness testing and reliability testing are
two major areas of testing. Software testing is a tradeoff between budget, time and quality.
Testing a program consists of subjecting the program to a set of test inputs (or test cases) and
observing if the program behaves as expected. If the program fails to behave as expected, then
the conditions under which failure occurs are noted for later debugging and correction.
The following are some commonly used terms associated with testing.
• A failure is a manifestation error (or defect or bug) but the mere presence of an error may
not necessarily lead to a failure.
• A test case is the triplet [I, S, O], where we are is the data input to the system, S is the
state of the system at which the data is input, and 0 is the expected output of the system.
• A test suite is the set of all test cases with which a given software product is to be tested.
13.1 Concept of Testing
Software testing is a field with no set “best practices” because so much of testing is based on
the particular background of the test, it is often difficult to explain, categorize and dispense
advice on aspects of software testing. However, there are fundamental rules around. We entire
site is dedicated to the basics of software testing. However, we need to first master the basics
of the basics before we begin. We are just preliminary the journey into the world of software
testing. Regardless of the cause, once a software maker has decided to use official methods, it
must address the question of which formal methods and metrics to adopt. Once methods or a
course toward methods has been determined, everyone must be educated in the new methods.
Moving an established culture from an informal method of doing something to a formal method
of doing the same thing takes time, determination, and a good cost benefit ratio. It amounts to
a cultural change, and introducing culture changes is risky business. Once the new methods
are established, it still takes a continuing commitment from management to keep them alive
and in use.
256 LOVELY PROFESSIONAL UNIVERSITY