Présentation de Gatling
dimanche 6 septembre 2020

Licence Creative Commons

Sommaire



Introduction

Dans le cadre d'un projet de développement logiciel, vous serez parfois amener à évaluer les performances d'une application en cas de forte sollicitation. On parle alors de test charge. Gatling est un outil de test de charge pour application web édité par la société Gatling Corp.


Fonctionnement

Gatling est développé en Scala et s'appuie principalement sur deux technologies.

  • le framework Netty, pour la création de requêtes HTTP asynchrone.
  • le framework Akka, pour l'orchestration des utilisateurs virtuels basé sur le modèle d'acteur.

L'une des particularité de Gatling est que les utilisateurs virtuels ne sont pas créé via de multiples threads mais grâce à l'utilisation d'acteurs Akka. Ce procédé permet de dépasser les limitations causé par la gestion des threads. Avec une seule machine virtuelle Java (JVM), Gatling est capable de simuler des milliers d'utilisateurs.


Installation

Gatling peut s'installer de deux manières différentes.

  • En téléchargeant et en décompressant le bundle autonome.
  • En utilisant un outil de build comme Maven ou Gradle

Dans tous les cas, l'installation d'une machine virtuelle Java (JVM) sera nécessaire.


Licence

Gatling est un outil open source sous licence Apache 2.0.
Le code source est disponbile sur Github: https://github.com/gatling




Références:

Le design pattern Page Object
samedi 30 novembre 2019

Licence Creative Commons

Le design pattern "page object" est un modèle de conception très populaire qui permet de structurer un code de tests automatisés dans le but d'éviter les problèmes de maintenabilité.




Les méthodes d'une classe de type "page object" correspondent à des actions possibles sur une page. Une "page object" doit fournir des mécanismes pour manipuler, observer et rechercher des éléments d'une page.

Un exemple implementation du design patter page object

LoginTest.java

public class LoginTest extends BaseTest {

    @Test
    public void testLogin() {

        LoginPage loginPage = new LoginPage(webDriver);
        HomePage homePage = new HomePage(webDriver));

        loginPage.setUsername("administrator");
        loginPage.setPassword("password");
        loginPage.submit();

        if (homePage.isDisplayed()) {
            System.out.println("Login successful, home page displayed.");
        } else { 
            System.out.println("Login failed, home page not displayed.");
        }
    }
}

BaseTest.java

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.junit.After;
import org.junit.Before;

public class BaseTest {

    protected WebDriver webDriver;

    @Before
    public void setUp() {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        webDriver = new ChromeDriver();
        webDriver.get("http://yourapp.com");
    }

    @After
    public void tearDown() {
        if (webDriver != null) {
            webDriver.quit();
        }
    }
}

LoginPage.java

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

public class LoginPage {

    private WebDriver webDriver;

    private By usernameField = By.id("username");
    private By passwordField = By.id("password");
    private By submitButton = By.id("loginButton");

    public LoginPage(WebDriver webDriver) {
        this.webDriver = webDriver;
    }

    public void setUsername(String username) {
        WebElement usernameElement = webDriver.findElement(usernameField);
        usernameElement.clear();
        usernameElement.sendKeys(username);
    }
    
    public void setPassword(String password) {
        WebElement passwordElement = webDriver.findElement(passwordField);
        passwordElement.clear();
        passwordElement.sendKeys(password);
    }

    public void submit() {
        WebElement submitButtonElement = webDriver.findElement(submitButton);
        submitButtonElement.click();
    }
}

HomePage.java

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

public class HomePage {

    private WebDriver webDriver;
    
    private By home= By.id("home");

    public HomePage(WebDriver webDriver) {
        this.webDriver = webDriver;
    }

    public boolean isDisplayed() {
        WebElement homePageWebElement = webDriver.findElement(home);
        return homePageWebElement.isDisplayed();
    }
}

Les principaux avantages de ce modèle sont :

  • la réduction de la quantité de code dupliqué
  • la réutilisabilité des classes page object pour différents tests
  • une maintenance plus facile en cas de modification de l'interface utilisateur
  • un code plus lisible et plus compréhensible


Note: Une classe de type "page object" ne représente pas forcément une page entière mais peut représenter un élément significatif d'une page comme par exemple, le header d'une application web.



Références:

TestLink - Comment effectuer une mise à jour ?
dimanche 15 septembre 2019

Licence Creative Commons

Introduction

Une mise à jour de TestLink sera nécessaire si vous souhaitez profiter des correctifs et des fonctionnalités supplémentaires d'une nouvelle version. Cet article décrit étape par étape, la procédure de mise à jour.




Objectif


Mise à jour de TestLink:
TestLink 1.9.16 (Moka pot) → TestLink 1.9.19 (Metonic cycle)


Prérequis


Installer TestLink (version > 1.9.8).
Tutoriel: TestLink - Guide d'installation


Environnement


Description de l'environnement:

Système d'exploitation Debian 9.3
Serveur web Apache 2.4.25
PHP PHP 7.0.27-0
Système de gestion de base de données MariaDB 10.1.26 


Procédure de mise à jour


1. Effectuer une sauvegarde de la base données TestLink et des fichiers sources

root@laptop:~# mysqldump --user=nom_user --password=pass --databases db_testlink > db_testlink.sql

root@laptop:~# tar -czvf testlink_backup.tar.gz /var/www/html/testlink-1.9.16


2. Télécharger une nouvelle version de TestLink

root@laptop:~# wget https://github.com/TestLinkOpenSourceTRMS/testlink-code/archive/1.9.19.tar.gz


3. Décompresser l'archive contenant le code source de la nouvelle version

root@laptop:~# mysql --user=nom_user --password=pass nom_de_la_base < db_testlink.sql


4. Renommer le dossier TestLink

root@laptop:~# mv testlink-code-1.9.19/ testlink-1.9.19


5. Déplacer le dossier TestLink dans le répertoire de votre serveur web sans écraser le répertoire de l'ancienne version de TestLink

root@laptop:~# mv testlink-1.9.19/ /var/www/html


6. Modifier les droits

# chmod 777 /var/www/html/testlink-1.9.19/gui/templates_c
# chmod 777 /var/www/html/testlink-1.9.19/logs
# chmod 777 /var/www/html/testlink-1.9.19/upload_area


7. Recopier les fichiers de configuration du répertoire de l'ancien version de TestLink vers le répertoire de la nouvelle version de TestLink.

root@laptop:~# cp /var/www/html/testlink-1.9.16/config_db.inc.php /var/www/html/testlink-1.9.19
root@laptop:~# cp /var/www/html/testlink-1.9.16/custom_config.inc.php /var/www/html/testlink-1.9.19


7. Ouvrir TestLink et rafraîchir la page

URL: http://hostname/testlink-1.9.19



8. Mettre à jour la base de données en suivant les instruction ci-dessous


Avertissement: Si vos tables contiennent un prefix, vous devez remplacer par le nom du prefix de vos tables.


db_schema_update.sql



1.9.16 vers 1.9.17

root@laptop:~# mysql -u root -p db_testlink < /var/www/html/testlink-1.9.19/install/sql/alter_tables/1.9.17/mysql/DB.1.9.17/step1/db_schema_update.sql

root@laptop:~#mysql -u root -p db_testlink< /var/www/html/testlink-1.9.19/install/sql/alter_tables/1.9.17/mysql/DB.1.9.17/stepZ/z_final_step.sql


1.9.17 vers 1.9.18

root@laptop:~# mysql -u root -p db_testlink < /var/www/html/testlink-1.9.19/install/sql/alter_tables/1.9.18/mysql/DB.1.9.18/step1/db_schema_update.sql

root@laptop:~# mysql -u root -p db_testlink< /var/www/html/testlink-1.9.19/install/sql/alter_tables/1.9.18/mysql/DB.1.9.18/stepZ/z_final_step.sql


1.9.18 vers 1.9.19

root@laptop:~# mysql -u root -p db_testlink < /var/www/html/testlink-1.9.19/install/sql/alter_tables/1.9.19/mysql/DB.1.9.19/step1/db_schema_update.sql

root@laptop:~#mysql -u root -p db_testlink< /var/www/html/testlink-1.9.19/install/sql/alter_tables/1.9.19/mysql/DB.1.9.19/stepZ/z_final_step.sql


9. Lancer TestLink



10. Se connecter en tant qu'administrateur




Mot-clé: How to update TestLink ?


A lire aussi:

Comment rédiger un rapport de bug ?
jeudi 15 août 2019

Licence Creative Commons

Introduction

Un rapport de bug est un document ayant pour but de fournir des informations au sujet d'un défaut dans une application ou dans un système. Il est généralement rédigé lorsqu'un bug est identifié chez l'utilisateur ou durant la phase de test avant la livraison du produit. Un rapport de bug peut être désigné par différents termes comme rapport de défaut, rapport d'incident, rapport de déviation ou rapport d'anomalie.


Contenu d'un rapport de bug

Idéalement, un rapport de bug doit comporter les éléments ci-dessous:

  • Un identifiant unique
  • Un titre résumant la description de l'anomalie
  • La fonction impactée

  • Une description détaillée de l'anomalie
  • Les étapes pour reproduire l'anomalie
  • Une capture écran montrant l'anomalie

  • La version du logiciel ou du système
  • L'environnent de reproduction de l'anomalie

  • Le degré de sévérité ou de criticité de l'anomalie
  • Le degré de priorisation de l'anomalie
  • Le status de l'anomalie. Par exemple: Nouveau, Rejeté, Corrigé, ...
  • La reproductibilité de l'anomalie

  • L'auteur du rapport de l'anomalie
  • La date de création du rapport
  • La date de modification du rapport de l'anomalie
  • La personne chargé de la résolution ou du traitement de l'anomalie

Un exemple d'un rapport de bug.



Normes et qualité

En matière de processus qualité et de normalisation, la partie 3 de la norme « ISO/IEC/IEEE 29119: Systems engineering -- Software testing » consacré à la documentation fournit des modèles et des exemples pour la rédaction d'un bon rapport de bug. Il s'agit d'une norme internationalement reconnue qui remplace l'ancienne norme IEEE 829.


Outils

Des outils de suivi de bugs (Bug Tracker) comme Mantis, Jira, Trac ou Bugzilla peuvent être utilisés pour la rédaction, le stockage et la gestion des rapports de bugs.




Références:

Les niveaux de test
vendredi 26 avril 2019

Licence Creative Commons

Dans l'ingénierie des tests logiciels, il existe différents niveaux de test. La pyramide ci-dessous, également appelé pyramide de test ou pyramide de Mike Cohn est une parfaite illustration de ce concept.



Sommaire



1. Les tests unitaires

Les tests unitaires servent à vérifier qu'une certaine unité d'un code fonctionne comme prévu. Ces tests sont habituellement codés par les développeurs et permettent de localiser de manière très précise l'origine d'un bogue. Dans un langage orienté objet comme Java, une unité peut être une classe.

En théorie, l'exécution d'un tests unitaire doit se faire en parfaite isolation et doit durer moins d'une seconde. Les classes appelantes sont souvent remplacées par des mocks, des stubs ou par d'autres types de simulacre. Les tests unitaires ne traversent pas de port et leur nombre doit être largement supérieur au nombre de tout autre type de test.

On peut distinguer deux types de test unitaire.

  • Les tests unitaires « solitaires » où toutes les classes appelées par la classe testée sont remplacées par des simulacres (mock, stub, etc).

  • Les tests unitaires « sociables » où seuls les collaborateurs lents comme une classe d'accès à une base de données ou d'appels réseaux sont remplacées par des simulacres.




2. Les tests d'intégration

Dans la pyramide de Mike Cohn, les tests d'intégration se situent juste au-dessus des tests unitaires. Ils sont plus lents que les tests unitaires et sont eux aussi codés par les développeurs. Ils permettent de vérifier que la partie du code qui a pour rôle de communiquer avec un composant externe à l'application fonctionne correctement. Ce composant externe peut être une base de données, un service web ou un système de fichiers.

Les tests d'intégration ont un champ d'action étroit et sont localisés au frontière de l'application. Ce type de test nécessite le plus souvent l'exécution de l'application et du composant externe.

Un exemple possible de test d'intégration consisterait à écrire des informations dans la base de données de l'application via l'appel d'une fonction du code, puis de lire cette base de données pour vérifier la présence du résultat attendu.




1. Les tests d'API

La majorité des applications modernes offrent des API qui peuvent être utilisées pour vérifier le bon fonctionnement de la logique métier de l'application. En général, les tests d'api sont situés juste en dessous des tests d'interface utilisateur. Ils ont l'avantage d'être moins fragile et plus rapide que les tests d'interface utilisateur.

Un exemple de test d'api consisterait à envoyer une requête HTTP vers la couche web service de l'application, puis de vérifier la présence du résultat attendu dans la réponse HTTP.




4. Les tests IHM

Au sommet de la pyramide se trouve les tests d'interface utilisateur. Leur objectif est de vérifier en fonction des entrées et des interactions avec l'interface utilisateur, le contenu et l'affichage des données ainsi que le déclenchement des bonnes actions. Ils permettent de contrôler avec un point de vue utilisateur, le bon fonctionnement d'une application.

Les tests d'interface utilisateur peuvent être automatisés grâce à des outils comme Selenium, Protractor, Appium ou QTP. La mise en place d'un environnement complet est nécessaire pour ce type de test.




Note: Avec certains frameworks comme Angular, il est possible de développer des tests unitaires au niveau de la couche interface utilisateur



Références:

TestLink - Guide rapide d’utilisation
samedi 29 décembre 2018

Licence Creative Commons

TestLink est une application web de gestion des activités de test. Comme tout outil de gestion de test, il fournit les fonctionnalités comme la gestion des cas de test, la gestion des exigences, l’exécution des campagnes de test et le reporting des résultats.

Comment utiliser TestLink ?



1. Création d'un projet de test

Etape 1: Se connecter à TestLink en tant qu’admin


Etape 2 : Saisir les informations au sujet du projet de test


Etape 3 : Cliquer sur le bouton « Créer » pour enregistrer le projet de test





2. Gestion des exigences

Etape 4 : Cliquer sur le lien « Dossier des exigences ».


Etape 5 : Cliquer sur le bouton de création d’un dossier des exigences


Etape 6 : Saisir les informations du dossier d’exigence


Etape 7 : Cliquer sur le bon de création d’une exigence


Etape 8 : Saisir les informations au sujet de l'exigence


Etape 9 : Cliquer sur le bouton d’enregistrement





3. Gestion du cahier de test

Étape 10 : Cliquer sur le lien « Cahier de test ».


Étape 11 : Cliquer sur le bouton « + » pour créer une séquence de test (dossier de test).


Etape 12 : Saisir les informations concernant la séquence de test.


Étape 13 : Cliquer sur le bouton de création d’un cas de test (bouton + )


Etape 14: Saisir les informations au sujet du cas de test


Etape 15: Cliquer sur le bouton de création d'un pas de test


Etape 16: Saisir les actions de pas et les résultats attendus


Etape 17 : Lier le cas de test à un exigence



4. Création d’une campagne de test

Etape 18 : Cliquer sur le lien « Gestion de campagne de test ».


Etape 19 : Cliquer sur le bouton de création d’une campagne de test.


Etape 20 : Saisir les informations concernant la campagne de test et cliquer sur le bouton « Créer ».


Etape 21 : Vérifier la création de la campagne de test.


Etape 22 : Cliquer sur le lien « Affectation des cas de test à la campagne ».


Etape 22 : Cliquer sur la séquence de test.


Etape 23 : Affecter un cas de test


5. Création d’un build d'exécution

Etape 24 : Cliquer sur le lien « Build/Livraison ».


Etape 25 : Cliquer sur le bouton de création d’un build.


Etape 26 : Saisir les informations et cliquer sur le bouton « Créer ».


Etape 27 : Vérifier la création du build.



6. Gestion des utilisateurs et des droits d’accès

Etape 27 : Créer et/ou gérer des utilisateurs et les droits d'accès si vous le souhaitez.



7. Exécution de test

Etape 28: Cliquer sur le lien « Exécution des tests ».


Etape 29 : Sélectionner le résultat pour chaque étape du test.


Etape 30 : Cliquer sur un smiley pour indiquer le résultat de l’exécution du cas de test.


Etape 31 : Vérifier l'affichage du résultat.



8. Reporting des résultats

Etape 32 : Cliquer sur le lien en « Rapport de test et métrique ».


Etape 33 : Analyser les résultats de la campagne de test


Etape 34 : Générer un rapport de test



Tags: How use TestLink ?; TestLink - Quick Guide.

A lire aussi:

Références:

AUTRES ARTICLES