Bird
Raised Fist0
Testing Fundamentalstesting~15 mins

Network condition testing in Testing Fundamentals - Build an Automation Script

Choose your learning style10 modes available
Verify application behavior under slow network conditions
Preconditions (2)
Step 1: Open the application homepage in the browser
Step 2: Enable network throttling to simulate 3G slow network speed
Step 3: Reload the application page
Step 4: Observe the page load time and UI responsiveness
Step 5: Try to submit a form on the page
Step 6: Observe if the form submission completes successfully
✅ Expected Result: The application should load within a reasonable time under slow network, UI should remain responsive, and form submission should complete successfully without errors.
Automation Requirements - Selenium with Python
Assertions Needed:
Page load time is within acceptable threshold under throttled network
Form submission success message is displayed
No error messages appear during slow network
Best Practices:
Use Selenium WebDriver with Chrome DevTools Protocol to enable network throttling
Use explicit waits to handle dynamic page loading
Use clear and maintainable locators (id, name, or CSS selectors)
Measure and assert page load time programmatically
Automated Solution
Testing Fundamentals
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# Setup Chrome driver with DevTools Protocol
options = webdriver.ChromeOptions()
service = Service()
driver = webdriver.Chrome(service=service, options=options)

try:
    # Enable network throttling to simulate slow 3G
    driver.execute_cdp_cmd('Network.enable', {})
    driver.execute_cdp_cmd('Network.emulateNetworkConditions', {
        'offline': False,
        'latency': 200,  # 200 ms latency
        'downloadThroughput': 500 * 1024 / 8,  # 500 kbps
        'uploadThroughput': 500 * 1024 / 8   # 500 kbps
    })

    start_time = time.time()
    driver.get('https://example.com')  # Replace with actual app URL

    # Wait for main element to load
    WebDriverWait(driver, 30).until(
        EC.presence_of_element_located((By.ID, 'main-content'))
    )
    load_time = time.time() - start_time

    # Assert page load time under 15 seconds for slow network
    assert load_time < 15, f"Page load took too long: {load_time} seconds"

    # Fill and submit form
    input_field = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, 'input-name'))
    )
    input_field.send_keys('Test User')

    submit_button = driver.find_element(By.ID, 'submit-btn')
    submit_button.click()

    # Wait for success message
    success_msg = WebDriverWait(driver, 15).until(
        EC.visibility_of_element_located((By.ID, 'success-message'))
    )

    assert 'success' in success_msg.text.lower(), "Success message not displayed"

finally:
    driver.quit()

This script uses Selenium WebDriver with Chrome DevTools Protocol to simulate a slow 3G network by setting latency and throughput limits.

We start by enabling network throttling, then load the application page and measure the load time.

We assert that the page loads within 15 seconds, which is reasonable for slow networks.

Next, we fill a form field and submit it, then wait for a success message to confirm the form submission worked.

Explicit waits ensure the script waits for elements to be ready before interacting, avoiding flaky tests.

Finally, the driver quits to close the browser cleanly.

Common Mistakes - 3 Pitfalls
Not enabling network throttling before loading the page
Using hardcoded sleep instead of explicit waits
Using brittle locators like absolute XPath
Bonus Challenge

Now add data-driven testing with 3 different network speeds: slow 3G, fast 3G, and 4G

Show Hint

Practice

(1/5)
1. What is the main purpose of network condition testing in software testing?
easy
A. To check how an app behaves under different internet speeds and qualities
B. To test the app's user interface design
C. To verify database connections only
D. To check the app's installation process

Solution

  1. Step 1: Understand network condition testing

    Network condition testing focuses on how software performs with various internet speeds and qualities.
  2. Step 2: Compare options to the definition

    Only To check how an app behaves under different internet speeds and qualities matches this purpose; others focus on unrelated testing areas.
  3. Final Answer:

    To check how an app behaves under different internet speeds and qualities -> Option A
  4. Quick Check:

    Network condition testing = Check app behavior on different networks [OK]
Hint: Focus on internet speed and quality effects on app [OK]
Common Mistakes:
  • Confusing network testing with UI testing
  • Thinking it only tests database or installation
2. Which of the following is the correct way to simulate a slow network in a testing tool?
easy
A. Set network speed to 3 Mbps and add 200 ms latency
B. Set network speed to 100 Mbps with 0 ms latency
C. Disable network throttling completely
D. Increase CPU usage to 90%

Solution

  1. Step 1: Identify how to simulate slow network

    Slow network simulation requires reducing speed and adding latency (delay).
  2. Step 2: Evaluate options

    Set network speed to 3 Mbps and add 200 ms latency sets a low speed and adds latency, correctly simulating slow network. Others do not simulate slow network.
  3. Final Answer:

    Set network speed to 3 Mbps and add 200 ms latency -> Option A
  4. Quick Check:

    Slow network = low speed + latency [OK]
Hint: Slow network means low speed plus added delay [OK]
Common Mistakes:
  • Choosing high speed as slow network
  • Ignoring latency in simulation
3. Consider this pseudocode simulating network conditions: <pre>simulateNetwork(speedMbps, latencyMs) { if (speedMbps < 5) return "Slow Network"; else if (latencyMs > 100) return "High Latency"; else return "Good Network"; } What will be the output of simulateNetwork(10, 150)?
medium
A. "Slow Network"
B. "High Latency"
C. "Good Network"
D. Runtime Error

Solution

  1. Step 1: Check speed condition

    Speed is 10 Mbps, which is not less than 5, so skip first condition.
  2. Step 2: Check latency condition

    Latency is 150 ms, which is greater than 100, so return "High Latency".
  3. Final Answer:

    "High Latency" -> Option B
  4. Quick Check:

    Latency > 100 triggers "High Latency" [OK]
Hint: Check conditions in order, latency > 100 returns "High Latency" [OK]
Common Mistakes:
  • Choosing "Slow Network" ignoring speed value
  • Assuming good network despite high latency
4. You have this test code snippet to simulate network conditions:
networkSpeed = 2
latency = 50
if (networkSpeed > 5) {
  print("Fast Network")
} else if (latency > 100) {
  print("High Latency")
} else {
  print("Slow Network")
}
What is the output and is there any logical error?
medium
A. Output: "Fast Network"; Logical error in conditions
B. Output: "Slow Network"; Logical error in conditions
C. Output: "High Latency"; Logical error in conditions
D. Output: "Slow Network"; No logical error

Solution

  1. Step 1: Evaluate conditions with given values

    networkSpeed=2 (not >5), latency=50 (not >100), so else block runs printing "Slow Network".
  2. Step 2: Check for logical errors

    Conditions correctly cover cases; no error in logic.
  3. Final Answer:

    Output: "Slow Network"; No logical error -> Option D
  4. Quick Check:

    Speed low and latency low = "Slow Network" [OK]
Hint: Check conditions with given values carefully [OK]
Common Mistakes:
  • Assuming latency triggers "High Latency" incorrectly
  • Thinking there is a logical error when none exists
5. You want to test an app's behavior under unstable network conditions that randomly switch between fast and slow speeds. Which approach is best?
hard
A. Test only on a stable slow network
B. Test only on a stable fast network
C. Use a network simulation tool to alternate speeds during the test
D. Ignore network speed and focus on UI testing

Solution

  1. Step 1: Understand unstable network testing

    Unstable network means changing speeds during use, so simulation must alternate speeds.
  2. Step 2: Evaluate options for best fit

    Use a network simulation tool to alternate speeds during the test uses a tool to alternate speeds, matching unstable network testing. Others ignore instability.
  3. Final Answer:

    Use a network simulation tool to alternate speeds during the test -> Option C
  4. Quick Check:

    Unstable network = alternating speeds [OK]
Hint: Simulate speed changes to mimic unstable network [OK]
Common Mistakes:
  • Testing only stable networks for unstable scenarios
  • Ignoring network speed in testing
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard