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.
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
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