Pregunta

Estoy trabajando en una tesis sobre meassuring la calidad de un producto.El producto en este caso es un sitio web.He identificado varios atributos de calidad y meassurement técnicas.

Un atributo de calidad es "Robustez".Quiero dimensionar que, de alguna manera, pero no puedo encontrar ninguna información útil de cómo hacer esto de una manera objetiva.

Hay alguna dinámica o estática métrica con la que se podría dimensionar la robustez?Es decir, como unidad de la cobertura de las pruebas, hay una forma de dimensionar la robustez como que?Si es así, ¿hay alguno (gratis), herramienta que puede hacer tal cosa?

¿Alguien tiene alguna experiencia con estos utillaje?

Por último, pero no menos importante, tal vez hay otras formas para determinar la robustez, si usted tiene alguna idea sobre que yo soy todo oídos.

Muchas gracias de antemano.

¿Fue útil?

Solución

Bueno, la respuesta corta es "no". Robusta puede significar muchas cosas, pero la mejor definición que puede llegar a está "realizando correctamente en cada situación." Si envía una mala cabecera HTTP a un servidor web extenso, no debe bloquearse. Debe devolver exactamente el tipo de error, y debe registrar el evento en alguna parte, quizás en una forma configurable. Si un robusto ejecuta el servidor web para un tiempo muy largo, la huella de la memoria deben permanecer en el mismo.

Una gran cantidad de lo que hace un sistema robusto es su manejo de casos extremos. pruebas buena unidad son parte de eso, pero es bastante probable que no habrá pruebas unitarias para cualquiera de los problemas que un sistema tiene (si se conocieran esos problemas, los desarrolladores probablemente habrían ellos fijo y sólo entonces se añadió una prueba) .

Por desgracia, es casi imposible medir la robustez de un programa arbitraria porque a fin de hacer que usted necesita saber lo que se supone que el programa para hacerlo. Si usted tenía una especificación, se podría escribir un gran número de pruebas y luego correr contra cualquier cliente como una prueba. Por ejemplo, mira la prueba de navegador Acid2. Se mide qué tan bien cuidado dado ninguna cumple navegador web con un estándar de una manera fácil y repetible. Eso es lo más cerca que se puede conseguir, y las personas han señalado muchos defectos con un enfoque de este tipo (por ejemplo, es un programa que se estrella con más frecuencia, pero hace una cosa adicional de acuerdo a las especificaciones más robusto?)

Hay, sin embargo, varias comprobaciones que se puede utilizar como una estimación aproximada, numérico de la salud de un sistema. cobertura de la prueba es una unidad de un solo bastante estándar, al igual que sus hermanos, cobertura de sucursales, cobertura función, la cobertura de sentencias, etc. Otra opción es buena programas de "pelusa" como FindBugs. Estos pueden indicar el potencial de problemas. proyectos de código abierto a menudo son juzgados por la frecuencia y recientemente compromete a medida y comunicados en libertad. Si un proyecto tiene un sistema de fallos, se puede medir la cantidad de errores han sido corregidos y el porcentaje. Si hay una instancia específica del programa que está midiendo, especialmente uno con mucha actividad, MTBF (tiempo medio entre fallos) es una buena medida de la robustez (Véase Philip respuesta )

Estas medidas, sin embargo, realmente no le dirá cómo robusta es un programa. Son simplemente formas de adivinar en ella. Si fuera fácil de averiguar si un programa fue robusto, probablemente nos limitamos a hacer el cheque compilador para él.

Buena suerte con su tesis! Espero que venga con algunas nuevas mediciones fresco!

Otros consejos

tiempo medio entre fallos como medida de robustez. El problema es que se trata de una cantidad teórica que es difícil de medir, sobre todo antes de que haya implementado su producto a una situación del mundo real con las cargas de la vida real. Parte de la razón de esto es que las pruebas a menudo no cubre los problemas de escalabilidad del mundo real.

En nuestro Fuzzing libro (por Takanen, DeMott, Miller) tenemos varios capítulos dedicados para las métricas y la cobertura en negativo de la prueba (la robustez, la fiabilidad, la gramática de pruebas, fuzzing, muchos nombres para la misma cosa).También traté de resumir los aspectos más importantes en nuestra empresa whitepaper aquí:

http://www.codenomicon.com/products/coverage.shtml

Fragmento de allí:


La cobertura puede ser visto como la suma de dos funciones, la precisión y la exactitud.La precisión es de que se trate con el protocolo de la cobertura.La precisión de la prueba está determinado por las pruebas de cubrir los diferentes protocolo de mensajes, mensaje de estructuras, etiquetas y definiciones de los datos.La precisión, por otro lado, las medidas de la precisión con que las pruebas pueden encontrar bugs dentro del protocolo diferente áreas.Por lo tanto, la precisión puede ser considerada como una forma de anomalía de la cobertura.Sin embargo, la precisión y la exactitud son términos bastante abstractos, por lo tanto, tendremos que buscar en más de métricas específicas para la evaluación de la cobertura.

El primer análisis de cobertura de aspecto está relacionado con la superficie de ataque.Requisito de la prueba de análisis siempre se empieza por la identificación de las interfaces que necesitan hacerse la prueba.El número de diferentes interfaces y los protocolos que se aplica en varias capas de establecer los requisitos para los ejecutores.Cada protocolo, formato de archivo, o de la API puede requerir su propio tipo de fuzzer, dependiendo de los requisitos de seguridad.

Segundo cobertura métrica está relacionada con la especificación de que un fuzzer apoya.Este tipo de métrica es fácil de usar con el modelo basado en la ejecutores, como la base de la herramienta está formada por las especificaciones utilizadas para crear el fuzzer, y por lo tanto son fáciles de lista.Un modelo basado en fuzzer debe cubrir la totalidad de la especificación.Considerando, que la mutación basada ejecutores no necesariamente cubrir la totalidad de la especificación, como de la aplicación o incluso un mensaje de cambio de la muestra a partir de una especificación no garantiza que la especificación completa está cubierto.Normalmente, cuando una mutación basada en fuzzer reclamaciones especificación de apoyo, esto significa que es interoperable con la prueba de los objetivos de la implementación de la especificación.

Especialmente en relación con el protocolo de fuzzing, la tercera-la mayoría de la métrica fundamental es el nivel de statefulness de la selección de Fuzzing enfoque.Un completamente al azar fuzzer normalmente sólo la prueba de los primeros mensajes en el complejo estado de protocolos.El estado más consciente de la confusión enfoque que utiliza es, el más profundo es el fuzzer puede ir en el complejo de los protocolos de intercambios.El statefulness es un requisito difícil de definir por herramientas de Confusión, ya que es más una métrica para definir la calidad del modelo de protocolo, y puede, por lo tanto, sólo ser verificada mediante la ejecución de las pruebas.


Espero que esto fue útil.También contamos con estudios en otras métricas como mirar la cobertura de código y otros más o menos de datos inútiles.;) Métricas es un gran tema para una tesis.Envíeme un correo electrónico a ari.takanen@codenomicon.com si usted está interesado para acceder a nuestra amplia investigación sobre este tema.

La robustez es muy subjetivo, pero se puede echar un vistazo a FingBugs , Cobertura y Hudson que cuando se combinan juntos correctamente podría darle una sensación de seguridad a través del tiempo que el software es robusto.

  

Se podría mirar en el tiempo medio entre   fracasos como una medida de la robustez.

El problema con "MTBF" es que por lo general se mide en el tráfico positiva, mientras que los fallos ocurren a menudo en situaciones inesperadas. No da ninguna indicación de robustez y fiabilidad. No importa si es un sitio Web estancias siempre en entorno de laboratorio, que seguirán siendo cortado en un segundo lugar en Internet si tiene una debilidad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top