Intégration Continue pour PowerBuilder

Améliorer l'agilité, la productivité et la sécurité

 

Continuous Integration for PowerBuilder

Qu'est-ce que l'Intégration Continue ?

Le concept d'intégration continue (CI pour Continuous Integration) est la pratique consistant à fusionner plusieurs fois par jour toutes les copies de travail des développeurs vers une version centralisée, hébergée dans un référentiel partagé.

L'automatisation des déploiements conduit à la livraison continue (CD), une extension fréquente de l'intégration continue. Afin de déployer des versions fiables, la livraison continue implique de vérifier la conformité des builds avec les exigences de qualité, de stabilité et de sécurité via la mise en place de tests automatisés et l'analyse statique du code pour détecter les bugs, les problèmes de qualité et les vulnerabilités (SAST).

Chaque mise à jour du code est donc automatiquement vérifiée et, si elle est acceptée, peut être déployée en production.

En définitive, un workflow CI/CD augmentera l'agilité et la productivité de votre équipe de développement ainsi que la qualité et la sécurité du code.

Pourquoi mettre en œuvre l'intégration continue pour les applications PowerBuilder ?

Avant de soumettre leur code au référentiel, les développeurs doivent d'abord le mettre à jour pour prendre en compte les modifications apportées depuis qu'ils ont commencé à travailler sur leur copie.

  1. S'ils le font fréquemment, le référentiel contiendra moins de modifications et ils auront moins de travail avant d'envoyer leurs propres modifications.
  2. Le risque de conflits d'intégration lorsque leur branche de code est fusionnée est réduit.
  3. En testant le code fréquemment, les développeurs découvrent les bugs plus rapidement. Les corriger est alors moins coûteux car les développeurs ont encore à l'esprit le code qu'ils viennent d'écrire.
  4. L'intégration continue réduit le risque que d'autres membres de l'équipe développent du code contenant des bugs, ce qui générerait des bugs supplémentaires et augementerait les coûts de correction.

Workflow d'Intégration Continue

Un workflow d'intégration continue comporte généralement les étapes suivantes :

Continuous Integration Workflow

1. Exécuter des tests unitaires localement

Les tests unitaires peuvent être exécutés manuellement, ou écrits et automatisés selon les pratiques de développement piloté par les tests.
Tous les tests unitaires doivent passer la validation dans l'environnement local du développeur avant d'intégrer ses modifications dans la version principale. Cela permet d'éviter que son travail ne casse les copies d'autres développeurs.

2. Valider les modifications et générer un build

Les développeurs soumettent leurs modifications au référentiel et fusionnent leur branche de code avec la version principale. Un serveur de construction compile le code périodiquement, parfois après chaque livraison, et transmet les résultats aux développeurs.

Les versions récentes de PowerBuilder offre un large choix de fonctionnalités pout simplifier ce process :

3. Inspecter le Code

Les outils d'inspection du code exécutent une analyse statique pour identifier les anomalies. Chaque bloc de code est vérifié par rapport à un ensemble de règles pour trouver les vulnérabilités de sécurité, les bugs et les problèmes de maintenabilité. Un rapport est automatiquement généré pour compter et classer les défauts par gravité, et évaluer si un build est acceptable ou non pour le déploiement.

Vous pouvez utiliser Visual Expert pour inspecter votre code PowerBuilder et de bases de données :

   

Localiser les problèmes au niveau de l'instruction


Tableau de bord d'inspection du code contenant des indicateurs de haut niveau

4. Tester le build - Continuous Testing

L'intégration continue vise à automatiser les tâches pour vérifier et génerer des builds déployables aussi souvent que possibles.

Les tests sont une étape essentielle dans ce processus, et l'automatisation des tests, indispensable pour atteindre cet objectif: chaque build sera testé en profondeur et les indicateurs générés automatiquement permettront d'évaluer si le build est déployable.

Pourquoi automatiser les tests ?

Obviously, every team tests its products.
Yet all delivery includes defects.

Évidemment, chaque équipe teste ses produits. Pourtant, toute livraison comporte des défauts. Les testeurs s'efforcent de les attraper : certains restent toujours présents, tandis que d'autres réapparaissent, quelle que soit la rigueur des tests manuels.

Un outil d'automatisation des tests est un moyen très efficace de compléter vos tests manuels, pour améliorer l'efficacité et la couverture de vos opérations de test.

En savoir plus : étapes de création de tests automatisés

Test Automations Tasks

L'automatisation des tests est-elle productive ?

Les générations d'outils précédentes avaient la réputation de demander trop d'efforts pour créer et maintenir les tests, ce qui allait à l'encontre de l'objectif de gain de productivité.

Ils étaient souvent basés sur 2 stratégies :

  • Le développement de scripts pour spécifier les tests - coûteux à développer.
  • L'enregistrement d'actions de test à l'écran - facile à créer, mais peu résistant aux changements d'interface graphique et trop coûteux à maintenir.

Les outils modernes offrent une approche différente, basée sur la reconnaissance d'objets :

  • Scanner le code pour identifier les objets
  • Définir les actions de test en sélectionnant un objet et un type d'action (cliquer sur un bouton, saisir une valeur dans un champ...). Beaucoup plus simple que l'écriture de scripts, des compétences en programmation ne sont plus nécessaires.
  • Les objets étant stables, les tests sont très résistants aux modifications de l'interface utilisateur. Les coûts de maintenance sont bien inférieurs à ceux des outils d'enregistrement.

Cet exemple de test automatisé lancera l'application, sélectionnera une méthode d'authentification,
entrera les informations de connexion et cliquera sur le bouton "Connexion".

En savoir plus :

Tests automatisés vs. manuels

Comparons les deux stratégies avec des indicateurs de performance clés :

  Manual Auto  
Précision Les tests manuels sont moins précis en raison des éventuelles erreurs humaines.
Les tests automatisés sont fiables et cohérents.
Productivité L'exécution de nombreux tests manuels prend du temps et coûte cher. Les tests automatisés sont plus rapides.
Pas de coûts supplémentaires pour les répéter autant de fois que nécessaire.
Démarrage Vous pouvez commencer à exécuter des tests manuels immédiatement.
Les tests automatisés nécessitent un travail préliminaire pour prédéfinir les tests et les actions.
Flexibilité Le test manuel est plus flexible : il permet de tester de manière aléatoire ou d'improviser des tests approfondis à la volée dans un domaine très spécifique.
Ce n'est pas le cas du test automatique.

Les tests automatisés apportent évidemment des avantages majeurs mais ne peuvent pas se substituer entièrement aux tests manuels.

La meilleure stratégie consiste à combiner judicieusement les 2 approches en fonction :

  • de la nature et de la stabilité des tests 
  • du temps disponible pour la création de tests automatisés 
  • de l'existence d'un workflow d'intégration continue
  • ...

Pour aller plus loin:

Automatisation des Tests pour PowerBuilder

Vous pouvez utiliser AscentialTest pour automatiser les tests des applications PowerBuilder, PowerClient et PowerServer.

  • Intégration avec SVN pour le contrôle de version.
  • Intégration avec JIRA pour le suivi des défauts.
  • Execution des tests par Ligne de commande via des outils tiers comme TFS, Azure et Jenkins.
  • Plug-in AscentialTest pour Jenkins. 

5. Localisez votre application

Les outils modernes permettent d'automatiser diverses tâches dans un flux de travail CI/CD.
Le support multilingue est désormais l'une d'entre elles.

Si votre application est déployée dans plusieurs pays, vous la traduisez probablement pour offrir un meilleur service à vos utilisateurs.
Une fois en production, vous devrez systématiquement mettre à jour les traductions, afin de maintenir une expérience utilisateur cohérente.

Outils & Ressources

Enable for PowerBuilder sépare les traductions du code et inclut des fonctionnalités spécifiques à intégrer dans un pipeline CI/CD :

  • Extraction de nouvelles chaînes de caractères et import dans la base de données multilingue
  • Export de phrases et de traductions vers un fichier (Json, XML, Excel)
  • Import de traductions à partir d'un fichier (Json, XML, Excel)

Vous pouvez ajouter une tâche multilingue à votre workflow, par exemple :

  1. Extraire et charger de nouvelles phrases dans la base de données multilingue.
  2. Vous pouvez éventuellement les prétraduire si la mémoire de traduction comporte des traductions.
  3. Importer des traductions dans la base de données multilingue.
  4. Générer un NOUVEAU BUILD avec des phrases multilingues mises à jour.

Remarque : les phrases sont généralement traduites par des traducteurs professionnels. Ceux-ci renvoient les traductions pour qu'elles soient automatiquement importées dans la base de données multilingue. Ce deuxième processus est indépendant du processus de compilation.