Real World Example

Insurance Premium Calculator

An insurance client project tests a premium calculator with 200 combinations of age, sum insured, city tier and smoker status, kept in an Excel sheet by the business team. One Selenium test plus a data provider covers them all:

@Test(dataProvider = "premiumData", dataProviderClass = PremiumData.class)
public void premiumIsCorrect(String age, String sumInsured, String city, String smoker, String expectedPremium) {
    driver.get(config.baseUrl() + "/health-insurance/quote");
    driver.findElement(By.id("age")).sendKeys(age);
    new Select(driver.findElement(By.id("sum-insured"))).selectByVisibleText(sumInsured);
    new Select(driver.findElement(By.id("city"))).selectByVisibleText(city);
    if (smoker.equals("Yes")) driver.findElement(By.id("smoker-yes")).click();
    driver.findElement(By.id("get-quote")).click();
    String premium = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("premium"))).getText();
    Assert.assertEquals(premium, expectedPremium, "premium for age " + age + ", " + sumInsured + ", " + city);
}

Example

Output:

mvn test -Dtest=PremiumTest

Example output

Tests run: 200, Failures: 1, Skips: 0
FAILED: premiumIsCorrect("61", "₹10 Lakh", "Tier 1", "Yes", "₹48,312")
java.lang.AssertionError: premium for age 61, ₹10 Lakh, Tier 1 expected [₹48,312] but found [₹46,980]

Takeaway

The failing row pointed straight to a bug in the senior-citizen smoker loading. Without data-driven tests, nobody would have tried that exact combination by hand.