Website Speed Test: Fast Pages Still Need to Work
Speed testing measures how quickly pages load. Functional testing measures whether the loaded page actually works. These are independent — a fast site can have broken features, and a slow site can have fully functional features. Both matter, but they matter for different reasons and require different tools. This guide covers what each type of testing catches and how to combine them.
Key Takeaways
Speed and functionality are independent variables. A site can be blazing fast and completely broken. A 100ms load time means nothing if the checkout button does not respond.
Speed testing measures perceived performance. Functional testing measures actual capability. One tells you how fast users get to a page. The other tells you whether they can do anything when they get there.
Core Web Vitals do not measure whether features work. LCP measures when the largest element renders. It does not measure whether that element is a functional button that processes payments.
A slow site loses users at load. A broken site loses users at action. Both are worth fixing. The broken site is the more immediate revenue problem.
The right testing stack combines both. Performance monitoring for load metrics, functional monitoring for interaction outcomes.
Your PageSpeed score is 94. GTmetrix gives you an A. Core Web Vitals are all green. LCP under 2 seconds. Zero layout shift.
Your site loads fast. Good.
But the "Add to Cart" button stopped responding after last week's JavaScript update. Users reach the page in 1.8 seconds and then... nothing happens. They click. They wait. They leave.
A 94/100 PageSpeed score does not tell you any of this.
What Speed Tests Actually Measure
Speed testing tools measure the performance of page loading — how quickly the browser receives and renders content.
Core Web Vitals
Google's Core Web Vitals are the primary speed metrics that affect search ranking:
Largest Contentful Paint (LCP) Time until the largest visible element (image, heading, text block) finishes rendering. Target: under 2.5 seconds.
Cumulative Layout Shift (CLS) Measures unexpected movement of page elements during load. A banner that loads and pushes content down has high CLS. Target: under 0.1.
Interaction to Next Paint (INP) Measures responsiveness to user interaction — how quickly the page responds to clicks and key presses. Target: under 200ms.
What speed tests tell you
- How fast the page loads
- Whether elements shift during load
- How quickly initial interactions respond
- Which resources are slowing down load (large images, render-blocking scripts)
- Server response time (TTFB)
What speed tests do not tell you
- Whether JavaScript features work correctly after load
- Whether forms submit and return expected responses
- Whether user flows complete successfully
- Whether third-party services (payments, email) are functioning
- Whether any user-initiated action produces the right outcome
INP gets close to testing interactions — it measures response time to clicks. But it does not verify what happens after the response. A button that responds in 50ms and then shows an error is good for INP and bad for users.
What Functional Testing Measures
Functional testing verifies that user actions produce correct outcomes.
Instead of measuring time-to-render, functional testing asks:
- Did the form submission succeed?
- Did the login redirect to the correct page?
- Did the checkout complete and produce an order confirmation?
- Did the expected email arrive?
- Is the data in the correct state after the action?
Functional testing simulates a real user going through your site and checks every step against expected outcomes.
The Two Failure Modes: Slow Load vs. Broken Feature
Slow load failure
User arrives at your site → page takes 8 seconds to load → user leaves before it finishes.
Speed testing catches this. You can improve it with image compression, caching, CDN configuration, reducing JavaScript bundle size.
User impact: Users who would have converted leave before getting the chance. Measurable in bounce rate and session duration.
Broken feature failure
User arrives at your site → page loads in 1.5 seconds → user clicks "Buy Now" → nothing happens → user leaves.
Speed testing does not catch this. Functional testing catches it.
User impact: Users who wanted to convert cannot. Measurable in checkout abandonment, form submission rate, conversion rate. Often not discovered until users complain.
The broken feature failure is typically more damaging because it affects users who have already decided to act. A slow site loses people who haven't committed yet. A broken site loses people who were ready to buy.
How to Run a Website Speed Test
Google PageSpeed Insights
Free. Uses Lighthouse. Gives you field data (real users) and lab data (simulated).
URL: pagespeed.web.dev
Input your URL → Get report with LCP, CLS, INP, score, and specific recommendations
Use for: Diagnosing Core Web Vitals issues, finding specific resources slowing your site.
GTmetrix
Free tier available. More detailed waterfall charts. Tests from multiple locations.
URL: gtmetrix.com
Input your URL → Get detailed performance report with waterfall chart
Use for: Identifying specific resources causing load delays, testing from different geographic locations.
WebPageTest
Free. Highly configurable. Can simulate specific devices, connection speeds, locations.
URL: webpagetest.org
Input URL, configure test → Get detailed filmstrip and waterfall
Use for: Advanced performance debugging, mobile simulation, connection throttling tests.
How to Run a Functional Website Test
HelpMeTest (automated, no coding)
Describe what users should be able to do. HelpMeTest runs it as a real browser test.
Test core flows for example.com:
1. Checkout flow:
- Go to /products
- Add first item to cart
- Complete checkout with test card
- Verify order confirmation
2. Contact form:
- Go to /contact
- Fill in all fields
- Submit
- Verify confirmation message
3. Login:
- Go to /login
- Enter test credentials
- Verify dashboard loads
Schedule these tests to run every 5-15 minutes. Get alerts when anything fails.
Combining Speed and Functional Testing
A complete testing approach covers both dimensions:
| Test type | Tool | Frequency | What it catches |
|---|---|---|---|
| Core Web Vitals | Google Search Console | Continuous (field data) | Speed regressions affecting real users |
| Performance audit | Lighthouse/GTmetrix | Before major releases | Load time, optimization opportunities |
| Functional monitoring | HelpMeTest | Every 5-15 minutes | Broken features, failed flows |
| Full functional audit | HelpMeTest + manual | Before major releases | All user journeys |
Neither type replaces the other. They cover different failure modes.
Speed Optimization Basics
If your speed test reveals performance issues, these are the most impactful fixes:
Images
Images are the most common cause of slow LCP.
- Compress images (use WebP format where supported)
- Set explicit width/height attributes (prevents layout shift)
- Use lazy loading for images below the fold
- Use a CDN to serve images from locations close to users
JavaScript
JavaScript is typically the largest factor in poor INP and long load times.
- Defer non-critical scripts
- Reduce bundle size (remove unused dependencies)
- Code-split so users only load what they need for the current page
Caching
Caching dramatically reduces load time for returning visitors.
- Set appropriate cache headers for static assets
- Use a CDN with caching for international users
- Cache server-rendered pages where content doesn't change frequently
Server response time
If TTFB is high (over 600ms), the server is slow to respond.
- Check for slow database queries
- Consider upgrading hosting tier
- Use edge caching or a CDN
What to Prioritize: Speed or Functionality?
If you have limited testing bandwidth, prioritize based on which failure mode is more likely to cost you.
Prioritize speed fixes when:
- Bounce rate is high and session duration is low (users not getting to content)
- LCP is over 4 seconds (users are leaving before the page finishes)
- You are targeting competitive search rankings (Core Web Vitals affect ranking)
Prioritize functional fixes when:
- You have not tested your core user flows recently
- Recent deployments may have introduced changes
- Conversion rate has dropped unexpectedly
- Users are reporting issues completing flows
The typical order:
- Fix broken features first (revenue-critical)
- Then address speed (ranking and bounce rate)
A site that loads in 3 seconds with a working checkout outperforms a site that loads in 1 second with a broken checkout.
Quick Setup: Speed + Functional Coverage
Speed monitoring (10 minutes):
- Add your site to Google Search Console — free, gives you ongoing Core Web Vitals data
- Run one Lighthouse audit in Chrome DevTools — find your current score and top issues
- Fix the top 1-2 recommendations (usually image compression and one JavaScript issue)
Functional monitoring (20 minutes):
- Create a free HelpMeTest account
- Describe your top 3 user flows in plain English
- Schedule them to run every 5-15 minutes
- Connect alerts to email or Slack
After this setup: your site's speed metrics are tracked continuously by Search Console, and your core user flows are monitored every few minutes by HelpMeTest. You will know about both types of failure quickly.