CS375: Software Engineering - Test Plan (100 Points)

Assignment Goals

The goals of this assignment are:
  1. To produce a test plan including unit tests, output tests, and user acceptance tests

Background Reading and References

Please refer to the following readings and examples offering templates to help get you started:

The Assignment

For the test plan, you will create a document that lists and describes all the tests that you will perform to validate your software project. These will become unit tests, integration or output tests, and user acceptance test scripts (that a non-technical user could follow to validate the functionality of your project).

You will develop each of these tests so that they can be performed on your software project, and the results documented in your final software report when the project is finished.

It is important that you achieve appropriate coverage for your tests. This means that your unit tests should achieve 100% code coverage for your project, and that your tests (unit tests and acceptance tests) should cover all of your requirements.

White Box (Unit) Testing

For each software component/method, decision branch, and line of code, ensure that a unit test exercises the program. A good way to start is to create a set of unit tests for each method that cover each code branch and potentially erroneous or boundary input.

Black Box (Output) Testing

Methods that are difficult to test using unit tests can be tested with output tests. Here, you can indicate that you will run a particular portion of the program and verify its output. It is best if these are written in a shell script.

User Acceptance Testing

For each functional requirement, write a script that is appropriate for giving to an end user (a non-technical user) that would allow them to exercise the functional requirement. Indicate what result they should observe if the feature executed correctly. If the requirement depends on other requirements, you can first write the acceptance test script for those requirements, and simply refer to them by acceptance test number (for example: “Precondition: complete user acceptance test #1 to log in”).

Website

Include your report on the project website.

Submission

In your submission, please include answers to any questions asked on the assignment page in your README file. If you wrote code as part of this assignment, please describe your design, approach, and implementation in your README file as well. Finally, include answers to the following questions:
  • Describe what you did, how you did it, what challenges you encountered, and how you solved them.
  • Please answer any questions found throughout the narrative of this assignment.
  • If collaboration with a buddy was permitted, did you work with a buddy on this assignment? If so, who? If not, do you certify that this submission represents your own original work?
  • Please identify any and all portions of your submission that were not originally written by you (for example, code originally written by your buddy, or anything taken or adapted from a non-classroom resource). It is always OK to use your textbook and instructor notes; however, you are certifying that any portions not designated as coming from an outside person or source are your own original work.
  • Approximately how many hours it took you to finish this assignment (I will not judge you for this at all...I am simply using it to gauge if the assignments are too easy or hard)?
  • Your overall impression of the assignment. Did you love it, hate it, or were you neutral? One word answers are fine, but if you have any suggestions for the future let me know.
  • Using the grading specifications on this page, discuss briefly the grade you would give yourself and why. Discuss each item in the grading specification.
  • Any other concerns that you have. For instance, if you have a bug that you were unable to solve but you made progress, write that here. The more you articulate the problem the more partial credit you will receive (it is fine to leave this blank).

Assignment Rubric

Description Pre-Emerging (< 50%) Beginning (50%) Progressing (85%) Proficient (100%)
Black Box and White Box Tests (40%) Unit tests (or output tests) are generally unclear, missing, or inappropriate for the project being tested Unit tests (or output tests) are given for each software method or component, but some boundary or erroneous inputs are missing that would result in a more robust test plan Unit tests (or output tests) with appropriate inputs are given for nearly all software methods or components Unit tests (or output tests) with appropriate inputs are given for each software method or component
User Acceptance Tests (40%) User acceptance test scripts are missing, unclear, or missing dependencies with respect to software requirements User acceptance test scripts are written for many software requirements and are cross-referenced with acceptance tests for many dependent requirements User acceptance test scripts are written in a mostly non-technical voice for nearly all software requirements and are cross-referenced with acceptance tests for dependent requirements User acceptance test scripts are written in a non-technical voice for all software requirements and are cross-referenced with acceptance tests for dependent requirements
Planned Test Coverage (20%) Both the acceptance and software test plans are lacking in coverage Either the acceptance or software test plan is lacking in coverage The acceptance test plan is expected to yield nearly full coverage of software requirements and the unit or output tests proposed are expected to exercise nearly 100% code coverage The acceptance test plan is expected to yield full coverage of software requirements and the unit or output tests proposed are expected to exercise 100% code coverage

Please refer to the Style Guide for code quality examples and guidelines.