freeeの開発情報ポータルサイト

A novice to API testing

Hello! I’m Tin, a QA engineer of HR payroll and this is the 5th day of the freee QA Advent Calendar 2023.

I had the opportunity to test an API in July of the current year, 2023, and I made the decision to write about it in the hopes that it would motivate and help others.

Work background

While my current team, Lapulapu, is now concentrating on the healthcare service, my previous work was primarily on e-application functions, which enables the users to submit an application or documents online using freee payroll. Some examples are geppen, bonus report, employment or health insurance, and a lot more. We call it e-app for short.

An edited photo of the Lapulapu members on a jeepney–a type of public transportation in the Philippines.
Lapulapu team members~

I also tested the invoice CRM service in addition to payroll, which was under the Balut team; this was a much shorter task than e-app since I mainly focused in Lapulapu's project, it was still beneficial to be able to work in a different team within the global team.

Photo of the slide that has an introduction of each of the Invoice CRM(Balut) team members
Invoice CRM(Balut) team members

The first times

The current software market is undoubtedly competitive. That’s why user-facing errors that are caused by the issues within the API layer could be bad for any software-focused business in the long run.

In addition to discussing some technical aspects of APIs on a surface level, I will also write about my first experience testing them.

I had no experience testing APIs until I began testing one for a real project. I only had an idea about HTTP methods and Postman, a tool that can be used in API testing.

My background was merely familiarization; it isn't even useful in a practical sense. Even though it might not be an ideal situation, I still had a wonderful experience.

It goes without saying that project testing is time-sensitive, and it can be very daunting to test something without sufficient background knowledge or with team members who don't speak the same language. This is not only the first time testing APIs; it's also the first time testing in a team outside the global team.

Learning style

My tendency to learn best through hands-on experience was one quality that really aided me. I concurrently studied an API course on Udemy and conducted testing. I now have a better understanding of http methods, endpoint components, the meaning of responses, and even how to use Postman more clearly. This also entails learning how to comprehend API test cases and documentation because I'm testing a project in parallel.

Technical Knowledge: Leveled Up

There are still other HTTP methods, but these are what I mainly used:

GET: Retrieve data

POST: Create new data

PUT: Update existing data

DELETE: Remove data

Using these methods on a certain API endpoint will yield different kinds of results. For example, we have an inventory of books.

GET baseurl.com/books

The response should contain a list of every book that is in the inventory.

GET baseurl.com/books/{id}

We can see that the {id} is appended at the end of this one. The {id} will become a path parameter, indicating that it should only return a specific book with the indicated id.

GET baseurl.com/books?genre=cooking

Here, we can see that the parameter “genre” is used. Additionally, a question mark was used in place of a forward slash. This is known as a query parameter, and it's mostly utilized for data sorting and filtering. This will return the list of books in the cooking genre.

POST baseurl.com/books will actually add a new book to the database.

PUT baseurl.com/books/{id} will update the information of the book for a certain id

DELETE baseurl.com/books/{id} will delete the record of the book for a certain id

The course I took will be mentioned at the end of this, and while there is more to learn from it, the most significant thing I learned was understanding how and what to test in an API.

Takeaways that I will apply next time

Knowing the product or service that will be tested is the first thing a tester should do.

Understanding the API's requirements and its intended use should come next.

The same concept applies to API testing, where we test the happy path and negative scenarios just like we do with functionality testing. When a negative case occurs, such as when an account is created with a null username, the service should be able to handle it gracefully.

An API documentation will generally be available to assist you during the testing process; this material is normally written by the development team. When you are already running the test, the response codes that are listed in the documentation should match. In the event that an error occurs, an appropriate API response should be there to assist the user in understanding what is happening and how to proceed.

As the title indicates, this is only at a beginner level and is primarily intended for those with zero to minimal experience with APIs. There is obviously much more to learn about API testing.

How I coped up in the language barrier

The use of Deepl and Google Translate helped me and the team I supported to communicate despite the unquestionably thick language barrier.

Whenever I’m unsure about something, I make it to a point to ask them just to be sure.

As a QA, you should, of course, never make assumptions.

In order to address problems and concerns, we primarily used their language, Japanese.

I would copy their message, paste it on Google Translate and Deepl for comparison, and then I would draft my response, having it translated by the same programs because I am not fluent in that language. My minimal understanding of Japanese was definitely helpful in this case, as the translations were occasionally inaccurate.

Screenshot of me asking questions, clarifying things in Japanese. Google translate and Deepl helped me compose the messages.
I've asked everything I was unsure of~

Another screenshot of me asking project-related question.
Thanks to my saviors–Google and Deepl!!!

How did it turn out?

Thankfully, I was able to execute all the test cases that were initially assigned to me. I cannot adequately describe the amazing feelings I felt upon hearing about the project's release. It was, in fact, an exhilarating, overwhelming, and enlightening experience. The dependable and extremely efficient operation of the APIs can be ensured through testing; The article 「How to write an effective test cases?」 written by Ween , QA engineer of Digitalization will be published tomorrow. let’s keep good quality~

Screenshot of when I was mentioned when the team has released the project
Release news~~~

Reference

For reference, the course I took in Udemy is the one below, completing until Section 5 only: https://www.udemy.com/course/postman-the-complete-guide/