Commentary

How we code: Automated Software Testing to deliver leading products

Commentary

How we code: Automated Software Testing to deliver leading products



Software Test Engineering, also known as Software Testing, is a critical phase in the software development lifecycle. It is the process of evaluating and verifying that a software application or system functions correctly and meets the specified requirements. The primary goal of software testing is to identify defects, bugs, or issues in the software and ensure that it works as expected.

At GfK, Software Testing is incredibly important to ensuring that our products are up to scratch and meeting our customers’ needs. To learn more about this process, we spoke to Dzarrin Zubairy, Software Test Engineer at GfK in our Kuala Lumpur office, who shared her insights into the role, what she does on a daily basis, and what benefits it brings to the team.

What kind of work do you do at GfK?

As an Automated Software Test Engineer, my primary responsibility is to ensure the quality and reliability of software applications. I focus on validating software functionality, identifying and testing bugs, and ensuring that the software meets performance and security standards. My daily tasks are towards SDET (Software Development Engineer in Test), where I develop and maintain automated test scripts that simulate user interactions and perform regression testing. I also create comprehensive test cases, test plans, and scenarios based on software requirements and user stories, not only functionality but also the performance of the applications. Aside from that, I had my hands on integrating automated test scripts into the continuous integration and continuous delivery (CI/CD) pipeline to ensure that tests run automatically as part of the build and deployment process. The part I enjoy the most is working closely with the Software Engineer to understand the application architecture and codebase. We collaborate on identifying potential issues early in the development process and assist in debugging and fixing defects, and at the same time, I learn some best practices and codes!

What is automated software testing and how is it used at GfK?

Automated Software Testing is a process where the testing procedures and test cases are executed automatically by using software tools and scripts rather than manually by human testers. In GfK, we use automated scripts not only to test the software functionality but also to test application performance. The test scripts are developed based on the user stories and the tester’s knowledge. User experience is converted into codes and run daily. We use Behavior-driven development Testing frameworks as it is scenario-based testing that can be easily read and understood by a non-technical person and then set to run in the pipeline. The pipeline is set ‘ready to go’ for others to run regression or smoke test packs when needed. A scheduled run for our automated performance test was done to identify sudden or gradual performance degradation introduced by code changes, ensuring issues are identified and addressed promptly. Enhancement will be created when there is a degradation in performance. We want users to have only the best experience!

How has your work with automated software testing helped improve the work done by GfK?

We move towards shift-left testing, where automated software test helps identify and eliminate defects and issues in the early development process. This results in higher-quality software and reduces bug-related costs. By automating testing processes, GfK can release new features and updates more quickly. This, in turn, leads to faster development cycles and the ability to release new features and update more rapidly. Embracing automated testing can respond more effectively to changing customer needs and industry trends, giving a competitive edge in the market. Automated tests can be run consistently and repetitively, reducing the risk of human error in testing. It also helps in resource efficiency, where automated testing can scale to accommodate larger and more complex applications, reducing the need to hire additional testers for growing projects. This can contribute significantly to a company’s profitability and long-term success in a competitive market.

What are some automated software testing tools you’ve had the chance to use?

With almost five years of experience in Software Testing, I have experience in different kinds of testing tools based on their categories. I have used Selenium in Java with TDD and BDD test frameworks and also experienced using Protractor and Cypress, which are in Typescript. It was challenging to move from Java to Typescript, but I enjoyed learning different languages and tools.  Performance tests and API testing are new to me. Here, we used k6 and JMeter to test the performance of the applications. For API testing, we are using Postman and sending scripts to ensure it behaves accordingly. It also can be automated in the CI/CD pipeline by using Newman.  CI/CD tools play a significant role in automated testing. Some tools I had my hands on are Jenkins and GitLab. This platform automates the software delivery pipelines. Test management tools play a crucial role in automated software testing. It helps not only in organizing test cases but also in creating an efficient test design and version control. Like TestRails, we store test cases as a reference when there are changes in the test scenarios. The best part is that it can integrate with our automation test scripts.

What are some benefits automated software testing offers over “traditional” software testing?

There are many critical advantages of automated software testing. The first stat that stands out is its rapid execution. Automated test scripts can be executed much faster than manual tests in terms of getting quicker feedback on code changes. Scripts also can be reused across different test cycles and projects, saving time and effort in test case creation and maintenance. It is also both consistent and reliable as it performs the same actions and checks consistently every time they are executed and can run 24/7, providing reliable test results. 

Automated tests are also ideal for regression testing, ensuring new code changes do not introduce defects in the existing functionality. It also reduces the risk of overlooking issues arising from code changes. Compared to the traditional way, it may lead to human errors when the same test runs over again. And it helps to reduce the need for manual testing efforts, which leads to cost savings in terms of person-hours.

In traditional software testing, it might be a bit of a struggle to keep up with the updates and fixes compared to an automated model, which seamlessly integrates the software improvements and ensures that the software always gets the latest changes and enhancements. Finally, Automated tests facilitate collaboration among cross-functional teams, providing a standardized and shareable way to validate software functionality.