Bird
Raised Fist0
Kafkadevops~5 mins

Testing stream topologies in Kafka - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a stream topology in Kafka Streams?
A stream topology is a directed graph of stream processors and state stores that defines the data processing logic in Kafka Streams.
Click to reveal answer
beginner
Why do we test stream topologies?
Testing stream topologies ensures that the data processing logic works correctly before deploying to production, catching bugs early and verifying transformations.
Click to reveal answer
intermediate
What is the purpose of the TopologyTestDriver in Kafka Streams?
TopologyTestDriver allows you to test your Kafka Streams topology in memory without needing a real Kafka cluster, making tests fast and reliable.
Click to reveal answer
intermediate
How do you feed input data to a topology for testing?
You create input topics using the TopologyTestDriver and pipe input records into them to simulate streaming data for your topology.
Click to reveal answer
intermediate
How can you verify the output of a Kafka Streams topology in tests?
You read output records from output topics created with TopologyTestDriver and assert that the results match expected values.
Click to reveal answer
What does the TopologyTestDriver simulate?
AA web server
BA Kafka cluster for testing stream topologies
CA database connection
DA file system
Which of the following is NOT a benefit of testing stream topologies?
ADeploy faster without any tests
BCatch bugs early
CVerify data transformations
DRun tests without a real Kafka cluster
How do you provide input data to a topology in tests?
ABy sending HTTP requests
BBy writing to a database
CBy creating input topics and piping records into them
DBy reading from files
What do you check to verify the output of a stream topology test?
AOutput records from output topics
BLog files
CDatabase entries
DNetwork packets
Which Kafka Streams component defines the processing logic?
AConsumer
BKafka broker
CProducer
DStream topology
Explain how you would test a Kafka Streams topology using TopologyTestDriver.
Think about simulating input and checking output without a real Kafka cluster.
You got /6 concepts.
    Why is testing stream topologies important before deploying your Kafka Streams application?
    Consider the risks of deploying untested streaming logic.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using TopologyTestDriver in Kafka Streams testing?
      easy
      A. To simulate the stream processing logic without a real Kafka cluster
      B. To deploy the Kafka Streams application to production
      C. To monitor Kafka cluster health
      D. To create new Kafka topics automatically

      Solution

      1. Step 1: Understand the role of TopologyTestDriver

        It runs the Kafka Streams topology in memory for testing purposes.
      2. Step 2: Compare with other options

        Options A, B, and C relate to topic creation, deployment, or monitoring, which are not testing functions.
      3. Final Answer:

        To simulate the stream processing logic without a real Kafka cluster -> Option A
      4. Quick Check:

        TopologyTestDriver = simulate streams [OK]
      Hint: Remember: TopologyTestDriver runs streams in memory for tests [OK]
      Common Mistakes:
      • Confusing testing with deployment
      • Thinking it manages Kafka topics
      • Assuming it monitors Kafka cluster health
      2. Which of the following is the correct way to create a TopologyTestDriver instance in Java?
      easy
      A. TopologyTestDriver.create(topology, properties);
      B. new TopologyTestDriver(topology, properties);
      C. TopologyTestDriver.start(topology, properties);
      D. new TopologyTestDriver(properties, topology);

      Solution

      1. Step 1: Recall the constructor signature

        The constructor takes the topology first, then the properties.
      2. Step 2: Check each option

        new TopologyTestDriver(topology, properties); matches the correct constructor call. Options B and C use non-existent static methods. new TopologyTestDriver(properties, topology); reverses the argument order.
      3. Final Answer:

        new TopologyTestDriver(topology, properties); -> Option B
      4. Quick Check:

        Constructor = topology, properties [OK]
      Hint: Constructor order: topology first, then properties [OK]
      Common Mistakes:
      • Using static methods instead of constructor
      • Swapping argument order
      • Calling non-existent start or create methods
      3. Given the following code snippet using TopologyTestDriver:
      var driver = new TopologyTestDriver(topology, props);
      var inputTopic = driver.createInputTopic("input", Serdes.String().serializer(), Serdes.String().serializer());
      var outputTopic = driver.createOutputTopic("output", Serdes.String().deserializer(), Serdes.String().deserializer());
      
      inputTopic.pipeInput("key1", "value1");
      var result = outputTopic.readKeyValue();
      System.out.println(result.key + ":" + result.value);
      What will be printed if the topology simply forwards input to output unchanged?
      medium
      A. key1:value1
      B. null:null
      C. value1:key1
      D. Exception thrown

      Solution

      1. Step 1: Understand the topology behavior

        The topology forwards input key-value pairs unchanged to the output topic.
      2. Step 2: Trace the test driver code

        Input "key1" and "value1" is piped in; outputTopic reads the same key-value pair.
      3. Final Answer:

        key1:value1 -> Option A
      4. Quick Check:

        Forwarded key-value = key1:value1 [OK]
      Hint: If topology forwards, output matches input exactly [OK]
      Common Mistakes:
      • Mixing key and value order
      • Expecting null output without input
      • Assuming exceptions without errors
      4. Identify the error in this test code snippet using TopologyTestDriver:
      var driver = new TopologyTestDriver(topology, props);
      var inputTopic = driver.createInputTopic("input", Serdes.String().deserializer(), Serdes.String().serializer());
      inputTopic.pipeInput("key", "value");
      medium
      A. pipeInput method is called with wrong argument types
      B. TopologyTestDriver constructor arguments are reversed
      C. Input topic serializers and deserializers are swapped
      D. Missing call to driver.close()

      Solution

      1. Step 1: Check serializer/deserializer usage

        Input topic requires serializers for key and value, not deserializers.
      2. Step 2: Identify the swapped serializers

        Code uses deserializer for key and serializer for value, which is incorrect.
      3. Final Answer:

        Input topic serializers and deserializers are swapped -> Option C
      4. Quick Check:

        Input topic needs serializers [OK]
      Hint: Input topics need serializers, output topics need deserializers [OK]
      Common Mistakes:
      • Using deserializers for input topic
      • Ignoring proper resource closing
      • Confusing constructor argument order
      5. You want to test a Kafka Streams topology that filters out records with null values before forwarding. Which approach correctly verifies this behavior using TopologyTestDriver?
      hard
      A. Send records with null values and expect an exception from TopologyTestDriver
      B. Send only null values to input topic and expect output topic to have the same null values
      C. Send records with null values and check that output topic is empty without reading
      D. Send records with null and non-null values to input topic, then assert output topic only has non-null values

      Solution

      1. Step 1: Prepare test input with null and non-null values

        This tests the filter logic by including both cases.
      2. Step 2: Verify output topic contents

        Assert that only records with non-null values appear in the output topic.
      3. Final Answer:

        Send records with null and non-null values to input topic, then assert output topic only has non-null values -> Option D
      4. Quick Check:

        Filter test = input mixed, output filtered [OK]
      Hint: Test filters by sending mixed input, check filtered output [OK]
      Common Mistakes:
      • Expecting null values to appear in output
      • Not reading output topic to verify results
      • Assuming exceptions occur on null values
      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