CSC216 Lab 02: Software Engineering Best Practices
For Lab 02, you will test the PackScheduler
project you developed in Lab 01. For Lab 01, your project was evaluated against the teaching staff test suite. Now you will develop your own test suite to demonstrate that your program meets the PackScheduler
requirements.
Learning Outcomes
- Write unit tests for
Student
,StudentRecordIO
, andStudentDirectory
- Achieve at least 80% statement coverage when executing your tests against
Student
,StudentRecordIO
, andStudentDirectory
- Use code coverage tools to identify other paths to test
- Use static analysis tools to identify potential problems
- Write and run black box tests
- Find an fix any bugs detected during testing
Lab Deadlines & Jenkins Servers
All labs are due 10 minutes before the start of the next lab. Additionally, each lab section has their own dedicated lab Jenkins server. The table below provides the deadline and server URL for each lab section for the current semester.
Reminder: Jenkins Certificate Warnings
You will receive a certificate warning about a self-signed certificate when accessing the Jenkins servers for CSC216. All of the certificates for CSC216 Jenkins servers were self signed personally by Dr. Heckman. Please accept the exception each time you visit a Jenkins server.
Also note that permissions to the Jenkins server are at the job level. If you have no permissions to any job, you will be unable to sign into the Jenkins server. Once jobs are created, you will be able to sign in.
Lab Section | Deadline | Jenkins Server Link |
---|---|---|
Section 201 | 2/7/2022 10:30am | https://csc217-201-jenk.csc.ncsu.edu/jenkins/ |
Section 202 | 2/7/2022 12:40pm | https://csc217-202-jenk.csc.ncsu.edu/jenkins/ |
Section 203 | 2/7/2022 2:50pm | https://csc217-203-jenk.csc.ncsu.edu/jenkins/ |
Section 204 | 2/7/2022 5:10pm | https://csc217-204-jenk.csc.ncsu.edu/jenkins/ |
Section 211 | 2/8/2022 8:20am | https://csc217-211-jenk.csc.ncsu.edu/jenkins/ |
Section 213 | 2/8/2022 2:50pm | https://csc217-213-jenk.csc.ncsu.edu/jenkins/ |
Section 214 | 2/8/2022 5:10pm | https://csc217-214-jenk.csc.ncsu.edu/jenkins/ |
Section 222 | 2/9/2022 12:40pm | https://csc217-222-jenk.csc.ncsu.edu/jenkins/ |
Section 223 | 2/9/2022 2:50pm | https://csc217-223-jenk.csc.ncsu.edu/jenkins/ |
Section 231 | 2/8/2022 11:45pm | https://csc217-231-jenk.csc.ncsu.edu/jenkins/ |
Section 601 | 2/8/2022 11:45pm | https://csc217-601-jenk.csc.ncsu.edu/jenkins/ |
Lab Rubric
You will be evaluated out of 70 points in the Technical Rubric. Synchronous students will also be evaluated on their teaming: a combination of In-Lab Participation and Out-Lab Participation. Collaborating Asynchronous students will also be evaluated on their participation in their pair.
Pair/teams are expected to work together on all aspects of the lab activity. Points may be deducted for not contributing or for not providing a partner the opportunity to contribute. The teaching staff strongly encourages working synchronously and requires that these collaborative sessions are documented in GitHub commit messages for the teaching staff to note the team contribution.
Technical Rubric
Phase | Grade Item | Points | Details |
---|---|---|---|
Teaching Staff Unit Tests | 10 | Pass all of the teaching staff unit tests, both provided and hidden. | |
Student Unit Tests | 10 | Pass all of your unit tests. | |
Student Test Coverage | 10 | 80% statement/line coverage on Student, StudentRecordIO, and StudentDirectory | |
Teaching Staff System Tests | 10 | Pass all of the teaching staff system tests (note that they will not be provided). | |
Student System Tests | 15 | Pass all of your black box tests. | |
Javadoc Comments | 5 | All classes, including the tests are commented with meaningful comments. | |
Javadoc Generation | 5 | Javadoc tool was used to generate the HTML version of the API, which matches the current version of the in-code Javadoc. | |
Style | 10 | Any PMD, CheckStyle, or SpotBugs Scary or Scariest notifications will result in a one point deduction, up to the available points. | |
Total Points | 75 |
Synchronous Collaboration Rubric
Grade Item | Points | Details |
---|---|---|
In-Lab Collaboration | 10 | PTFs will be looking for collaboration with your partner during lab activities. Did you participate in completing the lab assignment? Did you balance your roles of driver and navigator? There will be deductions for observations of non-participation or hogging of one role or the other so a partner cannot participate. |
Out-Lab Collaboration | 10 | Did you make at least one meaningful commit to GitHub for completing the lab (e.g., meaningful means that the commit has to contribute to the solution and isn't superficial)? If you pair programmed, is it noted in the commit message? Did you not allow your partner, who wanted to contribute, to commit? |
Tasks | 5 | Did you add your tasks for the lab to the top of the README file? Did you include owners? Did you include internal deadlines? Are the tasks shown as complete with any other needed updates (e.g., the person who completed or helped with the task changed) |
Collaboration Check-in | 5 | Did you complete the collaboration check-in on time? |
Asynchronous Collaboration Rubric
Grade Item | Points | Details |
---|---|---|
Collaboration | 10 | Did you make at least one meaningful commit to GitHub for completing the lab (e.g., meaningful means that the commit has to contribute to the solution and isn't superficial)? If you pair programmed, is it noted in the commit message? Did you not allow your partner, who wanted to contribute, to commit? |
Tasks | 5 | Did you add your tasks for the lab to the top of the README file? Did you include owners? Did you include internal deadlines? Are the tasks shown as complete with any other needed updates (e.g., the person who completed or helped with the task changed) |
Collaboration Check-in | 5 | Did you complete the collaboration check-in on time? |
Deductions
Grade Item | Points | Details |
---|---|---|
Misnamed file or incorrect project structure | -5 | Incorrect names of files or incorrect project structure. This can include problems when importing the project to Eclipse for acceptance testing, incorrect location of the system test file, incorrect file extension, etc. |
Other deductions | -5 | If the project has to be manually graded due, you will receive a 5 point deduction. Make sure that your project builds on Jenkins! |
Extra Credit
Grade Item | Points | Details |
---|---|---|
Over 90% Statement Coverage | 1-3 | One point of extra credit for each class with over 90% statement coverage. |
100% Statement Coverage | 1-3 | One point of extra credit for each class with 100% statement coverage except for the paths described in the writeup (in addition to the points earned for the 90% statement threshold). |
100% Condition Coverage | 1-3 | One point of extra credit for each class with 100% condition coverage except for paths described in the writeup (in addition to the points earned for the 90% & 100% statement threshold). |