SWE 3643 Assignment 3

1)This assignment comes in 3 parts (see below for Parts A,B & C); total is ---- 50 points ---- (form a team of approximately ~4partners by March 31)

2) (Written part ---- Due 4/16/2015class period; 10% late penalty--- but after 4/21/2015 class period the score will be 0)

3)(in-class presentations 4/21/2015 thru 4/23/2015)

Consider the following problem: (Read the whole assignment)

Write a program that will read two inputs, income (inc) and number of dependents (dep). Based on the income, the program will calculate the tax-amount according to the following table.

income / Tax-amount (% of income)
0 < inc ≤ 20000 / 4 %
20000 < inc ≤ 30000 / 5 %
30000 < inc ≤ 40000 / 6 %
40000 < inc ≤ 50000 / 7 %
50000 < inc ≤ 90000 / 10 %
90000 < inc / 13 %

Furthermore, if there is any dependent, then the tax-amount is further decreased accordingly.

Dependent = 1 / 2 ≤ dependent ≤ 3 / Dependents > 3
10% / 25% / 40%

Print out three items: income, # of dependents, and tax amount.

(Part A - 15 points)

Using the requirements statements above, design and show all your test cases using various techniques learned for Functional or Black-box testing (at least include boundary-value and decision-table techniques).

(Part –B – 15 points)

Looking a the pseudo code on the next page, design and show all your test cases using various techniques learned for Structural or White-box testing (at least branch coverage, linearly independent paths, and define-use paths techniques).

(Part – C – 20 points)

Convert the pseudo code to your favorite language code,get it to compile correctly, execute your test cases from part A and B against the code, record all the errors found, and provide an in-class report on your testing results. The in-class report should provide: i)a summary list of your test cases in Part A and test cases in Part B, ii)execution test results (numbers passed and numbers failed – with severity), iii)any fixing or re-test performed, iv) a discussion on the “effectiveness” of your test cases, including how do you know when to stop testing and v)a discussion of your experiences (e.g. what was difficult to design;how much effort did it take to design test cases, execute the test cases and record the material; what was easy and what was not, etc.). (Look at Lecture Notes on Test Planning for hint of Test Result Report.)

Also turn your report into a ppt presentation for in class presentation.

Possible Pseudo –Code (that may contain defects caused by my human errors):

start program

read ( inc, dep)

bracket = 0

if (0 < inc ≤ 20000) bracket = 1

else if ( 20000 < inc ≤ 30000) bracket = 2

else if (30000 < inc ≤ 40000) bracket = 3

else if (40000 < inc ≤ 50000) bracket = 4

else if ( 50000 < inc ≤ 90000) bracket = 5

else bracket = 6

switch (bracket) {

case 1: tax = inc * .04

break

case 2: tax = inc * .05

break

case 3: tax = inc * .06

break

case 4: tax = inc * .07

break

case 5: tax = inc * .10

break

case 6: tax = inc * .13

break

default: output (“ something is wrong with the income bracket computation”)

}

if (dep = 1) tax = tax - (.1 * tax)

else if ( 2 ≤ dep ≤ 3 ) tax = tax – (.25* tax)

else if ( 3< dep ) tax = tax – (.4 * tax)

else tax = tax

output ( “income” = inc, “dependent’ = dep, “tax” = tax )

end program