Retail Best Practices

White Paper
Retail Best Practices
Performance Testing Retail Web
and Mobile Properties
Table of Contents
Executive Summary..................................................................................................... 3
1. eCommerce Characteristics.................................................................................. 4
2. What is an Effective Test Strategy......................................................................... 5
3. Do I Have a Successful eCommerce Site Yet?..................................................... 5
4. Testing for Success................................................................................................ 6
5. Testing Tactics...................................................................................................... 10
6. Retail Examples.................................................................................................... 12
7.Security................................................................................................................. 14
Appendix: CloudTest Performance Data Q&A......................................................... 16
About SOASTA, Inc................................................................................................... 17
SOASTA
RETAIL BEST PRACTICES WHITE PAPER | 2
Retail Best Practices:
Performance Testing
Six of the top 10 US retailers trust SOASTA to execute
load and performance tests on their eCommerce sites.
Retailers competing in the high-pressure world of eCommerce have many challenges: not only do
they need to provide an interesting and compelling shopping experience; they need to make that
experience fast and reliable. Shoppers have proven to be discriminating and can easily move from
one online store to another.
A company’s online presence has become as important as a physical store, and for some the online
store is their only sales channel.
Many of those responsible for the performance of retail web sites have come to realize that external
testing against the production infrastructure is the best way to get a true picture of capacity and
performance in the real world. Testing in production is the only way to ensure that online applications will perform as expected. Of course, this does not obviate the need or eliminate the benefits
of testing in a lab environment as well; and it’s important to have continuity between the two.
So, how can a company build confidence that their online store will provide a great shopping experience and withstand the traffic spikes caused by seasonal upswings, events and promotions? How
should a retailer measure success?
SOASTA
RETAIL BEST PRACTICES WHITE PAPER | 3
Third-party content can add functionality or information to
a site, but it also adds a layer of traffic and complexity that
you may or may not control.
1. eCommerce Characteristics
Most retailers have brick and mortar stores to maintain, staff, and ensure are run profitably, in addition to an online site to complement their physical presence. The look and feel of the online site
typically mirrors the target market of their retail stores: discount, high-end woman’s shop, books
and gifts, big box electronics, etc.
As a result, balancing performance with the rich content often used to capture a specific design
goal can be a struggle. Marketing departments spend millions of dollars promoting events intended to drive users to the site. Web developers build compelling sites to enable a visitor to easily
navigate between ‘departments’ and effectively sift through a range of size, color, style and other
product attributes. While these content-rich sites are visually attractive and more easily understood
(hopefully!), they can also cause performance issues as traffic grows.
Third-party content is quite common on eCommerce sites, including ads, cross-promotions, and
relevant consumer information. This content can add functionality or information to a site, but it also
adds a layer of traffic and complexity that you may or may not control. Understanding the impact of
this content is critical to managing the overall performance of the site. And, of course, the goal of
any eCommerce site is to sell products. Back-end and third-party systems for payment processing,
authorization, inventory checking and more can also add performance challenges.
Retailers also know that site performance directly relates to revenue. Aberdeen Group found that
50% of companies lost revenue opportunities because of poorly performing applications and 32%
experienced damage to their brand reputation. With most users more than willing to share their experience on Facebook or Twitter, the news of a poorly performing site can spread around the globe
in minutes.
Without a doubt, much is riding on the performance of an eCommerce site. A retailer can position
themselves for success by following SOASTA’s proven Load and Performance Methodology, which
is described on page 5.
SOASTA
RETAIL BEST PRACTICES WHITE PAPER | 4
2. What is an Effective eCommerce Test Strategy?
“
Creating a successful strategy is key to a successful performance engagement. It begins with
understanding how your users interact with your eCommerce site. For example, the following
information is core to defining the test engagement strategy:
• Main business processes (flows) followed by site visitors
• Average time a user stays on the site
• Average percentage of users that complete a purchase vs. users who browse only
• Abandonment ratios and where in the process users abandon
• Average and peak number of concurrent users/hour
• Average and peak page views per minute/hour
• Average and peak orders placed per minute/hour
• Traffic pattern differences for the above metrics for specific events such as Black Friday or Cyber
Monday
• Geographic regions of the site traffic’s source
• Percentage of traffic that comes from mobile devices, the types of devices, and the differences in
user flows and the impact on the above metrics
• If a CDN is used, percentage of content that is served from the CDN
This information helps to define a successful performance testing strategy and drives how your test
will be architected and executed.
3. Do I Have a Successful eCommerce Site Yet?
IF A RETAILER WANTS TO BE
IN THE TOP 25 CATCHPOINT
RANK THEY NEED TO HAVE
PAGE LOAD TIMES OF TWO
SECONDS OR LESS.
One of the toughest questions to answer is ‘Is the site ready?’ That question becomes infinitely
easier when you have a solid strategy in place. eCommerce sites have specific key performance
indicators (KPIs) that help a retailer measure their site’s performance:
• Orders per Minute – for an eCommerce site, orders completed in a period of time is the gold
standard KPI. Orders directly translate to revenue. SOASTA’s CloudTest® platform can track
exactly how many orders are successfully completed each minute (or over any period of time) as
well as how many had errors.
• Page Views per Hour or Minute – Customers can only complete orders if they can effectively
use the site. Ensuring that the eCommerce site can serve web content as users search, compare
and interact is critical.
• Sessions per Hour – Sessions are individual users or systems interacting with the site. Ensuring
that those users can establish and maintain a session for the duration of their interaction is very
important.
• Errors – It may seem obvious, but keeping track of both the overall error rate and the type of
errors you are receiving are critical. Not all errors are created equally.
• Average Response Time – Understanding how long, on average, pages and page assets take to
be served is important for uncovering potential bottlenecks. It’s also the basis for many customers measuring the utility of an eCommerce site. SOASTA CloudTest shows the Average Response
Time for an entire test scenario, transactions, individual pages, and (unlike other performance
applications) provides information about each individual asset that makes up a page. It even
provides the ability to split out Average Response Times by domain so it’s easy to see if a thirdparty asset, a CDN or specific data center is impacting performance.
• 90th Percentile Response Time – This provides an even finer level of granularity when it comes
to response time. 90th Percentile removes the slowest 10% response times. This eliminates
timeouts (which can average 120 seconds) while giving a true indication of the response for 90%
of the users.
SOASTA recommends that a retailer striving for good site performance have an Average Response
Time of less than 3 seconds with a 90th Percentile of less than 2.75 seconds. A retailer wanting
to ensure their site is among the leaders in performance needs to know how fast is fast enough.
Catchpoint Systems ranks the site performance of the top 50 US retailers each year. If we consider
their rankings for 2011, we note that if a retailer wants to be in the top 25 they need to have page
load times of 2 seconds or less on Cyber Monday – one of the heaviest traffic days of the year.
SOASTA
RETAIL BEST PRACTICES WHITE PAPER | 5
This indicates that even an additional second of delay can put you at the back of the pack. It is no
accident that six of the top 10 US retailers have worked with SOASTA to ensure they have worldclass performance every single day.
“
It’s worth noting there are different expectations for different types of pages. A user browsing the
site will expect lightning fast response times while the initiation of a video or the final step in a
checkout process is generally expected to take a bit longer. If an eCommerce site can maintain a
target level of performance while testing with 150-200% of expected peak load, a retailer can go
into any marketing event or holiday season with increased confidence.
3.1 What to Watch for When Testing
Understanding what makes an eCommerce site fast or slow helps to focus the testing effort. Many
eCommerce sites are quite complex and made up of several different components and application
tiers. It’s important to understand each of these components and how they interact with each other.
Some of the common areas to focus on while testing are:
Application Issues – There is no such thing as perfect code. Watch for inefficient code, synchronization issues, garbage collection, memory leaks, and application dead locks.
Database Performance – This is the core of performance. Watch for locking and contention, missing indexes, inefficient queries, memory management, connection management and unmanaged
growth of data.
Configuration Settings – The default settings are rarely optimal. Check for differences between
environments and understand the tuning options and best practices for the various devices in the
architecture.
Load Balancing – Use hardware efficiently. Look for algorithms that are not optimized and underutilized features and capabilities.
EVEN AN ADDITIONAL
SECOND OF DELAY CAN
PUT YOU AT THE BACK OF
THE ECOMMERCE PACK
Connectivity – Communication is vital. Ensure that systems can communicate with a minimum of
latency, that the firewall has sufficient capacity, that the system is optimized for mobile networks,
that the DNS routing is correct, and that CDN caching is optimized.
Bandwidth – Can you be reached? Ensure that the bandwidth pipe is big enough for the traffic.
Review the content making up the pages. Rich content can mean big data and bandwidth requirements. Verify that the site can support different connection types/speeds including mobile devices.
Architecture – Match the car to the engine. Watch for unbalanced tiers, mismatched technology
choices or a dead-end scalability path.
I
Third-Party Services – You are only as fast as your slowest link. Ensure that analytics and tracking,
payment systems, aggregated content, social networks or CDNs are not slowing the site down.
4. Testing for Success
It’s clear that to test for success an effective eCommerce test strategy is critical. Having the right
team in place to implement the strategy will then enable the tests to be executed successfully. Testing for success means understanding the value of testing in production and in the performance lab.
SOASTA’s methodology emphasizes various tests in different places to find what is often a needle
in a haystack.
4.1 SOASTA’s CloudTest Methodology
The SOASTA Performance Test Methodology is a software QA performance testing strategy with a
set of lightweight processes that fit into the software development lifecycle and ensure that online
applications are ready for peak usage. The methodology includes testing applications in a lab
environment inside of the firewall and processes for testing the production infrastructure used by
customers.
Cloud Testing leverages the efficiencies of the cloud to test web applications and sites. By using
the infrastructure and services provided by companies like Amazon Web Services and Rackspace,
SOASTA customers can reduce the cost of load and performance testing while increasing the accuracy of representing the actual traffic to the site.
CloudTest is a distributed architecture that can also be deployed completely behind the firewall,
or in a combination of on-premise and cloud-based configurations. Based on years of experience
testing from the Cloud and leveraging existing best practices and proven performance testing
methodologies, the SOASTA methodology extends traditional approaches to address new opportunities and challenges. These include:
SOASTA
RETAIL BEST PRACTICES WHITE PAPER | 6
• Testing both in the lab and with live web-based applications in production
“
• Leveraging the Cloud to test at both typical and peak traffic levels, from hundreds of users to
millions
• Responding to the acceleration of development cycle times by making agile performance testing
a realistic alternative
• Generating geographically dispersed load to most accurately represent real-world traffic
• Generating both internal and external load and against both the lab and production environments
for the most efficient and effective results
• Analyzing performance intelligence in real-time to speed problem resolution
Tests are not executed until the latter half of the methodology. This is because a successful performance test is the result of defining a strategy that is best for an eCommerce site, and then putting
the right people and processes in place.
4.2 Strategy and Planning
SOASTA’s approach to performance engineering calls for an umbrella strategy with associated
individual test plans. Test plans roll up into an overall view that ensures confidence in the ability of
key revenue generating applications to perform as expected. The result is an ongoing performance
engineering strategy throughout a site’s evolution. It includes a number of test plans centered on
individual objectives, such as holiday readiness, a major architectural change, or the release of a
major version of code.
Having a well-defined strategy, with explicit test plans, provides business and engineering leaders
with a high degree of confidence in operational readiness. Using this approach gives greater insight
into an application’s performance.
HAVE
A WELL-DEFINEDHAVE
A WELL-DEFINED
STRATEGY,
WITH
EXPLICITLY
STRATEGY,
WITH
EXPLICDEFINED
TEST PLANS.
ITLY DEFINED
TEST PLANS .
Using an iterative process within test plans to achieve defined goals allows for a stream of continuous improvement in the applications being tested. It starts with the test definition and ends with
obtaining actionable intelligence results.
The process of creating a test plan starts with the Define Phase. During this phase, the flows to be
tested throughout the site are defined, metrics to be monitored are established, and success criteria for the tests are agreed upon.
In the Design Phase, the user scenarios are written and test parameters are set up. Things such as
the mix of users executing different parts of the application, the virtual user targets, and the ramptime are modeled.
The Test Phase is where the execution of tests takes place, and where data is collected for assessment.
Finally, the Assess Phase, parts of which may occur during the test execution, is when the data collected throughout test execution is used to provide actionable intelligence.
4.3 Production Testing
There are a variety of reasons for testing in production, but in large part it’s becoming more common because it’s now affordable and because the positive experience of SOASTA’s customers has
reduced the fear associated with testing a production infrastructure. The only way to truly build
confidence in a site is to test that site. Due to the sheer number of users accessing their site at any
given time, very few companies can replicate a production environment in a staging environment or
in a performance lab. SOASTA has developed a methodology for testing in production that minimizes the impact on real users while getting valuable, actionable information.
Testing in production is the best way to get a true picture of capacity and performance in the real
world and is the only way to ensure that online applications will perform as expected.
Can retail companies really test in production? The answer is a resounding yes!
SOASTA
RETAIL BEST PRACTICES WHITE PAPER | 7
The SOASTA CloudTest
Methodology is a software QA
performance testing strategy
with a set of lightweight processes that ensure that online
applications are ready for peak
usage.
SOASTA’s production testing methodology helps identify the invisible walls that show up in architectures after they move out of the lab. Traditionally, testers have been limited to making extrapolations over time about whether small tests on a few servers in a lab can support exponentially higher
amounts of load in production. Without proper testing, these types of assumptions always result in
unexpected barriers. There are many things that a production testing approach catches that cannot
be found with traditional test methods. These include:
• Batch jobs that are not present in the lab (log rotations, backups, etc.) or the impact of other
online systems affecting performance
• Load balancer performance issues such as misconfigured algorithm settings
• Network configuration problems such as 100MB settings instead of 1GB on switches and routing
problems
• Bandwidth constraints
• Data pipe not configured as ‘burstable’ to handle spikes in traffic
• Latency between systems inside and outside of application bubbles
• Misconfigured application servers or web servers
• CDN not configured to serve up new content
• Radically different performance depending on database size
4.4 Testing in the Performance Lab
Ongoing performance testing in a lab allows application engineering teams to assess performance
over time, and helps catch any show-stopping performance bugs before they reach production. In
addition, the lab provides a place to performance test code and configuration changes for performance regression before releasing changes to production and outside of the normal build cycle.
This could include things like a quick bug fix in a page, or a seemingly minor configuration change
that could have a performance impact. Often, these kinds of changes are deployed with little to no
testing and come back later as a cause of performance issues.
Testing in the lab also gives you the ability to break the system without having to worry about the
impact on users. It is important to understand how the eCommerce site responds when taken to
failure and how it recovers. No one wants to bring a live production site to failure.
SOASTA
RETAIL BEST PRACTICES WHITE PAPER | 8
Building an End-to-End Test
Plan where production testing
is an essential component.
4.5 Types of Tests
In addition to testing for baseline performance metrics, the methodology includes failure, duration,
spike and break point testing. There are a number of different test types that might be included in
a test strategy, which are described in more detail in the Testing Tactics section on page 10.
Executing different types of tests in different environments is a key element in finding and resolving
bottlenecks in architectures that make up an eCommerce site, and are often quite complex. The
graphic below illustrates how different types of tests in the lab and in production can help pinpoint
specific issues as you work toward optimal performance.
4.6 Content Delivery Network (CDN) and Third-Party Content
TESTING IN PRODUCTION
IS THE BEST WAY TO GET A
TRUE PICTURE OF CAPACITY
AND PERFORMANCE IN THE
REAL WORLD AND IS THE
ONLY WAY TO ENSURE THAT
ONLINE APPLICATIONS WILL
PERFORM AS EXPECTED.
When a retail company tests in production, it can also fully test the caching/offloading capabilities of its CDN. This is vital to understanding the true performance of a production environment.
A primary purpose of a CDN is to reduce the amount of times content has to be requested from
the origin servers by delivering certain content from strategically placed servers within the CDN
network.
When preparing to test in production it is imperative to engage with the CDN provider early in
the process to ensure that a production test has the support of the CDN provider. SOASTA has
worked with Akamai to develop a set of best practices for tests including CDN assets.
The vast majority of test labs do not have a CDN as part of the infrastructure. Therefore, it’s
impossible to test how the CDN affects performance without testing in production. One SOASTA
customer, a performance engineer for a multi-billion-dollar retailer with more than 2000 storefronts, considers the inclusion of a CDN a vital part of production testing. He says, “When we test
in production, we generally have Akamai caching enabled. This definitely influences the testing in
terms of number of requests that reach origin (main site) and the response times depending on
from where the page is served - Akamai or origin. In the lab it is most likely that we won’t include
Akamai. This means we have to include the CDN in our production tests or we have no true idea of
our production performance.”
Many eCommerce sites use third-party providers to enhance their overall site content. It’s vital to
involve those third-party providers that might have an impact on performance when the strategy
is being formulated. On the other hand, you would not typically include domains such as Google
Analytics or Omniture metrics as part of your test. They do not want to be surprised by a test or
have it bring down their service or site with fake transactions. Involving third-party providers early
in the process helps to ensure their support. They may even want to be measured in the process.
After all, they want to have a well performing site, too.
SOASTA CloudTest gives retailers the ability to analyze the performance of individual third-party
provider content and provide that information to the third-party provider.
SOASTA
RETAIL BEST PRACTICES WHITE PAPER | 9
4.7 Potential Live Customer Impact
Testing in production can be done with or without live users on the environment. The majority of
customers testing in production with CloudTest are doing so on a live environment. It’s possible,
but not always feasible, to put up a maintenance or turn-away page and wait until all existing user
sessions have finished. In reality, this method is actually rarely utilized because the right tool and
methodology working together can allow testing to take place with active users on the site in all but
the most extreme cases. To use one SOASTA customer’s exact words, “The cost of not testing is
far greater than the potential impact on live customers”. You can make revenue at the same time
you’re testing — with the right approach.
It’s also possible to segment a portion of the live environment during a low-traffic period and allow
for testing on this sub-environment. Or test against one data center while live users are all routed
to another data center. Typically a separate IP address is configured on a load balancer and servers are moved out of the live pool and placed into the test pool. Sometimes configuration changes
need to be made to other shared components. This is a more costly approach due to the need for
extra hardware and the maintenance overhead. It’s also somewhat less reliable because you start
to deviate from the actual production configuration, and you cannot test to true scale. It is, however, a more realistic test than simply testing in a lab.
4.8 Three Requirements for Successful Live Testing
The first requirement for being able to do a large-scale test with live customers is having real-time
analytics in your test tool. With up-to-the-second information about site performance, you can
quickly tell if a site has started to experience poor performance or become completely unresponsive.
The second requirement is a good “kill switch”. Pressing stop or abort in a running CloudTest will
stop the load immediately. Bandwidth, concurrent connections, threads in use, and other typical
pinch-points will all drop back to normal. With real-time analytics and the kill switch, you can stop
a test as soon as you suspect customers may be impacted. If the test tool takes a long time to kill
a test then this poses a serious risk to real customers. CloudTest is designed to accomplish a nearimmediate stop.
EXECUTING DIFFERENT
TYPES OF TESTS ACROSS
DIFFERENT ENVIRONMENTS
IS KEY TO FINDING AND
RESOLVING BOTTLENECKS
IN THE ARCHITECTURES OF
ECOMMERCE SITES.
Finally, having good monitoring practices internally, preferably integrated with CloudTest, can prevent you from ever needing to abort a test because of live user impact. Real-time visibility into metrics like CPU utilization, heap usage, garbage collection, and connection counts on load balancers
or firewalls can help prevent those thresholds from ever being violated by routine testing.
5.0 Testing Tactics
Running the tests is exciting because it is the culmination of many hours of work. This is not the
time to take shortcuts! If a good test strategy has been developed then the time has come to execute it.
SOASTA’s testing methodology, as described above, has proven successful for retailers of all sizes.
The ‘Test and Assess’ phases are where you see the fruits of your labor. This is when you simulate the expected traffic; monitor the results in real-time, and collect the data to help identify any
necessary remedial actions. Many SOASTA customers use the dashboards while the test is running,
greatly reducing the break/fix cycle time.
Testing in production allows the tests to be executed the same way the customer will interact with
the application. It’s worth repeating that the SOASTA methodology is a continuous process. Retailers should test early and test often. Minor changes can have major impact and is another reason
we recommend testing in both the performance lab and in production. It helps find performance
issues earlier in the testing process.
5.1 Roles and Responsibilities
It is vital to have the right people involved in the test execution. The size of your company and staff,
the scale of the site, the complexity of the testing, whether or not you’ve outsourced development
or deployed third-party applications within your site, the use of a managed service provider for
infrastructure and more all influence how many individuals are involved in a test.
In some cases it’s one or two people who do everything. In other cases, such as the complete
reconstruction of a site or testing a popular site for seasonal readiness, there will be multiple people
for many of the responsibilities, from architects to individual contributors responsible for specific
elements of the infrastructure.
SOASTA
RETAIL BEST PRACTICES WHITE PAPER | 10
There are a number of responsibilities to address as part of a testing strategy:
• Coordination – Coordination of testing activities with all key stakeholders. This includes application engineering, operations, vendors and third-party connected services, as well as business
and senior leadership.
• Communication – Communication of test results, issues, issue resolution plans, and progress
against overall strategy to business and engineering leadership.
• Strategy – Definition of an overall strategy that includes establishing business processes for applications, key performance indicators, capacity plans, monitoring coverage, and individual test
plans that roll up into a performance management aspect of the software development life cycle.
• Architecture – Delivering best practices on creating high-performing application and infrastructure architectures for new projects or for improving existing applications.
• Test Creation – Turning business process definitions into executable tests, creating individual
performance test workloads from capacity plans, and maintaining the current library of test cases
on an ongoing basis.
• Test Execution – Executing ongoing performance tests in the performance lab and production
environment with delivery of test results.
WHEN THE RIGHT MIX OF
PEOPLE ARE BROUGHT TOGETHER, TESTS ARE MUCH
MORE PRODUCTIVE.
• Analysis – Reviewing test results from all environments and analyzing the performance with
respect to previous tests. Responsibility for calling out any violations of established success criteria, thresholds that may be violated on key performance indicators, or deviation from previous
baseline tests.
• Diagnosis – Root cause analysis of bottlenecks or performance problems that might arise. Using
domain knowledge and specialized tools such as profilers, memory leak detectors, and monitoring tools to pinpoint problem areas.
• Tuning – Tuning involves applying best practices, tuning recommendations and isolating parts of
the application or infrastructure that could be optimized to give better capacity or performance.
• Measurement – Responsibility for analyzing activities and their progress against the overall strategy, in addition to making process improvement recommendations for optimizing all strategic or
tactical activities.
In small companies one person may take on all of these responsibilities, often assisted by SOASTA
in test strategy, creation, execution and analysis. Some or all of the roles may be outsourced, typically to take advantage of expertise, create focus on areas lacking attention and/or to lower costs.
Normally there is a blend of individuals and roles. For example, the presence of a Project Manager,
performance engineers and/or specialists would either remove the need for a tech lead, or allow
that person to fill other gaps in the process.
Below are common roles/titles and how they might map to the various responsibilities:
• Project Manager – Coordination, communication
• Technical Lead – Coordination, communication, strategy, architecture, analysis, diagnosis, tuning, measurement
• Architect – Infrastructure architecture, app architecture
• Performance Engineer – Develop strategy, architecture, analysis, diagnosis, tuning, measurement
• Test Engineer – Test creation, execution, analysis
• Specialist – Diagnosis, tuning
When the right mix of people are brought together, tests are much more productive. When issues
arise, having the right team available enables those issues to be quickly taken care of and decisions
to be made when actionable intelligence is provided.
5.2 Types of Tests
A question that often comes up is ‘What kind of tests need to be run?’ There are several test options – baseline, stress, spike, endurance and failover. For a retailer, all of them have value.
• Baseline – Retailers need to establish a baseline of what is acceptable performance for their
site when under ‘average load’. We recommend taking the last six months of analytics and the
busiest hour from each day and using that as your average load values for page views/hour and
orders/minute.
SOASTA
RETAIL BEST PRACTICES WHITE PAPER | 11
• Stress – Retailers need to run stress tests to ensure that site performance does not degrade
under heavy load for an extended period of time. It is not unusual for memory leaks or faulty garbage collection to cause performance issues that are not seen until stress tests are conducted.
SOASTA recommends that stress tests be executed at 150-200% of peak expected load.
• Spike – A spike test is when a very large number of users ramp-up very quickly or almost simultaneously. For retailers spike tests are vital. Many retailers have spike events – flash promotions, Black Friday, Cyber Monday, Valentines Day, etc. – and these events can bring a site to its
knees. Retailers have to ensure that during such events orders are not lost or users turned away.
SOASTA recommends that spike tests be run at 200% of peak expected load.
• Endurance – Endurance tests differ from stress tests in magnitude. While a stress test will have
a very high number of page views and orders, an endurance test will simulate slightly less load
but for a longer period of time. These tests have great value as they can uncover additional areas
where performance can degrade over a prolonged period of time. There are batch jobs, database
backups and cache refreshes that can be scheduled and run on a recurring basis. Running an
endurance test over several hours may show that these types of events effect performance.
• Failover – Most retailers have disaster recovery or failover servers that should spring into action
in case of a failure. If a hardware failure occurs during a period of heavy load can the backup
hardware adequately step into the void? There is no way to know unless a failover test is executed.
THE COST OF NOT TESTING
IS FAR GREATER THAN THE
POTENTIAL IMPACT ON LIVE
CUSTOMERS.
In early testing the goals are often simply to understand the performance characteristics of the site.
For those tests the ramp-up rates may be slower and more methodical. Once these baselines are
established, and you have a good sense of what the site can handle, it’s critical that the tests be
executed as realistically as possible. This includes having realistic user levels and ramp-up rates.
Reviewing the analytics from previous years will help you build user ramp-up levels. It is imperative
that you do not cheat the test. Do not alter think times or remove critical components of the test.
Removing or altering them will only skew the results and lessen the value of the tests.
5.3 Monitoring the Test
Monitoring is an integral part of the testing process. CloudTest includes system monitors that capture real time data on the systems under test. It monitors the performance of the entire application
stack and enables all test participants to monitor how the system under test is reacting under load.
Additionally, SOASTA integrates with third-party application monitoring tools like CA Application
Performance Management, AppDynamics, AWS CloudWatch, Correlsense and New Relic. This
allows even greater insight into the application stack during the test. SOASTA also works with the
monitoring systems that retailers already have in place. Most retailers have extensive monitoring covering the breadth of their architecture. When a test is executed that combines SOASTA’s
monitoring with the retailer’s monitoring, unparalleled insight can be gained into the system’s true
performance.
Understanding exactly how the infrastructure reacts under load allows for modifications to be made
during the test. For example, it is not uncommon to identify an application server that is not in rotation or a thread pool that is incorrectly configured. Due to SOASTA’s real-time analytics, changes
can be made ‘on the fly’ during the test and the impact immediately measured.
6. Retail Examples
Are there retail companies that follow this methodology today? Yes! SOASTA works with several
retailers that test from lab to production and the results have been outstanding.
6.1 Multi-billion-dollar Retailer with 2000+ Storefronts
The company conducts load and performance tests in both a test environment and a production
environment. They test on a continual basis to see if there are performance issues that need to
be addressed very early in the development cycle. Prior to the 2011 Holiday Season, the retailer
conducted 21 tests in their production environment. This enabled them to fully test several different
configurations to achieve optimal performance.
Additionally, the company knew their system’s exact capacity and where the first bottleneck could
potentially appear. That is powerful knowledge to have going into a busy retail season. Consider
how much time is lost trying to pinpoint the bottleneck and how to overcome the performance
issue. This allows a contingency plan to be put in place and ready to execute if higher than anticipated load is observed.
SOASTA
RETAIL BEST PRACTICES WHITE PAPER | 12
“We mandate that we test in production. ... This is the only way we can accurately test our load balancers, switches and third-party providers, which are
generally not present in the lab.”
Performance Engineer,, Multi-Billion-Dollar Retailer
AFTER PRODUCTION
TESTING, THE RETAILER
EXPERIENCED THEIR BEST
ONLINE RETAIL EVENT
EVER. OPTIMAL PERFORMANCE WAS MAINTAINED
DURING PEAK PERIODS.
THEY WERE ABLE TO
EASILY HANDLE 3X THEIR
PREVIOUS HIGH VOLUME
DAY.
How could these tests be executed in production? Wasn’t it afraid of affecting actual customers?
Naturally it was concerned about its customers. Hence, when tests were executed in production,
careful monitoring was conducted at several layers by both SOASTA and by its internal monitoring systems. This served a dual purpose. First, any significant degradation in performance could
be immediately detected and the test stopped, if necessary. Second, it was a real-world test of the
systems that needed to be monitored, stopped or rebooted when Black Friday arrived. The team
tasked with ensuring the viability of the entire company infrastructure had great confidence going
into Black Friday as they had already run more than 20 realistic tests.
The company’s performance engineer observed, “Due to the discrepancies between the lab and the
production environment, there is no guarantee that the application that is certified to be performing well in the lab would perform the same way in production. Hence, we mandate that we test in
production, which enables us to test the application with even higher than expected load levels
since there are different hardware constraints. This is the only way we can accurately test our load
balancers, switches and third-party providers, which are generally not present in the lab.”
This testing allowed the retailer to place 6th in Catchpoint System’s rank of the top 50 retailers
when they tested Document Complete times.
6.2 Dillards, a Department Store Chain with 330 Storefronts
Dillard’s was new to the ‘testing in production’ model. Previously, they had conducted all load and
performance testing in their test environment and had experienced performance issues during critical retail events. Not only did this lead to a loss of revenue, but their reputation was also impacted.
Dillard’s, in true proactive fashion, took on the challenge to get to the root cause of the performance
issues. For Dillard’s, this meant looking at everything from the architecture and code to the hardware. Significant changes were made across the board.
As might be expected, Dillard’s wanted to start testing in production gradually. SOASTA conducted
low-volume tests of a few hundred users hitting the site at a rate of a few thousand page-views per
hour and generated a relatively low number of orders. These low-volume tests allowed Dillard’s to
understand the methodology and gain a comfort level with SOASTA, and the confidence to test in
production. Once these low-volume tests proved successful, larger tests could be conducted to
reach the page view per hour and order per hour benchmarks Dillard’s had set as targets. These
increasingly larger tests began to reveal performance bottlenecks. Resolving these issues would
prove critical to having acceptable performance during peak traffic periods.
A few database issues were identified that weren’t found in the QA environment. It was discovered
that a certain database job would kick off at certain times each day. This would not impact performance during average retail periods. However, when SOASTA would run a peak-level load test,
performance would noticeably degrade when this job was active. Without knowing this, it’s likely
that the customer experience would have been adversely affected during these periods. In addition,
some database locks were identified when the site was under high load. Had these locks not been
identified it would have proven catastrophic.
It was also observed during one of the large load tests that the connection pool limit was being
reached on all the application servers. This led to further tuning to optimize the performance of
each of the application servers.
Dillard’s experienced their best online retail event ever. Their environment maintained optimal performance during peak periods. They were able to easily handle 3X their previous high volume day.
SOASTA
RETAIL BEST PRACTICES WHITE PAPER | 13
6.3 One of the world’s largest retailers
One of the world’s largest retailers conducted extensive performance tests in production. Dozens
of tests were conducted against production sites located on three continents, including mobile applications. This company has a corporate mandate of always testing in production. In fact, over 250
personnel, including the CTO, attended the final load test before Thanksgiving, certainly an indication of how important such testing is to the entire organization. They fully understand that the only
way to find large-scale bugs is to test at scale.
During one round of testing a significant database contention issue was discovered. This issue was
only observed at very high scale – thousands of orders per minute with tens of millions of page
views per hour. This would have been impossible to replicate in a lab or test environment. Finding
this issue directly led to a successful Black Friday event where their systems were able to remain
stable, even under extreme load.
Another example of how vital testing in production proved to be was illustrated when just three
weeks before Black Friday, a new shopping cart flow was released. It had passed all internal tests
and was believed ready for large-scale load. However, when SOASTA performed a load test it was
quickly apparent that under heavy load that this new shopping cart flow would not remain stable.
This discovery allowed changes to be made so it could withstand the expected influx of users.
Without this test, it is quite likely that many customers would not have been able to complete their
purchases on Black Friday.
7. Security
Of course, retail companies, like most enterprises, have specific considerations when it comes to
security, data integrity and systems management when testing their infrastructure.
THIS COMPANY HAS A
CORPORATE MANDATE
OF ALWAYS TESTING IN
PRODUCTION. IN FACT,
OVER 250 PERSONNEL,
INCLUDING THE CTO,
ATTENDED THE FINAL
LOAD TEST BEFORE
THANKSGIVING, CERTAINLY AN INDICATION
OF HOW IMPORTANT
SUCH TESTING IS TO
THE ENTIRE ORGANIZATION.
Data security is one of the key concerns when it comes to performance testing. Companies do
not want their corporate data outside corporate firewalls. SOASTA does not ask customers to
export data or their application outside their firewalls. We typically generate synthetic data or use
scrubbed data depending on the customer’s business and security requirements. CloudTest does
not save any response content on the CloudTest servers or in the result database. Only key http/
https metrics and statistical data are captured for reporting, analytic, and diagnostic purposes.
Security is one of those things that no one notices until something goes wrong. Data is just supposed to be secure. You rarely see a story on the news about how a company is doing a great job
of keeping their customer data secure. But you will see a story about a company letting customer
data slip into the wrong hands. With good reason, customers must be cautious about letting a
company have their data unless they are sure it will be safe. To ensure that our customer’s data remains safe, SOASTA has implemented a stringent security policy that meets the needs of our retail
customers.
7.1 Test Development
Data that is used for test development by a Performance Engineer (i.e. HTTP(s) GET/POST requests
and responses) is not typically retained by SOASTA.
At the customer’s request, this data will be deleted immediately after test development.
Test definitions (SOASTA test clips) are saved in the SOASTA repository for future testing. These are
the steps that comprise the scenario and, while they can be deleted upon request, since there is no
confidential data or other company private information they are typically retained for ongoing use.
7.2 Test Metrics
This includes the performance results of the test(s), such as response times, errors, data transfer
rates, etc., as well as infrastructure metrics for any system resources that are monitored as part
of the test. Monitored metrics may come from SOASTA monitoring agents, SSH access to system
information or third-party monitoring systems such as described above. Test result metrics for
on-demand engagements are kept for a minimum of one year, primarily to allow for comparative
reporting over time. Additionally, if SOASTA is delivering the testing as a service, results can be
exported to a CloudTest instance that is located on the customer’s premises.
At the customer’s request, this data (performance metrics and system resource monitors) will be
deleted immediately after the delivery of test reports or if the results are exported and sent to the
customer.
SOASTA
RETAIL BEST PRACTICES WHITE PAPER | 14
AWS
IBM
SOASTA
CloudTest
GoGrid
Rackspace
SUT/AUT
Azure
Cloud Testing with SOASTA
provides completely distributed architecture, automated
deployment and multiple cloud
providers to effectively evaluate
the System Under Test.
Firewall
7.3 Data Encryption
Passwords and usernames for the SOASTA CloudTest application and for system resource monitors are encrypted. Seed data that uses any actual customer data can also be encrypted. Synthetic
seed data that is fabricated for logging into an application or web site to emulate real users is not
encrypted. All information used to setup monitors is retained in the SOASTA repository for future
testing.
At the customer’s request, this data, the usernames and passwords, will be deleted immediately
after testing.
7.4 Test Infrastructure
When delivered as a service, CloudTest customers have their own tenant (with associated credentials) and this tenant is maintained for at least one year from the date of the last test. At customer
request, the tenant will be deleted immediately after all testing and reporting has been deemed
completed.
The actual load generators and results aggregation servers are temporary cloud-based instances
and run only during test execution. This provides an additional level of security as all instances are
discarded after each test, with performance metrics retained only in the results database.
See Appendix A for Performance Data Q & A that covers additional topics related to data security.
SOASTA
RETAIL BEST PRACTICES WHITE PAPER | 15
Sample Master Data
APPENDIX A: CloudTest Performance Data Q&A
What is Performance Data?
There are many different types of performance data that are leveraged as part of performance testing. Performance data can be broken up into three major categories: master data, user-generated
data and external data. Master data typically exists in the customer’s database(s) and is required for
conducting business (usernames, passwords, etc). User-generated data is anything that the user
inputs in editable fields on the application (new email address, new address, etc). External data is
provided upon execution of the application (i.e. confirmation numbers, session ids, etc).
What data is used during testing?
Data requirements are dependent on the application and the business processes under test. For
example, a static site might not require any performance data, just access to the site to make the
requests, while a more complex application might require all three types of performance data.
What happens to the response data received?
All customer-related response data is discarded from CloudTest servers during load testing. Only
performance data related to that response data is retained (response times, errors, etc.). In addition,
as noted above, CloudTest servers are temporary instances discarded after each test, with only
performance metrics retained in the results database.
However, all customer and external data is stored on the CloudTest server during script creation
and debugging. The data used to create scripts can be deleted after script creation is completed to
ensure no customer data is store on SOASTA servers.
How are log files or other metrics that capture information about data handled?
SOASTA does not keep log files or other metrics that capture information about customer data during load tests. But as previously noted, we do store this type of data during script creation.
What data is sent back to the CloudTest servers?
During load testing, only key external data is kept, such as http response codes, cookies, session
IDs, etc. All data is sent back to the CloudTest servers to parse, at which point it is fully discarded
from any SOASTA servers.
SOASTA
RETAIL BEST PRACTICES WHITE PAPER | 16
What is the difference between scrubbed and synthetic data?
Scrubbed data resides in a customer database and has gone through a process so it no longer
includes any real customer data; it is, in essence, data that has been transformed and/or created
from actual customer data. Synthetic data is generated from scratch and is designed to be an accurate representation of the customer’s production database.
How do we create synthetic data?
SOASTA works closely with your application team to ensure a rich spread of representative data is
created. Data is also created to target the business process under test and can expand as testing
expands.
What happens to the data once the testing is over?
When testing is complete, the CloudTest servers only store performance metric data relevant to the
test runs. No corporate data is retained on the CloudTest servers.
How is the test data stored in the cloud?
For tests executed by SOASTA, the test results are stored in the cloud. The results are on Linux
servers that are taken down at the conclusion of the testing event. These servers are only available
during testing sessions or when results are being analyzed. In most cases, the result data is stored
in a relational database in EC2 in an EBS (elastic block store). This data is only available to SOASTA
employees.
Can test result data be removed from the cloud?
Yes, results can be deleted and removed from the cloud at the request of the customer. When
requested, the results are not deleted until after the result report is completed. Once the results are
deleted, they are permanently deleted; there are no backups of deleted results.
Note that deleting results limits the ability to compare results from prior and future tests. The only
way to compare results once a result is deleted is by looking at the result report.
Can test result data be exported from the cloud for offsite storage?
Yes. All results are exportable in XML format. Results can be exported from the cloud and moved
to a customer-defined location for safekeeping. Depending on the length of the test and amount
of performance data related to the test, it can take up to 24-48 hours to export the data from the
cloud and move to a secure location. Optionally, the results can then be deleted from the cloud as
well.
Contact us:
866-344-8766
444 Castro St.
Mountain View, CA 94041
To learn more visit:
soasta.com
or email us at
[email protected]
©2012 SOASTA. All rights reserved. SOASTA,
the SOASTA logo, and SOASTA CloudTest
are trademarks of SOASTA. All other product
or company names may be trademarks and/
or registered trademarks of their respective
owners.
EST-1001-1-0512
Connect with us: