Comment tester le code Web?

voix
11

Quelqu'un at-il quelques bons conseils pour l'écriture de code de test pour le développement de bases de données back-end où il y a une forte dépendance à l'Etat?

Plus précisément, je veux écrire des tests pour le code qui extraient les enregistrements de la base de données, mais les réponses dépendront des données contenues dans la base de données (qui peuvent changer au fil du temps).

Est-ce que les gens font généralement un système de développement séparé avec une base de données « gelé » de sorte que toute fonction donnée doit toujours retourner le jeu exactement le même résultat?

Je suis tout à fait sûr que ce n'est pas une question nouvelle, donc je serais très intéressé d'apprendre de l'expérience des autres.

Y at-il de bons articles là-bas qui discuter de cette question du développement basé sur le Web en général?

Je l'habitude d'écrire du code PHP, mais je pense à toutes ces questions sont en grande partie la langue et le cadre agnostique.

Créé 05/08/2008 à 22:58
source utilisateur
Dans d'autres langues...                            


10 réponses

voix
5

Vous devriez regarder dans DBUnit, ou essayer de trouver un équivalent PHP (il doit y avoir un là-bas). Vous pouvez l'utiliser pour préparer la base de données avec un ensemble spécifique de données qui représentent vos données de test, et donc chaque test ne sera plus fonction de la base de données et un état existant. De cette façon, chaque test est autonome et ne se cassera pas lors de l'utilisation plus la base de données.

Mise à jour: Une recherche rapide Google a montré une extension de l' unité DB pour PHPUnit.

Créé 05/08/2008 à 23:03
source utilisateur

voix
3

Si vous êtes principalement concernés par les tests de la couche de données, vous pouvez consulter ce livre: xUnit Test Patterns: Refonte code de test . J'étais toujours pas sûr de moi - même, mais ce livre fait un excellent travail pour aider à énumérer les problèmes tels que la performance, la reproductibilité, etc.

Créé 06/08/2008 à 05:14
source utilisateur

voix
2

Nous utilisons une base de données en mémoire (hsql: http://hsqldb.org/ ). Mise en veille prolongée ( http://www.hibernate.org/ ), il est facile pour nous de pointer nos tests unitaires au test db, avec l'avantage supplémentaire qu'ils courent aussi vite que l' éclair ..

Créé 10/09/2008 à 13:02
source utilisateur

voix
2

Je suppose que cela dépend de ce que la base de données que vous utilisez, mais Red Gate (www.red-gate.com) faire un outil appelé générateur de données SQL. Cela peut être configuré pour remplir votre base de données avec des données de test sensibles à la recherche. Vous pouvez aussi lui dire d'utiliser toujours la même graine dans son générateur de nombres aléatoires afin que vos données « aléatoire » est le même à chaque fois.

Vous pouvez alors écrire vos tests unitaires pour utiliser cette fiabilité, les données reproductibles.

En ce qui concerne le test du côté web de choses, je suis actuellement en Sélénium (selenium.openqa.org). Cela semble être une suite de test capable cross-browser qui vous aidera à tester la fonctionnalité. Cependant, comme avec tous ces outils de test de site web, il n'y a aucun moyen de tester comment ces choses regardent dans tous les navigateurs sans jeter sur eux un oeil humain!

Créé 06/08/2008 à 14:44
source utilisateur

voix
1

En général, je suis d'accord avec Peter, mais pour la création et la suppression des données de test, je ne voudrais pas utiliser directement SQL. Je préfère utiliser une API CRUD qui est utilisé dans le produit pour créer des données comme similaire à la production que possible ...

Créé 10/09/2008 à 12:31
source utilisateur

voix
1

Je propose d'utiliser trois bases de données. Une base de données de production, une base de données de développement (rempli de quelques données significatives pour chaque développeur) et une base de données de test (avec des tables vides et peut-être quelques lignes qui sont toujours nécessaires).

Une façon de tester le code de base de données est:

  1. Insérez quelques lignes (en utilisant SQL) pour initialiser l'état
  2. Exécutez la fonction que vous voulez tester
  3. Comparer prévu avec les résultats réels. Ici vous pouvez utiliser votre cadre normal des tests unitaires
  4. Nettoyer les lignes qui ont été modifiés (donc la prochaine course ne verra pas la course précédente)

Le nettoyage pourrait se faire de manière standard (bien sûr, que dans la base de données de test) avec DELETE * FROM table.

Créé 19/08/2008 à 19:40
source utilisateur

voix
1

Voici ma stratégie (je l'utilise JUnit, mais je suis sûr qu'il ya un moyen de faire l'équivalent en PHP):

J'ai une méthode qui fonctionne avant que tous les tests unitaires pour une classe spécifique de DAO. Il met la base de données dev dans un état connu (ajoute toutes les données de test, etc.). Comme je l'ai d'exécuter des tests, je garde une trace de toutes les données ajoutées à l'état connu. Ces données sont nettoyées à la fin de chaque test. Après tous les tests de la classe ont exécuté, une autre méthode supprime toutes les données de test dans la base de données de dev, laissant dans l'état où il était avant que les tests ont été effectués. Il est un peu de travail à faire tout cela, mais je l'habitude d'écrire les méthodes dans une classe où DBTestCommon toutes mes classes de test DAO peut obtenir à eux.

Créé 11/08/2008 à 14:30
source utilisateur

voix
1

Vous pouvez essayer http://selenium.openqa.org/ il est plus pour les tests de l' interface graphique plutôt que d' une application de test de la couche de données , mais n'enregistre vos actions de retour peuvent être lus ensuite d'automatiser les tests sur différentes plateformes.

Créé 06/08/2008 à 13:06
source utilisateur

voix
1

Si vous pouvez configurer la base de données avec une quantité connue avant l'exécution des tests et le démontage à la fin, alors vous saurez quelles sont les données que vous travaillez.

Ensuite, vous pouvez utiliser quelque chose comme Sélénium pour tester facilement à partir de votre interface utilisateur (en supposant par web, mais il y a beaucoup d'outils de test de l'interface utilisateur là-bas pour d'autres saveurs de l'interface utilisateur-) et détecter la présence de certains dossiers tiré vers l'arrière de la base de données.

Il vaut vraiment la peine soit la mise en place d'une version de test de la base de données - ou faire vos scripts de test alimenter la base de données avec des données connues dans le cadre des tests.

Créé 05/08/2008 à 23:08
source utilisateur

voix
1

J'ai exactement le même problème avec mon travail et je trouve que la meilleure idée est d'avoir un script PHP pour recréer la base de données et un script séparé où je jette des données folles à elle pour voir si elle ça casse.

Je ne l'ai pas déjà utilisé un test unitaire ou suchlike ne peut donc pas dire si ça marche ou pas désolé.

Créé 05/08/2008 à 23:03
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more