What Should I Test?
Kyle Coberly
kylecoberly.com
- Educator
- Business Dork
- Software Developer
What Needs To Be Tested?
function getInsurancePremiumFactor(age){
if (age >= 18 && age < 24) {
return 1.75;
} else if (age >= 24 && age < 60) {
return 1;
} else if (age >= 60) {
return 1.35;
}
}
Equivalence Partition Boundaries
18
24
60
Equivalence Partitions
Boundaries
Test Cases
- 18
- 23
- 24
- 59
- 60
18
24
60
- 17?
- Number.MAX_SAFE_INTEGER?
What do we get?
We can fix this piece of shit...
function getInsurancePremiumFactor(age){
if (age >= 18 && age < 24) {
return 1.75;
} else if (age >= 24 && age < 60) {
return 1;
} else if (age >= 60) {
return 1.35;
}
}
function getInsurancePremiumFactor(age){
return insurancePremiumFactors()[getAgeGroup(age)];
}
function getAgeGroup(age){
return ageGroups().find(ageGroup => {
age >= ageGroup.minimumAge
&& age < ageGroup.maximumAge
}).label;
}
function ageGroups(){
return [{
minimumAge: 18,
maximumAge: 24,
label: "youngAdult"
},{
minimumAge: 24,
maximumAge: 60,
label: "adult"
},{
minimumAge: 60,
maximumAge: 100,
label: "senior"
}];
}
function insurancePremiumFactors(){
return {
youngAdult: 1.75,
adult: 1,
senior: 1.35
};
}
...Confidently!
Other Equivalence Partitions
- Strings
- Numbers
- Collections
- Domain-Specific
Kyle Coberly
kylecoberly.com
What Should I Test?
By Kyle Coberly
What Should I Test?
Presentation for DenverScript, April 2019
- 1,234