Análisis de errores del año bisiesto de Microsoft Zune
Este código se encuentra dentro del controlador de actualización de fecha integrado de Zune y está diseñado para manejar actualizaciones anuales causadas por años bisiestos. En lugar de resolver el problema, creó un error que pasará a la historia.
El método está diseñado así. Cuando el número de días es mayor a 365 días, ingresará a un bucle while, y si el año es bisiesto, determinará si el número de días es mayor a 366 días, y luego incrementará o disminuirá el año y el número. de días. Si el año es bisiesto, determinará si el año excede 366 y luego aumentará o disminuirá directamente el año y el número de días.
La idea del programador es completamente correcta, pero las condiciones para elegir suma o resta después de determinar si es año bisiesto son un poco caprichosas. Dado que el valor del día del bucle externo es mayor que 365 y el bucle interno del bucle while maneja un valor del día mayor que 366, la situación del año bisiesto dsys = 366 no se procesa, lo que conduce a este error de nivel histórico.
Aunque no podemos revisar cómo ocurrió el error, le recuerda al evaluador: cuanto más básica sea la prueba, menos se puede perder. Dado que el error era lo suficientemente grande, el código que lo produjo fue bastante simple y las pruebas fueron lo suficientemente bajas, no sorprende que haya pasado a la historia.
Nuevamente, enfatice el valor límite. Si desea probar este código, hay dos factores que debe considerar al diseñar su caso de uso. Año y número de días. Durante años, considere los valores verdaderos y falsos de IsLeapYear(). Teniendo en cuenta el número de días en los valores límite 365, 366 y 367, corte estos tres valores límite en el eje numérico y tome los valores. Luego combínelo con el año para obtener los casos de prueba necesarios.