Busca errores como una forma de vida


El desarrollo de analizadores de código estático y la lucha por la calidad de los proyectos de código abierto durante más de seis años no pudieron sino afectar mi interacción con los programas después de horas. Desafortunadamente, constantemente encuentro varios errores y, aún más desafortunadamente, es casi imposible influir en esto. Decidí recopilar algunas historias sobre errores interesantes y su solución o ignorarlos. Le presento un formato alternativo para un artículo sobre la búsqueda de errores en programas que usualmente llenan el blog PVS-Studio.

Introduccion


En la vida cotidiana, ya usamos sitios web y aplicaciones móviles con más frecuencia que las aplicaciones informáticas. Hay muy pocos proyectos de código abierto en esta área. La mayoría de los proyectos son productos de grandes empresas con varias líneas de soporte. Informar un error a través de la primera línea de soporte es una actividad casi inútil. El problema es especialmente grave con las aplicaciones bancarias. ¿Qué hay de los sitios? Los propietarios de sitios a menudo no tienen un equipo de desarrollo en absoluto. Y si se proporciona un servicio a través del sitio, la comunicación con los gerentes de estos servicios es aún peor que con la primera línea de soporte. Las historias más interesantes estarán a continuación. Espero que ayuden a las empresas a prestar atención a la calidad de sus productos de software.

Errores en los sitios


2x2 canal de televisión



Quizás 2x2 es el único canal de televisión que veo. No he conectado ningún televisor, y quedé muy satisfecho cuando apareció la transmisión en vivo en el sitio. Tener un televisor con acceso a Internet, fue una solución ideal para mí para ver un canal de televisión en línea. Pero en realidad resultó ser mucho más complicado.

Vivir a través del navegador en el televisor no funcionó. Porque informar de errores a los desarrolladores es parte de mi carrera, rápidamente encontré contactos en el sitio web oficial e intenté informar un problema. ¿Por qué lo intentaste? Durante 2 meses no fue posible recibir ninguna respuesta de dos direcciones postales. Y el grupo VK no respondió nada sensato (el vendedor, promoviendo el grupo en las redes sociales, claramente no dependía de mí con un sitio que no funciona).

Pero no me desespere. El problema estaba claramente en la transmisión y pude rastrearlo. Ella vino de los servidores de Rutube. Tardó aproximadamente un mes en tratar de contactar a sus especialistas. La comunicación más exitosa ocurrió con el administrador del grupo Rutube en VK. Me dieron los contactos del administrador del sistema. Su colega respondió rápidamente a la carta, y acordamos conectarnos para grabar los registros. Resultó que el servidor no estaba configurado para un cliente tan conectado (TV con Tizen). Tomó 2 horas resolver el problema. Gracias a Alexei Lebedev de Rutube y al administrador del grupo en VK, que fueron los únicos que reaccionaron responsablemente a su trabajo en toda esta cadena de "contactos".

Restaurant MaMa Mia



En el sitio web de MaMa Mia , no puede pagar un pedido en línea. Al menos no me funcionó. Y la razón, como resultó más tarde, es la mala calidad del código. Pero pongámoslo en orden.

Cuando la canasta estaba completamente formada, el botón "Realizar un pedido" no mostraba signos de vida. Y luego en el correo encontré esto:


Cada clic en el botón "inactivo" forma un nuevo pedido. Como puede ver, no me negué el placer de probar a fondo este error: D

No hay formulario de comentarios en el sitio y cualquier otro contacto, excepto el teléfono. Allí, por supuesto, hay gerentes que están lejos de tales problemas. Con el grupo VK de este restaurante la misma situación. No pude obtener contactos más o menos relevantes.

De hecho, este es un problema grave para el negocio, cuando algunas fallas, especialmente con las finanzas (quería pagar el pedido, pero no pude), permanecen invisibles para la administración. Además, incluso nosotros mismos recientemente conseguimos entrar en una situación similar cuando el formulario de solicitud de la clave de prueba se rompió durante cinco días. Lo sentimos mucho por los usuarios perdidos :( Y en el restaurante, aparentemente no.

Al no haber recibido ningún comentario al comunicarme con los gerentes, abrí la consola del navegador y comencé a buscar (por cierto, apenas entiendo el desarrollo web):

¡Sí, esta es una excepción no descubierta! Que belleza Aquí es donde un analizador estático podría ayudar.

Mediante un par de consultas, el motor de búsqueda logró descubrir que este es un contador para Yandex.Metrica. La interpretación de la página simplemente se detiene después de la falla de cualquier componente externo. Como dicen, se asignaron muchos rublos para el desarrollo ... Entonces, ¿por qué se lanza la excepción? Se instaló una extensión de Kaspersky Protect en mi navegador. Desactivar todo tipo de balizas y contadores, aparentemente, está protegido contra el seguimiento, habilitado de forma predeterminada. Esta fue la causa del problema. Luego pedí comida en otro sitio más avanzado técnicamente.

Lamentablemente, este problema es bastante común. Solo después de este incidente, me di cuenta del comportamiento incomprensible de otros sitios que conocí. Espero que los desarrolladores web que vinieron a este artículo tengan más experiencia.

LK Rostelecom




Probablemente, cada ruso tiene una historia de comunicación "interesante" con representantes de Rostelecom. Pero el mío será sobre un pequeño error. En apoyo respondieron que no lo creían, pero los programadores entenderían la broma.

Captura de pantalla de mi cuenta personal:

¿Cuál es la "n" en las iniciales? Así es, es NULO ! .. Porque no todos tienen un segundo nombre, no puedes especificarlo:

La base de datos almacena un valor NULL , los representantes de Rostelecom consideran normal mostrar este valor en la pantalla. En mi opinión, esto es completamente anormal. Quizás solo estoy pensando como programador de C ++, y este valor me alarma: D

Aplicaciones móviles


Pasajeros de los ferrocarriles rusos



Se encontró un error interesante en la aplicación móvil Russian Railways.

Pantalla desde una aplicación móvil:

Leí las respuestas a las preguntas y no entendí nada. Los textos eran completamente incoherentes. Pero después de una página, todo quedó claro:

Los párrafos de documentación se almacenaron en una matriz y se muestran en orden inverso . El desarrollador estropeó algo con la clasificación o los contadores de bucle en el código. En la última versión de la aplicación, este error está solucionado.

VTB-Online



Fue un banco maravilloso con una aplicación conveniente. Pero en el verano de 2019, aparentemente, el gerente "efectivo" vino al equipo y la aplicación salió mal. La mayor ventaja para mí fue un soporte conveniente y rápido. Pero en el verano de 2019, comenzaron los experimentos con el bot en el chat de soporte. Este bot tenía muchos errores. Durante al menos 3 meses, hubo una desincronización dura en el chat de soporte. Nadie respondió los mensajes, el chat estaba vacío y, después de reiniciar la aplicación, resultó que el chat estaba lleno de mensajes de bot, pero se mostraron solo después de reiniciar. Pero entonces la sesión ya estaba cerrada, y con el siguiente mensaje se repitió el mismo error. Por correo electrónico, el soporte de VTB siempre ha respondido rápidamente, pero no ha hecho nada en esencia.

El colmo para mí fue otro error en el chat de soporte, que aún no se ha solucionado:

La aplicación estúpidamente no descarga capturas de pantalla del teléfono en el que se ejecuta la aplicación. Este es un error épico. Rechacé las tarjetas bancarias y mantuve la actividad restante en el banco al mínimo.

Sberbank en línea



Probablemente el banco más bancarizado de Rusia. El tiempo promedio para corregir un error confirmado en mis muchos años de práctica es de 1 año .

Aquí está el caso más atroz, en mi opinión.

Al transmitir las lecturas de dispositivos de medición para el pago de viviendas y servicios comunales (en adelante, ZhKU), le espera una desagradable sorpresa:

La pregunta surge de inmediato por qué mis datos no fueron aceptados, pero un vistazo a la siguiente captura de pantalla explica todo:

Además, explicaré: las lecturas de PU se toman con un punto, y para la entrada en el teclado solo hay un símbolo de "coma".

Este error francamente interfirió con el uso de la aplicación, y a menudo me puse en contacto con el soporte para solucionarlo. Desde el descubrimiento, el error duró 6 meses (febrero-junio). Luego, en la actualización de julio, se solucionó activando el teclado estándar. ¡Pero este no es el final de la historia! ¡El mes siguiente (agosto), en la próxima actualización de la aplicación, el teclado fue devuelto sin el carácter deseado! No sé qué pudo haber sucedido en el equipo de desarrollo, que tuve que hacer una reversión de los cambios, pero dejé de usar el banco. Este fue uno de los muchos errores, y prácticamente no están solucionados.

Conexión con la búsqueda de errores en el código.


La aparición de los problemas y errores descritos tiene ciertas razones. Estos son defectos en el proceso de desarrollo de programas, así como en la organización del trabajo de los empleados en su conjunto. Desde escribir código hasta entregar la aplicación al usuario, hay varios pasos.

Los problemas identificados son, ante todo, la aprobación de los departamentos de pruebas. En las grandes empresas, estos suelen ser grandes equipos de prueba. Pero su efectividad puede sufrir varios factores.

Uno de los factores importantes que empeora el trabajo de los probadores son los errores que podrían corregirse incluso en la etapa de escritura del código. El procesamiento de errores encontrados lleva tiempo a algunas personas. Pero algunos de ellos podrían no llegar a los evaluadores, lo que, a su vez, les ahorró el tiempo. Lo habrían gastado en pruebas más productivas y de mayor nivel.

Por lo tanto, nuestro equipo de desarrolladores del analizador de código PVS-Studio promueve la metodología del análisis estático. Esta es la fase de desarrollo de software que enfrenta la transferencia de la aplicación al departamento de pruebas. En nuestra experiencia, la mayoría de los errores son fallas en la fase de desarrollo. Y se pueden arreglar en una etapa temprana, ahorrando tiempo y dinero.

Desafortunadamente, a diferencia de los programas de código abierto, aquí no tengo forma de verificar independientemente el código en busca de errores. Pero si el código está escrito en C, C ++, C # o Java, entonces sería útil que estos comandos vayan al sitio y ejecuten el analizador en su código. Para los programas de código abierto, esta herramienta hace una gran contribución .

Conclusión


No dejaré de notar errores en el software utilizado. Probablemente esto no sea lo peor que podría haber sucedido. Tengo amigos que trabajan en cine (animación). Entonces notan errores al ver dibujos animados, y esto es inconveniente. En mi opinión, esto es aún peor. Al menos los programas se pueden modificar, a diferencia del metraje.

Como notó, con la asistencia al usuario, todo es completamente malo. Además, esto es típico de las grandes empresas. Es casi imposible para ellos comunicar algo y compartir su experiencia. Logré cierto éxito al asistir a conferencias de desarrolladores. Las grandes empresas a menudo están presentes allí, y algunos problemas realmente pueden discutirse y resolverse.

Si le gusta el nuevo formato para revisar errores e historias con ellos, entonces continuaré en la misma línea.

Source: https://habr.com/ru/post/483742/


All Articles