Project 7.2: Issue Tracking, Unit Tests, Collaboration

April 4, 2011

Objective

Gain practice pushing and pulling to and from github with your partner. Learn about test-driven development (TDD) by passing some existing unit tests. Learn about issue tracking systems for team communication and coordination.

Prerequisites

You should have completed Project 7.1 and have your application working locally and on staging. Second, you should have watched the Unit 7b screencasts and be working through the reading.

Requirements

Your main goal with this segment is to have an application that passes all unit tests and has all the FIXME's removed. Along the way, you're going to learn about TDD and common development collaboration tools such as bug trackers.

Get a Lighthouse Account

You should have received an email invitation from Lighthouse. This was generated by me. You and your partner will be given an issue tracker. This will be our main point of communication for your project. Sign up for a lighthouse account and be sure you can access your team's project. Once you've logged in, I can start assigning you tickets and you and your partner can assign each other tickets as well.

Fix your FIXMEs

You and your partner should search your entire application for the word FIXME and decide who will fix what. Try to share this burden, because the point is for both of you to collaborate using version control -- a critical skill. To help keep you both coordinated, I recommend you create a ticket for each FIXME that needs addressed, and assign it accordingly. When you fix a FIXME, be sure to reference the ticket number in your commit message. Lastly, close your tickets as you stamp out each FIXME.

Pass your unit tests

We're going to focus on unit tests only. This is the first critical step in learning how to engage in a TDD process. I've created some tests in your application for you already, you can run them via rake test:units. (I also recommend autotest, part of the ZenTest gem and autotest-rails. Use the redgreen gem to colorize test output. None of these are required, but are commonly used by developers.)

You should see errors and failures. This is good! You should create a Lighthouse ticket for each failing test, and assign it to someone on your team.

Next, get the test to pass. The tradition is "the simplest thing that can possibly work," so don't worry about crafting the world's greatest implementation -- just get the test to pass. You can refactor later.

As you pass each test, commit (cite the ticket number in your commit message), push and close the relevant ticket.

Conclusion

If your test suite passes and there are no more FIXME's in your applicaiton, then you're all done with this segment of the project. Good work! At this point you've earned some experience pushing your changes to github and pulling your partner's changes from github; using bug tracking systems to coordinate with your team; and programming in a test-driven manner.

We could spend a lot more time on TDD and other tests for this project, but we're not going to -- we've got so much more to cover!

What's next?

Now it's time to start building your node of our application ecosystem. We begin this in Project 7.3.

Grading criteria (1000 points)

I must be able to pull your repository and not find any FIXMEs and all your unit tests should pass.

These tasks are due by Monday, April 11 @ 11:59PM.