Manual Testing (IT)Manual QA Engineer

Articulate a systematic manual testing methodology you would employ to validate a distributed event streaming platform utilizing **Apache Kafka** with **Confluent Schema Registry** for **Avro**-serialized messages, specifically targeting backward compatibility verification during schema evolution, consumer group rebalancing that preserves exactly-once processing semantics, and dead letter queue routing when corrupted messages trigger deserialization failures.

Pass interviews with Hintsage AI assistant

Answer to the question

A comprehensive manual testing methodology for Apache Kafka ecosystems requires structured exploration of schema lifecycle management, consumer behavior under cluster stress, and failure mode handling. Testers must design scenarios that simulate production-grade message volumes while intentionally introducing schema mutations to verify Confluent Schema Registry compatibility rules. This ensures that data contracts remain intact across distributed teams without breaking existing consumers.

The approach involves creating controlled consumer group membership changes to trigger rebalancing, then verifying offset commits and message ordering guarantees. Additionally, manual injection of malformed Avro payloads helps validate that error handling mechanisms correctly route poison pills to dead letter topics without halting the main consumer pipeline. These activities require direct interaction with ZooKeeper or KRaft metadata to confirm controller election stability during network partitions.

Situation from life

At a financial services firm, our team faced critical data loss risks when migrating payment processing from IBM MQ to Kafka 3.5. The system utilized Avro schemas for transaction events with Confluent Schema Registry, and we discovered that schema changes caused consumer applications to crash while rebalancing events created duplicate payment records. The migration deadline was strict, leaving no room for automated test suite development.

The first approach proposed relying solely on existing automated integration tests with embedded Kafka brokers. While this offered fast feedback loops and easy CI/CD integration, it failed to capture real-world network latency effects and concurrent schema evolution scenarios that only emerged during multi-day soak testing.

The second approach suggested pure exploratory testing without predefined charters. Although this provided maximum flexibility to discover unexpected behaviors, it risked inconsistent coverage of critical failure modes like producer idempotency failures during broker restarts, potentially missing edge cases in exactly-once semantics due to lack of systematic documentation.

We selected a hybrid methodology combining structured test charters with chaos engineering principles. This approach provided systematic coverage of schema compatibility matrices while allowing adaptive exploration of emergent behaviors. We manually triggered rolling restarts of broker nodes during peak message ingestion to observe consumer lag and rebalancing patterns, while simultaneously evolving schemas through backward-compatible and incompatible changes to verify registry enforcement.

The results eliminated duplicate processing incidents and established a schema governance process that prevented breaking changes from reaching production. Consumer groups maintained stable throughput during simulated node failures, and the dead letter queue successfully isolated corrupted transaction messages without impacting the main processing stream.

What candidates often miss

How do you manually verify that Kafka producer retries do not violate exactly-once semantics when brokers acknowledge writes but network timeouts cause client-side retries?

Candidates often overlook the importance of examining Producer ID (PID) and sequence numbers in message metadata. During manual testing, you must enable DEBUG logging on producers and consumers, then intentionally introduce network latency using Toxiproxy or iptables rules to simulate timeout conditions. Verify that the Kafka broker's deduplication logic rejects duplicate sequence numbers by checking the LogAppendTime and Offset values in the consumer records.

The key insight is that manual testers should inspect the __consumer_offsets topic directly using kafka-console-consumer with the formatter flag set to display coordinator metadata, ensuring that transactional markers (Commit and Abort) appear correctly in the log segments.

What manual techniques identify partition assignment skew when using StickyAssignor versus RangeAssignor in consumer groups with heterogeneous processing latencies?

Many testers fail to recognize that partition distribution directly impacts exactly-once guarantees during rebalancing. To manually validate this, create consumer instances with artificial processing delays using Thread.sleep() variations, then monitor the consumer group description via kafka-consumer-groups.sh while triggering rebalances by adding and removing consumers.

Observe the Current-OFFSET, Log-END-OFFSET, and LAG columns to detect if StickyAssignor maintains ownership of partitions during minor membership changes as intended. You should manually calculate the standard deviation of lag across partitions; significant variance indicates assignment skew that could violate processing order guarantees during failover scenarios.

How would you validate Schema Registry compatibility modes (BACKWARD, FORWARD, FULL) without relying solely on automated compatibility checks?

Beginners frequently miss the distinction between registry-level compatibility enforcement and runtime deserialization behavior. Manually test by registering schema versions with specific compatibility settings, then produce messages using older schema versions while consuming with newer client libraries (and vice versa).

Use curl commands against the Schema Registry REST API to register schemas and verify the compatibility endpoints return true or false as expected. Subsequently, use kafka-avro-console-producer with explicit schema versions to simulate production scenarios where producers lag behind consumers. The critical validation involves observing SerializationException handling in consumer applications when receiving messages that violate the expected schema, ensuring that SpecificRecord implementations fail gracefully rather than silently dropping fields or populating them with null defaults that corrupt business logic.