FIT5171 Project Assignment 1
Test Planning, System Setup, and Code
Understanding & Extension
Yuan-Fang Li and Yan Liu
Due: 23:59pm, Sunday 31st March, 2019 (Final)
1 Project description
In this assignment, you will work on the first part of a semester-long project.
This project, CSDN, is based on Java and it will eventually
develop into a simple Web application.
The project has been set up to use the build management tool Apache Maven
(CSDN, 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.
2.1 Test Planning
The very high-level and potentially incomplete (functional and technical) description
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
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
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
– An IDE of your choice, recommended IntelliJ 3
– Maven 4
: Skip this step if you are using modern IDEs like IntelliJ
(built-in Maven projects).
– GitHub education pack 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.
2JDK 8, CSDN
5Create a repository, CSDN
Remote. Make sure you can update and commit your team’s source code to
your GitHub repository.
(Not required in assignment 1 since there is not enough time for you
to set up Jenkins server). Also you need to set up Jenkins for continous
integration 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 example,
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 methods
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:
The path of its (unit) test class should be:
To help you get started, the class UserUnitTest.java has already been created
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
Maven to run all the unit tests, and make sure they all pass without failures.
This assignment carries 10 marks. The assessment will be based on the submitted
files as well as a demo/interview conducted in-class in week 5.
6Create test classes, CSDN
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 submission
clearly indicate the group members (in a separate readme.txt file, for
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 (a.k.a., individual contributions). 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.
Please include individual contributions in your submitted report
and during demo. We will open CATME evaluation when it is necessary.
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 teambased
project in a confidential way. More details on how to submit CATME
peer evaluation will be provided on Moodle shortly.
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 environment.
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.
2 marks Tests correctly make use of JUnit test fixtures and assertions to validate
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 variation.
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
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.