"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso usar o Cucumber com execução paralela para acelerar meus testes BDD?

Como posso usar o Cucumber com execução paralela para acelerar meus testes BDD?

Publicado em 01/11/2024
Navegar:497

How can I use Cucumber with parallel execution to speed up my BDD tests?

Executando arquivos de recursos do Cucumber em paralelo

Introdução

Em ambientes de teste modernos, a execução de testes paralelos pode melhorar significativamente a eficiência e a velocidade dos processos de teste. Cucumber, uma estrutura popular de desenvolvimento orientado a comportamento (BDD), permite a execução paralela de arquivos de recursos.

Abordagem baseada em plug-in

Para obter execução paralela no Cucumber, você pode usar o pepino- jvm-parallel-plugin. Este plug-in cria dinamicamente classes de executores de teste que podem ser executadas em paralelo.

Configuração

  1. Adicione o plug-in ao pom.xml:

  com.github.temyers
  cucumber-jvm-parallel-plugin
  2.1.0
  1. Configurar o plug-in em pom.xml:

  com.github.temyers
  cucumber-jvm-parallel-plugin
  2.1.0
  
    
      generateRunners
      generate-test-sources
      
        generateRunners
      
      
        foo, bar
        ${project.build.directory}/generated-test-sources/cucumber
        src/test/resources/features/
        target/cucumber-parallel
        json
      
    
  

Invocar classes de runner geradas

Adicione um plug-in Maven Surefire para invocar as classes de runner geradas em paralelo:


  org.apache.maven.plugins
  maven-surefire-plugin
  2.19
   
    5
    true
    
      **/*IT.class
    
  

WebDriver compartilhado

Para executar testes em paralelo, a instância do WebDriver deve ser compartilhada e não explicitamente fechada dentro dos testes. A classe SharedDriver consegue isso:

public class SharedDriver extends EventFiringWebDriver {
    private static WebDriver REAL_DRIVER = null;

    static {
        Runtime.getRuntime().addShutdownHook(CLOSE_THREAD);
    }

    public SharedDriver() {
        super(CreateDriver());
    }

    public static WebDriver CreateDriver() {
        WebDriver webDriver;
        if (REAL_DRIVER == null)
            webDriver = new FirefoxDriver();
        setWebDriver(webDriver);
        return webDriver;
    }
}

Considerações adicionais

  • Execução paralela e grade: Para desempenho ideal, use uma grade com nós suficientes (navegadores registrados no hub).
  • Memória do Hub: Aumente o tamanho do pool (por exemplo, -DPOOL_MAX=512) para instalações do Hub com um grande número de nós (50).
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3