Written by: Muhammad Iqbal Tawakkal, Aprilia Ruh Sufiati

CI/CD Functional Testing tips and tricks

Just how much can you boost your team’s productivity?

With new tools and technologies being released every day, work for many industries is rapidly becoming easier. Software Engineering work, such as backend design, frontend design, QA/testing, and SRE/DevOps, is certainly no exception. The development of Continuous Integration and Continuous Delivery/Deployment (CI/CD), for instance, has helped many engineers create a smoother path from development stage to production stage. CI/CD employs automation in building, testing, and deployment, which allows us to escape from mundane iteration to work on different use cases and unique troubleshooting. This is the key to broader coverage, and therefore greater productivity.

Used in the testing stage of CI/CD, automated functional testing is not new to software testing engineers. Automated functional testing helps us keep our product working and aligned to its specifications by providing appropriate input and verifying the output against the predetermined functional requirements. If you implement CI/CD in your work, consider implementing functional testing in the release pipeline as well to scale up your automation range. By implementing functional testing in the release pipeline, you won't need to wait for testers to test and deploy a new feature, which saves you time and resources. In AccelByte, we implement functional testing in the release pipeline through Canary Flagger Analysis and Jenkins Pipeline. For even greater efficiency, we integrate these tools to our communication channel (Slack) to conveniently receive the test results. Here’s a look at our architecture flow to see how it works:

Implementing Functional Testing in a Release (Pipeline diagram)

Implement Functional Testing through Canary Flagger Analysis.

  • After Jenkins successfully builds the image, it starts the deployment process.
  • Flagger then starts running the functional test targeting K8s pod.
  • After the test is finished, Flagger checks the test result.
  • If the test passes, Canary Deployment continues the deployment process and promotes the service to the Production Environment. The test result notification is automatically sent to the appointed Slack channel.
  • If the test fails, it does not continue the deployment process and the appointed Slack channel is automatically notified that the test failed.

Implement Functional Testing through Jenkins Pipeline.

  • After Jenkins successfully builds the image, it deploys the service.
  • After the service is deployed, Jenkins starts the Automation Test Job targeting the dev or prod environment.
  • After the test is finished, it sends the test result (either pass or fail) to the appointed Slack channel.

With everything running automatically and connected to a notification system, we don’t need to worry about either testing coverage or missing reports. It’s super effective!