TeamF::CGTMain Page | About | Help | FAQ | Special pages | Log in

Category: Documentation

Test Plan

From TeamF::CGT

Revision: 4056

Contents

Abstract


This document is the Test Plan of the Corporate Governance Toolkit (CGT), which includes the Brix Toolkit and Brix UserApplication. It outlines the testing strategies, tools and procedures, which will be adopted by the development and testing teams in order ensure that the system delivered to the client meets the team's quality goals.

Introduction


Purpose

This document describes the Testing strategies that will be used by the Team to test the System. It specifies each type of Testing that will be conducted according to the Testing strategies.

Overall objectives of this document:

  1. Define the Testing methodology
  2. Define the Testing schedule
  3. Define the Testing strategies
  4. Define the procedures for conducting each test specified in Testing strategies
  5. Define the procedure for creating test cases
  6. Define Team member’s roles and responsibilities required for Testing

Scope

The Test Plan (TP) will only include the following information:

  1. Testing strategies that will be adopted by the Team to test the System
  2. Testing tools to be used in Testing
  3. Testing needs and responsibilities
  4. Test activity suspension and resumption criteria
  5. Testing deliverables that will be produced

Testing Methodology


Bottom up testing procedure will be adopted for the CGT project. There are five phases for the entire testing procedure: unit testing, integration testing, system integration testing, system testing and deployment testing.

An agile testing method will apply to each testing phase. That is implementation and testing in pair. The general procedure is listed below:

  1. One or more implementers will be paired up with one or more testers.
  2. Implementers release their code to test, when they feel it is ready. Relevant testers then write test cases to test the code throughly.
  3. When bugs are found during the testing stage, testers publish them on the bug tracking tools and notify corresponding implementers immediately. Please see Bug Tracking and Reporting for more detail.
  4. When bugs are fixed, implementers notify relevant testers, then they retest the code.
  5. When testing arrives at other stages, such as intergration testing, system testing and depolyment testing, several people in the testing team will form a new group and be assigned new tasks.

Testing Schedule


A combined Design/Implementation/Testing schedule plan will be produced from the design team. Please refer to the combined schedule plan for more detail. (More detail needs to be added here, after the completion of the schedule plan from design team).

Testing Tools


The following tools shall be used for testing in this project:

Bug Tracking Tool


The following tool shall be used for bug tracking in this project:

Bug Tracking and Reporting


The Mantis bug reporting tool will be used to maintain the bugs found in the CGT.

Bug Reporting Procedure

Bugs need to be reported when they are found outside of scheduled testing. Bugs found during scheduled testing will be dealt accordingly with the type of the test (see each testing section). When a team member discovers a bug, the following procedure should be followed:

  1. he should create a new bug report in Mantis within 24 hours of discovering the bug;
  2. he should email the Implementation Manager with details of the new bug within 24 hours of discovering the bug;
  3. the Implementation Manager must assign the bug to a team member to fix within 48 hours of receiving the email;

Bug Tracking Procedure

Once the bug has been reported and assigned to a team member to fix, the following process shall be followed:

  1. the team member shall attempt to fix the bug;
  2. the Testing Manager shall assign a person to write a test case and test that bug;

The tester should make sure the following procedure is complied with:

  1. the test case should be added to any relevant regression test suite;
  2. the person testing the fixed code should update the bug report in Mantis if it has been fixed correctly according to the new test case;
  3. the Implementation Manager should be notified by the person who tested the fixed code stating that the bug has been fixed.

If the team member cannot fix the bug, he should notify the Implementation Manager, who shall then either:

  1. Reassign the bug to another team member; or
  2. If he determines that the bug cannot or should not be fixed, update the bug report accordingly and organise a meeting with the Implementation Team to decide what should be done.

Unit Testing


Definition

Unit testing is the testing of an individual class of software. The test for each unit must correctly function before declaring the outcomes of it.

Objectives of Unit Testing

Preconditions of Unit Testing

Completion criteria of Unit Testing

Responsibilities

Tasks

Tools

Test Code Allocation

A solution in Vistual Studio 2005 may have several implementation projects created by the implementation team. Each implementation project is associated with a testing project created by the testing team. Inside a testing project, there are serveral testing classes. Each of them is corresponding to a particualr implementation class for testing purpose. Here is a sample test code allocation:

Sample test code allocation in  CgtCodeBase
Sample test code allocation in CgtCodeBase

Test Code Convention

// Add your Nunit framework and other necessary namespaces here.
// Please refer to the stand sample code below for more detail.

namespace RiskWizard.Cgt.XX.Test // XX will be toolkit or userApp or dataLayer
{
  /// <summary>
  /// Summary for this class goes here.
  /// </summary>
  [TestFixture]
  public class XXTest // XX is the class to be tested.
  {
    // Declear any required variables here for testing.


    /// <summary>
    /// Your summary.
    /// </summary>
    [SetUp]
    protected void SetUp()
    {
            
    }


    /// <summary>
    /// Your summary.
    /// </summary>
    [TearDown]
    protected void TearDown()
    {

    }


    /// <summary>
    /// Your summary.
    /// </summary>
    /// 
    /// <remarks>
    /// Input: 
    /// * The input for the method for the test.
    ///   Input includes arguments and states(i.e. relevant global variables).
    ///
    /// Expected Output:
    /// * Your expected output.
    /// 
    /// NOTE:
    /// * Extra infomation goes here if necessary
    /// </remarks>
    [Test]
    public void TestXX() // XX is the method name to be tested.
    {
      
    }


    /// <summary>
    /// Your summary.
    /// </summary>
    /// 
    /// <remarks>
    /// Input: 
    /// * The input for the method for the test.
    ///   Input includes arguments and states(i.e. relevant global variables).
    ///
    /// Expected Output:
    /// * Your expected output.
    /// 
    /// NOTE:
    /// * Extra infomation goes here if necessary
    /// </remarks>
    [Test]
    public void TestXX() // XX is the method name to be tested.
    {
      
    }
  }
}

Standard Sample Code

using System;
using NUnit.Framework;
using NUnit.Extensions.Asp;
using NUnit.Extensions.Asp.AspTester;

/// <summary>
/// Summary for this class goes here.
/// </summary>
namespace RiskWizard.Cgt.UnknownClassTest
{
  [TestFixture]
  // Need to extend WebFormTestCase if testing webpage.
  public class GuestBookTest : WebFormTestCase
  {
    /// <summary>
    /// Summary for this tester object goes here.
    /// </summary>
    private TextBoxTester name;

    /// <summary>
    /// Summary for this tester object goes here.
    /// </summary>
    private TextBoxTester comments;

    /// <summary>
    /// Summary for this tester object goes here.
    /// </summary>
    private ButtonTester save;

    /// <summary>
    /// Summary for this tester object goes here.
    /// </summary>
    private DataGridTester book;

    /// <summary>
    /// All presetups go here.
    /// </summary>
    // NUnit asp has used the fixture [SetUp], so we can't use here.
    protected override void SetUp() 
    {
      name = new TextBoxTester("name", CurrentWebForm);
      comments = new TextBoxTester("comments", CurrentWebForm);
      save = new ButtonTester("save", CurrentWebForm);
      book = new DataGridTester("book", CurrentWebForm);         
      Brower.GetPage("http://localhost/RiskWizard/Cgt/SomeTest/GuestBook.aspx");
    }

    /// <summary>
    /// Summary for what are being tested goes here.
    /// </summary>
    /// 
    /// <remarks>
    /// Input: 
    /// * TextBoxTester name = new TextBoxTester("name", CurrentWebForm);
    /// * TextBoxTester comments = new TextBoxTester("comments", CurrentWebForm);
    /// * TextBoxTester save = new ButtonTester("save", CurrentWebForm);
    /// * DataGridTester book = new DataGridTester("book", CurrentWebForm);
    /// 
    /// Expected Output:
    /// * TestLayout passes testing.
    /// 
    /// NOTE:
    /// * Extra infomation goes here if necessary
    /// </remarks>
    [Test]
    public void TestLayout()
    {
      AssertVisibility(name, true);
      AssertVisibility(comments, true);
      AssertVisibility(save, true);
      AssertVisibility(book, false);
    }

    /// <summary>
    /// Test String UnknownClass.show(String text).
    /// </summary>
    /// 
    /// <remarks>
    /// Input: 
    /// * TextBoxTester name.Text = unknownObject.Show("name");
    /// * TextBoxTester comments .Text = unknownObject.Show("comments");
    /// 
    /// Expected Output:
    /// * name.Text == ""
    /// * comments.Text == ""
    /// </remarks>
    [Test]
    public void TestShow()
    {
      UnknownClass unknownObject = new UnknownClass();

      name.Text = unknownObject.Show("name");
      comments.Text = unknownObject.Show("comments");

      AssertEquals("name", "name", name.Text);
      AssertEquals("comments", "comments", comments.Text);
    }
        
    /// <summary>
    /// Summary for miscellaneous method goes here.
    /// </summary>
    ///
    /// <param name="misc1">
    /// Summary for this argument goes here.
    /// </param>
    /// 
    /// <param name="misc2">
    /// Summary for this argument goes here.
    /// </param>
    /// 
    /// <returns>
    /// Summary for this return value goes here.
    /// </returns>
    private string Miscellaneous(string misc1, string misc2)
    {
      return "something";
    }

    /// <summary>
    /// All clean-up go here.
    /// </summary>
    // NUnit asp has used the fixture [TearDown], so we can't use here.
    protected override void TearDown()
    {
      // tear-down code here
    }
  }
}

Integration Testing


Definition

Integration testing is the incremental testing of two or more integrated components. The aim of integration testing is to cause interface defects.

Objectives of Integration Testing

Preconditions of Integration Testing

Completion Criteria

Responsibilities

Tasks

Links

http://www.eirikr.net/projects/cgt/wiki/index.php?title=Integration_Testing

System Integration Testing


Definition

System integration testing is to cause integrated system components to produce failures. This is important for software components distributed onto multiple platforms (e.g. client, web server, application server and database server).

Objectives of System Integration Testing

Preconditions

Completion Criteria

Responsibilities

Tasks

Links

http://www.eirikr.net/projects/cgt/wiki/index.php?title=Integration_Testing

System Testing


Definition

System testing is to test integrated system components, which are treated as a blackbox application against its requirements.

Objectives of System Testing

Preconditions

Completion Criteria

Responsibilities

Tasks

Functional Testing


Definition

Functional testing is to test an integrated application against its funcational requirements.

Objectives OF Functional Testing

Preconditions

Completion Criteria

Responsibilities

Tasks

Performance Testing


Definition

Performance testing is to test whether the system meets the performance requirements, which are normally specified SRS, in order to identify inefficiencies and bottlenecks.

Objectives Of Performance Testing

Preconditions

Completion Criteria

Responsibilities

Tasks

Stress Testing


Definition

Stress testing is to test application when it performances under extreme but valid conditions. For example, extreme utilization, insufficient memory, inadequate hardware and over-utilized shared resources problem.

Objectives Of Stress Testing

Preconditions

Completion Criteria

Responsibilities

Tasks

Robustness Testing


Definition

Robustness testing is to test application that how it behaves under invalid conditions. For example, unavailability of dependent applications, hardware failure, and invalid input.

Objectives Of Robustness Testing

At the same time, the application should not fail catastrophically when the unexpected occurs.

Preconditions

Completion Criteria

Responsibilities

Tasks

Security Testing


Definition

Security testing is to test whether partial or entire system satisfies the security requirements. Security testing can be tested by security tools or performed manually.

Objectives Of Security Testing

Preconditions

Completion Criteria

Responsibilities

Tasks

Regression Testing


Definition

Regression testing is any type of software testing which seeks to uncover regression bugs. Regression bugs occur whenever software functionality that previously worked as desired stops working or no longer works in the same way that was previously planned. Typically regression bugs occur as an unintended consequence of program changes.

Common methods of regression testing include re-running previously run tests and checking whether previously fixed faults have reemerged. The actual test cases used in regression testing are no different from any other test cases. The regression test suite is a sample of the functional tests for all of the components.

Objectives of Regression Testing

Preconditions of Regression Testing

Completion Criteria

Responsibilities

Tasks

Maintaining the Regression Test Suite

  1. Keep a list of all successful unit test cases and add them to the regression test suite.
  2. If any unit test case becomes obsolete, the maintainer of that particular unit test case must inform the testing manger. Since the regression test case suite is automatically built from unit test cases, the regression suite will always contain the most up to date unit test cases.

Executing the Regression Test Suite

The testing manager is responsible for executing and reporting the results of regression test suites.

  1. Regular Regression Testing: Regression Test Suite must be executed three times a week on Monday, Wednesday and Sunday.
  2. Regression Testing on Request: When there is a major change to existing implementation such as changes in interfaces of methods or adding a new feature to a class, the implementer of the code must request the testing manager to run the regression tests.

Reporting the Results of Regression Testing

  1. The outcome of regression testing must be stored in Regression Testing Log by the testing manager. The team must also be informed of the status of regression testing.
  2. If an error occurs, the error must be logged in Mantis and the implementer of the class must be notified of the error.

The implementation team must fix the system for all failed regression test cases. This must take precedence over write new components for the system.

Links

http://www.eirikr.net/projects/cgt/wiki/index.php?title=Regression_Testing_Log

Deployment Testing


Definition

Deployment testing is conducted by the development organization prior to releasing the software to customers for acceptance testing. Where acceptance testing focuses on the functionality of the delivered product, deployment testing covers all the unique system configurations upon which the product is to be deployed.

Objectives of Deployment Testing

Preconditions of Deployment Testing

Completion Criteria

Responsibilities

Tasks

Usability Testing


Usability Testing involves the assessment of the appearance and functionality of the CGT by both the client and the team. Usability of the CGT shall be discussed or demonstrated at client meetings. Results of this testing shall be recorded as per usual in the minutes for that meeting. In later stage, parts of system or beta system will be released in order to gather feedbacks from the client. If the client wishes an aspect of the appearance of the CGT to be changed:

  1. The Client Liaison officer shall notify the Implementation or Design Manager (as appropriate depending on the current phase of the project) of the requested change.
  2. The Implementation or Design Manager shall decide whether the change should be made, then notify the Client Liaison officer as such.
  3. The Client Liaison officer shall report to the client the outcome and related reasons for either accepting or rejecting the change.

Links

http://www.eirikr.net/projects/cgt/wiki/index.php?title=Usability_Testing

Retrieved from "http://www.erichuang.info/projects/cgt/wiki/index.php?title=Test_Plan"

This page has been accessed 2,779 times.
This page was last modified 05:39, 26 October 2006.
Content is available under Attribution-NonCommercial-ShareAlike 2.5.


Find
Browse
Main Page
Current events
Recent changes
Help
Edit
Edit this page
Editing help
This page
Discuss this page
Post a comment
Printable version
Context
Page history
What links here
Related changes
My pages
Log in / create account
Special pages
New pages
File list
Statistics
Bug reports
More...