Perturbation volontaire du système
Test actifAugmenter la résilience du système – ex. Chaos Monkey chez Netflix
Le concept de perturbation volontaire du système
Traditionnellement, les tests consistent à essayer de trouver des problèmes sur le produit, ce qui est purement du Shift Left Testing. Lorsqu'il s'agit de Shift Right Testing, la qualité ne concerne pas seulement le produit mais aussi le système qui le fournit. Ce sujet est particulièrement important lorsque l'organisation se préoccupe des opérations et veut voir comment le produit et l'organisation gèrent les événements qui peuvent perturber le système et sa robustesse, en un mot, sa "résilience". La résilience est quelque chose qui peut être manipulé avec insouciance [Taleb 2012] et être capable de faire face à un "Cygne noir" [Taleb 2010]. Un tel niveau de robustesse nécessite plusieurs types de tests, comme tout autre système ENF à tester.
Pour tester cette résilience, il faut tenter de perturber le système dans un environnement similaire à la production et également en production, par exemple en désactivant certaines parties, et voir comment l'ensemble du système réagit. Même si une situation inattendue se produit, les caractéristiques de qualité attendues du produit ne devraient pas être réduites de manière significative.
En termes de Panarchie [Moustier 2020], tester la résilience du système c'est essayer d'atteindre sa phase Ω et s'assurer que le système atteindra par lui-même une phase k dans le temps le plus court et la plus petite quantité de ressources perdues.
Impact sur la maturité des tests
DevOps met en avant le paradigme "Fail big, Fail fast, fail often" [Pontefract 2018] [Shore 2004] [Khanna 2015] pour les stratégies Shift left & right car il permet de détecter les problèmes très rapidement avant que les clients ne s'en plaignent ; plus cela se produit souvent, moins les clients se plaignent.
Pour y parvenir, les testeurs peuvent injecter des fautes. Les tests d'injection de fautes (FIT) dans les logiciels peuvent être effectués au moment de la compilation, notamment en modifiant le code source pour simuler des fautes dans le système logiciel [Gillis 2019] ou en modifiant le comportement des bibliothèques [Marinescu 2009]. Cela met en évidence, par exemple, la façon dont les parties invoquées se comporteraient en cas de contexte inattendu [Shore 2004]. La stratégie de développement sous-jacente attendue est appelée "programmation défensive" [McConnell 2004] et peut être adaptée pour déclencher la procédure d'alerte appropriée.
La FIT peut également se produire au moment de l'exécution d'un logiciel qui injecterait une faute dans le logiciel pendant qu'il est en cours d'exécution, sous certaines conditions spécifiques telles qu'une durée déterminée ou un calendrier [Gillis 2019], comme le " Chaos Monkey " de Netflix. Cette approche est également appelée "Chaos engineering" qui crée des turbulences et des conditions inattendues pour voir comment le système s'adapte pour compenser les défaillances locales.
La sécurité fait partie des causes de perturbation qui conduisent à des types de tests très spécifiques. Les tests de pénétration, plus communément appelés "Pentesting", font également partie des perturbations volontaires du système. Ces tests consistent à essayer de repérer les points les plus faibles du système et éventuellement d'atteindre un atout pour démontrer la possibilité de nuire davantage.
La perturbation ultime qui peut survenir dans un système est une catastrophe, qu'elle soit naturelle ou non. Pour faire face à de tels événements, les organisations matures prévoient des plans de continuité des activités et des plans de reprise après sinistre. Malheureusement, les plans ne sont que des vœux pieux tant qu'ils ne sont pas confrontés à la réalité ; de plus, les catastrophes ne se produisent pas régulièrement. Pour permettre à la solution de faire face à ces cygnes noirs, des simulations et des exercices sont généralement déclenchés pour tester le système de gestion de la continuité des activités (BCMS) [BS-EN-ISO-22301 2019] [US-NFPA 1600 2010].
Le point de vue d'Agilitest sur cette pratique
En tant que plateforme d'automatisation de scripts de test, Agilitest peut soutenir vos tentatives pour perturber le système. Ceci pourrait être fait en conjonction avec des actions d'injection de fautes faites en parallèle avec le scénario de test.
Pour automatiser complètement de tels scénarios de test de robustesse, la conception du produit devrait intégrer certains éléments de testabilité pour permettre de piloter les parties sous-jacentes selon l'architecture de l'injecteur de fautes. Cela conduirait à une qualité intégrée [SAFe 2021-27].
Pour découvrir l'ensemble des pratiques, cliquez ici.
Cartes connexes
Pour aller plus loin
- [BS-EN-ISO-22301 2019] : British Standards Institute - 2019 - "Sécurité et résilience. Systèmes de gestion de la continuité des activités. Exigences."
- [Gillis 2019] : Alexander S. Gillis - FEV 2019 - "Fault injection testing" - https://searchsoftwarequality.techtarget.com/definition/fault-injection-testing
- [Khanna 2015] : Rajat Khanna & Isin Guler & Atul Nerkar - MAR 2015 - "Fail Often, Fail Big, and Fail Fast ? Learning from Small Failures and R&D Performance in the Pharmaceutical Industry" - https://www.researchgate.net/publication/276389377 ou https://doi.org/10.5465/amj.2013.1109
- [Marinescu 2009] : Paul Marinescu & George Candea - SEP 2009 - "LFI : A Practical and General Library-Level Fault Injector" - https://www.researchgate.net/publication/224596722_LFI_A_Practical_and_General_Library-Level_Fault_Injector
- [McConnell 2004] : Steve McConnell - " Code Complete - un manuel pratique de construction de logiciels " - Microsoft Presse - 2004 - ISBN 0-7356-1967-0
- [Moustier 2020] : Christophe Moustier - OCT 2020 - " Conduite de tests agiles pour SAFe et LeSS " - ISBN : 978-2-409-02727-7
- [Pontefract 2018] : Dan Pontefract - " The Foolishness Of Fail Fast, Fail Often " - 15/SEP/2018 - https://www.forbes.com/sites/danpontefract/2018/09/15/the-foolishness-of-fail-fast-fail-often/?sh=3900bb159d9b
- [SAFe 2021-27] : SAFe - FEV 2021 - " Qualité intégrée " - https://www.scaledagileframework.com/built-in-quality/
- [Shore 2004] : Jim Shore - OCT 2004 - "Fail Fast" - https://www.martinfowler.com/ieeeSoftware/failFast.pdf
- [Taleb 2010] : Nassim Nicholas Taleb - 2010 - "Le cygne noir : l'impact du hautement improbable" - ISBN : 9780141906201
- [Taleb 2012] : Nassim Nicholas Taleb - NOV 2012 - "Antifragile : les choses qui tirent profit du désordre" - ISBN : 9781400067824
- [US-NFPA 1600 2010] : National Fire Protection Association - 2010 - "Standard on Disaster/Emergency Management and Business Continuity Programs" (norme sur les programmes de gestion des catastrophes/urgences et de continuité des activités)