1
h06
CS48 W19
Name:
(as it would appear on official course roster)
Umail address: @umail.ucsb.edu section
4pm, 5pm, 6pm
Optional: name you wish to be called
if different from name above.
Optional: name of "homework buddy"
(leaving this blank signifies "I worked alone"

h06: Acceptance Testing

ready? assigned due points
true Thu 01/31 04:00PM Wed 02/06 02:00PM

You may collaborate on this homework with AT MOST one person, an optional "homework buddy".

MAY ONLY BE TURNED IN IN THE LECTURE/LAB LISTED ABOVE AS THE DUE DATE,
OR IF APPLICABLE, SUBMITTED ON GRADESCOPE. There is NO MAKEUP for missed assignments;
in place of that, we drop the three lowest scores (if you have zeros, those are the three lowest scores.)


https://ucsb-cs48.github.io/w19/hwk/h06/

For this homework, please read this brief glossary entry about unit testing and acceptance testing:

Then read these more detailed articles on how to write acceptance tests. Note here that “acceptance tests” and “acceptance criteria” can be used interchangably.

  1. (10 pts) Please fill in the information at the top of this homework sheet, including your name and umail address. Put the time your discussion section starts (4pm, 5pm, 6pm) in the space indicated (the one you are registered for—even if you usually attend a different one.) If the other two items apply, please fill them in as well. Please do this every single time you submit homework for this class.
  2. (10 pts) What is at least one thing that unit tests and acceptance tests have in common?

    Answer as if you were at a job interview. For full credit, give an answer that reflects deep understanding (and would help you get the job) rather than one that is “technically correct” but reflects only shallow understanding, or no understanding. An example of the kind of answer that I do not want is: “both of them have the word test in the name”. That is certainly true, but shows no understanding.

  3. (10 pts) What is the essential difference between unit testing and acceptance testing?

    Again, answer as if you were at a job interview. For full credit, give an answer that reflects deep understanding (and would help you get the job) rather than one that is “technically correct” but reflects only shallow understanding, or no understanding. An example of the kind of answer that I do not want is: “both of them have the word test in the name”. That is certainly true, but shows no understanding.

  4. Choose an existing user story from the application your team is writing for CS48. You are going to produce an acceptance test for that user story.

    1. (10 pts) Remind us of the 1-sentence description of your product.

    2. (10 pts) Write the user story you have chosen (in the form of as a/an x I can y so that z)

    3. (10 pts) Using the GIVEN-WHEN-THEN format illustrated in http://bit.ly/cs48-w19-h06-article, write one acceptance test for this user story.

  5. Now, look at the example http://bit.ly/cs48-w19-h06-article again, reading about how acceptance tests are paired with a rule. Choose either an existing user story from the application your team is writing for CS48, or come up with a new one—one that would be amenable to writing user stories in this fashion (paired user stories along with a rule.)

    1. (10 pts) Write the user story you have chosen (in the form of as a/an x I can y so that z). It should be a different story from the one chosen above.

    2. Following the example format of http://bit.ly/cs48-w19-h06-article, write:

      • (10 pts) A rule that your pair of acceptance tests will test
      • (20 pts) A pair of acceptance tests using the GIVEN-WHEN-THEN format that goes with the rule specified.
        Note that these pairs typically show two different cases of the rule being enforced; yours should too.