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
   184   185   186   187   188   189   190   191   192   193   194