Page 187 - DCAP405_SOFTWARE_ENGINEERING
P. 187
Software Engineering
Notes Using this expanded definition, there are a number of products of the software development
process that should be tested including:
Requirements models
Analysis and design models
Architectural models
Individual components
Integrated system code
In fact, there should be a testing activity associated with each step in the development process.
Adding the testing of models will find some faults earlier in the development process resulting
in cheaper repair costs.
Although these products most often will be tested to determine their correctness, testing may be
used to investigate a variety of attributes including:
Performance
Usability
Robustness
Reusability
Extensibility
Flexibility.
The testing perspective is an attitude that questions the validity of every product and utilizes a
thorough search of the product to identify faults. Systematic algorithms and intuitive insights
guide this search. It is this systematic search that makes testing a more powerful tool than
reviews and inspections. A review will almost never find something that isn’t there. That is, a
review typically only seeks to validate what is in the model and does not systematically search
to determine if all the entities and relationships that should be there are. The testing perspective
requires that a piece of software demonstrate that it is performing as its complete specification
indicates that it should (and that there is no extra behavior). A product is tested to determine that
it will do what it is supposed to do (a positive test). It should also be tested to ensure that it does
not do what it is not supposed to do (a negative test). This leads to the need to define the
parameters of the search.
Test cases are created as part of the testing process to direct the search. A test case presents a
context in which the software is to operate and a description of the behavior expected from the
software within that context. In most traditional testing situations the context is an operational
one in which the software is executed to determine its actual behavior.
Notes If the product under test is a model rather than actual code, the test case may contain
a textual description of the context as well as some specific input values.
The testing perspective may be adopted by the same person who developed the product under
test or by another person who brings an independent view of the specification and the product.
Developer-led testing is efficient since there is no learning curve on the product under test, but
it can be less effective because the developer may not search as exhaustively as the independent
tester. The completeness and clarity of the specification becomes very important when a second
person becomes involved in the testing. If a tester is not given a specification, then any test result
is correct!
180 LOVELY PROFESSIONAL UNIVERSITY