Les tests automatisés basés sur les services sont la clé des appareils IoT sécurisés de haute qualité
Par Parasoft
30 juin 2017
4 min lire
L'IoT a besoin d'une perspective différente sur les tests
L'échelle de l'IoT est grande - probablement plus grande que ce que la plupart des fabricants embarqués ont pu gérer auparavant. De plus, les appareils individuels ne font que partie d'un ensemble plus vaste qui se compose de nombreuses variétés et types d'appareils. Dans mon dernier poster, J'ai discuté de la promesse de l'IoT dans les services qu'il fournit et de la conglomération de nombreuses «choses» en quelque chose de valeur pour l'entreprise. Il est important de traiter cette échelle à la fois dans (1) les exigences de l'appareil («choses») et (2) la valeur qu'elle ajoute à l'ensemble de l'automatisation («services») dans le cycle de vie du développement logiciel, afin de couvrir les coûts, calendrier et délais de mise sur le marché. Les tests, en particulier, doivent s'adapter à l'environnement opérationnel attendu, et fournir un support pour les exigences non fonctionnelles critiques telles que les performances et la sécurité.
L'Internet des services a besoin d'automatisation
L'automatisation du processus de développement logiciel devient critique à mesure que la mise en œuvre de l'IoT augmente. Les exigences de sécurité et non fonctionnelles deviennent plus importantes à mesure que la connectivité et l'échelle augmentent. Les tests automatisés basés sur les services deviennent essentiels pendant les phases d'intégration et de test du système, tout en permettant également de tester la sécurité, la stabilité et les performances.
Jetons un coup d'œil à la profondeur et à l'étendue de Parasoft dans l'automatisation des tests, comme le montre la figure 1, telle qu'elle s'applique à chaque phase du SDLC. La clé à retenir est de savoir comment chaque solution complète l'autre et évolue au fur et à mesure que le produit se développe. Les tests unitaires sont complétés par des analyses statiques et d'exécution. Au cours de l'intégration, les tests unitaires progressent vers les outils de test des API et des services, qui progressent ensuite vers la virtualisation des services.
Figure 1: Testez les solutions d'automatisation et où elles sont introduites dans le cycle de vie du développement logiciel.
La plupart des développeurs connaissent certains aspects de l'automatisation des tests; cependant, beaucoup ne pensent pas en termes de services ou de tests et de virtualisation basés sur les services. Au fur et à mesure que le paradigme passe des «choses» aux «services», l'avantage des tests basés sur les services devient plus évident.
Réduction des risques et des coûts grâce aux tests basés sur les services dans l'IoT
Au fur et à mesure qu'un produit progresse à travers le processus de développement vers l'intégration, les tests deviennent plus compliqués et plus coûteux. C'est également à ce stade que de nombreux bogues critiques sont détectés, y compris des problèmes de sécurité et de performances non détectables au niveau de l'unité. Un gros risque est la disponibilité du personnel de test, des laboratoires et des ressources matérielles.
La solution ici est l'automatisation. L'automatisation offre un moyen d'augmenter la productivité des tests, la répétabilité et la portée des tests du système. Une approche de test automatisée et basée sur les services est essentielle pour le succès d'un appareil IoT nouvellement développé.
Les avantages comprennent les suivants:
- Augmentation de la productivité des tests
L'automatisation peut aider à générer des tests basés sur les services et à tester des charges répétables et extensibles. Les outils d'analyse d'exécution sont exécutés parallèlement aux tests en direct pour détecter et tracer les erreurs. Les défauts sont plus facilement détectés et corrigés qu'avec des tests manuels. Une fois le correctif effectué, l'automatisation fournit des tests de régression faciles. La répétition des tests dans le cadre d'un processus de test continu, agile ou itératif est prise en charge. - Suppression des goulots d'étranglement des ressources matérielles
L'un des plus gros problèmes dans la planification des tests est la disponibilité des composants dépendants. Il peut s'agir d'autres appareils sur le réseau ou de fonctions de niveau supérieur dans le réseau IoT. La simulation de ces dépendances supprime le goulot d'étranglement des tests tout en rendant un laboratoire virtuel complet disponible sur le bureau de chaque testeur et développeur. - Adaptation aux besoins actuels et futurs
Au fur et à mesure que l'intégration du système progresse, la portée des tests augmente pour inclure de plus en plus de composants dépendants. L'évolutivité est essentielle dans les systèmes IoT, car l'appareil testé est censé fonctionner dans un environnement extrêmement complexe. Au cours du cycle de vie de l'appareil, la complexité augmentera et les tests automatisés doivent évoluer avec le produit. - Tests de performances et de sécurité pratiques et réalistes
Les équipes de développement font ce qu'elles peuvent pour tester les performances et la sécurité lors de l'intégration, mais sans automatisation, il est souvent long et coûteux de mettre en place des scénarios réalistes en laboratoire. Une approche orientée services fournit un cadre pour spécifier et vérifier les performances et tester la sécurité.
Au-delà du test fonctionnel: sécurité et performance
Un test fonctionnel pur ne suffit pas pour mettre un appareil sur le marché. Les exigences non fonctionnelles telles que la sécurité et les performances sont essentielles, mais font partie des caractéristiques les plus difficiles à tester. Un appareil dont les performances ou la sécurité sont médiocres n'est tout simplement pas compétitif, mais répondre aux contraintes de délai de mise sur le marché et tester correctement les performances et la sécurité est un défi majeur pour les appareils IoT. L'orientation des services fournit un moyen courant de spécifier les exigences (par exemple, les performances sur une base par service) et de tester la sécurité (par exemple les attaques exploitant les services et les API exposés).
Test de performances et de charge
Les exigences de performance et de sécurité sont susceptibles d'être exprimées en termes de déclaration de qualité de service. Par exemple, un système CVC peut être nécessaire pour maintenir la température du bâtiment à 75 degrés en deux heures sur la base d'une différence de 5 degrés de la température extérieure, indiquant la température actuelle toutes les 10 secondes. Si vous concevez un thermostat pour ce produit, vous pouvez tester la fonctionnalité au niveau individuel et peut-être aussi les performances. Cependant, si un système déployé se compose de centaines de thermostats, les performances de l'appareil ne sont qu'une petite partie d'un réseau complexe d'autres appareils.
Test de sécurité
Les exigences de sécurité sont souvent vagues et au niveau du système. Dans l'exemple du système HVAC, un thermostat peut être nécessaire pour ne pas tomber en panne sous de lourdes charges de réseau. Une attaque par déni de service consiste à inonder la cible avec un trafic important, parfois avec des paquets mal formés. Des tests de pénétration et de fuzz sont utilisés dans ces cas pour s'assurer que les périphériques peuvent résister à un environnement réseau hostile. L'évolutivité disponible dans un environnement virtuel dépasse ce qui est possible avec du matériel réel.
Virtualisation des services
La prochaine étape logique pour les tests automatisés basés sur les services est la virtualisation. Un environnement virtuel complet est possible en simulant tous les composants dépendants ainsi qu'une suite complète de stimuli de test. L'avantage de la virtualisation des services n'est pas seulement des environnements de test réalistes et reproductibles, mais aussi la possibilité de dupliquer et de déployer à volonté, créant ainsi un «laboratoire virtuel» - un laboratoire aussi efficace que la réalité mais à une fraction du coût.
Conclusion
L'automatisation des tests, en général, est essentielle pour atteindre les objectifs des produits IoT tels que le délai de mise sur le marché et le budget. Une approche basée sur les services augmente la productivité des tests et permet des tests hautement répétables et évolutifs pour les performances et la sécurité, ainsi que la possibilité de créer des environnements de test virtuels. À mesure que la complexité des appareils IoT et de leur environnement de déploiement augmente, le besoin de tests de niveau de service évolutifs devient plus impérieux.