Back to Gitlabhq

Tests fail fast

doc-locale/fr-fr/ci/testing/fail_fast_testing.md

19.3.03.1 KB
Original Source

{{< details >}}

  • Édition : GitLab Premium, GitLab Ultimate
  • Offre : GitLab.com, GitLab Self-Managed, GitLab Dedicated

{{< /details >}}

Les tests fail fast exécutent les specs les plus pertinentes par rapport aux modifications de votre merge request avant que le reste de la suite ne s'exécute. Si ces specs échouent, le pipeline s'arrête immédiatement pour économiser du temps et des ressources de calcul.

Pour les projets Ruby on Rails utilisant RSpec, le template CI/CD Verify/FailFast sélectionne et exécute uniquement les specs pertinentes. Il utilise le gem test_file_finder (tff), qui associe les fichiers modifiés à leurs fichiers de specs correspondants.

Par défaut, le template s'exécute dans l'étape .pre, avant toutes les autres étapes du pipeline.

Configurer les tests fail fast {#configure-fail-fast-testing}

Configurez les tests fail fast pour obtenir des retours plus rapides sur les modifications de votre merge request avant que votre suite de tests complète ne s'exécute.

Prérequis :

Pour configurer les tests fail fast :

  1. Ajoutez un job RSpec pour exécuter votre suite complète sur les pipelines de merge request :

    yaml
    rspec-complete:
      stage: test
      rules:
        - if: $CI_PIPELINE_SOURCE == "merge_request_event"
      script:
        - bundle install
        - bundle exec rspec
    
  2. Incluez le template Verify/FailFast dans votre configuration CI/CD :

    yaml
    include:
      - template: Verify/FailFast.gitlab-ci.yml
    
  3. Facultatif. Pour utiliser une image Docker différente, définissez l'image sur le job rspec-rails-modified-path-specs dans votre fichier de configuration CI/CD :

    yaml
    include:
      - template: Verify/FailFast.gitlab-ci.yml
    
    rspec-rails-modified-path-specs:
      image: custom-docker-image-with-ruby
    

Résultats des tests fail fast {#fail-fast-test-results}

Les exemples suivants supposent une suite de 100 specs par modèle sur 10 modèles (1 000 specs au total).

Fichiers modifiésrspec-rails-modified-path-specsrspec-complete
Aucun fichier RubyNe s'exécute pasExécute les 1 000 specs
app/models/example.rb (toutes les specs réussissent)Exécute 100 specs pour example.rbExécute les 1 000 specs
app/models/example.rb (au moins une spec échoue)Exécute 100 specs pour example.rbIgnoré