info 637lecture #81 software engineering process ii integration and system testing info 637 glenn...

35
INFO 637 Lecture #8 1 Software Engineering Process II Integration and System Testing INFO 637 Glenn Booker

Upload: noah-lang

Post on 27-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

INFO 637 Lecture #8 1

Software Engineering Process IIIntegration and System Testing

INFO 637

Glenn Booker

INFO 637 Lecture #8 2

Testing & Documentation

This week covers integration and system testing, and user documentation

INFO 637 Lecture #8 3

Testing Principles

The purpose of testing is to assess the quality of the product

While defects found in testing need to be fixed, few defects should be left by the beginning of testing

If you find a lot of defects in testing, there are probably lots of others hiding!

INFO 637 Lecture #8 4

Testing Principles

Even good software engineers, following a poor process for development, will tend to produce poor quality software

Testing is not a substitute for using a good process!

INFO 637 Lecture #8 5

Testing Strategy

Build the system from the unit-tested partsIntegration test the system to ensure it

is correctly built, and all parts function together

System test the product to demonstrate it meets system requirements

INFO 637 Lecture #8 6

Testing Strategy

While doing all of this: Identify low quality components and return them

to the quality/process manager for assessment and cleanup

If they still cause problems, return them to the quality/process manager for rework or replacement

In later cycles, regression tests show you didn’t break anything that worked earlier

INFO 637 Lecture #8 7

Build and Integration Strategies

Several approaches may be used for building the system

Integration testing is to verify that all parts are present and communicating with each other – testing for functionality is done by system testing

INFO 637 Lecture #8 8

Build and Integration Strategies

There are four main integration strategies Big Bang Strategy One-at-a-time Strategy Cluster Strategy Flat-system Strategy

For good quality code, almost any strategy could work well

INFO 637 Lecture #8 9

Big Bang Strategy

The simplest integration strategy is to simply put all of the pieces together and see if everything works

Rarely works for complex or low quality systems – only try if you have known high quality components

INFO 637 Lecture #8 10

One-at-a-time Strategy

Another simple approach is to start with one component, and test it

Then add another component, and test them

Keep repeating one component at a time until the entire system is present

Good for identifying problems, but very time intensive

INFO 637 Lecture #8 11

Cluster Strategy

Another common strategy is to implement groups of related modules together

Choices of groups are either by type of function (printing, file management, reports, etc.) or by portion of the system (ATM balance verification, then withdrawal, then deposit)

INFO 637 Lecture #8 12

Flat-system Strategy

This is a top-down integration strategyFirst build the highest level modulesThen add the next level modules called

by themThen keep adding lower and lower level

modules until the system is completeGood for finding system-level issues

INFO 637 Lecture #8 13

System Test Strategy

System testing seeks to answer some fundamental questions about the system Does the system perform its

intended functions? Does the system meet its quality goals? Will the system work under normal conditions? Will the system work under adverse conditions?

INFO 637 Lecture #8 14

System Test Strategy

Other key concerns include: Can the system be installed? Does it start properly? Will it recover from software or

hardware failures? Is its performance adequate? Can users use the system easily?

INFO 637 Lecture #8 15

System Test Strategy

System testing cannot be complete for any complex system, so test cases need to be chosen to address the most important concerns

Test planning should address several related functions or characteristics with each test

INFO 637 Lecture #8 16

System Test Strategy

Most common priorities for system testing include: System functionality Stress testing Usability testing Performance testing

INFO 637 Lecture #8 17

Second System Test Strategy

Another approach is to do all aspects of testing for one functional area at a time

Do function testing, stress testing, usability, and performance testing for one set of functions

Then repeat for each functional areaLoses overall feel for the system

INFO 637 Lecture #8 18

Third System Test Strategy

Combine previous two strategiesDo normal and stress testing for lower

level functionsThen test higher and higher level functions

until the entire system is coveredGood for poor quality systems, but

time consuming

INFO 637 Lecture #8 19

Fourth System Test Strategy

Do a top down version of the previous strategy

Test highest level functions under normal and stressed conditions

Work down to lower and lower level functions until whole system tested

Only works with high quality product

INFO 637 Lecture #8 20

Test Planning

We have seen test planning appear in many phases of the TSP

Test plans need to identify The materials needed for testing (including

the system configuration tested) What tests will be run What order the tests will be run

INFO 637 Lecture #8 21

Test Completeness

TSP focuses on measuring system testing by the percent of requirements which were tested

Other methods focus on the percent of logical paths which were tested, or the percent of code exercised

INFO 637 Lecture #8 22

Test Planning

Test plans also need to: Name each test Predict the outcome of each test Predict how long the test should take Scripts and test cases will be needed for

most testsEstimate the number of defects to be

found in each phase, and their repair time

INFO 637 Lecture #8 23

Test Tracking

Test effectiveness is measured by the number of defects found per hour of running tests

A test log (e.g. p. 172) records the details of testing

INFO 637 Lecture #8 24

Defect-prone Modules

Modules (components) which have a lot of defects in testing have a lot of defects after release

Hence it is critical for testing to identify parts of the system which need to be fixed or reworked before they become a problem later

INFO 637 Lecture #8 25

Defect Data

SUMP records the defects found and removed for each (life cycle) phase

SUMQ captures quality for each moduleHence these two forms are key to

identifying defect-prone modules, and knowing when they first became that way

INFO 637 Lecture #8 26

Test Scripts

To start testing you need to have: Completed SRS and SDS documents You have some components which have been

implemented and passed unit testing Later cycles also need prior versions of

the product

INFO 637 Lecture #8 27

Test Scripts

Test script TEST1 (p. 178) includes: Develop build, integration test, and system

test procedures Determine size, time, and materials needed for

each test Build the product Conduct integration testing Conduct system testing

INFO 637 Lecture #8 28

Test Scripts

Produce user documentation, review and fix it

Outputs include An integrated and tested product for this cycle Completed LOGD and LOGTEST forms for

all tests Completed user documentation Time, size, and defect data in TSP system

INFO 637 Lecture #8 29

Documentation

Documentation for a system may include manuals for various purposes and audiences Installation User Maintenance (troubleshooting, upgrades, etc.) Training Marketing

Here we focus on end user documentation

INFO 637 Lecture #8 30

Documentation

Documentation captures the mindset of the design – its philosophy or train of thought

This helps the user know what should be expected next

Documentation can also capture little used features, and ones whose usage are hard to guess correctly

INFO 637 Lecture #8 31

Documentation Approach

Documentation needs to be written from the user’s viewpoint, not the designer’s

Good user documentation focuses on groups of functions which the user may wish to use, generally increasing in complexity

Best to start writing documentation right after design of each type of function

INFO 637 Lecture #8 32

Documentation Features

Good user documentation includes: A glossary for unusual terminology Error messages, troubleshooting, and

recovery information Index of key topics And a detailed table of contents

Good to outline the documentation first, and make sure key functions are accounted for

INFO 637 Lecture #8 33

Documentation Features

Documentation should use short, simple paragraphs and sentences

Use lots of bulleted lists to break up concepts

Write to a consistent level of detail, and make sure documentation uses a consistent expectation of what the user knows

INFO 637 Lecture #8 34

Documentation Review

Check documentation for: Organization Terminology Content Accuracy Readability Understandability

INFO 637 Lecture #8 35

Why Here?

Why is documentation discussed with integration and system testing? User documentation is often the basis for some

functionality (system) testing Need to make sure the examples provided

in the documentation really do work exactly as stated!