9
votes

Tests unitaires pour gratter à l'écran?

Je suis nouveau dans les tests unitaires afin que j'aimerais obtenir l'opinion de certains qui sont un peu plus clés.

J'ai besoin d'écrire du code de grattage d'écran sous peu. Le système cible est un interface utilisateur Web où il y aura une analyse HTML copieuse et une bonté volatile similaire impliquée. Je ne serai jamais informé des modifications apportées par le système cible (par exemple, ils ont mis une refonte sur leur site ou modifient autrement la fonctionnalité). Donc, j'anticipe mon code rompant régulièrement.

Je pense donc que ma vraie question est, combien, le cas échéant, de mes tests de l'unité devrait vous inquiéter ou traiter avec l'interface (le site Web que je gratte) changer?

Je pense que l'unité teste ou non, je vais avoir besoin de tester énormément au moment de l'exécution, car je dois assurer que les données que je prends est vierge. Même si je rencontrais des tests unitaires avant chaque exécution, l'interface utilisateur Web pourrait toujours changer entre tests et exécution.

Ainsi, je me concentre sur les tests en code et la manipulation des exceptions? Cela signifie-t-il de dessiner une ligne dans le sable et d'exclure ce type de test des tests unitaires complètement?

merci


2 commentaires

Je ne pense pas que vous signiez des "tests unitaires". Les tests unitaires sont quelque chose que vous effectuez pour tester le code que vous avez écrit essentiellement un niveau de méthode. La façon dont je lis votre question, cela ressemble plus à votre parlant de tests automatisés pour voir si votre contribution est suffisamment bonne pour traverser le reste du travail. Est-ce vrai?


Eh bien, je ne suis pas sûr de façon sûre, mais par exemple, j'avais envisagé peut-être une méthode GetGooglesearchResult () et pour cette méthode, je pourrais faire un test et des affirmations. Et non, je ne gratte pas Google Serps. :)


3 Réponses :


1
votes

Je pense que la chose que les tests unitaires peuvent être utiles ici, si vous avez un serveur de construction, ils vous donneront un avertissement précoce, le code ne fonctionne plus. Vous ne pouvez pas écrire un test de l'unité pour prouver que la pochette de procedure fonctionnera toujours si le site modifie son HTML (car vous ne pouvez pas dire ce qu'ils vont changer).

Vous pourriez être capable d'écrire un test unitaire pour vérifier que quelque chose d'utile est renvoyé de vos efforts.


1 commentaires

Vérifier que quelque chose d'utile (et tombe dans des contraintes connues) est essentiellement ce que j'avais à l'esprit si j'écris des tests d'unité aux différentes méthodes de raclage.



7
votes

Les tests unitaires doivent toujours être conçus pour avoir des résultats connus répétables.

Par conséquent, à l'unité Testez un grattoir d'écran, vous devez écrire le test sur un ensemble connu de HTML (vous pouvez utiliser un objet de maquette pour le représenter)

Le genre de chose dont vous parlez ne sonne pas vraiment comme un scénario pour me tester unitaire - si vous souhaitez vous assurer que votre code fonctionne aussi robuste que possible, c'est plus, comme vous le dites, à propos de Test de code et manipulation des exceptions.

J'inclurais également un code d'alerte, ce système vous a donc mis au courant de toutes les occasions lorsque le code HTML n'est pas analysé comme prévu.


2 commentaires

Ouais. J'ai fait quelque chose de très similaire. Obtenez HTML qui correspond à divers étuis (section présente, section manquante, table vide, etc.) et nourrir ces chaînes dans votre classe d'analyse (qui devrait être séparée de votre classe de téléchargeur Web).


Merci, je pense que cela parle vraiment mon conflit exact avec cela. Et convenu sur le code d'alerte!



2
votes

Vous devriez essayer de séparer vos tests autant que possible. Testez la gestion des données avec des tests de faible niveau qui exécutent le code réel (c'est-à-dire pas via un navigateur simulé).

Dans le navigateur simulé, assurez-vous simplement que les bonnes choses se produisent lorsque vous cliquez sur les boutons, lorsque vous soumettez des formulaires, et lorsque vous suivez les liens.

N'essayez jamais de tester si la mise en page est correcte.


1 commentaires

Aucun navigateur dans le mélange. Il suffit de commander la ligne d'exécution et de la courroie.