Revised: 10 April 2014
This lab was developed by Dr. Walt Schilling; all errors in its adaptation are the responsibility of the instructor.
In this lab, you will work in a small team (2-3 members) to implement and test (using input domain modeling) software for calculating the date for a future dental appointment. You may not do this lab by yourself.
The scheduling of dentist appointments must be often be done in compliance with insurance company rules. Normal, healthy adults, are permitted routine cleaning visits twice per year. Diabetics can visit more often, up to 4 times per year for regular cleanings.
In this lab, you are to construct a class that will be part of a larger system. This "schedule calculator" class will determine when the next dental visit can be scheduled, based on the current date and a condition code indicating whether the patient is "normal", diabetic, or high risk.
- For "normal" patients, the next visit must be scheduled at least 183 days in the future, but only on a weekday (Monday through Friday).
- Diabetic scheduling is similar, but may be 92 days or more in the future.
- High risk patients (who have had multiple dental problems and needs greater care) can be seen every 61 days.
Divide your team into two parts (1-1 or 1-2):
- One subteam is responsible for writing a set of TestNG test cases
that will fully exercise the scheduling class, verifying that the program correctly calculates the next date.
The testing must be robust and complete, and cover all appropriate input domains.
- Hint: Leap year versus non-leap year is one thing to consider.
- The other subteam will write a class to perform this date calculation. The class must be compliant with the supplied IDentalAppointmentScheduler interface (in lab5.zip).
- Please put your appointment scheduler class and your TestNG test class in the "username1_username2_username3" (using underscores, not dashes) package where each "usernameN" is the MSOE email username of a team member), in the src directory tree.
Since date calculations can be complex, it is recommended that you use an external tool to determine your dates for testing purposes. For example, Excel has extensive date manipulation capabilities, and can be used to verify date offsets.
Assignment submission (due by 11:59PM CDT, Tuesday, April 15)
Prepare a PDF report (named "SE2832-username1-username2-username3-Lab5.pdf" (using dashes, not underscores, with the specified capitalization), where each "usernameN" is the lowercase MSOE email username of a team member) on your lab experience, including:
- Your names and assignment identification ("SE-2832 Lab 5")
- A description of the input domain modeling approach you used (e.g., interface-based, functionality-based, or some hybrid) and the way you divided up the input domain for your test cases.
- Your description of the lab experience and any remaining questions that you have.
- The location of your final test code and source code, in one team member's Bitbucket repository.
If you have any questions, consult the instructor.