Pregunta

¿Cómo se prueba si una aplicación rindió algo correctamente?

Por ejemplo (ejemplo 2D):

Microsoft Word 2007 http://img32.imageshack.us/img32/6197/ 37841144.png

¿Cómo se sabe que la sombra se coloca correctamente o el color correcto / contorno se hizo? O si el efecto 3D se representa correctamente cuando uno podría girar en una dirección? Otras cosas podrían ser si la palabra arte fue redimensionada, ¿cómo se mide su 'corrección'?

¿Fue útil?

Solución

Hay algunas maneras:

  1. Si se especificó realmente muy precisamente lo que se dictarán y exactamente de qué manera, a continuación, sólo se puede comparar los píxeles a una prestación de referencia.
  2. En el caso de cosas como SVG no se especifica de manera clara. El enfoque habitual es usar las representaciones de referencia y compararlos con la mano. Se puede superponer fácilmente tanto, resta uno del otro y detectar diferencias notorias de esa manera. No es un proceso automático, sin embargo.
  3. Usted puede ver los datos que representan la imagen dibujada en lugar de la imagen en pantalla directamente. Lo que se está dibujada (en su ejemplo) un gráfico vectorial. Eso significa que hay varias formas que deben tener propiedades bien definidas, formas y colores y se puede simplemente comparar sus datos de formas a una referencia. Ese tipo de cosas se puede hacer automáticamente. Creo que Google utiliza un enfoque similar para comparar renderizado de Chrome con representaciones de referencias de páginas web; no se pueden comparar los datos de píxeles, se comparan los datos de nivel superior que y como el navegador podría Render.

Otros consejos

Hay dos maneras:. La imagen y el basado renderizado

La forma de imagen: Se debe encontrar una manera de representar la imagen de píxeles a un búfer interno (para que pueda ejecutar las pruebas "sin cabeza", es decir, sin una interfaz de usuario real apareciendo)

.

A continuación, seleccione unos pocos píxeles y asegurarse de que sus colores son correctos. En su ejemplo, seleccionar un par de píxeles blancos alrededor del texto para asegurarse de que la prestación no se escape. métodos auxiliares como assertThatRectangleIs(area, color) ayudarán a cubrir algo de terreno. La idea es seleccionar áreas específicas (como la barra vertical izquierda de la H) y no ser demasiado exigente.

La forma de representación basada trabaja con la hipótesis de que los trabajos de la biblioteca GFX. Así que lo que hace es burlarse del código de representación real con algo como esto:

public class MockGC extends GC {
    List<Op> ops = new ArrayList<Op> ();
    void drawLine (int x1, int y1, int x2, int y2) {
        ops.add(new Line(x1, y1, x2, y2, copyGC (gc)));
    }
}

por lo que sólo guardar el comando y todas las opciones relevantes en una estructura de datos que es fácil comparar. O incluso:

public class MockGC extends GC {
    StringBuilder buffer = new StringBuilder ();

    void drawLine (int x1, int y1, int x2, int y2) {
        buffer.append("line "+x1+","+y1+" - "+x2+","+y2+", color="+foreground()+"\n");
    }
}

Más tarde, a continuación, puede simplemente verificar que los comandos correcta prestación se han emitido y que (colores, tipo de letra, haciendo sugerencias) se utilizó la GC.

Esta última forma es mucho más rápido y 100% preciso, pero mucho más trabajo por código.

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