Performance Testing in Agile mode
The main aim of performance testing is not to find bugs, but to eliminate bottlenecks and establish a baseline for future regression testing. To conduct performance testing is to engage in a carefully controlled process of measurement and analysis.
The performance testing is weighed top among regulated and highly critical applications, such as health care and financial products. This enables the rigorous testing effort of the software product at the system level so that it meets its performance requirements and satisfies the customers.
PT Activities in Agile mode
Our product development is moving away from traditional approach of waterfall mode to agile mode . Since Performance testing is also the part of SDLC , it has to be conducted . Now the question arises is when and how to conduct this .
Since fixing of performance bugs is very costly if identifies at the later stage , it will be good to start the PT Activities as soon as the scrum cycle commence . In Agile mode we should cover below points during the PT Activities .
- Performance testing at code level - it should start as soon as the developers finishes with their unit testing .
- Performance testing of newly added features - It should start when the code is added with the UI but not with the system as whole .
- Performance testing of entire application with the newly added features - It should start once the functionality and regression testing is over .
So if we keep in mind the above three points during agile mode as our performance test approach we can successfully deliver the most reliable product.
Thanks for sharing this. I read it thrice and unable to fully agree and connect with the thought, though agree with central idea of 'Importance of Performance' To start, Agile is very often confused with agile (see small a in the later). To me, it doesn't matter if you are in Waterfall, Iterative, RUP or any other software development environment; agility is something that brings humans more closer to be more collaborative in order to deliver a quality software product under uncertainties of changes. agility is in brain, the ability and adaptability to respond to changes. It’s thought provoking reading http://www.agilemanifesto.org/principles.html and https://leanpub.com/AgileTesting (Samantha and Karen, put Agile testing mindset in a more common sense way of thinking) Agile is a methodology (if we go by definition and its evolution) and I am not getting the idea about saying ‘Agile Mode’, ‘Agile Like’, ‘Agile way’ and such superfluous terms. Either you are agile or not. Simple! Have anybody would ever say we are in ‘Waterfall Mode’? A skilful Agile Practitioner may not feel good about using such terms. Think of organizations like Google, Facebook, Amazon… is it Waterfall, Iterative, Agile…AFAIK, no they are not labelled, they have an idea, turns that into Product that ‘People should Love to use’ (at least they have a vision as such), they build it and Performance is integral. Think about performance of Google Maps, Facebook Lite… I think the title is confusing…It should be …”Performance Testing …As I Practice” Uday: The main aim of performance testing is not to find bugs, but to eliminate bottlenecks and establish a baseline for future regression testing Sandeep: Aim of Testing is just not to find bugs, but to gather information about the product under test, keeping in mind; this information can be useful to someone to whom software quality matters. ‘Performance’ of software, either by user perspective or by ISO/IEEE definitions perspective, is a ‘Quality’ attribute of the software. Finding bugs, investigating & evaluating those and determining impact on quality of the software is one dimension of ‘Gathering Information’ about the software. Uday: The performance testing is weighed top among regulated and highly critical applications, such as health care and financial products Sandeep: Agree, but that’s just one aspect, even if non-regulated, non-highly critical, Performance is very - very important. With new technologies emerging and new platforms are coming up…Mobile Apps, Wearable Technology, Cloud based Apps, or Analytic etc.….all needs to be Performant. Just take simple calculator, can you ignore lack of Performance in calculating and displaying results when you add two numbers? Press 2 + 2 and it gives you 4 (but after 10 seconds) won’t you be irritated and (probably) buy a new one? Booking a cab through Mobile App when you are in a low network area, Performance needs to be optimized else you will just install a better Performant App (that works even under Low Battery, Low Network, Freezing Temperature)? and delete the one you are using and this news will be viral on social media. Health care and financial products (at least enterprise level solutions) run on a different, controlled and scaled infrastructure and Performance measures are different. So though I agree to some extent but not fully. Performance is an integral Quality aspect of any software. Take care of it Uday: Since Performance testing is also the part of SDLC , it has to be conducted Sandeep: Performance, as I earlier stated, is one dimension of quality that a user perceive (and obviously look for), so whether you make it a part of STLC (SDLC) explicitly or not, Testing for knowing Performance of Software for which you are paying or some bank has paid, has to be performed (unless you deny/ not do so based on certain parameters). Determining When and How is product specific and you think about in in your project context Next three points, agree. I also think that we can put all under one umbrella, Performance Testing in Small (Unit (Class, Function, Method…), Integration (Components, Classes, and Interfaces)…) and Performance Testing in large (Systems). But the way you put it, is okay. This seem to represent your approach and I hope it worked for you. How much Performance testing and when, depends upon, how critical is the Performance as quality attribute of your software product. Also unless you mimic (which is expensive) your test environment to production environment, create real word usage scenarios, think (& model) about persona to a good degree, you just have a limited view of the ‘Performance’ that will be out there in the real world. Disclaimer: These are my views based on my knowledge & experience and do not represent my employer views / thoughts in any way.
We perform performance testing in Agile, I dont agree with the point that performance testing should start as soon as developer finish the unit testing, It should start only when functional testing is successfully completed & there are no more change expected in the code. What's use of performance testing on a code which might require changes as per functional testing results.
Agile mode may look like more resource/time consuming when compared to waterfall model. But when you look at the cost benefits after production, its worth to use Agile* Think of going via a waterfall model of testing, if you get more bottlenecks then you might end up in spending more on each phase of SDLC. So Agile will save the Live application giving good customer satisfaction and giving cost benefits!!
Interesting thoughts and whilst I agree, how would this fit in with the concepts of an architectural runway and the fact that performance issues discovered can ultimately have an impact on how you deliver your runway, or for that matter, how the architecture is formed. I would suggest this would come down to Innovation and Planning Sprints where we can refactor code, but also refactor our underlying architecture if required. It would also mean more careful consideration of our Enabler Features
Good Information.