Software Performance Testing


Software Performance Testing

Performance testing is a process to touch every department of your companies and a vital part of software development.Either mobile-centric companies or web-centric companies , if your user can’t get what they want from you quickly , you will probably

see your users when they are using your opponent company website or mobile app on their devices after their undesired experience.

A well-performing application is one that lets the end user carry out a given task without undue perceived delay or irritation.

Ian MolyneauxThe Art of Application Performance Testing [O'Reilly]

Then , When and How you should start to performance testing? Before start to performance testing you should have some KPIs(Key Performance Indicators) to measure your performance.We can classify these KPIs , in the two main title.Service-Oriented indicators are your applications availability and response time.Efficiency-Oriented indicators are throughput and utilization capacity.

In the big picture , performance is combination of data of your client , the application software ,your hosting infrastructure and 3rd party dependencies or providers.Therefore additionally you need to End-User Monitoring , analyze the user and client behaviours beside of performance testing.In that part , you need to strict communication with your teams out of your tech stack like user experience team, seller team, accounting team, advertisement team and social media team.Even call center should know what it is and the purpose of this process, because when your site performance getting slow, first impact will rise over there.According to your use case scenarios , you need to collect data from these teams and analyze causes and effects about to your performance.

The Reasons of Bad performance

Performance testing is not an activity you need to do before only deployment.It is a part of your whole software development lifecycle(SDLC) like every testing activity.You should start to think about your application performance at the design phase, to prevent time lost and unwanted situations.
When you skip that part and try to scale before deployment to live , a few days will be descend over like a nightmare to your team.Shortly you need to shift-left your performance testing.

A “performance by design” mindset lends itself to good performance, or at least the agility to change or reconfigure an application to cope with unexpected performance challenges.

Ian MolyneauxThe Art of Application Performance Testing [O'Reilly]

Questions for Scale your app

Performance Testing has not a standart approach.Still is it inside so many incognita.However , this question set will survive your team or yourself from the darkness.

  • How many end users will actually use the application?
  • Where are these end users located?
  • How many of these end users will use it concurrently?
  • How will the end users connect to the application?
  • How many additional end users will require access to the application over time?
  • What will the final application landscape look like in terms of the number and location of the servers?
  • What effect will the application have on network capacity?

Performance Testing Jargon

Like every discipline , performance testing have some terms and definitions.These are most common terms when you use performance test for scaling.

Duration - Total time of test execution
ThinkTime - Estimated use time of real users
Concurrent User - A User group doing same transaction in same time
Transaction - A piece of software has start and end point for a purpose
Simultaneous User - A User group doing same transaction one by one independently
Virtual User - Simulated users by performance testing tool.We can calculate how many vuser we need with this short formula.

vUsers Required = Total Number of Transactions/ TransactionPerHour 

Pacing - Delays added to our scenarios to control the execution rates.To calculate pacing we can use this way,

1
2
3
4
5
6
7
8
9
10
D = Duration
B = Baseline time(total time taken by 1 Vu to complete 1 whole iteration)
T = Total amount of Think time in the script
I = Expected/Target iteration
R = Residual time of the test window.
R = ( D - (T + B)*I)
P = Pacing interval
Dividing the residual time by target iteration gives pacing interval
Hence:
P = R/I

[Note : This post combination of my notes from The Art of Application Performance Testing, 2nd Edition written by Ian Molyneaux and my personal reviews.]