k6 est un framework de test de charge open source basé sur JavaScript.
Avec k6 et la librairie client JavaScriptK6 de brainCloud, les développeurs peuvent facilement créer des tests de charge qui imitent le comportement d'une application en appelant les API brainCloud et les scripts Cloud Code personnalisés.
Remarque : ceci ne constitue pas une approbation officielle de k6. Nous n'avons aucun lien avec k6, et vous n'êtes pas limité à son utilisation pour vos tests de charge.
Lorsque vous travaillez sur le test de charge de vos applications brainCloud, nous vous recommandons vivement les éléments suivants :
Vous choisissez un framework de test de charge capable d'utiliser l'une des librairies clientes brainCloud disponibles. (Notre protocole client est complexe et ne convient pas aux frameworks de test de charge simples basés sur HTTP ou REST).
Vous coordonnez votre approche et vos tests avec un membre de l'équipe d'ingénierie/support brainCloud. Ce qui est un test pour vous peut ressembler à une attaque par déni de service pour nous !
Ce tutoriel est un exemple simple de création d'un test de charge simple pour votre application avec k6. Une approche similaire peut être adoptée avec d'autres outils.
---
Installation
Pour commencer :
Installez K6 sur votre machine locale
Demandez l'exemple de package K6.zip au support brainCloud
Une fois décompressé, vous trouverez les éléments suivants :
lib/brainCloudK6.js
- une version compatible K6 de la librairie JavaScript brainCloudsimpleExample/simpleTestScript.js
- un exemple de script de testsimpleExample/config.js
- paramètres de configuration personnalisables pour exécuter le script
Vous devriez pouvoir configurer et exécuter l’exemple de script à partir du répertoire simpleExample
.
---
Préparation de l'application
Pour exécuter cet exemple, vous devrez d’abord créer un exemple d’application qui répond aux critères suivants :
Est activé pour la plateforme Web <- Les applications JavaScript s'affichent toujours comme "Web"
A un classement nommé
"daily"
Le RTT est activé
Le Chat est activé, avec un canal de chat global nommé
"main"
Les instructions pour créer rapidement une telle application sont :
Connectez-vous au portail de conception
Accédez à Équipe | Gérer | Apps et cliquez sur [+ Nouvelle application]
Donnez un nom à l'application, activez les fonctionnalités de jeu (si demandé) et assurez-vous d'activer au moins la plateforme Web. Cliquez ensuite sur [Créer].
Accédez à Conception | Info de base de l'App | Réglages avancés et cochez la case Real-time Tech (RTT) Activé.
Accédez à Conception | Classements | Config Classements, puis cliquez sur le signe (+ Nouvelle Configuration De Classement) en haut à droite. Saisissez
"daily"
pour l'ID de classement et définissez le type de rotation sur "Quotidien". Cliquez sur [Sauvegarder et Fermer] .Accédez à Conception | Messagerie | Clavarder et activez le service de clavardage. Cliquez sur [Sauvegarder] .
Allez dans Conception | Messagerie | Canaux de clavardage, cliquez sur [+ Nouveau canal] et créez un canal avec le code "principal". Le nom et la description du canal sont libres. Cliquez sur [Sauvegarder] .
Enfin, allez dans Conception | Info de base de l'App | IDs de l'Application et notez l'ID de l'App et la clé secrète de l'App. Vous en aurez besoin pour le fichier
config.js
.
Remarque : si l'application est créée sur le BaaS public brainCloud, elle sera limitée à 100 utilisateurs actifs quotidiens. Vous devrez mettre à niveau votre forfait pour tester des niveaux d'utilisation plus élevés.
---
Configuration de test
Clonez (ou renommez) le fichier simpleExample/config-template.js
- en créant un nouveau fichier appelé config.js
.
Utilisez un éditeur de texte pour modifier le fichier simpleExample/config.js
.
// Configurer le serveur d'API brainCloud et les informations de l'application
export const BRAINCLOUD_APIURL = "https://api.bc.xxxxxxx.com";
export const BRAINCLOUD_APPID = "<your-app-id>";
export const BRAINCLOUD_APPSECRET = "<your-app-secret>";
export const BRAINCLOUD_APPVERSION = "1.0.0";
// Configurer les informations du projet K6
export const K6_CLOUD_PROJECT_ID = "<your-k6-project-id>";
// Configurer le scénario à exécuter. Remarque : vous pouvez également remplacer
// en définissant l'environnement K6_TEST_SCENARIO ou le paramètre de ligne de commande
export const K6_TEST_SCENARIO = "sanity5UserTestScenario";
// Préfixe utilisateur - préfixe à utiliser pour les utilisateurs générés.
// Le script ajoutera un compte à la fin pour chaque utilisateur
// - donc utilisateur+1, utilisateur+2, etc.
// En cas d'exécution manuelle sur plusieurs serveurs, faites varier ce préfixe
// pour éviter que les utilisateurs du serveur n'entrent en conflit les uns avec les autres
// - définissez sur "load1+user" pour le 1er serveur, "load2+user" pour le 2ème, etc.
export const USERNAME_PREFIX = "user+";
Au minimum, vous devez remplacer les éléments suivants :
BRAINCLOUD_APIURL
- Définissez le point de terminaison de l'API de votre instance brainCloud. Si vous utilisez le service BaaS public brainCloud, utilisezhttps://sharedprod.braincloudservers.com
. Pour la plupart des instances privées, remplacez simplement le"portal"
au début de l'URL du portail de conception par"api"
BRAINCLOUD_APPID
- l'appId de votre application nouvellement crééeBRAINCLOUD_APPSECRET
- la clé secrète de votre application nouvellement créée
Notez que l'identifiant K6_CLOUD_PROJECT_ID n'est requis que si vous exécutez le test via le service cloud k6.io. Il n'est pas requis pour une exécution locale.
Script de test
Examinez le script simpleExample/simpleTestScript.js
.
Vous noterez ce qui suit :
Il commence par l'importation de diverses librairies K6, la librairie brainCloudK6 et le fichier
config.js
.Il définit ensuite certaines statistiques personnalisées à collecter et des seuils pour évaluer les résultats des tests.
La section suivante définit différents scénarios de test, allant de simples tests de cohérence de 5 et 50 utilisateurs à des scénarios plus complexes de 100, 500 et 1 000 utilisateurs. Le scénario à exécuter est spécifié via la propriété
K6_TEST_SCENARIO
dansconfig.js
Finalement, les tests eux-mêmes ne sont pas si compliqués - voir l'extrait ci-dessous
// 4 - Récupérer un identifiant de canal en préparation pour l'étape suivante
var channelId = "";
_bc.chat.getChannelId("gl", "main", result =>
{
if ( checkForAndRecordErrors("chat.getChannelId()", result) ) {
channelId = result.data.channelId;
}
});
sleep(INTERVAL);
// 5 - Se connecter à un canal de clavardage
_bc.chat.channelConnect( channelId, 10, result =>
{
checkForAndRecordErrors("chat.channelConnect()", result);
});
sleep(INTERVAL);
// 6 - Publier un message de clavardage
_bc.chat.postChatMessageSimple(channelId, "Chat message from K6", true, result =>
{
checkForAndRecordErrors("chat.postChatMessageSimple()", result);
});
sleep(INTERVAL);
Exécution de K6 localement
Pour exécuter le test, exécutez ce qui suit à partir du répertoire simpleExample
:
> k6 exécute simpleTestScript.js
Vous verrez les journaux de la console et certains statuts au fur et à mesure de la progression des tests :
Une fois terminé, les résultats du test seront affichés.
Remarque : l’utilitaire k6 offre la possibilité de personnaliser le format des résultats et de s’intégrer à plusieurs systèmes externes.
Exécution via K6.io
K6.io propose un service d'exécution de scripts distribués via le cloud. Vous pouvez obtenir un compte gratuit pour 50 petits tests.
Pour exécuter un test via le service cloud, copiez la propriété projectId
du fichier K6.io dans la propriété K6_CLOUD_PROJECT_ID
du fichier config.js
.
Tout d’abord, vous devrez vous connecter via l’outil de ligne de commande :
> k6 login cloud
email: john@smith.com
password: xxx
Exécutez ensuite le script via ce qui suit :
> k6 cloud simpleTestScript.js
Vous pouvez ensuite visualiser les résultats via K6.io.
Notez que les résultats disponibles via k6.io (voir ci-dessus) sont plus impressionnants que les résultats standards disponibles via l'outil en ligne de commande.
Résumé
K6 est un outil + service utile pour créer et exécuter rapidement des tests de charge brainCloud simples.