Aller au contenu

GĂ©rer les serveurs d'intelligence artificielle

Attention

La génération de cas de test par intelligence artificielle est accessible avec le plugin Squash TM Premium et la licence Ultimate.
C'est une fonctionnalitĂ© expĂ©rimentale : elle fonctionne, mais il est possible qu'elle ne soit pas assez puissante pour ĂȘtre utilisĂ©e en production.
Le but est de permettre aux utilisateurs d'expérimenter la génération de cas de test avec l'intelligence artificielle, afin de déterminer si ce type de fonctionnalité peut les intéresser et, le cas échéant, de faire part à Henix de retours éventuels concernant l'intégration de l'IA dans Squash.

Ajouter et supprimer un serveur d'intelligence artificielle

Page de gestion des serveurs d'IA

Depuis le tableau de gestion des serveurs d'intelligence artificielle, accessible en cliquant sur l'icÎne icÎne-artificial-intelligence.png, il est possible d'ajouter Ajouter ou de supprimer Supprimer des serveurs de façon unitaire ou en masse.

La suppression d'un serveur lié à un projet entraßne la suppression du lien entre le projet et le serveur d'IA.

Ajouter un serveur d'IA

Lors de la création d'un serveur, il faut obligatoirement renseigner les champs Nom et URL. L'URL doit correspondre à l'URL de l'API du serveur d'intelligence artificielle. L'information est présente dans la documentation de l'API du serveur choisi.
Par exemple, pour Mistral, l'URL est https://api.mistral.ai/v1/chat/completions.

En cliquant sur le numéro de ligne # ou le nom d'un serveur, sa page de consultation s'affiche permettant sa configuration complÚte.

Vue d'un serveur d'IA

Depuis la page de consultation d'un serveur d'intelligence artificielle, plusieurs actions sont possibles :

  • modifier le nom, l'URL et la description du serveur ;
  • renseigner le token d'identification au serveur ;
  • configurer le serveur en renseignant le modĂšle de la requĂȘte et le chemin JSON de la rĂ©ponse du serveur ;
  • renseigner une exigence modĂšle afin de tester la configuration du serveur ;
  • supprimer le serveur depuis le bouton [...].

Paramétrer un serveur d'intelligence artificielle

Il est indispensable de paramétrer son serveur afin de pouvoir l'utiliser dans des projets pour générer des cas de test à partir d'une exigence.

Ajouter un jeton d'identification au serveur

Bloc authentification d'un serveur d'IA

Pour les serveurs d'intelligence artificielle, l'authentification se fait grĂące Ă  un jeton.
Pour certains serveurs, ce jeton n'est pas nécessaire : dans ce cas, ne pas renseigner le champ.

Utilisation de l'en-tĂȘte Authorization

Squash TM ne prend actuellement en charge l'autorisation que via l'en-tĂȘte HTTP Authorization: Bearer <token>.
Ce mĂ©canisme est trĂšs largement supportĂ©, mais peut ne pas ĂȘtre le plus mis en avant par les fournisseurs du Cloud. Par exemple, pour l'utilisation d'Azure, vous devez utiliser l'authentification Microsoft Entra ID.

Configurer le serveur

Bloc configuration d'un serveur d'IA

Pour pouvoir contacter le serveur, Squash TM doit connaĂźtre le modĂšle du corps de la requĂȘte attendu. Pour connaĂźtre les paramĂštres Ă  renseigner, consulter la documentation liĂ©e au modĂšle choisi.

Certaines données sont absolument indispensables pour que la génération de cas de test fonctionne :

  1. Le format JSON du retour attendu :

    {
      "testCases": [
        {
          "name": "",
          "description": "",
          "prerequisites": "",
          "testSteps": [
            {
              "index": 0,
              "action": "",
              "expectedResult": ""
            }
          ]
        }
      ]
    }
    
    (Qui doit ĂȘtre encodĂ© sous la forme de la chaĂźne de caractĂšres \"{\"testCases\":[{\"name\":\"\",\"description\":\"\",\"prerequisites\":\"\",\"testSteps\":[{\"index\":0,\"action\":\"\",\"expectedResult\":\"\"}]}]}\".)
    Squash TM ne peut interpréter que des réponses JSON respectant ce schéma.

  2. Le placeholder {{requirement}} : il permet d'alimenter par la suite le corps de la requĂȘte avec l'exigence choisie pour crĂ©er des cas de test.

Tester la configuration du serveur

Afin de tester le bon fonctionnement de la configuration, il est nécessaire de fournir un exemple d'exigence.

Bloc test de configuration d'un serveur d'IA

Appuyer sur [Tester la configuration] : une requĂȘte vers le serveur choisi est envoyĂ©e. Si la configuration est bonne, une pop-up affiche les cas de test gĂ©nĂ©rĂ©s.

Pop-up cas de test générés par l'IA

En cas d'erreur, celle-ci est renseignée sous l'exigence, pour permettre l'analyse et la résolution du problÚme.

Erreur pas de jeton renseigné IA

Si besoin, ajuster les paramÚtres Top-P, Top-K, Temperature
 (selon le modÚle d'IA choisi) pour obtenir de meilleurs résultats.

Exemples de configuration

OpenAI

gpt-4-1106-preview est un des nombreux modÚles proposés par OpenAI.

URL : https://api.openai.com/v1/chat/completions

ModĂšle du corps de la requĂȘte :

{
  "model": "gpt-4-1106-preview",
  "messages": [
    {
      "role": "system",
      "content": "Vous ĂȘtes un expert en test logiciel manuel. Vous ĂȘtes chargĂ© de dĂ©finir les cas de test nĂ©cessaires pour valider une exigence spĂ©cifique. Ces cas de test doivent obligatoirement ĂȘtre rĂ©digĂ©s en français. Vous devez fournir les cas de test au format JSON sous forme de tableau avec le format suivant : \"{\"testCases\":[{\"name\":\"\",\"description\":\"\",\"prerequisites\":\"\",\"testSteps\":[{\"index\":0,\"action\":\"\",\"expectedResult\":\"\"}]}]}\". Votre rĂ©ponse ne doit contenir rien d'autre que ce JSON ! La premiĂšre Ă©tape d'un test doit ĂȘtre numĂ©rotĂ©e 0."
    },
    {
      "role": "user",
      "content": "Écrivez des cas de test pour l'exigence suivante : {{requirement}}"
    }
  ],
  "temperature": 0.9,
  "top_p": 0.9,
  "n": 1,
  "stream": false,
  "max_tokens": 2000,
  "presence_penalty": 0,
  "frequency_penalty": 0
}

Chemin JSON du texte généré : choices[0].message.content

Mistral

mistral-large-latest est un modÚle proposé par Mistral.

URL : https://api.mistral.ai/v1/chat/completions

ModĂšle du corps de la requĂȘte :

{
  "model": "mistral-large-latest",
  "messages": [
    {
      "role": "system",
      "content": "Vous ĂȘtes un expert en test logiciel manuel. Vous ĂȘtes chargĂ© de dĂ©finir les cas de test nĂ©cessaires pour valider une exigence spĂ©cifique. Ces cas de test doivent obligatoirement ĂȘtre rĂ©digĂ©s en français. Vous devez fournir les cas de test au format JSON sous forme de tableau avec le format suivant : \"{\"testCases\":[{\"name\":\"\",\"description\":\"\",\"prerequisites\":\"\",\"testSteps\":[{\"index\":0,\"action\":\"\",\"expectedResult\":\"\"}]}]}\". Votre rĂ©ponse ne doit contenir rien d'autre que ce JSON ! La premiĂšre Ă©tape d'un test doit ĂȘtre numĂ©rotĂ©e 0."
    },
    {
      "role": "user",
      "content": "Écrivez des cas de test pour l'exigence suivante : {{requirement}}"
    }
  ],
  "response_format": {
    "type": "json_object"
  },
  "temperature": 0.7,
  "max_tokens": 2048,
  "stream": false,
  "safe_prompt": false,
  "random_seed": null
}

Chemin JSON du texte généré : choices[0].message.content

Mistral-7B-Instruct chez Hugging Face

mistralai/Mistral-7B-Instruct-v0.3 est un petit modÚle "open-weight" créé par Mistral et utilisable gratuitement chez Hugging Face.
Il n'est sans doute pas adéquat pour des exigences compliquées, mais il est inclus ici pour ceux qui veulent expérimenter gratuitement avec la génération d'IA (il faut cependant créer un compte et un jeton d'accÚs chez Hugging Face). Il s'agit également d'un exemple de configuration différent de ceux-ci dessus.

URL : https://api-inference.huggingface.co/models/mistralai/Mistral-7B-Instruct-v0.3

ModĂšle du corps de la requĂȘte :

{
  "inputs": "<s>[INST]Vous ĂȘtes un expert en test logiciel manuel. Vous ĂȘtes chargĂ© de dĂ©finir les cas de test nĂ©cessaires pour valider une exigence spĂ©cifique. Ces cas de test doivent obligatoirement ĂȘtre rĂ©digĂ©s en français. Vous devez fournir les cas de test au format JSON sous forme de tableau avec le format suivant : {\"testCases\":[{\"name\":\"\",\"description\":\"\",\"prerequisites\":\"\",\"testSteps\":[{\"index\":0,\"action\":\"\",\"expectedResult\":\"\"}]}]}. Votre rĂ©ponse ne doit contenir rien d'autre que ce JSON ! La premiĂšre Ă©tape d'un test doit ĂȘtre numĂ©rotĂ©e 0. Écrivez des cas de test pour l'exigence suivante : {{requirement}}[/INST]</s>",
  "parameters": {
    "return_full_text": false,
    "temperature": 1.0,
    "max_new_tokens": 4096
  }
}

Chemin JSON du texte généré : [0].generated_text