As an organization or as a leader, it is important that you help your people understand and follow a uniform direction, which aligns with the organization’s vision. One of the major problems many organizations face is instilling a culture of learning in their people. Talking about me personally, I wouldn’t want to work in an organization that doesn’t offer any means to support continuous learning to their people. So now, being the Director of QA services at Axelerant, I strongly felt that it was my responsibility to present learning opportunities to my entire team. That’s right, a team consists of human beings, and there’s a lot of dynamics added naturally when humans are involved. Isn’t it?
As a leader, you cannot just set something like “Learn XYZ” as one of the goals, without providing directions to the team as everyone in the team possess different aptitude. Some people might need less guidance while some would need more.
On another note, it is not new to anyone in the tech industry that new tools and technology are emerging in the market every ~6 months. At Axelerant, we have had clients coming to us, keeping in mind a certain tech/tool-stack to implement the solution. Of course, we can always hire people ready with the experience and knowledge to implement the solution. However, is this a sustainable solution? Not in my opinion. Hence, it would be best if you create a framework and an environment that can help people upgrade on various skills.
Introducing Quality Assurance (QA) Hackathons was one way to work on the objective of “Providing continuous learning opportunities.” Even before the idea of QA Hackathon struck my brain, many other thoughts crossed my mind, like:
- How do I ensure that every individual in the QA team has a shared understanding of a particular concept/tool in the best possible way by using the good practices associated with it?
- As all team members of the QA department work on various client engagements, how do I keep them connected and bind as one QA team at Axelerant and distributed across geographies and timezones?
- How do I provide leadership opportunities to all my team members?
While I was thinking about these challenges to be solved at almost 1 AM, this idea of conducting hackathons hit me. Yeah, the best ideas always strike me when I try to have some sleep 😉. Further, I would like to share how I designed it for the team (Of course, there was a buy-in from the entire team before rolling it out officially).
- The hackathon needs to be completed within the stipulated time (it was three months for this one) and must be submitted before the deadline.
- Considering our current team size, dividing them into two made sense. This choice is not left to the QA team to ensure fair distribution in terms of the number of years of experience, experience in the primary Hackathon topic, leadership skills, and so on.
- The group would differ for every Hackathon.
- Every team needs to elect a new leader every two weeks and this keeps rotating for the entire timeline of the Hackathon.
- The responsibilities of the leader included:
- Kick-start the hackathon within the team (This applied only to the first leader).
- Smart and logical division of tasks between the team members.
- Ensure the hackathon is regularly rolling by motivating them and setting various examples.
- Get the queries sorted for team members.
- Ensure the demo is ready and is submitted before the deadline.
API testing contest
Now that the general rules are set for the Hackathon let’s talk about the actual Hackathon on API testing. Why this topic?
A majority of them wanted to have some hands-on experience in advanced API testing, which involved writing automated tests and running them in collection runners and the CI pipeline.
- Identifying relevant test scenarios and creating test scripts accordingly. Each member of the team was expected to share their collection
- Organizing tests into folders as per the workflows to create a logical test suite. E.g., Verify the booking updates can be the folder name, which would span across multiple API calls as Create a token → Create Booking → Update booking
- Validating the JSON schema
- Using Postman’s Collection runner
- Integrating with the CI
If you were to ask me, this indeed was the toughest part of the Hackathon. Soon I realized that I couldn’t do it alone and one of our finest engineers, Akanksha Singh, came to my rescue and agreed to pair up on the evaluation. We identified parameters based on which we would evaluate each test of the assignment for both the teams. I am listing down only a few parameters here, and this is not an exhaustive list:
- The accuracy of instructions being followed for each test
- The test coverage in terms of positive and negative scenarios for every API endpoint
- The presentation and demonstration
- The best practices followed
We definitely had a winning team as it was a contest. However, some of the following outcomes were priceless and some valuable:
- A lot of people in the team had an aversion towards presenting and public speaking. On D-day, people confidently presented and felt good about personal achievement.
- The team bonded well throughout the Hackathon and got to know each other’s strengths and weaknesses.
- By introducing the concept of having leaders in rotation, every team member got a chance to understand and experience the leadership flavor, even if it was in a smaller capacity.
- Everyone in the Axelerant QA team now knows how to speed up API testing by writing automated tests in Postman.
- The team now knows the importance of testing the API endpoints independently and testing them as part of the entire workflow.
- They understood the good practices used in Postman like using Global and environment variables, Collections and Collection runner and the Newman CLI.
- They got their hands dirty in using Docker, git commands, CI tools like GitLab and Jenkins.
Meet our wonderful team who participated in the API Testing Hackathon: Team A and Team B. The picture is from the day of the presentation and I love the sense of achievement on their faces. 😄
Team A (Winners)
Team B (Runners-up)
Oh yes! Stay tuned for the detailed blog post(s) from the team itself on the assignment's actual implementation.