60 likes | 74 Views
Explore the various levels of testing in software systems, from unit testing to complete application testing. Learn how integration testing and system testing are crucial for medium to large software systems. Discover the impact of software processes like Agile on testing techniques.
E N D
Levels of Software Applications • Up to now we have focused on testing techniques at the unit(orprogram) level. • In any medium to largesoftware systems, there are many programs (sometimes thousands) that formulate various levels of functions - to components- to a complete application. • For example a typical ERP (Enterprise Resource Processing) package such as SAP or PeopleSoft or CRM may be composed of multiple layers of application: • A comprehensive ERP package to satisfy a wide range of requirements contains • Human Resource • Benefits management • Payroll • Manufacturing • Production Planning and Scheduling • Inventory • Distribution • Warehouse management • Logistics • Financial .
Levels of Testing • Testing at the program unit level is not enough to handle medium and large software systems. • The different levels of software must be integrated and tested step-by-step - - - until the complete package is integrated and tested as a whole system: • Integration Test(Functional or higher Component level) • monthly pay computation for regular employees, not including direct bank deposit or check printing - (“big” functional level) • Complete Payroll - (“very big functional” or component level) • Complete Human Resource - (“big component” or system level) • System Test(component or complete system level) • Human resource - (“big component” or system level) • Manufacturing - (“big component” or system level) • Manufacturing and Finance - (Integrated system level) • Complete ERP - (“very large” Integrated system level)
The Effects of Software Processto Testing • Software process which develops a software by increments (e.g. any “Agile” or incremental development process) will naturally need to consider integration and system testing techniques: • Incremental development, where the design of the whole software is developed by parts (possibly in parallel), must be coded and testedseparately and then integrated together and retested. • Evolutionary development , where a) small, but well understood, part of the software is first designed, coded and tested & b) with additionalparts developed later; must perform “continuous integration” and testing of the software • Spiral development , where pieces of software evolve through planning, risk assessment, design, coding, and testing, must integrate and retest as the pieces are accumulated. • Prototype specification based and Agile process based , where the software or parts of the software are specified, prototyped and developed separately, must integrate and test these separately “specified” and separately developed software. Agile (any incremental) development methodology also requires a good code Configuration Management system.
Integration and System tests • Integration test can be helped with insights to the“structural” design of the software. • Which are the pieces ? - would help us decide what pieces need to be tested • How are the pieces put together? - would help us decide where the “linkages” or couplings are and where the test focus points are. • System test can be helped with insights to the“behavior” or “functional behavior” of the software as specified in the requirements • Given (a) some pre-conditional state and (b) some input or stimuli what should the • i) output be and • ii) the post-conditional state be.
Different Levels of Testing Integration Testing System Testing Functional Testing Component Testing Unit Testing Program unit A Function 1 Program unit B Component 1 Whole System . . . . Function 2 . . Component 3 Function 8 Program unit T Can we really keep the levels this simple?
Using Configuration Management tool • Naming Convention and Promotion Policies are needed along with Configuration Management tool • There must be a clear rule about promoting the artifact from one stage of development / test to another. • Once the artifact is promoted to a certain stage, it is locked at that stage. • It is also important to promote related artifacts such as code, help text and test cases promote promote promote promote . . Formally Inspected Unit-tested Private Copies Functionally Tested Integration & System Tested Golden Copy