Tests fonctionnels Java™

Découvrez comment écrire des tests fonctionnels Java™ pour AEM as a Cloud Service

Prise en main des tests fonctionnels getting-started-functional-tests

Lors de la création d’un référentiel de code dans Cloud Manager, un dossier it.tests est automatiquement créé avec des exemples de cas de test.

NOTE
Si votre référentiel a été créé avant la création automatique des dossiers it.tests par Cloud Manager, vous pouvez également générer la dernière version en date à l’aide de l’archétype de projet AEM.

Une fois que vous disposez du contenu du dossier it.tests, vous pouvez l’utiliser comme base pour vos propres tests. Ensuite :

  1. Développez vos cas de test.
  2. Exécutez les tests localement.
  3. Validez votre code dans le référentiel Cloud Manager et exécutez un pipeline Cloud Manager.

Écriture de tests fonctionnels personnalisés writing-functional-tests

Les mêmes outils que ceux utilisés par Adobe pour rédiger des tests fonctionnels de produit peuvent être utilisés pour rédiger vos tests fonctionnels personnalisés. Utilisez les tests fonctionnels du produit dans GitHub comme exemple de la manière d’écrire vos tests.

Le code du test fonctionnel personnalisé est du code Java™ dans le dossier it.tests de votre projet. Il doit produire un seul fichier JAR avec tous les tests fonctionnels. Si le build génère plusieurs fichiers JAR de test, le fichier JAR sélectionné est non déterministe. S’il ne génère aucun fichier JAR de test, l’étape de test est effectuée par défaut. Consultez l’archétype de projet AEM pour découvrir des exemples de tests.

Les tests sont exécutés sur l’infrastructure de test gérée par Adobe, comprenant au moins deux instances de création, deux instances de publication et une configuration de Dispatcher. Cette configuration signifie que vos tests fonctionnels personnalisés s’exécutent sur l’ensemble de la pile AEM.

Structure des tests fonctionnels functional-tests-structure

Les tests fonctionnels personnalisés par le client doivent être placés dans un fichier JAR distinct produit par la même version de Maven que les artefacts à déployer dans AEM. En règle générale, cette version est un module Maven distinct. Le fichier JAR obtenu doit contenir toutes les dépendances requises. Il est généralement créé avec le maven-assembly-plugin à l’aide du descripteur jar-with-dependencies.

En outre, l’en-tête de manifeste Cloud-Manager-TestType du fichier JAR doit être défini sur integration-test.

Ce qui suit est un exemple de configuration pour le maven-assembly-plugin.

<build>
    <plugins>
        <!-- Create self-contained jar with dependencies -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifestEntries>
                        <Cloud-Manager-TestType>integration-test</Cloud-Manager-TestType>
                    </manifestEntries>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Dans ce fichier JAR, les noms de classe des tests à exécuter doivent se terminer par IT.

Par exemple, une classe nommée com.myco.tests.aem.it.ExampleIT sera exécutée, mais pas une classe nommée com.myco.tests.aem.it.ExampleTest.

De plus, pour exclure le code test de la vérification de la couverture de l’analyse du code, le code test doit se trouver sous un package nommé it (le filtre d’exclusion de la couverture est **/it/**/*.java).

Les classes de test doivent être des tests JUnit normaux. L’infrastructure de test est conçue et configurée pour être compatible avec les conventions utilisées par la bibliothèque de tests aem-testing-clients. Les développeurs et développeuses sont encouragés à utiliser cette bibliothèque et à suivre les bonnes pratiques en vigueur.

Pour plus d’informations, voir le aem-testing-clientsréférentiel GitHub.

TIP
Regardez cette vidéo sur la manière dont vous pouvez utiliser des tests fonctionnels personnalisés pour améliorer votre confiance dans vos pipelines CI/CD.

Prérequis prerequisites

  1. Les tests dans Cloud Manager sont exécutés par une personne administratrice technique.
NOTE
Pour exécuter les tests fonctionnels à partir de votre ordinateur local, créez un utilisateur ou une utilisatrice avec des autorisations de type administration afin d’obtenir le même comportement.
  1. L’infrastructure en conteneur qui est prévue pour les tests fonctionnels est restreinte par les limites suivantes :
Type
Valeur
Description
Processeur
0,5
Quantité de temps réservé au processeur par exécution de test
Mémoire
0,5 Go
Quantité de mémoire allouée au test, valeur en gibioctets
Délai d’expiration
30 min
Durée au bout de laquelle le test sera terminé.
Durée recommandée
15 min
Adobe recommande d’écrire les tests pour qu’ils ne prennent pas plus de temps que la durée indiquée.
NOTE
Si vous avez besoin de davantage de ressources, créez un cas d’assistance clientèle et décrivez votre cas d’utilisation. L’équipe d’Adobe examine votre demande et fournit une assistance appropriée.

Dépendances

  • aem-cloud-testing-clients:

Les modifications à venir de l’infrastructure en conteneur utilisée pour exécuter des tests fonctionnels nécessiteront la bibliothèque . aem-cloud-testing-clients utilisé dans votre test fonctionnel personnalisé pour le mettre à jour vers au moins la version 1.2.1
Assurez-vous que votre dépendance dans it.tests/pom.xml a été mis à jour.

<dependency>
   <groupId>com.adobe.cq</groupId>
   <artifactId>aem-cloud-testing-clients</artifactId>
   <version>1.2.1</version>
</dependency>
NOTE
Cette modification doit être effectuée avant le 6 avril 2024.
Si vous ne mettez pas à jour la bibliothèque de dépendances, des échecs de pipeline se produiront à l’étape « Tests fonctionnels personnalisés ».

Exécution locale du test local-test-execution

Avant d’activer les tests fonctionnels dans un pipeline Cloud Manager, il est recommandé d’exécuter les tests fonctionnels localement à l’aide du SDK AEM as a Cloud Service ou d’une instance d’AEM as a Cloud Service réelle.

Exécution dans un IDE running-in-an-ide

Les classes de test étant des tests JUnit, elles peuvent être exécutées à partir d’IDE Java™ standard comme Eclipse, IntelliJ, et NetBeans. Les tests fonctionnels de produit et les tests fonctionnels personnalisés étant basés sur la même technologie, les deux peuvent être exécutés localement en copiant les tests de produit dans vos tests personnalisés.

Cependant, lors de l’exécution de ces tests, il est nécessaire de définir un ensemble de propriétés système attendues par la bibliothèque aem-testing-clients (et la clientèle de test Sling sous-jacente).

Les propriétés système sont les suivantes.

Propriété
Description
Exemple
sling.it.instances
quantité d’instances, pour correspondre au service cloud, doit être définie sur 2
2
sling.it.instance.url.1
doit être définie sur l’URL de création
http://localhost:4502
sling.it.instance.runmode.1
mode d’exécution de la première instance, doit être défini sur author
author
sling.it.instance.adminUser.1
doit être défini sur l’utilisateur ou l’utilisatrice admin de création.
admin
sling.it.instance.adminPassword.1
doit être défini sur le mot de passe de l’administrateur ou l’administratrice de création.
sling.it.instance.url.2
doit être défini sur l’URL de publication
http://localhost:4503
sling.it.instance.runmode.2
mode d’exécution de la deuxième instance, doit être défini sur publish
publish
sling.it.instance.adminUser.2
doit être défini sur l’utilisateur ou l’utilisatrice admin de publication.
admin
sling.it.instance.adminPassword.2
doit être défini sur le mot de passe de l’administrateur ou l’administratrice de publication.

Exécution de tous les tests à l’aide de Maven using-maven

  1. Ouvrez un conteneur et accédez au dossier it.tests dans votre référentiel

  2. Exécutez la commande suivante fournissant les paramètres nécessaires pour démarrer les tests à l’aide de Maven.

mvn verify -Plocal \
    -Dit.author.url=https://author-<program-id>-<environment-id>.adobeaemcloud.com \
    -Dit.author.user=<user> \
    -Dit.author.password=<password> \
    -Dit.publish.url=https://publish-<program-id>-<environment-id>.adobeaemcloud.com \
    -Dit.publish.user=<user> \
    -Dit.publish.password=<password>
recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab