-
Notifications
You must be signed in to change notification settings - Fork 2
Homework 4: Custos Testing
In this last phase of the course, we plan to test the freshly deployed custos services. The goal of this exercise is two-fold - to test the correctness of the deployment and to test the non-functional aspects such as scalability, reliability, and fault-tolerance of the system.
This is an important phase before we can test the non-functional aspects for the below reasons:
- We do not own the source code that has been deployed, hence we are not aware of its functionalities and behavior.
- Non-Functional aspects only matter when the functionalities are working as they are expected to.
- As end-users, we are only communicated with what the system's capabilities are and are exposed to limited number of endpoints/avenues to verify it.
With the above in mind, Black box testing strategy seems the best testing strategy to adapt to successfully explore the system while also validating its functionalities and correctness.
Following outlines our approach toward achieving this objective:
- We explored the API endpoints exposed by the CUSTOS through the API Documentation
- We assessed the information available at our disposal - We are provided with a client_id, client_secret and admin_user
- With the available information, we examined the maximum number of APIs that we can validate.
- For each selected API, we have made note of the required input and expected output.
- The validation is successful if the expected output matches the output of the API.
We tested in total 16 APIs that majorly belong to the groups:
- Identity Management
- User Management
- Group Management
We have documented all the API request/response in this postman collection
All the tested APIs worked as expected, suggesting that our deployment was stable and functioning as expected. This now allows us to conduct performance tests such as load tests and stress tests on the system.
In Performance testing, we plan to test the non functional aspects such as the stability, reliability, fault tolerance, and scalability of the system. To this end we plan to conduct the following tests on the 16 APIs explored in the functional testing phase:
- Load Test
- Stress Test
- Soak Test
-
Custos is deployed on a 3 Node Kubernetes cluster where all the 3 nodes act as worker nodes. Further, each node is a v1.Medium instance on Jetstream1 platform having 16GB Memory and 60 GB Storage.
-
All the services are deployed as a single instance. i.e replicas=1
-
No autoscaler setup
The objective of this test is to incrementally increase the load of the system over time and analyze system performance. This will help us in understanding the impact of high traffic/load on different APIs and the system's response towards it.
We designed a load test with the following settings:
- create 100 users over 10 minutes.
- create 100 groups over 10 minutes.
- Repeatedly add/remove users from groups.
- Continuously fetch access tokens for created users.
The above steps are repeated with increasing volumes to analyse the impact.