Tenemos un sitio web multilingüe en el que se descubrió un error hace unos días. Estaba mostrando datos de otros idiomas en otro idioma y también se seleccionó la combinación de datos como el idioma inglés, pero también mostraba datos de otros idiomas en la página y viceversa. Lo hace con poca frecuencia pero está presente en el sitio web. Revisar el código tampoco ayuda porque esto no siempre ocurre.
¿Alguna sugerencia para encontrar el problema de manera oportuna? Estoy pidiendo estrategias aquí.
web-development
testing
bug
maz3tt
fuente
fuente
Respuestas:
El primer paso es tratar de caracterizar lo que puede causar este tipo de problema. Como esto está relacionado con la selección del idioma correcto para las secciones del código, comience por considerar lo siguiente:
Ahora, una vez que ha caracterizado a las posibilidades de lo que puede salir mal, es el momento para asegurarse de que tiene los datos que necesita para tratar de averiguar lo que hizo mal camino.
Finalmente, una vez que haya reducido el problema hasta el punto en que sepa cómo reproducirlo y qué lo causa, escriba la prueba automatizada más pequeña que pueda para forzar el problema en el código. Si ha reducido el problema a una clase, o un par de clases que no funcionan juntas correctamente, reprodúzcalo en ese nivel. No debería tener que generar 100 hilos para hacerlo, solo haga la prueba más pequeña que puede causar que el problema ocurra el 100% del tiempo.
Ahora puede solucionarlo y tener la confianza razonable de que no volverá a morderlo nuevamente.
fuente
El error no es irreproducible. Simplemente no has descubierto cómo reproducirlo todavía.
Ningún error es aleatorio a menos que esté lanzando una excepción basada en el valor de retorno de alguna instrucción Random ().
Sé que esto puede parecer una semántica, pero es tranquilizador mentalmente decirte esto a ti mismo.
Es muy difícil y frustrante descubrir cómo reprobar un error que solo ocurre debido a condiciones de carrera complejas o similares.
En cuanto a cómo encontrarlo, activaría / agregaría algunos registros a la aplicación en lugares que podrían brindarle más información.
Luego diga a las personas que están viendo el error (ya sean Devs, QA, usuarios finales) que informen tan pronto como lo vean con el momento en que sucedió y luego consulten sus registros. Pídales otra información, ya que el error solo puede ocurrir debido a la interacción de varios sistemas diferentes o debido a una condición de carrera
Esperemos que puedas encontrar una pista.
fuente
Puede intentar encontrar lugares en su código donde pueda reconocer que ocurrió el problema (parámetros inconsistentes en un método, por ejemplo), agregar las verificaciones a su código y dejar que agreguen información adicional al registro de depuración (como un seguimiento de pila, objetos agregado a la sesión, etc.)
Al hacerlo, con un poco de suerte, puede capturar información sobre los sucesos y deducir su camino de regreso al problema.
fuente
La automatización debería ayudar, si son los mismos pasos para reproducir que a veces fallan, automatizar eso y ponerlo en un bucle. Corre 50,000 veces y es muy probable que ocurra.
fuente
intente encontrar patrones para precisar las condiciones que hacen que este problema se manifieste. Eso debería apuntar hacia las secciones de su código que fallan (o se comportan de manera inconsistente).
fuente
¿Puedes detectar cuándo está ocurriendo el problema ? Si es así, ¿puede volcar de manera confiable la información sobre el estado del sistema en ese punto?
Si la respuesta a ambas preguntas es sí, instrumente su código para registrar tanta información como sea posible cuando realmente ocurra el error, luego espere.
Esto no es un reemplazo de lo que otros han sugerido (todavía tendrá que razonar sobre cómo el código puede entrar en el estado que está viendo), pero mientras no pueda reproducir el error a voluntad, Es una buena idea no perder las ocasiones en que aparece.
fuente