CS 240 - Testing Assignment

Due Fri Nov 15 at 11:59pm

Overview

For this assignment you will be testing ANOTHER TEAM's project code. This will give you a chance to practice working with "legacy" systems (i.e., maintaining code you didn't write). This may seem like an annoying change of focus (and will draw time away from your own implementation efforts), but it will produce a better overall project and reflects what "real" programming is like--it's more common to fix bugs that other people make than to fix your own!

There will be three steps to this assignment:

  1. A code walkthrough to understand the system you will be testing
  2. Analyzing and debugging the code using a static analysis tool
  3. Writing a small number of unit tests for the code

Most of this work (Steps 1 and 3 in particular) will be completed during lecture, though you will need to write up your results outside of class.

In the end, you will creating a short report summarizing and describing your findings from these activities. While you will be doing some of the works in groups in class, your final written report should be completed individually.

Objectives

Details

1. Code Walkthrough

The first step of this assignment will be completing a code review (really a code walkthrough) of another team's implementation.

2. Static Analysis

The next step of the assignment will be to use a static analysis tool (a linter) to analyze and debug the code you are testing--this will be your partner's code, not yours!

3. Unit Testing

For the last part of this assignment, you will be writing a small number of unit tests for the code your are testing in order to check its function, and to provide the beginnings of a testing suite to the other team.

The Report

You will need to compile the write-ups of the above 3 activities into a single report. This report should include the following:

  1. A summary of the program's structure and details of any problems identified during the walkthrough
  2. A summary of the results of your static analysis, as well as a description of changes you made or bugs you caught
  3. A description of the functions you wrote unit tests for and whether or not the functions passed those tests.

This report need not be very long--each section may be only a page or two. (You should write this report in LaTeX for practice!) Be sure and proofread your work--after all, you want to look like you did a professional testing job before you tell other people what mistakes they made!

When finished, the report should be submitted to the dropbox on Moodle. This is different from our normal process of uploading to github; I will grade the reports and then put organized versions of them on github for the team members to review.

However, you will need to push the changes you've made to the code out to github, so that the development team is able to utilize your unit tests (and include the fixes you implemented based on the linter!)

Submitting

As mentioned above, your report should be uploaded to the Moodle dropbox by midnight on Friday 11/15. You will also need to push out your code changes to the master github repository.

Grading

Your testing assignment will be graded on approximately the following criteria: