| Project: | PIMS |
|---|---|
| Internal Release Number: | 0.1 |
| Release Audience: |
Developer release (Internal usage only)
Early access release (Controlled external access)
|
| Attached Worksheets: |
QA plan > Design Review 07/07/2004
QA plan > SAMPLE System test case suite
QA plan > SAMPLE System test runs
|
| Related Documents: |
| Activity | Coverage or Frequency | Description |
|---|---|---|
| Preconditions |
All methods
|
We will use assertions at the beginning of all methods to validate each argument value. This helps to document assumptions and catch invalid values before they can cause faults. It also helps to make random test case generation more effective, by providing some semantic checks on the processing that it causes. |
| Class invariants and postconditions |
Some methods |
Assertions will also be used to test class invariants and some postconditions, at the developer's discretion. |
| Unit testing |
All methods other than simple getters and setters
75% of basic blocks
|
We will develop and maintain a unit test suite using the JUnit framework, for all classes below the UI layer. Tests must be run and passed before each commit. The test suite will exercise at least 75% of all basic blocks in each class. We will measure test coverage with EMMA. The QA team will prioritise for testing and review those classes that have the least unit test coverage. The number of unit tests that have been passed will be our primary measurement of code size. |
| Static analysis |
Strict compiler warnings
Automated style checking
XML validation
Lint tools
|
Compilation will be done with the maximum level of warnings requested.
Our Java compiler is Jikes. We will use checkstyle to check for errors and inconsistency with coding standards. We will use jlint to check for common programming errors. XML validation ensures that each XML document conforms to its DTD. Resources permitting, we will try other lint tools e.g.: PMD, Jcsc, PyLint, PyChecker, Tidy |
| Automated system testing |
100% of HTML screens and fields
100% of scenarios from the requirements
Applets TBD
|
The QA team will use jWebUnit to author and maintain a suite of test scripts to test the entire system through the user interface. These will check error paths as well as correct operation, and in particular will test for CSS and SQL injection vulnerabilities. Resources permitting, we will also write a test script that takes a random walk through the system, after loading the database with test data. We will evaluate the use of the java Robot class to test applets. |
| Regression testing |
Run all unit tests and UI tests nightly
Add new test when verifying fixes
|
We will adopt a policy of frequently re-running all automated tests, including those that have previously been successful. This will help catch regressions (bugs that we thought were fixed, but that appear again). |
| Field failure reports |
Prompt users to report failures
|
We want to understand each post-deployment system failure and actively take steps to correct the defect. We will establish a mechanism for users to report problems. |
| Review meetings |
Every team meeting
|
We will hold review meetings where developers will perform formal inspections of selected code or documents. We choose to spend a small, predetermined amount of time. These are intended to find defects in maintainability and security of the code, or defects in requirements, design documents, and project plans. |
| Manual system testing |
TBD
|
Resources permitting, the QA team will find published experimental protocols and use them as test scripts for the system. Before major releases, the whole development team will spend a week on testing and defect correction. |
| Load, stress, and capacity testing later |
TBD
|
We use a load testing tool and/or custom scripts to simulate heavy usage of the system. Load will be defined by scalability parameters such as number of concurrent users, number of transactions per second, or number/size of data items stored/processed. We will verify that the system can handle loads within its capacity without crashing, producing incorrect results, mixing up results for distinct users, or corrupting the data. We will verify that when capacity limits are exceeded, the system safely rejects, ignores, or defers requests that it cannot handle. |
| Instrumentation and monitoring |
TBD
|
We will consider what logging facilities are appropriate. |
| Buddy review, later |
TBD
|
Whenever changes must be made to code on a release branch (e.g., to prepare a maintenance release) the change may be reviewed by another developer before it is committed. The goal is to make sure that fixes do not introduce new defects. |