Translate

Friday, 7 February 2014

The Fundamental Performance Test Process

Unlike functional testing, performance testing is much misunderstood, less explored, and often poorly executed aspect of software quality assurance. Attempts to clearly define the performance test process are limited and lack some fundamental elements. So here's might attempt which is loosely based on that provided in the Microsofts MSDN Library, Chapter 5 "Coordinating Performance Testing with an Iteration-Based Process.

This publication by Ian Molyneaux to is also makes a good attempt at defining the process: "The Art of Performance Testing". ... but is it an art or is it a science? A good question for another day perhaps.

Unlike Microsoft, I broke down the process into 9 stages as follows:
  1. Test Project Initiation
  2. Develop and Review Non-Functional Requirements and Design
  3. Test Environment Planning and Design
  4. Plan and Design Tests
  5. Test Environment Configuration and Setup
  6. Implement the Test Design
  7. Performance Test Execution
  8. Test Analysis and Reporting
  9. Test Closure Activities
 Here's a brief overview of these each phase:


ATest Project Initiation
ProcessAim
A1Impact AssessmentAssess impact of change / development in regards to performance & Capacity risks, testing timescales, and high-level test approach.
A2Proof of ConceptTechnical Evaluation of performance test tool against target application. Identify scripting and data requirements, assessment of scripting effort, etc.
BDevelop and Review Non-Functional Requirements and Design
ProcessAim
B1NFR Development & ReviewContribute to the development, review and sign-off of the Non-Functional system requirements (inc Business NFR's)
B2Design Specification Development & ReviewContribute to the development and review of the Design Specifications.
DPlan and Design Tests
ProcessAim
C1Environment Planning and DesignIdentify the physical test environment and the production environment as well as the tools and resources available to the test team. The physical environment includes hardware, software, and network configurations.
DPlan and Design Tests
ProcessAim
D1Performance Test PlanningTo present all of the information necessary to plan and control the performance test effort. It describes the approach to performance testing and is the top-level plan to direct the test effort.
D2Performance Test DesignTo present all of the information necessary to plan and control the performance test effort. It describes the approach to performance testing and is the top-level plan to direct the test effort.
ETest Environment Configuration and Setup
ProcessAim
E1Configure the Test EnvironmentPrepare the test environment, tools, and resources necessary to execute performance tests as features and components become available. Ensure that the test environment is instrumented for resource monitoring and analysis.
FImplement the Test Design
ProcessAim
F1Develop Test AssetsDevelop the performance test in accordance with the test design: Create versioned & reviewed Test Script, Test Data, etc.
GPerformance Test Execution
ProcessAim
F2Performance Test ExecutionRun and monitor your tests. Validate the tests, test data, and results collection. Execute validated tests for analysis while monitoring the test and the test environment.
HTest Analysis and Reporting
ProcessAim
H1Test Analysis and ReportingConsolidate and share results data. Analyse the data both individually and as a cross-functional team.
H2Defect ManagementManage defects: Log, track, update, etc
ITest Closure Activities
ProcessAim
I1Lessons LearnedLearn from successes and failures.
I2Process ReviewReview test process with aim of improving it.
I3Defect ReviewReview defects to ensure no outstanding issues and identify anti-patterns. 
I4Archive test assetsTo store visioned test assets from the last release
15Post Release Production MonitoringMonitor production post release re: Sawmill, resource utilization, DB Profile, message queues, etc

Clearly, it is unlikely and unwise for these phases to be carried out in a rigid linear manner. To be truly  effective, performance testing should be managed in the context of iteration planning and processes.