Homework 5

caution
  • You are expected to work individually.
  • Due: Monday April 7th at 11pm EST (Baltimore time).
  • This assignment is worth 50 points.
Objectives
  • Debugging Basics
  • Usability Testing
  • Load Testing Metrics

Task 0 (23 points)#

Answer the following questions in details:

  1. What are the differences between testing and debugging?
  2. How testing and debugging complement each other?
  3. Is testing necessarily a prerequisite of debugging? Explain.
  4. The original ddmin() algorithm finds only one possible 1-minimal input i.e. an input where removing any single character makes the failure disappear. Sketch an extension of ddmin() algorithm named ddminAll() that finds ALL possible 1-minimal inputs.
  5. Why throughput is a valuable and important metric when it comes to load testing? Explain clearly with at least two reasons.

Task 1 (12 points)#

The function bool geegg(String s) returns:

  • true, i.e. failure, if the string s contains three g characters or more,
  • true, i.e. failure, if the string s contains two e characters or more,
  • false, i.e. no failure, otherwise.
    For instance, geegg("good eggs tomorrow") returns true, and geegg("no eggs today") returns false.

Apply ddmin() algorithm on the following inputs:

  1. a-debugging-exam
  2. as-easy-as-pie

Write down all the steps ddmin() would take to simplify these inputs.

Task 2 (15 points)#

Consider the following three "authentication" views. Rank them in the order of usability (i.e., most usable to least usable). Back up your suggested ranking with at least 5 usability reasons.

Submission#

Submission

Submissions should be made to Gradescope. Create a zip file named hw5.zip which contains all the deliverables for all the parts. For each task, create a separate folder named taskX, where X is the part number, under which you put all the deliverables for that task. For each task, make sure to submit all the necessary deliverables including JUnit test classes (.java files NOT .class files), documents, reports etc.

danger

Important Note: If any of your .java files is not compilable/executable for any reason, you will receive a zero for that part. Thus, please make sure all the source files you hand in successfully compile and run!