Site Server - Guidelines for Testing Your Site Server - Commerce Edition Web Site

August 1999 

Introduction

Testing is a key part of the software development process, and is iterative. This document describes:

  • Types of tests 

  • Test documents 

  • Test error ("bug") reports 

The appendix contains a sample outline for each type of testing document.

Types of Tests

There are five levels of testing:

Test Level

Focuses on…

Build Verification Testing (BVT)

Testing the stability of the software build.

Functionality

Testing program functions—a program can have several levels of functionality, depending on its complexity.

Ad hoc ("guerilla")

Unstructured, random testing by casual users.

Integration

Testing the interaction between modules or program components—testing ways in which the program works with other products or platforms (both hardware and software).

Stress (also known as Load or Performance tests)

Testing the number of transactions or level of use the program can consistently sustain.

The types of testing to be done can vary from program to program, but should always include BVT, functionality, and ad hoc testing. There are two types of test methods that can be applied to each type of test:

Method

Focuses on…

Black box

Testing the standard user interface (such as black-box functionality testing). Test cases use the same standard interfaces that customers are expected to use.

White box

Testing application code (such as white-box stress testing). Test cases use batch files, SQL queries, and similar methods to interact directly with program code.

Test Documents

There are three types of documents to create before testing begins:

  • Test plan 

  • Test specification 

  • Test cases 

The test plan must be in place before test specifications can be written; test specifications must be written before test cases can be created; test cases must be created before testing can begin.

The Test Plan

Test plans should describe in detail everything that the test team, the program management team, and the development team need to know about the testing to be done. A test plan should contain the following information:

Content

Describes….

What is to be tested

The scope of the testing—the functionality that is to be tested; test criteria, such as the following:
· What needs to be validated
· The test platform
· Required dependencies
· Release/success milestones

When it is going to be tested (schedule)

Beginning date, end date, and dates for all significant milestones.

Where it is to be tested

What computers, networks, and other hardware are required to perform the tests; where they will be located.

How it is to be tested

What types of testing will be done:
· Black box and/or white box
· Manual and/or scripted and/or automated
· BVT, Functional, Integration, Load, Stress, and so forth

Who is going to do the testing

The names of the test team and each tester's responsibilities

Assumptions and risks

List of conditions that must be met for testing to be successful—probable outcome if the necessary conditions aren't met

Test planning can be done for the entire project, or on a function-by-function basis for each of the program sub-functions.

The Test Specification

The test specification conveys the entire scope of testing required for a set of functionality and defines individual test cases sufficiently that testers can use it as a basis for creating the test cases. Format of the test specification can vary, depending on project context. Some common formats include the following:

Format

Defines…

Matrix

Program functions and function variables

Written description or scenario

Process

Screen print or format

Fields

Database schema

Fields, tables, stored procedures

Graphic

GUI form or window

Outline

The functions to be tested

A test specification can combine any of these formats, as needed.

Test Cases

There are four basic types of test cases:

Type

Focuses on…

Functionality

Testing what the software is supposed to do

Boundary

Testing the defined values and defaults

Positive (or Valid)

Proving that the software does what it should do

Negative (or Invalid)

Proving that the software doesn't do what it shouldn't do

Test cases can be organized in a variety of ways, depending on the size, type, and complexity of the software being tested. For example, tests can be organized by type of test, by product feature, or by a combination of the two.

Test cases organized by test type might be organized as follows:

  • BVT tests 

  • Functional tests 

  • Integration tests 

  • Load tests 

  • Stress tests 

Test cases organized by product feature might be organized as follows:

  • Primary-level features or functions 

  • Secondary-level features or functions 

  • Tertiary-level features or functions, and so forth 

Depending on complexity of the software, you might organize test cases using a combination of methods, such as the following:

Test Error Reports

An error, or "bug," occurs when the software does something it shouldn't, or won't do something it should. A Test Error Report should contain the following information:

Section

Describes…

Description

What went wrong. This section should be descriptive enough that the problem and its location are obvious.

Reproduction steps

The detailed procedure for reproducing the bug. This might include platform or installation details.

Tracking data

Who found the error, who's fixing it, and other pertinent data.

Appendix

This section contains a sample outline for each type of testing document.

Sample Outline for a Test Plan

Test plans should contain the following information:

Section

Contains…

Introduction/Purpose

Description of program, features.

Risks and assumptions

List of conditions that must be met for testing to be successful; probable outcome if the necessary conditions aren't met.

Scope

Test methodology, approach; detailed description of what is in or out of scope.

Feature/Program-specific function/Area

Testing type, deliverables.

Test environment

Platform (operating system); platform dependencies.

Test criteria

Acceptance, pass, suspension of test criteria.

Bug tracking

Location of bug database, key bug data format.

Test case management

Location of test cases, test case management structure.

Test team

Members of test team, escalation path.

Test platform (hardware)

Office-based test hardware, lab-based test hardware.

Test schedule

Beginning and end dates, key milestones.

Appendix

Most test plans should contain the following appendices:
· High-level test specification matrix
· Results report template
· Sign-off page

Test Specification

The format and content of test specifications vary, depending on the project. However, test specifications should always define the scope of the entire testing effort and provide sufficient detail to enable testers to construct test cases.

Sample Outline for Test Cases

Test cases should contain the following information:

Section

Contains…

Title

Name of the test—a one-line description of what is being tested (ideally implying the expected result).

Steps

How to do the test—a list of the discrete tasks required to complete the test case. Form names, menu items, field names, and input data should all be specifically identified in each step.

Expected results

Description of what should happen (system behavior and/or output) after each step of the test.

Assumptions

Notes about specialized platform requirements, key functionality, steps needed to set up the test case.