ud494 »

Test Driven Development Assignments

Logistics

These assignments were originally meant to be completed as a group project, but they are now to be completed individually.

To find the due date and see where this fits in the course overall, see the schedule.

Overview

Part 1

Provided

  • Story/task cards
  • Junit test cases

Expected

  • Code that makes the test cases pass

Part 2

Provided

  • Story cards

Expected

  • Task cards
  • Junit test cases

Part 3

Provided

  • Test cases (yours, possibly augmented)

Part 1

Expected

  • Code that makes the test cases pass

Story Card

"The instructor (or the TA) launches the GradesTool application to get information about the students and the class. The application prints the number of students and information about each student: name, GT ID, e-mail, and attendance. It also prints the number of assignments and projects given so far. After that, it asks the user if (s)he wants to continue or exit. In the former case, it prints the latest information again.”

Example "screenshot"

Important note: you don’t have to build this front-end. It is provided just to better clarify the requirements.

Screen Shot 2013-12-30 at 4.16.35 PM.png

Data

Task Cards

  • Task 1: Develop a class (Student) that holds the information about a student, such as name and GT ID.
  • Task 2: Develop a class (GradesDB) that encapsulates most of the system functionality and provides an intuitive interface towards the information in the spreadsheet.

Instructions

  • Keeping in mind the story card and the corresponding tasks, do the following:
    • Download the starter code with the data file and test cases.
    • Write code that makes the provided test case pass
    • Go to

Part 2

Preamble

The customers loved the first delivery so much that they decided to expand the project by

  • Adding functionality
  • Adding a GUI

To this end, they provided the teams with additional story cards that describe the additional requirements.

Being extremely good at drawing, they also provided a sketch of the GUI they envision for the tool.

Instructions

  1. Break down the story cards in (development) task cards
  2. Write a set of JUnit test cases that cover the additional functionality
    • Use your judgment and the guidelines provided in the videos to decide when the set of test cases is adequate
    • The set of test cases should include (1) tests for all relevant methods of the new classes you plan to develop for this second iteration, and (2) tests that target the new or modified functionality in existing classes
    • The set of test cases should include at least two JUnit test cases for the GUI you will develop
  3. By the due date, commit and push to GitHub:
    1. The task cards, which you will put in a newly-created directory called TaskCards
    2. The test cases, which you will add to the testcases package

Story Card 1

Instructors and TAs use the GradesTool application to get information about the students’ performance. They can pick the name of a student from a list, and the application shows the student information. A possible GUI for the tool is the following:

Screen Shot 2013-12-31 at 2.49.57 PM.png

Story Card 2

Using the tool, users can see a student’s name, GT ID, e-mail address, project information, and assignment information. Project information includes, for each project, the student’s team grades, the average grade across teams, and the average contribution received by the student from his/her team members. Analogously, assignment information includes, for each assignment, the student grade and the average grade for the class.

Story Card #3

The users of the tool can select a student and save his/her information in a file named after the student (e.g., LaraineSmith.txt)

Part 3

Write the code that would make the set of test cases you wrote for Assignment 2 (plus the ones possibly added by instructor and TA) pass.

Placement in Course

You can find the video introducing the project here.