Différences entre les versions de « SiteWeb:Tests de la migration Drupal 6 »

De April MediaWiki
Aller à la navigationAller à la recherche
Ligne 103 : Ligne 103 :
  
 
== Tests réalisés ==
 
== Tests réalisés ==
 +
''Les fichiers de tests sont visibles depuis https://redmine.april.org/projects/siteweb/repository/revisions/master/show/tests/windmill''
 
* Page d'accueil (<code>testAcceuil.py</code>)
 
* Page d'accueil (<code>testAcceuil.py</code>)
 
** Contient le logo April (*/logo.png)
 
** Contient le logo April (*/logo.png)

Version du 25 juin 2010 à 15:55

Logo-drupal.png Bienvenue sur une page Logo-drupal.png
du groupe de travail Site Web

La migration de Drupal 5 à Drupal 6 est scriptée pour permettre de la répéter facilement et mettre en place un site de test.

Deux phases de test sont prévues. Lors de la première phase, les membres les plus actifs et les plus impliqué de l'April ont accès au site. L'objectif est de trouver et corriger les problèmes les plus graves et/ou de sécurité. Tandis que la seconde phase est ouverte à tous.

Tester le site

  • Le site de test est disponible à l'adresse http://staging.april.org.
  • La liste des problèmes connus est accessible à l'adresse https://redmine.april.org/projects/siteweb/issues?query_id=8
  • Une liste des test réalisé est disponible en bas de page. Merci de la mettre à jour avec les tests réalisés, au moins ceux qui ne mettent aucune anomalie en évidence.
  • L'intégration de gDTC et gDTC-Auth devrait être fonctionnel.
  • Alexandrie n'est par pas porté

Rapporter les problèmes

  • Les anomalies rencontrées lors de tests doivent être rapportées sous forme de demandes (aka. bug report) pour le projet SiteWeb sur le Gestionnaire de projets de l'April.
  • La création de demande se fait depuis l'URL suivante https://redmine.april.org/projects/siteweb/issues/new
    Tracker
    Utilisez anomalie.
    Sujet
    Entrez une description brève du problème rencontré, en un phrase
    Description
    Entrez une description détaillée du problème. Il est particulièrement important de donner un maximum d'information sur le comportement attendus et les étapes nécessaire pour y parvenir. Gardez à l'esprit que vous écrivez pour un lecteur qui ne connait pas le site de l'April dans les détails, qui ne sait pas comment une page fonctionne d'habitude, normalement ou comme avant.
    Status
    Utilisez Nouveau
    Priorité
    Utilisez Normal sauf si une autre priorité est plus approprié. Si un problème rencontré est une gène ou bloquant pour la poursuite des tests, utilisez Élevé ou Urgent, voir Immediat pour les cas le plus graves ou les failles de sécurité (ex. vous avez accès au contenu d'une page que vous ne devriez pas pouvoir voir). Inversement, pour les problèmes mineurs qui pourraient même être acceptables sur le site après la migration effective, utilisez Failbe.
    Assigné à
    N'utilisez pas de valeurs.
    Catégorie
    Utilisez Migration Drupal 6
  • Après création d'une demande, vous pouvez la lier avec des problèmes ou tâches déjà rapportés. Entre autre
  • Un script de test pour reproduire le problème et valider sa solution peut-être attaché au ticket (cf. section suivante)

Automatisation des tests

Si un comportement anormale est observé sur le site de test, l'idéal est de créer un script de test qui réussi sur le site de production actuel (www.april.org) mais échoue sur staging.april.org. Un script de test permet de répéter facilement le problème et de valider sa correction. Il peut également servir comme test de régression pour éviter qu'une correction d'un problème n'en ré-introduise un autre.

Installation de Windmill

$ sudo apt-get install python2.5
$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ sudo python ez_setup.py
$ sudo easy_install windmill

Voir http://wiki.github.com/windmill/windmill/installing pour plus d'information.

Création d'un test

  • Lancer Windmill en mode IDE sur le site de production
$ windmill firefox http://www.april.org
  • Enregistrer une session d'utilisation du site via l'icône recbutton.png
    • Le premier click démarre l'enregistrement
    • Le second le stoppe
  • En utilisant le menu Test Building, il est possible d'ajouter des actions (New Action) au test
    • record.png
    • open permet d'ouvrir une URL spécifique (ex. "/fr/my"), les changements d'URL via la barre d'adresse ne sont pas enregistré.
    • asserts.* permet de vérifier des conditions telle que la présence ou non d'une élement HTML, la valeur dans un champs de formulaire, etc.
    • Voir Controller-API pour une description des actions possibles et de leur paramètres
  • Le bouton Play permet de rejouer le test.
  • Le bouton save permet d'exporter le test sous forme de code Python. Une nouvelle fenêtre est ouverte avec le code qui peut-être copié-collé dans un fichier texte en utilisant votre éditeur de texte préféré.

Exécution du test sur le site de test

$ windmill firefox test=foobar.py http://staging.april.org/

Edition d'un script de test

Après l'enregistrement d'un script, il peut être facilement modifié, notamment pour exploiter les structures de contrôle (boucles et conditions). Toutes les fonctionnalités du langage Python sont utilisables en plus de l'API du contrôleur Windmill.

Windmill supporte également le passage de paramètre depuis le ligne de commande en utilisant functest. Très pratique pour, par exemple, ne pas avoir à stocker les information d'authentification utilisateur (voir exemple ci-dessous).

$ windmill firefox test=foobar.py http://staging.april.org/ paramName=paramValue


Exemple d'un script de test

#coding=UTF-8
from windmill.authoring import WindmillTestClient
import functest

def test_foobar():
  client = WindmillTestClient(__name__)
  #Aller à la page /foo/bar
  client.open(url=u'/foo/bar')
  client.waits.forPageLoad(timeout=u'50000')
  #Vérifier l'existence d'une élément HTML contenant du texte
  client.asserts.assertNode(jquery=u"('p:contains(foo bar)')[0]")
  #Vérifier qu'une image est affichée
  client.asserts.assertImageLoaded(jquery=u"('[src*=foobar.png]')[0]")

  #Connexion (login et mdp passé en paramètre)
  client.type(text=functest.registry['username'], id=u'edit-name')
  client.type(text=functest.registry['password'], id=u'edit-pass')
  client.click(value=u'Connexion')
  client.waits.forPageLoad(timeout=u'20000')

  #Tester si le script est exécuté sur le site www.april.org ou non
  if client.execJS(js="document.location")['output']['hostname'] == 'www.april.org':
    #Site Drupal 5
  else:
    #Site Drupal 6

Tests réalisés

Les fichiers de tests sont visibles depuis https://redmine.april.org/projects/siteweb/repository/revisions/master/show/tests/windmill

  • Page d'accueil (testAcceuil.py)
    • Contient le logo April (*/logo.png)
    • Contient une nuage de tag avec les termes "Éducation", "Administrations et collectivités" et "Archive".
    • Devrait contenir les titres h2 (bloc de panel) suivants Dernières actualités, Derniers communiqués, Revue de Presse, Dernières actualités, Derniers communiqués, Revue de Presse, Le mot du président, Évènements à venir, Citation du moment, Adhérez maintenant pour, Thèmes (cf. #144).
  • Page "Bibliographie" (testBibliographie.py)
    • Contient la table de matière (valide que le module ToC a été migré, valide que le module htmlcomments a été installé pour permettre l'utilisation de commentaires HTML)
    • Contient les titres de views embarqués dans la page (valide le remplacement du module insert_view, cf. #142)
    • Contient l'image =La bataille du logiciel libre.jpg issu d'une page dans une des vues (validation de la migration des images)
  • Pages CA (testCa.py, pas fonctionnelles, cf. #140)
    • Pour un utilisateur non connecté
      • La page "Groupe CA" (fr/ca) est accessible
      • La page "Groupe CA" ne contient pas le titre "Tableau de bord CA"
      • La page "Tableau de bord du CA" existe mais n'est pas accessible
    • Pour un utilisateur connecté
      • La page "Groupe CA" (fr/ca) est accessible
      • La page "Groupe CA" contient pas le titre "Tableau de bord CA"
      • La page "Tableau de bord du CA" est accessible
  • Page de citation lapril-joue-un-role-extremement-important-dans-lecosysteme-logiciel-libre-en-france (testCitation.py)
    • Contient le nom de son auteur
    • Contient un lien inclus dans la biographie de l'auteur (donc contient la biographie de l'auteur).
  • Menu primary-links (cf. #149, test_logged_as_root/test149-primary-links.py)
    • Contient les entrées "About us" "L'association", "Communiqués" , "FAQ", "Nos positions", "Activités", "Our positions", "Thèmes", "Revue de presse", "Help us", "Wiki", "Adhérer", "Nous aider"
  • Page "Thèmes" (cf. #147, test147-themes.py)
    • La page est accessible depuis un lien "Thème" en page d'accueil
    • Elle contient les liens "Économie", "Éducation", "Accessibilité", "ACTA", "Administrations et collectivités", "Aprilien", "Archive", "Associations", "Brevets"
  • Le Menu en anglais ne contient "Press Information", "Contact Us", "Rester informé" et "Document - Sensibilisation" (cf. #150, 150-english-menu.py)
  • Page "Espace presse" (cf. #154, test154-espace-presse.py)
    • Ne contient pas "Fatal error"
    • Contient le titre "Espace presse"
  • Page "Activités de l'april" (cf. #148, test148-activites.py)
    • Ne contient pas "Fatal error"
    • Contient le titre "Activités de l'April"
  • Contenu de menu an anglais (cf. #150, test150-english-menu.py)
  • Submitted by au lieu de soumis par (cf. #180, test180SubmittedBy.py)
  • Affichage de teaser (cf. #171, test171Teaser.py)
  • Tri sur base de la date pour les listes de thème (cf. #179, test179DateSort.py)
  • Login depuis la page /my Problème non corrigé (cf. #169, test169-LoginDepuisMy.py)
  • La liste des actualités en anglais ne présente que des contenus en français (cf. #177, test177LesDernieresActusEn.py)
  • Traduction de nom de mois (cf. #178, test178MonthTranslation.py)
  • gDTC
    • Affichage du Trombinoscope gDTC (test_logged/testTrombinoscope.py)
    • Contenu de la page espace personnelle (test_logged/testMy.py)
    • Contenu de l'annuaire gDTC (test_logged/testAnnuaire.py)
    • Accessibilité de page gDTC (test_logged/testTitle.py)