</>

Technology

API Automation

Difficulty

Advanced

Interview Question

You are testing an e-commerce website and customers report checkout issues. How would you approach testing this?

Answer

Scenario: E-Commerce Checkout Testing

Customers are reporting issues with the checkout process. Here is a systematic approach.

Approach

1. Reproduce the Issue

Start by reproducing the issue reported by customers. This helps in understanding the exact problem.

CODE
- Collect exact steps customers followed
- Identify browser/device combinations where it occurs
- Try different payment methods, shipping addresses, product types
- Check if it's intermittent or consistent

2. Check Logs

Analyze server logs, client-side logs, and any error messages to identify where the issue might be occurring.

Bash
# Check application logs
grep -i "checkout\|payment\|order" app.log | tail -100

# Check API error logs
grep "500\|400\|422" api-access.log | grep "/api/checkout"

3. API Testing of Checkout Flow

Java
@Test
public void testCompleteCheckoutFlow() {

    // Step 1: Add item to cart
    String addToCart = given()
        .header("Authorization", "Bearer " + token)
        .body("{ \"product_id\": \"SKU123\", \"quantity\": 2 }")
        .contentType(ContentType.JSON)
        .when()
        .post("/api/cart/add")
        .then()
        .statusCode(200)
        .extract().path("cart_id");

    // Step 2: Apply coupon
    given()
        .header("Authorization", "Bearer " + token)
        .body("{ \"cart_id\": \"" + addToCart + "\", \"coupon\": \"SAVE10\" }")
        .contentType(ContentType.JSON)
        .when()
        .post("/api/cart/coupon")
        .then()
        .statusCode(200);

    // Step 3: Set shipping address
    given()
        .header("Authorization", "Bearer " + token)
        .body("{ \"cart_id\": \"" + addToCart + "\", \"address_id\": \"ADDR001\" }")
        .contentType(ContentType.JSON)
        .when()
        .post("/api/cart/shipping")
        .then()
        .statusCode(200);

    // Step 4: Place order
    given()
        .header("Authorization", "Bearer " + token)
        .body("{ \"cart_id\": \"" + addToCart + "\", \"payment_method\": \"card\" }")
        .contentType(ContentType.JSON)
        .when()
        .post("/api/orders/create")
        .then()
        .statusCode(201)
        .body("order_id", notNullValue())
        .body("status", equalTo("pending"));
}

4. Isolate Components

Break down the checkout process and test each component separately:

  • Cart updates correctly?
  • Payment gateway API is functioning?
  • Inventory check is passing?
  • Email notification triggered?

5. Run Automated Regression Tests

Java
@Test
public void testPaymentGatewayIntegration() {
    // Test with valid card
    testPaymentWithCard("4111111111111111", 200, "success");
    // Test with declined card
    testPaymentWithCard("4000000000000002", 402, "declined");
    // Test with invalid card
    testPaymentWithCard("1234567890123456", 400, "invalid");
}

6. Usability & Cross-Browser Testing

  • Test on Chrome, Firefox, Safari, Edge
  • Test on mobile devices (iOS/Android)
  • Test with slow network (3G simulation)

7. Collaborate with Developers

Share specific API request/response logs, error stack traces, and reproduction steps with the dev team.

Follow AutomateQA

Related Topics