Bird
Raised Fist0
Testing Fundamentalstesting~10 mins

Device fragmentation challenges in Testing Fundamentals - Test Execution Trace

Choose your learning style10 modes available
Test Overview

This test simulates checking a mobile app on different devices to verify it works well despite device fragmentation. It verifies the app loads and a key button is clickable on various screen sizes and OS versions.

Test Code - Selenium
Testing Fundamentals
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import unittest

class TestAppOnDevices(unittest.TestCase):
    def setUp(self):
        # Simulate device by setting window size and user agent
        options = webdriver.ChromeOptions()
        # Example: simulate a small screen device
        options.add_argument('--window-size=375,667')  # iPhone 8 size
        options.add_argument('--user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.2 Mobile/15E148 Safari/604.1')
        self.driver = webdriver.Chrome(options=options)

    def test_button_clickable_on_device(self):
        driver = self.driver
        driver.get('https://example.com/mobile-app')

        # Wait for the main button to be present
        wait = WebDriverWait(driver, 10)
        button = wait.until(EC.presence_of_element_located((By.ID, 'start-button')))

        # Check if button is displayed and enabled
        self.assertTrue(button.is_displayed(), 'Button should be visible')
        self.assertTrue(button.is_enabled(), 'Button should be clickable')

        # Click the button
        button.click()

        # Verify next page or modal appears
        success_message = wait.until(EC.presence_of_element_located((By.ID, 'welcome-message')))
        self.assertTrue(success_message.is_displayed(), 'Welcome message should appear after click')

    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':
    unittest.main()
Execution Trace - 7 Steps
StepActionSystem StateAssertionResult
1Test starts and Chrome browser opens with simulated device window size and user agentBrowser window size set to 375x667 pixels, user agent mimics iPhone OS 13.6—PASS
2Browser navigates to https://example.com/mobile-appMobile version of the app page loads—PASS
3Waits for element with ID 'start-button' to be presentStart button is found on the pageElement 'start-button' is presentPASS
4Checks if 'start-button' is visible and enabledButton is visible and clickablebutton.is_displayed() == True and button.is_enabled() == TruePASS
5Clicks the 'start-button'Button click triggers navigation or modal—PASS
6Waits for element with ID 'welcome-message' to appearWelcome message is displayed after button clickElement 'welcome-message' is present and visiblePASS
7Test ends and browser closesBrowser window closed—PASS
Failure Scenario
Failing Condition: The 'start-button' element is not found or not clickable on the simulated device
Execution Trace Quiz - 3 Questions
Test your understanding
What does the test verify about the 'start-button' on the simulated device?
AThat the button is disabled
BThat the button is visible and clickable
CThat the button is hidden
DThat the button changes color
Key Result
Simulating different devices by adjusting window size and user agent helps catch issues caused by device fragmentation early in testing.

Practice

(1/5)
1. What does device fragmentation mean in software testing?
easy
A. All devices run the software exactly the same way
B. There are many different devices and OS versions to test on
C. Testing is done only on one device type
D. Testing is only done on simulators, not real devices

Solution

  1. Step 1: Understand device fragmentation concept

    Device fragmentation means there are many different devices and operating system versions in use.
  2. Step 2: Match the meaning to options

    There are many different devices and OS versions to test on correctly describes this as many devices and OS versions to test on, making testing harder.
  3. Final Answer:

    There are many different devices and OS versions to test on -> Option B
  4. Quick Check:

    Device fragmentation = many devices and OS versions [OK]
Hint: Device fragmentation means many device types exist [OK]
Common Mistakes:
  • Thinking fragmentation means testing on only one device
  • Assuming all devices behave the same
  • Confusing simulators with real device variety
2. Which of the following is the correct way to handle device fragmentation during testing?
easy
A. Ignore OS versions and test only on one device brand
B. Test only on the newest device model
C. Use a mix of real devices and simulators covering popular OS versions
D. Test only on simulators without real devices

Solution

  1. Step 1: Identify best practice for device fragmentation

    Testing on a mix of real devices and simulators covering popular OS versions helps catch issues across many device types.
  2. Step 2: Compare options to best practice

    Use a mix of real devices and simulators covering popular OS versions matches this approach, while others ignore variety or real devices.
  3. Final Answer:

    Use a mix of real devices and simulators covering popular OS versions -> Option C
  4. Quick Check:

    Best practice = mix real devices + simulators [OK]
Hint: Use both real devices and simulators for broad coverage [OK]
Common Mistakes:
  • Testing only on newest devices misses older versions
  • Ignoring OS versions reduces test coverage
  • Relying solely on simulators misses real device issues
3. Consider this test plan snippet:
devices = ['iPhone 12', 'Samsung S21', 'Pixel 6']
results = []
for device in devices:
    if device == 'iPhone 12':
        results.append('Pass')
    else:
        results.append('Fail')
print(results)

What will be the output?
medium
A. ['Pass', 'Fail', 'Fail']
B. ['Pass', 'Pass', 'Pass']
C. ['Fail', 'Fail', 'Fail']
D. ['Fail', 'Pass', 'Fail']

Solution

  1. Step 1: Analyze the loop and condition

    The loop checks each device; if it is 'iPhone 12', append 'Pass', else 'Fail'.
  2. Step 2: Evaluate each device

    'iPhone 12' -> 'Pass', 'Samsung S21' -> 'Fail', 'Pixel 6' -> 'Fail'. So results = ['Pass', 'Fail', 'Fail'].
  3. Final Answer:

    ['Pass', 'Fail', 'Fail'] -> Option A
  4. Quick Check:

    Only iPhone 12 passes, others fail [OK]
Hint: Check condition for each device in the list [OK]
Common Mistakes:
  • Assuming all devices pass
  • Mixing up Pass and Fail logic
  • Ignoring the else condition
4. A tester wrote this code to test multiple devices:
devices = ['iPhone 11', 'Galaxy S20', 'Pixel 5']
for i in range(len(devices)):
    print(devices[i+1])

What error will occur when running this code?
medium
A. IndexError: list index out of range
B. SyntaxError: invalid syntax
C. TypeError: unsupported operand type(s)
D. No error, prints all devices

Solution

  1. Step 1: Understand the loop and indexing

    The loop runs from i=0 to i=2 (length 3). The code tries to access devices[i+1].
  2. Step 2: Identify when index goes out of range

    When i=2, devices[3] is accessed, which is out of range, causing IndexError.
  3. Final Answer:

    IndexError: list index out of range -> Option A
  4. Quick Check:

    Accessing devices[i+1] at last index causes IndexError [OK]
Hint: Check index +1 against list length to avoid errors [OK]
Common Mistakes:
  • Thinking code runs without error
  • Confusing IndexError with SyntaxError
  • Ignoring loop range and indexing
5. You must design a test strategy to handle device fragmentation for an app supporting Android and iOS. Which approach best balances coverage and resources?
hard
A. Test only on the latest Android and iOS devices
B. Test only on simulators for both Android and iOS
C. Test on every device model available in the market
D. Test on popular devices from both OS families plus simulators for older versions

Solution

  1. Step 1: Understand resource constraints and coverage needs

    Testing every device is impossible; testing only latest devices misses many users.
  2. Step 2: Choose balanced approach

    Test on popular devices from both OS families plus simulators for older versions tests popular devices plus simulators for older OS versions, balancing coverage and resources effectively.
  3. Final Answer:

    Test on popular devices from both OS families plus simulators for older versions -> Option D
  4. Quick Check:

    Balanced test strategy = popular devices + simulators [OK]
Hint: Cover popular devices and OS versions, not all [OK]
Common Mistakes:
  • Trying to test every device wastes resources
  • Testing only newest devices misses many users
  • Relying solely on simulators misses real device issues
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