Cómo manejar los errores que creo que solucioné, pero no estoy completamente seguro

13

Hay algunos tipos de errores que son muy difíciles de reproducir, ocurren muy raramente y aparentemente al azar. Puede suceder que encuentre una posible causa, la solucione, pruebe el programa y no pueda reproducir el error. Sin embargo, como era imposible reproducir de manera confiable el error y ocurría tan raramente, ¿cómo puedo indicar esto en un rastreador de errores? ¿Cuál es la forma común de hacerlo?

Si configuro el statusa fijo, y el solutionfijo, significaría algo completamente fijo, ¿no?

¿Es una práctica común establecer lo statusfijo y lo solutionabierto para indicar a los evaluadores que "probablemente sea fijo, pero necesita más atención para asegurarse"?

Editar: la mayoría (si no todos) los rastreadores de errores tienen dos propiedades para el estado de un error, tal vez los nombres no son los mismos. Por statusquiero decir nueva, asignado, fijo, cerrado, etc. , y por solutionque quiero decir abierta (nuevo), fija, sin solución, no es reproducible, duplicado, no es un error , etc.

vsz
fuente
3
Esto es algo específico para su rastreador de errores. ¿Qué otros valores puede asignar al estado y a la solución ?
scarfridge
En algunos rastreadores de errores, hay un estado de resuelto y otro de cerrado. Solo las personas de control de calidad pueden establecer el estado como cerrado, pero los desarrolladores pueden establecer el estado como resuelto.
Brian

Respuestas:

8

¿Es una práctica común establecer el estado como fijo y la solución para abrir, para indicar a los evaluadores que "probablemente sea fijo, pero necesita más atención para asegurarse"?

Común o no, esto es lo que hay que hacer de todos modos, y usted expuso por qué usted mismo: no importa cómo, es un buen enfoque para

indicar a los evaluadores que "probablemente esté solucionado, pero necesita más atención para asegurarse"


Nota al margen, incluso si el rastreador de errores en particular no tiene un campo como el que usted describe solution, el desarrollador puede al menos agregar un comentario de forma libre que explique anteriormente.

... y si el rastreador de errores no permite agregar comentarios al problema, entonces debe reemplazarse por uno que sí lo haga. La capacidad de agregar aclaraciones de forma libre es una característica críticamente importante ya que los problemas varían demasiado para ajustarse a algún formulario predefinido.

mosquito
fuente
6

El equipo de prueba decidirá si el problema se ha resuelto y si puede cerrarse. Si hay más regresiones, efectos secundarios de la solución, o si la solución en sí misma no es efectiva en otro escenario, el problema se volverá a abrir. Pero si ha realizado suficientes pruebas de desarrollador, es mejor marcarlo como fijo.

eminemence
fuente
+1: esta es la respuesta más simple. Si ha hecho todo lo posible, y el conjunto de pruebas de los equipos de prueba es lo suficientemente fuerte, ¿qué más puede hacer?
ozz
3

Hay tipos de errores que son muy difíciles de reproducir, ocurren muy raramente y aparentemente al azar. Puede suceder que encuentre una posible causa, la solucione, pruebe el programa y no pueda reproducir el error.

En realidad, si no hay un escenario de prueba reproducible, ni siquiera trataría de solucionarlo de antemano. Si quieres que el probador le preste más atención, dales la oportunidad de crear un escenario reproducible.

Por ejemplo, supongamos que cambia el programa, y ​​un probador invierte 1 hora en intentar reproducir el error, y el error no aparece: ¿fue suficiente una hora? ¿O las pruebas adicionales son una pérdida de tiempo porque el error ya se solucionó?

Por otro lado, cuando no cambia el programa y el error no aparece en 1 hora, lo más probable es que el probador invierta otra hora en probar cosas diferentes. Y cuando el probador invierte un día y ya no puede reproducir el error, ¿realmente vale la pena intentar solucionarlo?

Dicho esto, puede pensar en cómo modela ese proceso en su sistema de seguimiento de errores: no tratar de arreglarlo y entregarlo a los probadores puede ser un estado de error como "abierto". Si los evaluadores no pueden reproducirlo, obviamente es "no reproducible". Con suerte, esto no sucede, encuentran un escenario reproducible, puede encontrar la causa raíz de su error, solucionarlo y establecer el estado en "fijo". Trate de evitar meterse en algo como "no sé si está arreglado".

Doc Brown
fuente
44
Para ciertos tipos de errores, simplemente no existe un escenario de prueba reproducible. Por ejemplo, un error relacionado con el tiempo podría ocurrir 1 vez en un millón en promedio , pero es imposible predecir si ocurrirá en la 3ra o 532454a carrera. Sin embargo, tales errores son errores y deben corregirse.
Joonas Pulakka
3
@ Joonas Pulakka: Estoy de acuerdo. Y tales errores pueden depender de circunstancias externas. En caso de incrustarse, pueden depender de sobretensiones causadas por algo fuera de su control. No intentar solucionarlo no siempre es la mejor solución, especialmente si encuentro un olor a código que sospecho que puede ser la causa de ese error. En este caso, ¿por qué no debería solucionarlo?
vsz
2
@JoonasPulakka: según mi experiencia sobre escenarios reproducibles, en la mayoría de los casos en que la gente dice "no es posible", simplemente se pierden la idea correcta de hacer las cosas posibles. En su ejemplo, uno podría configurar un escenario con un ciclo de "10 millones de ejecuciones", haciendo que al menos sea muy probable que muestre el error en un tiempo razonable.
Doc Brown
2
@vsz: debería solucionarlo, por supuesto, pero lo que sugiero es que primero se debe crear una prueba (o dar a los evaluadores una pista sobre qué probar), y luego corregirlo, no al revés.
Doc Brown
2
@DocBrown tiene razón, otra forma de pensarlo es que a veces los errores requieren un enfoque estadístico para "reproducirlos". Es muy posible que exista un conjunto muy específico de entradas / circunstancias que reproduzca el error, pero es posible que NO tenga idea de cuáles son estas entradas y el conjunto de posibles entradas puede ser demasiado grande para iterar. En estos casos, un enfoque es recopilar estadísticas sobre la aparición de errores cada vez que intente solucionarlo. Puede llevar mucho tiempo, y los resultados pueden no darle el 100% de "confianza" en un sentido estadístico, pero a veces eso es todo lo que tiene.
Angelo
0

A veces, la única evidencia que tiene es puramente estadística, por ejemplo, ocurre una o dos veces al mes, pero aparentemente no está relacionada con nada. En general, este es el peor tipo de error para diagnosticar y resolver que he encontrado, porque no se puede saber si sus soluciones tienen algún efecto con certeza. El último de estos que tuve que resolver terminó con una solución estadística: la frecuencia de los síntomas bajó al 10% con la que comenzamos. La pieza final nunca se encontró, o tal vez sí, pero nadie tenía forma de saberlo.

Dos consejos que tengo son: (1) asumir que múltiples causas podrían estar en vigencia hasta que se sepa lo contrario, y (2) plantear la hipótesis de cómo podrían existir los síntomas, luego desgarrar cada línea de lógica que está remotamente involucrada. Los recorridos profundos son a veces el único medio para un fin satisfactorio.

Chris Cochran
fuente