IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Voici comment la startup Diffblue utilise l'IA pour automatiser les tests unitaires pour les applications Java
à travers son outil dénommé "Diffblue Cover"

Le , par Bill Fassinou

282PARTAGES

3  0 
De nombreux outils d’aide à la programmation sont apparus dernièrement en raison de la complexité croissante des algorithmes. Diffblue, une autre startup de ce secteur vient d’en apporter un autre. Diffblue Cover génère automatiquement des tests pour le code Java dans le but de permettre aux équipes de développement de livrer des logiciels de meilleure qualité, plus rapidement. Diffblue a été créé à l'Université d'Oxford en 2016 et a reçu le plus important financement de la série A de l'IA en Europe en 2017.

La vision de la startup Diffblue est de changer la façon dont les logiciels sont développés en se basant sur l'intelligence artificielle. En effet, selon le Bureau of Labor Statistics, le salaire annuel médian d'un développeur de logiciels aux États-Unis est proche de 110 000 dollars. À San Francisco, il est plus proche de 145 000 dollars, alors que les développeurs débutants peuvent en gagner 100 000. En outre, le prix des outils de développement est souvent calculé en fonction de la taille de l'équipe de développement, c’est-à-dire le nombre de sièges disponibles au sein de celle-ci.

Les plateformes de production, en revanche, sont généralement facturées en fonction de la taille de l'environnement. Sur ce, un investissement dans l'efficacité des développeurs donne aux entreprises un énorme effet de levier sur cet investissement. De petits groupes de développeurs peuvent déployer des systèmes massifs. Malheureusement, le développeur moyen passe jusqu'à la moitié de son temps à écrire des tests sur le code avant de le faire passer par le processus de CI/CD ou l’intégration continue. Il s'agit là d'une tâche manuelle fastidieuse.


Bien qu'essentiel, ce travail consomme du temps de développement qui pourrait autrement être consacré à la construction. C’est pour cette raison que Diffblue mise sur l’IA pour s’occuper de cet aspect du développement. Mardi, il a annoncé la disponibilité générale de son produit phare, Diffblue Cover et Diffblue Cover : Community Edition, une version gratuite créée pour les développeurs utilisant IntelliJ, l'EDI le plus populaire pour Java en entreprise. En utilisant l'IA, Diffblue Cover automatise l'écriture de tests unitaires Java avec une couverture allant jusqu'à 80 %.

Alors comment ça marche ? Diffblue Cover est un logiciel pour Linux et Windows qui fonctionne à 100 % en local sur votre ordinateur. Selon son auteur, vous pouvez l'exécuter sur l'ensemble de votre projet Java, sur une seule classe ou bien sur n'importe quelle classe intermédiaire. Il obtient la structure et les dépendances de votre projet à partir de Maven ou Gradle. Cover prend en charge les applications Java Spring et écrit des tests qui utilisent les idiomes standards de Spring et mocking. Le plugin IntelliJ est disponible pour toutes les éditions de Diffblue Cover.

Le plugin peut être utilisé pour l'écriture de tests interactifs sur le bureau du développeur, et prend en charge le développement piloté par les tests (TDD) en générant rapidement des tests de régression unitaires pour le code utilitaire en masse. Ainsi, vous pouvez passer votre temps à écrire du code testable, mais aussi des tests unitaires qui couvrent la logique métier complexe et critique. Selon ses auteurs, l’autre avantage de l’outil est que lorsque le comportement de votre code change, Diffblue Cover vous alerte automatiquement.

Les tests unitaires écrits par Diffblue Cover sont lisibles par l’homme, qui maintient automatiquement les tests au fur et à mesure de l'évolution du code. Selon la startup, cela marche même sur des applications comportant des millions de lignes de code. Le processus d’écriture des tests unitaires par Diffblue Cover serait 10 à 100 fois plus rapide que l’homme. Le PDG de Diffblue, Mathew Lodge, a déclaré aux médias dans la semaine qu’il existe une ironie qui se dégage de la façon dont la filière informatique elle-même adopte l’IA, ou l’utilise en général.

Selon lui, l’adoption de l’IA a été plus rapide et plus facile dans les autres filières, notamment l’industrie, le commerce, les voyages, le transport et la fabrication..., que dans le développement informatique. Selon Lodge, les chercheurs de Diffblue ont profité de la stratégie d'apprentissage automatique qui a permis à AlphaGo, le logiciel de DeepMind, filiale d'Alphabet, de battre le champion du monde de go. Diffblue commence avec un outil Java, mais sa technologie peut également être utilisée pour automatiser les tests pour d’autres langages, comme Python, JavaScript et C#.

Parmi les premiers clients à avoir déployé la solution Diffblue, on trouve Goldman Sachs. Selon des personnes proches de l’unité informatique de la banque d’investissement, en utilisant l'intelligence artificielle de Diffblue sur un module doté d'un important système dorsal, Goldman Sachs a pu étendre la couverture des tests unitaires existants de 36 % à 72 % en moins de 24 heures, un exploit qui aurait nécessité plus de huit jours de travail de la part du développeur si cela avait été fait manuellement. Selon Lodge, les entreprises pourraient faire bien plus.

Il a fait valoir que les systèmes deviennent si complexes et si volumineux que de grands pans de la construction, de la livraison et de la maintenance de la chaîne d'approvisionnement des logiciels sont mieux gérées par des machines que par des humains. Cela étant, les analystes estiment que l’outil de Diffblue n'est pas le seul à y voir une énorme opportunité de marché. Pour conclure, les analystes ont déclaré que le développement autonome (piloté par l’IA) de logiciels constituera une part importante de l'avenir de l'informatique. Diffblue n'est que le début de la perturbation de l'industrie du logiciel par l'IA.

Source : Diffblue

Et vous ?

Qu'en pensez-vous ?

Voir aussi

Upwork présente les 15 langages de programmation les plus rémunérateurs pour les développeurs Web, mobiles et logiciels indépendants

La plupart des travailleurs sont satisfaits de la prestation de leur département informatique en télétravail, selon un rapport de NinjaRMM

La rémunération des travailleurs stagne et les économistes blâment les robots, l'automatisation aurait affaibli le pouvoir de négociation des travailleurs dans les négociations salariales

Plus de 253 000 emplois de développeurs logiciels seront créés d'ici 2026, selon Glassdoor. L'IA va-t-elle vraiment supprimer les emplois ?

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Pyramidev
Expert éminent https://www.developpez.com
Le 18/09/2020 à 19:49
Citation Envoyé par Steph82  Voir le message
Qu'elle génère des tests après les implémentations, ok. Par contre qu'elle fasse du TDD, je vois pas trop comment

Dans cette page, dans "Using Cover IntelliJ plug-in to write tests", il y a un gif avec une méthode vide :
Code Java : Sélectionner tout
1
2
3
4
@Override 
public void validateAccountCompliance(final Account account) { 
  
}
En cliquant sur "Write code", l'outil génère une classe de test qui contient un premier test qui crée les objets dont il a besoin puis qui appelle la méthode validateAccountCompliance.
Le développeur peut alors complexifier le test pour que ce dernier échoue, puis modifier la méthode validateAccountCompliance pour que le test passe, puis poursuivre son développement en TDD.

À part ça, d'après leur document Unit Regression Tests (PDF de 12 pages), leur recommandation est que les développeurs écrivent manuellement les tests unitaires sur la "logique métier complexe" et laissent le reste des tests unitaires à l'outil Diffblue Cover.

De mon côté, j'ai tendance à voir les tests unitaires comme quelque chose qu'il faut soigner pour qu'ils soient lisibles. Cela implique souvent de créer des fonctions utilitaires pour réduire les duplications de code, donc je me vois mal déléguer l'écriture de tests unitaires à un outil.

Mais, en pratique, en entreprise, on n'a pas toujours le temps de bien soigner le code. J'ai eu le temps lors de mon dernier développement, avant ce weekend, mais c'était assez exceptionnel. En général, il y a plus de pression sur le court terme.
2  0 
Avatar de Pill_S
Membre expert https://www.developpez.com
Le 07/10/2020 à 12:27
J'ai testé l'outil (plugin Intellij) sur quelques classes de mon projet, et malheureusement je suis assez déçu du résultat. A part créer des méthode vide de ce genre:

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
    @Test
    public void testParseColor10() {
        // Arrange
        String v = "999999";

        // Act
        int[] actualParseColorResult = ColorHelper.parseColor(v);

        // Assert
        assertEquals(3, actualParseColorResult.length);
    }

l'outil ne semble pas réellement produire d'implémentation utilisable, même avec des classes/méthodes simples. Il ne déduit aucune validité ni aucun invariant de l'implém, ne génère aucun cas limite, etc...

En plus de ça, le style d'assertions est assez has been: raw junit, pas de assertj ni même de hamcrest (autant dire que c'est inutilisable en l'état en entreprise sans api de fluent-assertions).

Bon je n'ai joué qu'à peine une demi-heure avec l'outil, mais je n'ai rien vu de transcendental qui puisse réellement faire gagner du temps...

A moins que j'aie loupé quelque chose, auquel cas je réviserai mon jugement
1  0 
Avatar de lrichard
Membre à l'essai https://www.developpez.com
Le 12/09/2020 à 17:36
Je vois bien l'intérêt d'apporter une couverture de tests sur du code legacy mais dans l'absolu, avec une approche TDD/BDD sur un nouveau développement, il faudrait plutôt que l'IA génère le code de production tandis que l'équipe de développement se concentre sur l'écriture des tests
0  0 
Avatar de Steph82
Membre actif https://www.developpez.com
Le 18/09/2020 à 17:35
Qu'elle génère des tests après les implémentations, ok. Par contre qu'elle fasse du TDD, je vois pas trop comment
0  0