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
Depuis le tableau de gestion des serveurs d'intelligence artificielle, accessible en cliquant sur l'icône , il est possible d'ajouter ou de 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.
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.
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
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.
Configurer le serveur
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 :
-
Le format JSON du retour attendu :
(Qui doit être encodé sous la forme de la chaîne de caractères{ "testCases": [ { "name": "", "description": "", "prerequisites": "", "testSteps": [ { "index": 0, "action": "", "expectedResult": "" } ] } ] }
\"{\"testCases\":[{\"name\":\"\",\"description\":\"\",\"prerequisites\":\"\",\"testSteps\":[{\"index\":0,\"action\":\"\",\"expectedResult\":\"\"}]}]}\"
.)
Squash TM ne peut interpréter que des réponses JSON respectant ce schéma. -
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.
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.
En cas d'erreur, celle-ci est renseignée sous l'exigence, pour permettre l'analyse et la résolution du problème.
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