2009-02-20 10 views
9

Estoy escribiendo una aplicación web que es muy compleja en términos de UI y depende en gran medida de manipulaciones AJAX, DOM y de imágenes.Cómo hacer la mejor prueba unitaria para una aplicación web

¿Existe alguna práctica estándar (no quiero herramientas) que se pueda seguir para reducir los errores?

+0

Gran pregunta. Me he estado preguntando lo mismo. – RSolberg

+0

Esta es una pregunta muy vaga. Normalmente, su pregunta se puede responder con una lista de herramientas, pero lo hace sonar como si hubiera alguna forma mágica de obtener menos errores en su código. ¿Qué estás preguntando exactamente? – ryeguy

+0

@ryeguy Su pregunta es una pregunta orientada al diseño. Él pregunta cómo encaja el estilo Unit Testing con una aplicación de UI muy pesada. Carlten fue capaz de responder eso. – DevinB

Respuesta

5

Separar la lógica y las partes de la interfaz de usuario: no tiene toda la lógica de su negocio y código complejo en el código detrás de la página. En su lugar, protéjalos de la estructura de nivel estándar (capa de datos, reglas de negocio/capa lógica, capa de IU). Esto asegurará que su código lógico que desea probar no haga referencia al formulario, sino que utiliza clases que sean probadas de manera sencilla.

Para un ejemplo muy básico, no tienen código que hace esto:

string str = TextBox1.Text.ToString(); 
//do whatever your code does 
TextBox2.Text = str; 

extraer lugar la lógica en una clase separada con un método:

TextBox2.Text = DoWork(TextBox1.Text.ToString()); 

public class Work 
{ 
    public string DoWork(string str) 
    { 
     //do work 
     return str2; 
    } 
} 

De esta manera se puede escribir pruebas de unidad para verificar que DoWork está regresando los valores correctos:

string return = DoWork("TestThisString"); 

Ahora toda la lógica es la unidad de TES tabla, con solo el código que TIENE que hacer referencia a la página directamente aún en su capa de interfaz de usuario.

8

Una técnica muy simple es la prueba de humo, donde automatiza un clic de toda su aplicación. Si la secuencia de comandos se ejecuta y no hay errores en ninguna parte de los registros, tiene al menos un nivel definido de calidad.

Esta técnica en realidad atrapa una buena cantidad de pausas de regresión y es mucho más efectiva de lo que parece. Usamos selenium para esto.

+0

¿Quiere decir una prueba funcional con escenarios de prueba específicos o simplemente hace clic en cada objetivo posible? – legesh

+0

La versión más simple que hacemos es hacer clic en los casos de uso que son nuestros productos principales. Como mínimo también incluimos flujos principales de alternativa/error. Esto no necesariamente significa que haremos clic en cada botón/elemento que hay. – krosenvold

2

Watin es una gran herramienta para esto.

1

Una lista de verificación simple (¡incluso en un pedazo de papel!) Es la mejor manera de asegurarse de nunca omitir las cosas importantes. Es una buena "prueba de humo" que no se ha roto nada "estándar".

Cuestiones relacionadas