¿Cuál es una mejor manera de describir el proceso de "Prueba de idiotas" de una pieza de software [cerrado]

13

Para mí, Idiot Proofing solo significa asegurarse de que el usuario no pueda romper una pieza de software incluso si lo intenta. Por ejemplo, si un valor se lee desde un cuadro de texto y se convierte en un doble, si el software subyacente es a prueba de idiotas, no se romperá si el usuario escribe un valor no doble.

Recientemente escribí un cronograma de desarrollo y uno de los elementos se llamaba "UI a prueba de idiotas". Las personas con las que estoy construyendo este software fingieron en broma el término, pero puedo ver dónde este término realmente molestaría a las personas.

¿Cuál es una mejor manera de decir esto?

sooprise
fuente
23
Llámalo, Prueba ID-10T
Jarrod Nettles
2
Lol, me di cuenta de la 1337 cuando busqué en Google ID-10T. me falló ...
sooprise
13
Esta pregunta me recuerda una de mis citas favoritas: "La programación de hoy es una carrera entre ingenieros de software que se esfuerzan por construir programas más grandes y mejores a prueba de idiotas, y el Universo que intenta producir idiotas más grandes y mejores. Hasta ahora, el Universo está ganando". " ~ Rich Cook
KallDrexx
3
¿Qué hay de la ingeniería básica?
jk.
44
"Nada puede hacerse infalible, porque los tontos son muy ingeniosos".
M.Sameer

Respuestas:

27

Si está incluyendo "UI a prueba de idiotas" como un elemento del programa, entonces solo está tratando de agregar calidad a su software. Cualquier sistema bien diseñado validará sus entradas y brindará una guía clara a los usuarios como algo natural, no es algo que se incluya en el cronograma como un elemento discreto (que luego está sujeto a eliminación cuando llega el inevitable crujido).

Alternativamente, si tiene que ser un elemento discreto (sé cómo piensan algunas organizaciones sobre la programación), la "IU a prueba de idiotas" debe cambiarse a "Biblioteca de validación de entrada" y pasar al principio del cronograma.

Sidra de pera
fuente
2
+1. Si está intentando agregar algún tipo de validación de entrada después del hecho, ya ha perdido bastante. Es mejor tenerlo como punto de referencia en la especificación, "el software debe manejar con gracia las entradas no válidas en cualquier lugar". Exactamente cómo manejar "con gracia" la entrada inválida depende mucho de lo que el software esté haciendo en ese punto en particular. Para IU muy simples (piense quizás en un cajero automático), incluso podría ser posible hacer imposibles las entradas inválidas .
un CVn
14
+1. La prueba de idiotas no es una tarea. A prueba de idiotas es una consecuencia del buen diseño.
S.Lott
44
La prueba de idiotas es un proceso continuo, porque el universo sigue fabricando idiotas cada vez más ingeniosos
Steven A. Lowe
Si bien puede parecer incorrecto y redundante, tenga en cuenta que tanto los diseñadores de interfaz como los beta testers conocían los planos y el diseño general del software, y es posible que simplemente no se den cuenta (pasen por alto) que algo que les parece perfectamente obvio es de hecho completamente desconcertante para un usuario común. "Probar y depurar decisiones de diseño de IU" es lo que podría llamarse. La validación de entrada es una cosa, hacer que el usuario entienda lo que se debe ingresar donde hay otra.
SF.
Para todos los votantes: ... hagas lo que hagas, siempre olvidarás algo. El software es tan complejo que tener un equipo que haga que todo sea "perfecto" en un primer intento es casi inalcanzable. Por eso es necesario realizar pruebas. Para detectar defectos y omisiones, o incluso cosas en las que nadie pensó. Tal "IU a prueba de idiotas" es exactamente lo que se requiere.
Dagnelies
10

Validación de entrada de usuario. Pensé que sería un término profesional. Sin embargo, no veo nada malo con las pruebas idiotas si se usan en documentos internos.

Ben Gale
fuente
3
Me tenías en "validación de entrada de usuario". La prueba de idiotas es un término no profesional independientemente de dónde se use.
Robert Harvey
2
Hagas lo que hagas, no lo pongas por escrito.
JeffO
6

Endurecerse es una buena palabra. Si alguien pregunta, dígales que el primer paso del software generalmente está escrito para escenarios ideales, y al igual que las herramientas de acero, el software debe ser "reforzado" para el uso diario de los clientes reales.

Robustificación es otra buena palabra para esto: está haciendo que el código sea robusto frente a los tipos de desafíos que los clientes reales enfrentarán.

Ambas palabras suenan geniales e industriales, no culpe a los usuarios ni a los programadores, y transmita el punto.


Por cierto, aquí está la vieja mascota de Metrowerks, Arnold, el tipo que solía ayudarnos a los programadores de Mac a endurecer y fortalecer nuestro código con un horno de tratamiento térmico, una fragua y un yunque y un pequeño martillo:

Bob Murphy
fuente
el endurecimiento generalmente se refiere a la tolerancia a fallas del hardware subyacente, o la resistencia a los rayos gamma ;-) la robustez puede significar muchas cosas
Steven A. Lowe
@ Steven: Bueno, sí. Pero esto es para comunicarse con lo que presumiblemente es una audiencia no técnica, y la pregunta es realmente acerca de cómo "girar" la tarea para que sea aceptable para esas personas.
Bob Murphy
eso tiene sentido; la audiencia no técnica probablemente ha visto anuncios de televisión para computadoras portátiles 'endurecidas'. Entonces pensarán que está bien dejar caer su software 3 pies sobre concreto ;-)
Steven A. Lowe
@Steven: Sí, y si han visto el último comercial de computadoras portátiles Toshiba, también se darán cuenta de que si no le dan el tiempo y los recursos para fortalecer el software, provocará el Apocalipsis Zombi. B ^)
Bob Murphy
4

Programación defensiva

Es lo que me enseñaron. Cuando teníamos que cortar nuestros propios pedazos de madera.

Si quieres ser PC, llámalo programación "anticipatoria".

Steven A. Lowe
fuente
4

Cuando estaba aprendiendo, lo llamamos a prueba de balas .

Sin embargo, la mayoría de los otros eufemismos que he leído también se aplican.

Stephen
fuente
3

¿Qué tal un sistema o interfaz de usuario "tolerante a fallas"

Vinod R
fuente
3

La "prueba de idiotas" debe consistir en ambos

  • diseñando la interfaz de usuario para que sea fácil de usar y lleve al usuario a ingresar datos de la manera que los programadores esperan, y

  • probar la interfaz de usuario para determinar si la interfaz puede romperse al ingresar valores de datos inesperados.

Ambos pasos pueden aparecer razonablemente en el cronograma de desarrollo donde el diseño es examinado por un experto en experiencia del usuario y donde el probador verifica el código entregado para garantizar que los datos no válidos se manejen correctamente (para lo que sea que "correctamente" signifique para su aplicación).

Robert Harvey
fuente
No respondiste la pregunta que te hicieron.
Robert Harvey
@Robert - Creo que lo hice. La mejor manera de decir "prueba de idiotas" es "revisar el diseño para mejorar la facilidad de uso" o "probar que la interfaz maneja datos no válidos" dependiendo de qué sentido de "prueba de idiota" se refiera.
Justin Cave
OK, eso tiene sentido.
Robert Harvey
2

La prueba de idiotas implica mucho más que una simple validación de entrada. Ni siquiera incluiría tal cosa en su definición.

La validación de entrada es un proceso en el que desinfecta y valida los datos del usuario para eliminar valores ilegales / sin sentido. Esto siempre debe hacerse con cualquier información que provenga de fuera de su programa para eliminar lo obvio y protegerse de los ataques (por ejemplo, ataques de inyección SQL).

Consideraría que la prueba de idiotas es un conjunto de lógica para evitar que el usuario accidentalmente se cause un gran daño a sí mismo por otros medios legales.

Por ejemplo, rmrechazar el comando rm -rf /y cerrar variantes no tiene nada que ver con la validación o la corrección. Es un comando perfectamente válido. Desafortunadamente, es un comando que podría y puede borrar todos sus datos de todos sus discos en Unix / Linux. La prueba idiota de esto rechazaría este comando y sugeriría rm -rf --i-really-mean-this /, o si está en modo interactivo, que el usuario escriba una respuesta afirmativa después de una advertencia.

Cualquier cosa que sea destructiva para el sistema debe ser a prueba de idiotas. Cualquier cosa que pueda causar vergüenza potencial también podría ser un candidato (por ejemplo, "¿está seguro de que desea enviar este correo electrónico sin un archivo adjunto a pesar de que mencionó uno en su texto?" Y "¿Está seguro de que desea enviar este correo electrónico al toda la empresa? ")

La prueba de idiotas es una colaboración entre QA (tratando de ser el mejor idiota) y Desarrollo (tratando de anticipar todos estos escenarios y diseñar a su alrededor).

En cuanto a un sinónimo más amigable , ¿puedo sugerir "análisis destructivo de ruta de código" o "permitir comentarios de los usuarios para operaciones críticas". Como sea que lo llames, deberías comenzarlo lo antes posible en el proceso de diseño.

poco pitón
fuente
1

"Sanity Checking" tiende a funcionar bastante bien con bastante frecuencia ...

Marlon
fuente
3
Para mí, "comprobación de cordura" significa casi lo mismo que "afirmar": asegurarse de que el estado interno sea correcto. No es realmente lo mismo que la validación de entrada externa.
Mason Wheeler
@Mason, creo que verifica el estado del sistema, en todos los puntos, para obtener información válida que tenga sentido. Por ejemplo, verificar que la fecha de finalización sea posterior a la fecha de inicio, además de verificar la entrada de basura, etc. También veo su punto de vista y estoy de acuerdo con usted.
Marlon
1

"Manejo de errores" o "validación de entrada" serían otros términos que usaría para lo que usted describe. Bulletproof sería otro término que podría ver que se usa en algunos círculos, ya que la idea aquí es hacer que el software sea lo suficientemente robusto como para manejar casi cualquier cosa. Rock solid sería otra frase de argot que podría imaginar a alguien que quiera usar aquí también.

JB King
fuente
1

"Prueba de peor escenario". Porque, como desarrolladores, todos sabemos que si se puede hacer, se hará . Por lo tanto, solo tiene que estar preparado para manejar el peor de los casos con su software.

Las medidas de seguridad no son solo una forma de proteger a los usuarios contra las invasiones cibernéticas externas, sino también contra ellos mismos. Vivimos en un mundo imperfecto con usuarios imperfectos.

usuario29981
fuente
1

Chapado en oro es el término cortés (y muy positivo) que utilizo cuando hablo de mejorar la experiencia de la interfaz de usuario final de alguna manera (GUI u otra).

La prueba de idiotas, como usted dice, es la mayor parte de ese proceso, junto con las mejoras de diseño o flujo de trabajo (piense en el reconocimiento de comentarios del usuario final).

La idea aquí es que puede usar ese término libremente en el entorno de trabajo y es visto como un proceso valioso (una vez completado) tanto por la administración como por los usuarios, a pesar de que puede llevar algo de tiempo (y por lo tanto generalmente cuesta algo de dinero).

muchos otros términos relacionados con este proceso (a menudo al final del ciclo) hacen que suene así:

  • implica que los usuarios (a menudo la administración ;-) son tontos
  • es difícil de lograr
  • tiene poco patrimonio neto

Al asociar el oro con el proceso (el metal generalmente equivale a "valor" en lugar de "costo"), he visto que el proceso cambia de gasto a inversión en la mentalidad de algunos gerentes.

Es como decir abiertamente que hasta que esto se haga, esa pieza de acero torpe aún no es una joyería. Pero una vez que está plateado ... entonces es valioso.

moliad
fuente
Veo cómo funciona este término para tu audiencia. Para la mayoría de los gerentes, el enchapado en oro sería lo primero que se cortaría del proyecto. En otras palabras, las partes no necesarias.
Gilbert Le Blanc
Extraño: veo que el término "enchapado en oro" significa que está perdiendo el tiempo haciendo algo que no ofrece una mejora funcional . Asegurar entradas válidas etc. hace oferta de mejora funcional y por lo tanto es (por mi definición) no chapado en oro.
ChrisF
El detalle es que el chapado en oro no mejora las partes internas del software. solo mejora el aspecto externo de la misma. Lo uso cuando los no técnicos están involucrados específicamente porque no se relaciona con una parte específica del proceso de final del ciclo. La gente lo entiende como, una vez que se hace el chapado en oro, es agradable, fácil de usar y tiene un valor agregado. no es solo un software ruff.
moliad
En mi experiencia, el enchapado en oro se usa normalmente para describir software cargado de características innecesarias , es decir, como sinónimo de bloatware .
Mark Booth
Sí, solo investigué un poco y descubrí que el término a veces se usa de esa manera en la literatura (gracias por el comentario). Lo curioso es que en muchos lugares en los que he trabajado, las pruebas idiotas se consideraron enchapadas en este sentido (realmente depende del tipo de trabajo que hagas, supongo).
moliad
1

La mayoría de las veces se usa en relación con los procesos de fabricación, pero creo que un muy buen ajuste es Poka-Yoke :

"[poka yo-ke] es un término japonés que significa" protección contra fallas "o" prueba de errores "

Originalmente se describió como baka-yugo, pero como esto significa "a prueba de tontos" (o "a prueba de idiotas") el nombre se cambió al poka-yugo más suave.

En términos más generales, el término puede referirse a cualquier restricción de configuración de comportamiento diseñada en un producto para evitar la operación incorrecta por parte del usuario ".

Matt Wilko
fuente
1

Un término común en las tiendas más grandes también es Garantía de calidad (QA) .

Es un término general, vago a propósito, que puede moldear según su propio significado específico dentro de su ciclo de lanzamiento.

moliad
fuente
0

Lo llamamos prueba humana. Todos somos idiotas

Wyatt Barnett
fuente