18-649 Project Assignment #10
Due Thursday April 3, 2008 11:59 PM
Rest of Implementation; Unit Tests; Some Integration Tests
Please submit all project-related correspondence to ece649-staff
"at" ece.cmu.edu
In project 8 you designed a more advanced dispatcher to efficiently deliver
passenger loads. In Project 9 you completed this design by creating unit tests to exercise these control modules, along with the
implementation and testing of your new dispatcher.
Now in Project 10 you are going to finish implementing the rest of your
design, write at least 3 comprehensive integration tests, and actually execute
the tests you previously wrote and new passenger workloads. Instead of simply
running tests, finding bugs and fixing them, we will ask you to create a
test log. This log will allow you and us to quickly see what tests you
have run, their outcome and any changes you had to make. A test log serves as a
simple tool to measure the coverage of your tests and to highlight areas of
your design where there were problems.
Assignment:
Project 10 requires you to write at least 3 comprehensive integration tests,
implement (write the code for) the remainder of your design, execute the tests
you wrote last week (in Project 9), and log their results and submit the files
which have updated and changed as a result of faults found. You can of course
create and execute additional tests even beyond what was in Project 9 if you
wish.
- Finish implementing in Java your improved elevator system. Please follow
the coding guidelines from previous projects. Be sure to include traceability
information (e.g., mark transitions in comments). This means get all the code
done for the entire new elevator functionality.
- Execute all the unit tests you developed in Project 9. Don't wait until the
last minute -- many people find that their tests themselves have bugs in them
that need to be worked out before they will even run, and only then can they
find and correct bugs in the code they are testing. We don't expect you to fix
all the bugs in the elevator this week if you find a lot of them, but we do
expect you to get your tests running and tell us what bugs you'll be fixing the
following week.
- Write a minimum of 3 new integration tests for your new design (more is
better, but this is the minimum). These new tests should differ noticibly from
tests you've previously created or that we've previously provided. The idea is
to get a bit more coverage to get you ramped up for next week, when you'll need
to do thorough integration testing. Execute these tests. Again, the point is to
get the tests running and report results. Fix elevator bugs if you can, but if
you can't that's OK as long as they get fixed next week. We strongly suggest
you run all the integration tests you already have developed, but running the
three new ones is the bare minimum.
- Run the four new passenger tests below and report what happened. If there
are bugs then just say as much as you can figure out in time available. We
don't expect everything to really work this week, but it's important to get a
sense of how you're doing as you go into the test & debug phase for next
week.
Important overall project goal for this week -- get all the tests running
and tell us how it turned out. Fixing elevator bugs should come after getting
all the tests in place. Do as much as you can, but getting pretty good code in
place and creating and debugging the tests themselves is the emphasis
this week. No points off for elevator bugs as long as you are honest about your
test results.
Important note -- as some of you have noticed already, figuring out whether
the elevator is really working in every respect isn't necessarily easy with
just a GUI. Next week we're going to ask you to create some sort of run-time
monitoring (either on line or using log file analysis) to make sure you are
meeting all the elevator high level requirements. This is a good time to get
started, but that won't be a hand-in until next week.
We are providing the following new passenger tests files:
Log Files:
Please include all the results of executing your tests in files with the
name having the form of #TestName#.results where #TestName# is the name of the
test being run. Put the results in the same directory as the corresponding
tests they apply to.
Here are requirements for the test logs:
Create one test log file in tabular form for each phase of test (unit,
sequence diagram, passenger) documenting several aspects of the test. An
example table is presented here as an Excel file.
Your final turn-in of tables must be in PDF format, and fit on one page wide at
most (landscape is OK -- but they have to print one wide with legible font no
smaller than 10 point). This means that your table must not be wider than the
page and require 'stitching' together. Put all these files in the logs
subdirectory and provide pointers from your main project portfolio page
For Unit Testing, your table should have columns for each of the
following:
- Name of test file being run.
- Object or statechart being tested
- Special instructions or conditions for this test. This helps us understand
how you performed your test, but also ensures repeatability for you. You must
provide clear instructions, we will run your tests and must be able to
reproduce your results.
- Expected outcome of the test (pass condition).
- Initial Test outcome ('pass'/'fail').
- If your test failed, what transition or state your test failed in.
- If your test failed, state the source of the failure (the test file
itself, or the control): give the file name, line number, and trace the source
of the failure. This must also be recorded in your defect tracking. If unknown
say so, but you'll need to figure it out by next week.
- Final Test outcome ('pass'/'fail').
For Integration Testing, your table should contain:
- Name of test file being run.
- SD being tested.
- Special instructions or conditions for this test. This helps us understand
how you performed your test, but also ensures repeatability for you. You must
provide clear instructions, we will run your tests and must be able to
reproduce your results.
- Expected outcome of the test (pass condition).
- Initial Test outcome ('pass'/'fail').
- If your test failed, what arc(s) your test failed at.
- If your test failed, list the source of the failure (the test file itself,
or the control): give the file name, line number, and trace the source of the
failure. This must also be recorded in your defect tracking. If unknown say so,
but you'll need to figure it out by next week.
- Final Test outcome ('pass'/'fail').
For Acceptance Tests (passenger tests), your table should contain:
- Name of passenger test file run.
- Brief description of passenger load (deduced from .pass file), such as,
'heavy up-peak traffic, over 20 passengers in 2 minutes.' This will allow you
to see how your elevator performs under many situations.
- Initial Test outcome ('all passengers delivered'/'passengers delivered,
unsatisfactory performance', 'passengers not delivered'). At this stage you can
begin to tune your elevator for passenger workloads. If you are satisfied with
your elevator performance now, know that you will have to improve it later!
- Simulated minutes and seconds required to deliver all passengers (i.e.,
time elapsed in terms of passenger's view of time, not time it took you to run
the simulation in elapsed "wall time").
- If you failed to deliver passengers or improve performance: trace to the
source of the problem, including file names and line numbers, if known. You
must deliver all passengers! Remember defect tracking! Again, if you don't
figure this out this week, OK, but you'll need to provide it later.
- Final Test outcome ('all passengers delivered'/'passengers delivered,
unsatisfactory performance', 'passengers not delivered')
When you fail a test you must eventually correct the problem and be
able to produce a pass -- but that can wait until next week if you have tricky
problems. We encourage you to fix as many bugs as possible, but don't expect
perfect code. Please remember to update your defect tracking in response to
your test failures!
Design portfolio
Your portfolio should be up to date and reflect all changes through this
project.
Hand-in requirements are the same as for previous projects, with any obvious
extensions to accommodate the new items in this project phase.
Grading (75 points):
Grading will be as follows:
- 20 points for code
- 5 points for updated unit tests (bugs in tests themselves fixed)
- 5 points for new integration tests
- 10 points for turning in all .results Files.
- 20 points for unit test log
- 5 points for integration test log
- 5 points for acceptance/passenger test log
- 5 points: what can be improved about this project? Include even
minor bugs so we know to fix them. If you found nothing, then so state.
Note: above points include relevant updates to traceability, change log,
defect tracking, etc.
Note: we are no longer awarding points for having a complete and consistent
design package, nor just for following instructions. Those should be a given at
this point. However, TAs can deduct points from the project for failing to
following turn-in directions or having an end-to-end design package with
blatant gaps.
Back to course home page