2009-02-20 8 views
9

J'écris une application Web très complexe en termes d'interface utilisateur et qui dépend fortement des manipulations AJAX, DOM et d'image.Comment effectuer un test unitaire pour une application Web?

Y at-il une pratique standard (je ne veux pas d'outils) qui peut être suivie pour réduire les bugs?

+0

Bonne question. Je me demandais la même chose. – RSolberg

+0

C'est une question très vague. Votre question pourrait normalement être répondu avec une liste d'outils, mais vous donnez l'impression qu'il existe un moyen magique d'obtenir moins de bugs dans votre code. Que demandez-vous exactement? – ryeguy

+0

@ryeguy Sa question est une question axée sur le design. Il demande comment le style Unit Testing s'intègre dans une application fortement UI. Carlten était capable de répondre à cela. – DevinB

Répondre

5

Séparez la logique et les parties de l'interface utilisateur - ne disposez pas de toute la logique métier et du code complexe dans le code situé derrière la page. Au lieu de cela, construisez-les à partir de la structure de niveau standard (couche de données, règles métier/couche logique, couche d'interface utilisateur). Cela garantira que votre code logique que vous souhaitez tester ne fait pas référence au formulaire, mais utilise à la place des classes qui sont facilement testées à l'unité.

Pour un exemple très basique, n'ont pas du code qui:

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

extrait au lieu de la logique dans une classe séparée avec une méthode:

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

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

De cette façon, vous pouvez écrire tests unitaires pour vérifier que DoWork renvoie les valeurs correctes:

string return = DoWork("TestThisString"); 

Maintenant toute votre logique est unité tes table, avec seulement le code qui doit faire référence à la page directement dans votre couche d'interface utilisateur.

8

Une technique très simple est le test de fumée, où vous automatisez un clic de l'ensemble de votre application. Si le script s'exécute et qu'il n'y a aucune erreur dans les journaux, vous avez au moins un niveau de qualité défini.

Cette technique capture en réalité une bonne quantité de ruptures de régression et est beaucoup plus efficace qu'elle ne semble l'être. Nous utilisons selenium pour cela.

+0

Voulez-vous dire un test fonctionnel avec des scénarios de test spécifiques ou simplement cliquer sur chaque cible possible? – legesh

+0

La version la plus simple que nous faisons est de cliquer sur les cas d'utilisation qui sont nos livrables principaux. Au minimum, nous incluons également les flux alternatifs/d'erreur principaux. Cela ne signifie pas nécessairement que nous cliquons sur tous les boutons/éléments existants. – krosenvold

2

Watin est un excellent outil pour cela.

1

Une simple liste de contrôle (même sur une feuille de papier!) Est la meilleure façon de vous assurer de ne jamais omettre les choses importantes. C'est un bon "test de fumée" que rien de "standard" n'a été cassé.

Questions connexes