Levels of Software Applications Up to now we have focused on testing techniques at the unit (or...

6
Levels of Software Applications Up to now we have focused on testing techniques at the unit (or program) level . In any medium to large software 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 .

Transcript of Levels of Software Applications Up to now we have focused on testing techniques at the unit (or...

Page 1: Levels of Software Applications Up to now we have focused on testing techniques at the unit (or program) level. In any medium to large software systems,

Levels of Software Applications

• Up to now we have focused on testing techniques at the unit (or program) level.

• In any medium to large software 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

.

Page 2: Levels of Software Applications Up to now we have focused on testing techniques at the unit (or program) level. In any medium to large software systems,

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:

1. 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)

2. 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)

Page 3: Levels of Software Applications Up to now we have focused on testing techniques at the unit (or program) level. In any medium to large software systems,

The Effects of Software Process to 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:

1. Incremental development , where the design of the whole software is developed by parts (possibly in parallel), must be coded and tested separately and then integrated together and retested.

2. Evolutionary development , where a) small, but well understood, part of the software is first designed, coded and tested & b) with additional parts developed later; must perform “continuous integration” and testing of the software

3. Spiral development , where pieces of software evolve through planning, risk assessment, design, coding, and testing, must integrate and retest as the pieces are accumulated.

4. 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.

Page 4: Levels of Software Applications Up to now we have focused on testing techniques at the unit (or program) level. In any medium to large software systems,

Integration and System tests

1. 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.

2. 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.

Page 5: Levels of Software Applications Up to now we have focused on testing techniques at the unit (or program) level. In any medium to large software systems,

Different Levels of Testing

Program unit A

Program unit B

Program unit T

.

.

.

Function 1

Function 2

Function 8

.

.

Component 1

WholeSystem

Component 3

.

Unit Testing Functional Testing Component TestingSystem Testing

Can we really keep the levels this simple?

Integration Testing

Page 6: Levels of Software Applications Up to now we have focused on testing techniques at the unit (or program) level. In any medium to large software systems,

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

.

.

Unit-testedPrivate Copies

FormallyInspected

FunctionallyTested

Integration& System Tested

Golden Copy

promotepromote

promote promote