This is again not a new thing in the
industry. It has been there for some time now. At the
first look performance testing within Agile framework do not seem to
fit in as performance testing for a large part has always been done
within the functionally-stable-code paradigm.
On the other side performance testing at
an early stage looks to be a very good idea. The reason is there will
be limited possibility of presence hotspots in code-base. The main
performance bottlenecks that may be present, would be more on the
infrastructure side which are more easier to fix and with almost no
functional regression-testing. Thus we do have a very good case for
performance testing to be in Agile framework.
Although agile after each sprint delivers a workable product, there are some challenges that would crop-up here -
- Stakeholders Buy-in
- Project Management Vision
- Definition of the SLAs
- Unstable builds
- Development and Execution of Test Cases
- Highly skilled performance team
1. Stakeholders Buy-in
This is the most important aspect for
any project. From a performance point of view this becomes altogether
more important. Having an additional performance test team from the
early phases of this project does put an additional strain on the budget
and the timeline of the projects. Furthermore the advantages of
performance testing are more of an intangible kind than say a functional
testing. Thus it becomes a tad more difficult to get a stakeholders
buy-in.
2. Project Management Vision
Despite the importance of the
performance of an application, many project managers are still unaware
of the performance test processes and the challenges a performance team
faces. This apathy has been the undoing of many good projects. Within
Agile framework, this would cause more conflicts between the project
managers and performance teams. The ideal way would be to have a
detailed meeting between the developers, performance architect/team and
project managers and chalk out a plan which would decide the following -
- Modules to be targeted for performance testing
- Approach of performance testing
- In which sprint to begin of performance testing?
- Identification of Module-wise load that needs to be simulated
- Profiling Tool Selection
- Transition of Performance Tool – This would happen, as initially tools like JPerfUnit may be used and at a later stage end-to-end load testing tools like LoadRunner or SilkPerformer may be used.
These are some of the many parameters that needs to be defined at a project management level.
3. Definition of SLAs
This will be one of the most challenging
aspect as business can always give an insight on end-to-end SLA.
However, at a module-level it becomes more challenging. Here there
arises the need for developer and performance architect to arrive at an
estimated number. Apart from this, there may be a need for de-scoping
of some modules as not all modules may be critical from performance
stand-point.
4. Development and Execution of Test Cases
Although agile delivers a workable
product at the end of every sprint, we may not be able to use the
standard load testing tools as not all components would be present which
a standard load-testing tool may require. So in most cases, there is
an inherent challenge in simulating the load. Tools may very between
phases. For instance, JPerfUnit, a stub or test harness might be used
in the initial phases. An extra development time for this would have to
be estimated in the initial project planning phase. Finally, once
created, development and execution of test cases would follow. With the
help of profiling tool, most performance hotspots can be identified
early.
At later stages of the project, the
traditional performance scripting and execution will replace the harness
that was created in the earlier stage. So there will be a big re-work
which again would be a challenge considering the sprint-timeline. So
sprint should be planned taking this into consideration too.
5. Unstable builds
As development and testing is going on
simultaneously, a break-off time would be needed within a sprint. The
other alternative is to build the script on a continuous basis based
which is quite difficult. Performance team would then create the
required test script and test the code. This break-off point is only to
enable performance team to work on a particular test case. If major
changes occur after the break-off time, they will have to be
incorporated in the next sprint.
6. High-skilled Performance Team
Last but not the least as the cliché
goes. More than the skill-level, it is imperative that team members
should have the confidence to get their hands dirty learning about the
system and innovating as challenges continue to crop-up during the
various sprints, keeping in mind the performance test approach, and thus
ensuring a quality product.
The agile methodology does present lot
of challenges at least from performance stand-point. However, if the
performance angle is kept in mind from the beginning, it will certainly
help in reducing lot of pain later. From a performance tester
stand-point, agile is a gold-mine, as you get involved with developers
at an early stage of the application. This would help in greater
understanding of the application and its internal workings which
eventually would help in better identification of performance
bottlenecks.
No comments:
Post a Comment