By Howard Osborne
If you fancied picking up a deal or two on Black Friday but couldn’t face the frenzy on the high street, you will have seen that some on-line retailers are coping better than others.
A visit to Tesco Direct may have left you with a page like this…
It’s one thing selling out of stock, another thing altogether not even being to browse a website.
On the plus side, the holding page looks good. It explains that the site is not accessible and then retries to access the site for you every 30 seconds. However, although it may seem like a good idea, is it achieving its objective or is it adding to the problem?
Would visitors who are just browsing hang around looking at the page and watching it refresh every 30 seconds or would they try somewhere else first and then possibly come back later.
As for those people who really want to access the Tesco site and get that last Furby, they may leave the page open which is putting in new requests every 30 seconds and adding to the load. I left the page open for 2 hours. So as one user I have added another 240 requests. How many other people are leaving their browsers open and then doing other things – maybe even forgetting about it?
As for sizing their system to accommodate these loads, did they simply get their figures wrong in planning or was this a perfect storm?
- All the major retailers were promoting the same day – who wouldn’t shop around first and increase the load overall?
- Inadvertently the news channels may have play their part. Even adverse publicity of people fighting over flat screen TVs can all help increase the interest.
- A front-end though designed for the right reasons, may be incidentally adding load.
Even if this level of interest wasn’t predictable, retailers need to keep performance at the top of their agenda. So where do you start?
When Steve Souders was charged with improving performance at Yahoo!, he noted that the main performance issues were not as expected to do with back-end optimisations but rather to do with ensuring that the front-end was as efficient as possible. And so he and others made YSlow, a tool to check pages against rules associated with good programming practices. Keep associated resources to a minimum, call them at the right time, set expires appropriately etc.
As part of our on-going research, we test the major retailers and last month noticed that whilst the main tesco.com site scored a healthy 82/100, their Direct site, scored significantly lower – 67/100. On closer inspection, there looked to be some simple things they could do straight away to improve performance. How much this could have helped avoid their outage we don’t know, but every little helps…
However, Tesco are not on their own, many retailers can benefit from shaping up their sites and staying in tiptop shape with some focussed performance testing. Here are some golden rules:
- Make sure you stress test your site to know the upper limits and how the system behaves when reaching those levels
- Set your test platform to be the same size and configuration as production. If this isn’t possible, then only scale down to a level where reasonable inferences can be drawn from the tests. – load balancers only have one choice when there is only one web server.
- Databases should be loaded with realistic data. Not only do you need a similar number of items in your shop but you need the other data such as the backlog of orders.
- Perform manual exploratory testing at some point during performance testing. Some functional issues only become evident when the system is under load. Make sure your testing also includes using back-end features such as admin and reporting tools which may cause database locks.
- Put spikes in your soak tests and ensure you run for several hours to ensure your resources are being properly maintained.
- Use tools such as YSlow or Pagespeed to find areas that could be improved.
- Bring performance testing into the development process. It’s better to know about potential performance issues at the point the code change is made.
- Continuous integration tools like Jenkins and TeamCity can be easily configured to also run performance tests.
By taking a proactive approach to performance testing, you can rest assured that your site is fit even on exceptional days like Black Friday and who knows, you may even get some time free to do some shopping.