<p>The client had multiple tools and tech stacks, and there was no automated way to validate and verify Message Queuing Telemetry Transport (MQTT) messages propagated through Kafka. Spark jobs had to be run manually, and Spark log messages had to be independently verified by the Quality Engineering (QE) team. Additionally, while Jira and Zephyr were being used, there was no end-to-end traceability.</p>
<p>The client needed a unified automation solution that integrated and managed all test cases across a variety of tools. The overall testing framework needed to follow behavior-driven design (BDD) principles, provide accurate test results, and tie testing closely to business outcomes. In short, the customer was looking for:</p>
<ul>
<li>A single tool to seamlessly manage test cases: Required one tool to handle all types of test cases, including unit tests, and tests to verify and validate Kafka messages, and tests to verify Spark log files and data from a Hadoop Distributed File System (HDFS) and Apache Solr.</li>
<li>End-to-end traceability using Jira and Zephyr: Any test automation needed to monitor test status through the existing Jira/Zephyr infrastructure, which was not possible in the current environment.</li>
<li>Automation of Regression tests: When new features were introduced, the client's Smart Data Analysis (SDA) team needed the ability to automate regression test execution when code was checked in, allowing them to catch bugs early.</li>
<li>Testing integrated with CI/CD: The system needed to be integrated with the existing Jenkins CI/CD infrastructure to ensure continuous testing.</li>
</ul>
<p>Another consideration was to select an automation framework that supported multiple languages, including Python, C#, and Java, and ensure data integrity as data made its way through the newly adopted Kafka infrastructure. Finally, the testing framework needed to be easy for the client to define tests and reuse modules to simplify maintenance and rapid development.</p>