Professional Documents
Culture Documents
Version 1.1
Revision History
Date 11/3/2004 11/21/2004 Version 1.0 1.1 Initial Version Final Elaboration Version Description Author Ed Fancher Ed Fancher
CodeCrawler
Page 2
Table of Contents
1. Introduction 1.1 Purpose 1.2 Background 1.3 Scope 1.4 Risks 4 4 4 4 4 4 2. Requirements for Test 3. Test Strategy 3.1 Testing Types 3.1.1 Fault Injection Testing 3.1.2 Function Testing 3.1.3 User Interface Testing 3.1.4 Performance Profiling 3.1.5 Load Testing 3.1.6 Security and Access Control Testing 3.1.7 Installation Testing 3.2 Tools 4. Resources 4.1 Workers 5. Project Milestones 6. Deliverables 7. Coding Standards 5 6 6 6 6 7 8 9 9 10 11 12 12 14 15 15
CodeCrawler
Page 3
Test Plan
1.
1.1
Introduction
Purpose This Test Plan document for the CodeCrawler supports the following objectives:. Define test responsibilities Define areas of testing Define test metrics. Outline the test strategy for the CodeCrawler project
1.2
Background CodeCrawler will be a system, geared toward developers, which makes searching source code as easy as searching the Internet and as powerful as using a grep tool. It will provide a web interface which allows users to search using regular expressions, boolean queries, and programming specific extensions. The results will be ranked by relevance, taking into account source code semantics (class, method, variable, etc.), will display code snippets, and will allow viewing the full source code. The system should be easy to use, configurable, and responsive. Scope This document covers Unit testing, integration and build testing (also called build verification tests) and system testing.
1.3
1.4
CodeCrawler
Page 4
2.
CodeCrawler
Page 5
3.
Test Strategy
Unit test cases will be provided for each module, including at least one test case per public/protected method. Appropriate unit test cases should be derived from the pre-conditions for each method. A set of integration tests will be developed that covers the basic functionality available for that iteration to verify that the system is ready to undergo system test. These should be system tests that are considered critical to being able to system test the system. These do not need to go through the system interface.
3.1 3.1.1
Testing Types Fault Injection Testing Test Objective: Technique: Completion Criteria: Special Considerations: Verify system can handle corrupted source code or index files.. Corrupt files, indices, delete source code files
All planned tests have been executed. Indices are binary, so highly sophisticated corruption may not be possible.
3.1.2
Function Testing Test Objective: Technique: Verify use cases main scenarios and extensions can be achieved. System tests should test the boundary conditions as well as any special values. All query keywords should be tested. All language keywords should be tested. Exploratory testing should involve: Finding the max number of query terms. Finding the max query length. Using terms incorrect for the language All use cases and use case extensions should have test cases. Completion Criteria: Special Considerations: All planned tests have been executed.
CodeCrawler
Page 6
3.1.3
Test Objective:
Verify the following: Page navigation Help Navigation if available Field Min, max Tab order
CodeCrawler
Page 7
3.1.4
Performance Profiling Test Objective: Technique: Completion Criteria: Special Considerations: Verify the system under a simple usage scenario Use a simple search use case scenario Can search with multiple users
CodeCrawler
Page 8
3.1.5
Load Testing Test Objective: Technique: Verify performance behavior time for designated transactions or business cases under varying workload conditions. Verify these in combination: Multiple users doing search Background indexing Small, medium and large code base Small, medium and large query size (in number of terms) Completion Criteria: Special Considerations: Verify against criteria specified in Architecture document.
3.1.6
Security and Access Control Testing Test Objective: Application-level Security: Verify that an actor can access only those functions or data for which their user type is provided permissions. Attempt log in as varies roles. Verify permission limitations. Verify against criteria specified in Architecture document.
CodeCrawler
Page 9
3.1.7
Installation Testing Test Objective: Verify that the target-of-test properly installs onto each required hardware configuration under the following conditions: new installation, a new machine, never installed previously with CodeCrawler update, machine previously installed CodeCrawler, same version update, machine previously installed CodeCrawler, older version Manually or develop automated scripts, to validate the condition of the target machine new - CodeCrawler never installed; CodeCrawler same version or older version already installed). Launch or perform installation. Using a predetermined sub-set of function test scripts, run the transactions. Completion Criteria: Special Considerations: CodeCrawler transactions execute successfully without failure.
Technique:
CodeCrawler
Page 10
3.2 Tools The following tools will be employed for this project: [Note: Delete or add items as appropriate.]
Tool Test Management Defect Tracking ASQ Tool for functional testing ASQ Tool for performance testing Test Coverage Monitor or Profiler Project Management DBMS tools CVS Tigris Not yet determined Not yet determined None None None
Version
CodeCrawler
Page 11
4.
4.1
Resources
All devs will own unit testing, integration testing and system testing. Workers This table shows the staffing assumptions for the project.
Provides management oversight. Responsibilities: provide technical direction acquire appropriate resources provide management reporting
Test Designer
Identifies, prioritizes, and implements test cases. Responsibilities: generate test plan generate test model evaluate effectiveness of test effort
Tester
Executes the tests. Responsibilities: execute tests log results recover from errors document change requests
Ensures test environment and assets are managed and maintained. Responsibilities: administer test management system install and manage worker access to test systems
CodeCrawler
Page 12
Designer
Identifies and defines the operations, attributes, and associations of the test classes. Responsibilities: identifies and defines the test class(es) identifies and defines the test packages
Implementer
Implements and unit tests the test classes and test packages. Responsibilities: creates the test classes and packages implemented in the test model
CodeCrawler
Page 13
5.
Project Milestones
[Testing of CodeCrawler should incorporate test activities for each of the test efforts identified in the previous sections. Separate project milestones should be identified to communicate project status accomplishments.]
Milestone Task Plan Test Design Test Implement Test Execute Test Evaluate Test
Effort
Start Date
End Date
CodeCrawler
Page 14
6.
Deliverables
Test Plan JUnit Unit Tests Unit Test Reviews JUnit Integration Tests Integration Test Reviews System Tests System Test Reviews Iteration Test Reports Test Final Report
7.
Coding Standards
Coding standards will follow the java coding standards as codified here: http://java.sun.com/docs/codeconv/
CodeCrawler
Page 15