FIT5171 Project Assignment 1 Test Planning, System Setup, and Code Understanding & Extension
Yuan-Fang Li and Yan Liu
Due: 23:59pm, Friday 29th March, 2019
1 Project description
In this assignment, you will work on the first part of a semester-long project. This project, http://www.allaboutrockets.com, is based on Java and it will even- tually develop into a simple Web application.
The project has been set up to use the build management tool Apache Maven (http://maven.apache.org/), which you have practiced in Tutorial 1. It also uses frameworks including Spark, OrmLite and Freemarker in the later parts.
2 Assignment 1
This assignment focuses on planning the testing approach and getting the basic structure up and running.
1
2.1 Test Planning
The very high-level and potentially incomplete (functional and technical) de- scription has been given in the “spec.pdf” document, which can be found on Moodle.1 Given the description, your task is to provide a high-level testing strategy document.
There is no specific format for this document. However, your testing strategy should include at least the following components:
• Types of testing (functional, non-functional, etc, including their sub-types) and their objectives
• Testing tools and approach (manual, automatic, etc.)
• Defect tracking mechanisms
Note that there is no single correct answer. As not all details have been laid out in the description document (spec.pdf), each group may conduct some research on the above topics and come up with a proposed solution.
You can refer to the lecture slides for advice on the level of details in the strategy document.
2.2 Development & Testing Environment Setup
You will need to properly set up the development environment on your laptop. The setup is very similar to the one used in Tutorial 1. Once you have correctly set up the local development environment, you will need to set up version control and continuous integration.
Local. On your laptop, you need to
• Setup the development environment, including: – JDK 8 2
– Maven 3
– An IDE of your choice, recommended IntelliJ 4 – GitHub private repository 5
– Adding your tutor(s) to your private repository
• Import the code base provided. A compressed Maven project has been made available on Moodle. You need to download and unzip this folder and import it into your IDE. Finally, you need to ensure that you can compile and run the tests using Maven.
1 https://lms.monash.edu/course/view.php?id=50765§ion=5
2 JDK 8, https://www.oracle.com/technetwork/java/javase/downloads/ jdk8- downloads- 2133151.html
3Maven, https://maven.apache.org/download.cgi
4IntelliJ, https://www.jetbrains.com/idea/download
5Create a repository, https://guides.github.com/activities/hello-world/#repository
2
Remote. Make sure you can update and commit your team’s source code to your GitHub repository. Also you need to set up Jenkins for continous inte- gration so that it polls for changes in your repository and automatically runs the tests (using Maven) whenever you commit any code into your repository. Instructions on remote Jenkins environment setup will be posted on Moodle when the it is ready.
• Important: the completion of the remote setup depends on the status of the server to be provided by the university. We let you know when it is ready for use. If it becomes available too late, this part (remote setup) does not need to be completed.
2.3 Code Base Understanding and Extension, using TDD
A basic code base will be provided that sets up the project structure with simple classes for certain components. The code includes the following Java classes in the domain model: Rocket, Launch, LaunchServiceProvider, and User.
You will need to read the source code and develop reasonable constraints, or conditions for classes User, Rocket, and LaunchServiceProvider. For exam- ple, the value of the attribute email in the User class should not be null and should be a valid email address. Similarly, the parameters for the setter meth- ods for setting the username and password attributes should be non-empty too. Please consider the best place to develop such validation code.
You will utilise the test-driven development (TDD) process for the extension. Hence, your extension will need to be accompanied by JUnit unit tests.
For each class under test, for example src/main/java/bar/Foo.java, its test methods should be in a file called FooUnitTest.java (or FooTest.java), in the same package, but under the directory src/test/java/bar/. For a more concrete example, for class User, its complete path is:
src/main/java/rockets/model/User.java
The path of its (unit) test class should be:
src/test/java/rockets/model/UserUnitTest.java
To help you get started, the class UserUnitTest.java has already been cre- ated with a few test cases. You can refer to it as an example. You should extend it too. Besides, there is a shortcut for creating corresponding test classes6. Use Maven to run all the unit tests, and make sure they all pass without failures.
3 Assessment
This assignment carries 10 marks. The assessment will be based on the sub- mitted files as well as a demo/interview conducted in-class in week 5.
6Create test classes, https://www.jetbrains.com/help/idea/create-tests.html 3
3.1 Submission
You will need to submit a report and the extended code base, contained in a single .zip file, to Moodle. Other file types are not accepted for submission.
Only one member from each group needs to submit the file. In your sub- mission clearly indicate the group members (in a separate readme.txt file, for example).
The report will include four parts: (1) testing strategy, (2) a description of the setup, (3) a brief description of the extension and the testing of the extension, and (4) self assessment. The report should not exceed 6 pages in length.
Self assessment & peer assessment. Even though the project assignments are group-based, assessment is individual-based. Hence, we will incorporate self and peer assessment in this assignment’s marking.
For self and peer assessment, we will use CATME, an online system7. CATME allows students to assess self and each other’s performance in a team-based project in a confidential way. More details on how to submit CATME peer evaluation will be provided on Moodle shortly.
3.2 Demo
A demo will be conducted in week-5 tutorials. Each group will demonstrate to the tutor their setup on a laptop. Each group will also need to give a code walkthrough to the tutor, showing your understanding of the code base, your extensions, and your tests. Also demonstrate to the tutor that you can run all tests automatically through Maven.
3.3 Assessment Breakdown
4 marks — Testing strategy documentation. This part of the report should be concise: it should not exceed 2 pages in length.
2 marks — Setup, that you have successfully setup the local working envi- ronment as well as the continuous integration environment (if the server becomes available on time, to be advised).
Your report can contain screenshots showing that your setup is successful. If you ran into problems setting up the environment, your report should briefly document the problem and the status of the setup. This part of the report should be concise: it should not exceed 2 pages in length.
4 marks — Code base understanding and extension.
2 marks Reasonable constraints or conditions are added to the code base.
7 https://www.catme.org/
4
2 marks Tests correctly make use of JUnit test fixtures and assertions to val- idate conditions in the code and/or specification. Tests can be run by Maven automatically and they pass successfully without failure.
Your report should contain a brief description of the extension(s) that you have developed, and how they are tested in the TDD process. This part of the report should be concise: it should not exceed 2 pages in length.
4 Extra Credit: Maximum 3 Marks (Optional)
The provided code base can be extended in many ways to enrich its functionality. The following are only some possible extensions.
• A rocket may belong to a family of similar rockets, each with some varia- tion. For example, Ariane 58 is part of the Ariane family, and it in itself represents a a number of variations: Ariane 5 ECA, Ariane 5 ES, and so on. You can extend the model to capture this (complex) information.
• A Launch may include a number of payloads (satellites, spacecrafts, etc.), which is currently captured as a set of String values. You can extend the code base to capture Payload as part of the domain model, with associated information.
Write your extensions in appropriate places (existing or new classes), and integrate them with the other classes in the domain model.
Of course, adopting the TDD process and developing adequate test cases are essential for earning extra credit marks.
8 https://en.wikipedia.org/wiki/Ariane_5 5