Chers étudiants,

Nous l'avons évoqué à plusieurs reprises ensemble mais c'est maintenant confirmé les chiffres, vous êtes une majorité à souhaiter un cours sur la question spécifique des tests avec Java.

Ceci n'est sans doute pas un hasard car en effet, la question des tests et plus généralement de la qualité prend de plus en plus d'ampleur dans l'industrie du logiciel avec de plus de plus d'offre d'emploi de testeur, chargé de test ou ingénieur de test.

Le métier de testeur est très éclectique mais on peut regrouper les professionnels en 2 grandes catégories de testeurs :

  • ceux qui effectuent des tests du code autrement appelé les teste en boîte blanche et qui sont développeurs et
  • ceux qui effectuent des tests au niveau fonctionnels appelés tests en boîte noire, ces personnes n’ont souvent n’ont pas de formation de développeur.

Le cours donc je démarre actuellement l'écriture va s’adresser essentiellement aux développeurs qui doivent assurer le role de testeur, mais je vais également dans ce cours aborder les tests de manière plus générale dans le cadre de l’assurance et du contrôle qualité, si bien que ce cours peut aussi être très utile aux étudiants qui souhaitent devenir testeur fonctionnels.

Pour devenir professionnel du test il faut se familiariser avec un vocabulaire vaste et souvent assez intimidant mais je serai là pour démystifier tout ça.

Pourquoi suis-je bien placé pour vous parler de ce sujet. Vous me connaissez en tant que formateur Java mais ce n’est pas mal seule spécialité. Il se trouve que j’enseigne également là où je vis en Nouvelle Zelande la qualité et les tests logiciels à un public de polytechniciens.

Etant donné mon expertise, il est assez naturel pour moi de choisir Java et son écosystème pour illustrer la partie développement de test et je ne montrerai pas dans ce cours l'équivalent en Javascript, python ou autre langage de programmation. Les concepts que je présente sont bien évidemment valable quel que soit le langage mais si vous êtes développeur et que Java n’est pas votre cible, je vous recommanderai plutôt de vous orienter vers un autre formateur. Nous utiliserons de nombreux outils et en particulier le framework de tests unitaires le plus populaire avec Java JUnit.

Voici en avant première le projet de programme que je vous propose, n'hésitez pas à apporter commentaires pour m'indiquer si une notion vous intéresse en particulier et qu'elle n'est pas présente dans ce projet.


1 - Introdution à la problématique de test

  • Activité découverte
  • Test exploratoires
  • Les spécifications logicielles / Observed behavior vs expected behavior
  • Tests fonctionnels tests d'acceptation

2 - Intrdocution aux test unitaires

  • L’unité de test; Testabilité du code; Methode pures et methodes impures
  • JUnit 5
  • Assertions
  • Single Responsability Principle et Solid - Refactoring - testing hell
  • Test des cas d’erreurs
  • Setup / teardown
  • Indépendance des tests
  • Test suites
  • Bug vs debug

3 - Stub et mock

  • SOLID - L’injection de dépendance
  • Dev de Stub
  • Mock avec Mockito
  • Les tests d’intégration

4 - Spring environment Specific

  • Tests unitaires et test d’intégration avec spring
  • Gestion du contexte

5 - Couverture de tests

  • Gammes de valeurs, base case, edge case et corner case
  • Taux de couverture acceptable - getter/setter et Lombok - méthode non publiques
  • Travailler avec et sans Jacoco

6 - Automatisation des test et chaîne d’intégration continue

  • Repository central avec GitHub
  • Jenkins
  • GitHub actions
  • Reporting

7- TDD et BDD

  • Pourquoi le TDD et pourquoi pas
  • Red-Green-Refactor
  • Communication entre acteurs, ATTD et BDD
  • Gherkin

8 - Assurance qualité

  • Le role du test dans la qualité
  • Assurance Qualité - Contrôle Qualité
  • Cycle de développement logiciel / Validation vs Verification
  • Quality attribute - Functional-vs non functional test
  • Test plan
  • Test Run et répertorier les bugs
  • Quelques mythes et légendes

9- UI Testing et E2E testing

  • Desktop Swing/JFX avec Squish
  • Rest API avec SoapUI
  • Web UI avec Selenium,

10 - Analyse statique

  • Code quality metrics
  • Bug finders
  • Security testing

A bientôt !