This project provides an API that allows Lion Game communicate with Google
Sheets-based backend for storing play session analytics. The source code is
available [here](https://gitlab.cs.ui.ac.id/bukan-macan-ternak/liongame-backend).
## SQA Problem - Input Space Partitioning
> _Estimated time: 5 minutes_
You are asked to **design an input space model for the API by following a functionality-based approach.**
The minimal information required to develop the model can be derived by
reading the API documentation available in [`README.md`](https://gitlab.cs.ui.ac.id/bukan-macan-ternak/liongame-backend/-/blob/master/README.md)
file.
Your tasks are as follows:
1. Determine the characteristics and the partition for a function chosen by the
proctor.
> Possible functions:
>
> - The request handler function for `/api/logs/` endpoint.
> - The request handler function for `/api/logs/batch` endpoint.
>
> The body of both functions can be inspected in [`App.php`](https://gitlab.cs.ui.ac.id/bukan-macan-ternak/liongame-backend/-/blob/master/src/App.php).
2. Based on the input space model that you have created, create the test
requirement and the test cases based on certain coverage criteria chosen by
the proctor.
> Possible coverage criteria choices:
>
> - All Combinations Coverage (ACoC)
> - Each Choice Coverage (ECC)
> - Pair-Wise Coverage (PWC)
> - Base Choice Coverage (BCC)
>
> _Note: **You do not have to write all test cases** due to the time limit.
> However, make sure you can justify your subset of test cases match with
> the chosen coverage criteria!_
Write your answer in a sheet of paper or Microsoft Word/Google Docs document.
You may include illustrations in your answer. Please prepare to present your
answer remotely via Zoom/Google Hangouts during discussion time.
## SQA Problem - Graph Coverage
> _Estimated time: 5 minutes_
You are asked to design a **control flow graph (CFG), prepare the test
requirement, and create the test cases.**
Your tasks are as follows:
1. Create the CFG for a function chosen by the proctor.
> Possible functions:
>
> - The request handler function for `/api/logs/` endpoint.
> - The request handler function for `/api/logs/batch` endpoint.
> - `isValidData()` function.
> - `appendValues()` function.
>
> The definition of request handler functions and `isValidData()` can be
> inspected in [`App.php`](https://gitlab.cs.ui.ac.id/bukan-macan-ternak/liongame-backend/-/blob/master/src/App.php).
> The `appendValues()` function definition is available in [`SheeetsService.php`](https://gitlab.cs.ui.ac.id/bukan-macan-ternak/liongame-backend/-/blob/master/src/service/SheetsService.php).
2. Based on the CFG that you have created, create the test requirement and the
test paths based on certain coverage criteria chosen by the proctor.
> Possible coverage criteria choices:
>
> - Node Coverage (NC)
> - Edge Coverage (EC)
> - Edge-Pair Coverage (EPC)
>
> _Note: **You do not have to write all test paths due to the time limit.**
> However, make sure you can justify your subset of test paths match with
> the chosen coverage criteria!_
Write your answer in a sheet of paper or Microsoft Word/Google Docs document.
You may include illustrations in your answer. Please prepare to present your
answer remotely via Zoom/Google Hangouts during discussion time.
## SQA Problem - Discussion
> _Estimated time: 10 minutes_
You are asked to present your answers to the given problems and also to have
one-on-one interview with the proctor during the discussion time.
The list of topics that might be discussed is as follows:
- Code coverage (line coverage)
- Test-Driven Development (TDD)
- Test isolation
- Writing test cases in Java (JUnit)/Python (`unittest` and Django)/PHP
(PHPUnit)
- Your experience in conducting SQA activities in academics and/or work