共计 7319 个字符,预计需要花费 19 分钟才能阅读完成。
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 eventually
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) 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
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.
1https://lms.monash.edu/course…
2JDK 8, https://www.oracle.com/techne…
jdk8-downloads-2133151.html
3Maven, https://maven.apache.org/down…
4
IntelliJ, https://www.jetbrains.com/ide…
5Create a repository, https://guides.github.com/act…
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 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:
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 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
. 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 submitted
files as well as a demo/interview conducted in-class in week 5.
6Create test classes, https://www.jetbrains.com/hel…
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 submission
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 environment
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.
7https://www.catme.org/
4
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
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.
8https://en.wikipedia.org/wiki…
WX:codehelp