7

Sometimes, while testing a web application, the app responds much slower than usual. There could be many reasons for this such as bugs in backend, outage in some of the servers, slow internet on client etc.

How do I rule out that internet issues on the client are making the web app seem slow ?

  • Does "my end' mean the client ? – Michael Durrant Sep 30 '17 at 12:00
  • @MichaelDurrant - Yes. – MasterJoe2 Oct 4 '17 at 17:16
  • We’re going to need a lot more information to give you a meaningful answer. What is the environment you’re testing? Where is the server, and any systems the server depends on, located? Where is the client located? What sort of testing are you doing? What do you mean by “the web app seem slow”? – Kevin McKenzie Oct 5 '17 at 14:07
  • @KevinMcKenzie - This are just routine manual, functional testing activities (via UI) in a test environment. I don't know the location of the servers, but I guess that they are in the same continent. The web app seems slow, means sometimes pages take longer to load despite no obvious internet speed issues on the tester/client end. – MasterJoe2 Oct 5 '17 at 21:18
2

Use a local tool that allows you to slow down your network (e.g. network link conditioner on a mac). Use this to try different network conditions and measure how the application responds in terms of time.

A great option today for all platform is chrome tools which now has throttling built in. See the "network" tab within tools

enter image description here

  • Thanks Michael. Would it help to "fix" the internet speed on the client side to a "good" speed, so that the client knows that his speed is not the reason for slowness ? – MasterJoe2 Oct 4 '17 at 17:27
  • This is answering how to degrade your network performance, not how to verify that network performance issues are/aren't the cause of problems you're seeing. – Kevin McKenzie Oct 4 '17 at 23:02
  • @KevinMcKenzie - I was hoping to use some tool to ensure that I have a fixed speed, even if it is less than max. Also, this tool should show any decrease below the desired internet speed. – MasterJoe2 Oct 5 '17 at 0:27
  • 1
    @testerjoe But you can't do that with a tool that runs only on the client. The only way to do meaningful performance testing is to control all the network infrastructure involved, including the client and the server. TCP/IP is a switched protocol, so there's no guarantee from one packet to the next that you'll be traversing the same path, and different types of packets (ping vs http, for example) may also be routed/prioritized differently. – Kevin McKenzie Oct 5 '17 at 0:38
  • 1
    Good points @KevinMcKenzie With performance issues there are usually two types, the performance of 1 request and then the performance of multiple requests (system under load). The OP refer to "internet issues on the client" so it seemed that they want to check the performance of 1 user and how internet connectivity speed would affect that 1 user when using the app. I've certainly used apps that were crippled with a slow internet connection. The fix may actually be server side changes once you know a slow client needs a better way, – Michael Durrant Oct 5 '17 at 10:30
3

First, try other websites. Ideally, ones that are logically close to the website that you're testing. For example, if the website is hosted on AWS, try other sites hosted on AWS. You can use traceroute and the like to determine where the website is logically located.

Second, look at logs. You can see from apache logs when a request came in, and possibly how long it took to complete, depending on what's being logged. You may be able to follow a request from apache/the web host to the database and back.

Third, and most import, when doing performance testing, you need to isolate the thing being tested as much as possible. Ideally, you shouldn't be crossing the internet to get to the web app, or parts of the web app. You should have a dedicated host, dedicated client machines, and a LAN connection that crosses as few boundaries as possible between the two. If you have to test a remote site, you should make sure that the client machines are at that site as well. If you're using AWS, set up client AWS machines. The more variables you have to deal with when doing performance testing, the harder it is to make a valid conclusion when testing.

2

If you are interested in request timeline breakdown you can use i.e. Google Chrome Developer Tools to analyse the network performance or use a 3rd-party application like YSlow to find out where request is getting stuck.

If it is a networking issue - you will be able to see it, if your application responds slowly - you will also get the visibility.

If you figure out that there are no networking issues and page rendering is fine you will need to go deeper and identify what causes slow responses, the general plan is to simulate the anticipated load and see how does your application behave.

  1. Create a test scenario which will mimic your application real life usage with a load testing tool.
  2. Make sure you are monitoring baseline health metrics on application under test side (CPU, RAM, Swap, Network and Disk status)
  3. If there is a headroom for application (enough capacity from the resources perspective) you will need to re-run the test with a Profiler Tool telemetry enabled, this way you will be able to see "heavy" methods where your application spends the most time

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.