Page 189 - DCAP405_SOFTWARE_ENGINEERING
P. 189
Software Engineering
Notes Self Assessment
Fill in the blanks:
1. Unlike most physical systems, most of the defects in software are design errors, not
……………………….. defects.
2. …………………… means the conformance to the specified design requirement.
3. ……………………….., a narrow view of software testing, is performed heavily to find out
design defects by the programmer.
4. Test cases are created as part of the …………………….. process to direct the search.
5. Testing is the most expensive way to remove defects during software………………………..
6. Discovering the design defects in software is equally difficult, for the same reason of
…………………….
11.2 Testing Process
A common practice of software testing is performed by an independent group of testers after the
functionality is developed before it is shipped to the customer. This practice often results in the
testing phase being used as project buffer to compensate for project delays, thereby compromising
the time devoted to testing. Another practice is to start software testing at the same moment the
project starts and it is a continuous process until the project finishes.
In counterpoint, some emerging software disciplines such as extreme programming and the
agile software development movement, adhere to a “test-driven software development” model.
In this process unit tests are written first, by the software engineers (often with pair programming
in the extreme programming methodology). Of course these tests fail initially; as they are
expected to. Then as code is written it passes incrementally larger portions of the test suites. The
test suites are continuously updated as new failure conditions and corner cases are discovered,
and they are integrated with any regression tests that are developed. Unit tests are maintained
along with the rest of the software source code and generally integrated into the build process
(with inherently interactive tests being relegated to a partially manual build acceptance process).
Testing can be done on the following levels:
Unit testing tests the minimal software component, or module. Each unit (basic component)
of the software is tested to verify that the detailed design for the unit has been correctly
implemented. In an object-oriented environment, this is usually at the class level, and the
minimal unit tests include the constructors and destructors.
Integration testing exposes defects in the interfaces and interaction between integrated
components (modules). Progressively larger groups of tested software components
corresponding to elements of the architectural design are integrated and tested until the
software works as a system.
System testing tests a completely integrated system to verify that it meets its requirements.
System integration testing verifies that a system is integrated to any external or third
party systems defined in the system requirements.
Before shipping the final version of software, alpha and beta testing are often done additionally:
Alpha testing is simulated or actual operational testing by potential users/customers or
an independent test team at the developers’ site. Alpha testing is often employed for off-
the-shelf software as a form of internal acceptance testing, before the software goes to beta
testing.
182 LOVELY PROFESSIONAL UNIVERSITY