Term Project description
In this project, you have to deploy the web application. There are two part of the web application which are the backend, and the frontend. I have provided the frontend docker image, so you need to update some configuration before you run. The backend part you need to clone the source code and provide the test code to test the backend. And then you have to deploy the backend, and frontend to your instance to do the system test using Katalon at the end.
Doing the Unit test
You have to fork the project from https://gitlab.com/se234-2018-publish/project-backend and then add the unit test to test this given method
AuthenticationServiceImpl
authenticate – receive the username, and password. If the username, and password are contained in the database, the User object is returned with its role; otherwise, null is returned.
ProductServiceImpl
getAllProducts – returns all products in the database getAvailableProducts – returns only a product which price is more than 0
getUnavailableProductSize – returns a number of the product which price is less than 1 SaleOrderServiceImpl
getSaleOrders – return all sale orders (which is the transactions) getAverageSaleOrderPrice – return the average price which can calculated from all sales
order in the data base
The grading criteria on each test method are
0 – no Junit test
1 – There are unit tests without mock objects
2 – There are unit tests with mock objects
3 – There are unit tests with mock objects, with proper mock objects
The grade will give to each method, the overall score is the average scores from all the method Deploy the web application
You have to use the image dto80/project234-frontend to create your frontend part. However, you have to create the folder which contain the setting.json (The example provided in the page). To run the container, you have to map your folder with the setting file to the volume /usr/share/nginx/html/assets.
To run both container, use the Gitlab-ci to build the docker image of your forked folder. However, in your Dockerfile which is used to create your Docker images, add this command to initiate the container instead of normal entry point.
Deploy the application instance of your choice
The container should be run automatically using the Gitlab-ci
The grading criteria
0 – no container is deployed
1 – the container of frontend, or backend has been deployed and you can show that has been deployed
2 – the container of frontend, and backend has been deployed and you can show that has been deployed
3 – the proper Dockerfile has been created
4 – the proper docker-compose.yml has been created
5 – the proper .gitlab-ci.yml has been created
Provide the system test
From your deployed application, create a new Katalon test project, and push it to your github repository. You should provide the test for these requirements
– When the user opens the web site, the system will bring the user to the login page
– At the login page, The user can login to the system
o If the user is admin role, the system will go to the admin page which consists of “Products”, and “Total Transaction” menus
o If the user is user role, the system will go to the user page which consists of “Products” and “Carts” menus
o If the user name and password is not correct, the error message, “Username/password is incorrect” is shown
o If the user empties the user name box, the warning message “Username is required” is shown
o If the user empties the password box, the warning message “Password is required” is shown
– When the user is in the Products page, all the available products are shown in the web page
– When the user enters the Products page, and clicked at the add to cart button, the button will be changed to already added, and the number of selected products is shown next to the Carts
menu.
ENTRYPOINT [“java”,”-Djava.security.egd=file:/dev/./urandom”,”- jar”,”app.jar”,”–imageServer=http://{{replace this with your ip, and port of your backend computer}}/images/”]
– After selecting the products, if the user moves to the Carts page, all the selected products is shown in the cart page. The user can change the amount of products for each type of product, and the total price will be changed regarding to the input value.
o If the user clicks confirm button, the transaction will be added.
– When the user clicks logout button, the system will return to the login page
– If the user login to the admin page, when open the “Total Transaction” menu, all the carts,
which have been added must be shown with the summaries of all carts.
The database is provided in the data.xlsx in the e-learning system.
The grading criteria for each requirement
0 – no system test provided
1 – test script without data driven is provided
2 – data driven test scripts for the requirement provided
3 – all possible test data for the requirement provided
The grading will give to each requirement, the overall score is the average scores from all the requirements
Git usage
In both repositories (The backend, and the test), you have to set it public and use it properly, the criteria for each usage are
1. The distribution of commit
0 – you have not use the git
1 – you have commit mostly nearby the time of the submission 2 – your work has good distribution but not long enough
3 – you have start your work early with a good distribution
2. The size of commit
0 – you have a few commits in your repository
1 – you have commit many works in a commit
2 – some of your commits contains a single unit of work
3 – more than 80 percent of your commits, contains a single unit of work
3. The commit messages
0 – the commit message in your repositories does not make any senses 1 – only few submit messages reflects what you have done
2 – some submit messages reflects what you have done
3 – more than 80 percent of submit messages reflects what you have done
The grading will be given for each of your repository and the overall score is from the average score.
The submission
In a project, you work as a group of 1-2 people, you have to submit your work via your repository.
In your repository which you fork from my repository, update the readme.md file. The information in the readme.md will be shown in the first page. You have to provide this following information
1. You group name
2. Your member names, and students id
3. Your correspondence email addresses
4. Your url to your webpage
5. Your ip:port for your backend
6. Your Katalon test repository link
You have to commit the overall of your work before 8.00 am on Thursday 9th May. And then you have to book the time to present your work on Thursday 9th May, I will provide the booking system on 6th May via the google e-classroom, and each group can have 15 minutes to present your work.
Grading
This is 15 percent of your total score, the propotion is as given
The unit test The deployment The System test The git usage
7 percents 3 percents 7 percents 3 percents
Any plagiarism will be 0 marks for the whole section. The commit time will be used as an indicator for consider
Update 23rd April 2019