##Code Coverage a) Casos de prueba de Statement Coverage 1. input my_debt = Debt.initialize(1,1000,false) input pay_debt => (1000, my_debt) output "Debt paid.", "But your balance is $0 now.", 0 2. input my_debt = Debt.initialize(1,1000,true) input pay_debt => (1000, my_debt) output "The debt is already paid.", 1000 3. input my_debt = Debt.initialize(1,100000,false) input pay_debt => (1000, my_debt) output "Insufficient funds.", 1000 Casos de prueba de Branch Coverage 1. input my_debt = Debt.initialize(1,1000,false) input pay_debt => (1000, my_debt) output "Debt paid.", "But your balance is $0 now.", 0 2. input my_debt = Debt.initialize(1,1000,true) input pay_debt => (1000, my_debt) output "The debt is already paid.", 1000 3. input my_debt = Debt.initialize(1,100000,false) input pay_debt => (1000, my_debt) output "Insufficient funds.", 1000 4. input my_debt = Debt.initialize(1,1000,false) input pay_debt => (10000, my_debt) output "Debt paid.", 9000 Casos de prueba de Condition Coverage 1. input my_debt = Debt.initialize(1,1000,false) input pay_debt => (1000, my_debt) output "Debt paid.", "But your balance is $0 now.", 0 2. input my_debt = Debt.initialize(1,1000,false) input pay_debt => (10000, my_debt) output "Debt paid.", 9000 3. input my_debt = Debt.initialize(1,1000,true) input pay_debt => (1000, my_debt) output "The debt is already paid.", 1000 4. input my_debt = Debt.initialize(1,100000,false) input pay_debt => (1000, my_debt) output "Insufficient funds.", 1000 5. input my_debt = Debt.initialize(1,100000,true) input pay_debt => (1000, my_debt) output "The debt is already paid.", 1000 b) ![](https://i.imgur.com/HwReE75.jpg) Branch Covarage 1. No cumple en un 100% por que que no tiene un numero que sea divisible por 4, por 100 y no por 400. 2. Tiene un 100% de Branch covarage Condition Covarage Por la forma como estructuramos el problema es codition covarage es el mismo en este caso. Ya que en este caso todas las codiciones logicas equivalen a las branches, pero esto no es siempre cierto (Si por ejemplo habriamos echo un if de si div 4 and div 400 esto no seria verdadero) 1. No cumple en un 100% por que que no tiene un numero que sea divisible por 4, por 100 y no por 400. 2. Tiene un 100% de Conditiosn covarage b) 1. Si es aceptable dado que a mayor cobertura mayores son los costos por concepto de testing. Existe un trade off entre costo y el riesgo, por lo que es aceptable segun el riesgo que se quiera asumir. 2. Un ejemplo son los test de black-box donde se desea hacer test más rápidos y sin necesariamente saber el detalle del software, queriendo evidenciar los requisitos. Donde para los test si serían confiables para esa etapa en particular. Ademas existen otro tipos de testeos como de aceptacion y sistema donde el code coverage no es una forma factible de medir estos tests. 3. No, dado que aunque se diseñe una batería de tests que logre un 100% de covarage, esto no garantiza que los test esten bien hechos y se este testeando lo que se deba testear. Esto puede ocurrir por ejemplo cuando un test revisa el output de una funcion y el punto de comparacion es erroneo.