most popular test automation frameworks with pros
Nos últimos tutoriais do Selenium, discutimos vários tipos de uso comum e popular comandos no WebDriver , lidar com elementos da web, como tabelas da web, frames e manipulação de exceções em scripts Selenium.
Discutimos cada um desses comandos com fragmentos de código de amostra e exemplos para torná-lo capaz de usar esses comandos com eficácia sempre que se deparar com situações semelhantes. Entre os comandos que discutimos no tutorial anterior, poucos deles têm a maior importância.
À medida que avançamos na série Selenium, concentraríamos nosso foco em Criação de framework de automação nos próximos tutoriais. Também lançaríamos luz sobre vários aspectos de uma estrutura de automação, tipos de estruturas de automação, benefícios de usar uma estrutura e os componentes básicos que constituem uma estrutura de automação.
O que você aprenderá:
- O que é o Framework?
- Estrutura de automação de teste
- Tipos de estrutura de automação de teste
- # 1) Estrutura de teste baseada em módulo
- # 2) Estrutura de teste de arquitetura de biblioteca
- # 3) Estrutura de teste orientada a dados
- # 4) Estrutura de teste baseada em palavras-chave
- # 5) Estrutura de teste híbrido
- # 6) Estrutura de desenvolvimento orientada por comportamento
- Conclusão
- Leitura recomendada
O que é o Framework?
Uma estrutura é considerada uma combinação de protocolos, regras, padrões e diretrizes definidos que podem ser incorporados ou seguidos como um todo para aproveitar os benefícios do andaime fornecido pela Estrutura.
Vamos considerar um cenário da vida real.
Muitas vezes usamos elevadores ou elevadores. Existem algumas diretrizes que são mencionadas dentro do elevador a serem seguidas e tomadas com cuidado para aproveitar ao máximo o benefício e o serviço prolongado do sistema.
Assim, os usuários podem ter notado as seguintes diretrizes:
- Verifique a capacidade máxima do elevador e não entre no elevador se a capacidade máxima tiver sido atingida.
- Pressione o botão de alarme em caso de qualquer emergência ou problema.
- Permita que o passageiro saia do elevador, se houver, antes de entrar no elevador e fique longe das portas.
- Em caso de incêndio no prédio ou se houver alguma situação aleatória, evite o uso do elevador.
- Não brinque ou pule dentro do elevador.
- Não fume dentro do elevador.
- Peça ajuda / assistência se a porta não abrir ou se o elevador não funcionar. Não tente abrir as portas com força.
Pode haver muito mais regras ou conjuntos de diretrizes. Assim, essas diretrizes se seguidas tornam o sistema mais benéfico, acessível, escalonável e menos problemático para os usuários.
Agora, como estamos falando sobre “Frameworks de automação de teste”, vamos mover nosso foco em direção a eles.
Estrutura de automação de teste
Uma “Estrutura de automação de teste” é uma estrutura que é colocada para fornecer um ambiente de execução para os scripts de teste de automação. A estrutura fornece ao usuário vários benefícios que o ajudam a desenvolver, executar e relatar os scripts de teste de automação de forma eficiente. É mais como um sistema criado especificamente para automatizar nossos testes.
Em uma linguagem muito simples, podemos dizer que uma estrutura é uma mistura construtiva de várias diretrizes, padrões de codificação, conceitos, processos, práticas, hierarquias de projeto, modularidade, mecanismo de relatório, injeções de dados de teste, etc. para teste de automação de pilar. Assim, o usuário pode seguir essas orientações enquanto automatiza o aplicativo para aproveitar as vantagens de vários resultados produtivos.
As vantagens podem ser em diferentes formas, como facilidade de script, escalabilidade, modularidade, compreensibilidade, definição de processo, reutilização, custo, manutenção, etc. Assim, para obter esses benefícios, os desenvolvedores são aconselhados a usar um ou mais dos a estrutura de automação de teste.
Além disso, a necessidade de um framework de automação de teste único e padrão surge quando você tem um grupo de desenvolvedores trabalhando nos diferentes módulos do mesmo aplicativo e quando queremos evitar situações em que cada um dos desenvolvedores implementa sua abordagem em relação à automação.
Observação : Observe que uma estrutura de teste é sempre independente do aplicativo, ou seja, pode ser usada com qualquer aplicativo, independentemente das complicações (como pilha de tecnologia, arquitetura etc.) do aplicativo em teste. A estrutura deve ser escalonável e sustentável.
Vantagem da estrutura de automação de teste
- Reutilização do código
- Cobertura máxima
- Cenário de recuperação
- Manutenção de baixo custo
- Intervenção manual mínima
- Relatórios fáceis
Tipos de estrutura de automação de teste
Agora que temos uma ideia básica do que é uma estrutura de automação, nesta seção apresentaremos a você os vários tipos de estruturas de automação de teste disponíveis no mercado. Também tentaríamos lançar luz sobre seus prós e contras e recomendações de usabilidade.
Existe uma gama divergente de frameworks de automação disponíveis hoje em dia. Essas estruturas podem diferir umas das outras com base em seu suporte a diferentes fatores-chave para fazer automação, como reutilização, facilidade de manutenção, etc.
teste site para vulnerabilidade de injeção de sql
Vamos discutir as poucas estruturas de automação de teste mais usadas:
- Estrutura de teste baseada em módulo
- Estrutura de teste de arquitetura de biblioteca
- Estrutura de teste orientada a dados
- Estrutura de teste orientada por palavras-chave
- Estrutura de teste híbrido
- Estrutura de desenvolvimento orientado por comportamento
(clique na imagem para ver ampliada)
Vamos discutir cada um deles em detalhes.
Mas antes disso, também gostaria de mencionar que apesar de ter este framework, o usuário está sempre alavancado para construir e projetar seu próprio framework que seja mais adequado às necessidades de seu projeto.
# 1) Estrutura de teste baseada em módulo
O framework de teste baseado em módulo é baseado em um dos conceitos OOPs popularmente conhecidos - Abstração. A estrutura divide todo o “Aplicativo em teste” em vários módulos lógicos e isolados. Para cada módulo, criamos um script de teste separado e independente. Portanto, quando esses scripts de teste são reunidos, um script de teste maior representa mais de um módulo.
Esses módulos são separados por uma camada de abstração de forma que as alterações feitas nas seções do aplicativo não afetem este módulo.
Prós:
- A estrutura apresenta o alto nível de modularização que leva a uma manutenção mais fácil e econômica.
- A estrutura é bastante escalável
- Se as alterações forem implementadas em uma parte do aplicativo, apenas o script de teste que representa essa parte do aplicativo precisa ser corrigido para deixar todas as outras partes intocadas.
Contras:
- Ao implementar scripts de teste para cada módulo separadamente, incorporamos os dados de teste (Dados com os quais devemos realizar o teste) nos scripts de teste. Portanto, sempre que devemos testar com um conjunto diferente de dados de teste, é necessário que as manipulações sejam feitas nos scripts de teste.
# 2) Estrutura de teste de arquitetura de biblioteca
O Library Architecture Testing Framework é fundamental e fundamentalmente construído no Module Based Testing Framework com algumas vantagens adicionais. Em vez de dividir o aplicativo em teste em scripts de teste, separamos o aplicativo em funções ou, em vez disso, as funções comuns também podem ser usadas por outras partes do aplicativo. Assim, criamos uma biblioteca comum constituída de funções comuns para o aplicativo em teste. Portanto, essas bibliotecas podem ser chamadas a partir dos scripts de teste sempre que necessário.
O fundamento básico por trás da estrutura é determinar as etapas comuns e agrupá-las em funções em uma biblioteca e chamar essas funções nos scripts de teste sempre que necessário.
Exemplo : As etapas de login podem ser combinadas em uma função e mantidas em uma biblioteca. Assim, todos os scripts de teste necessários para fazer o login no aplicativo podem chamar essa função em vez de escrever o código novamente.
Prós:
- Como a Estrutura Baseada em Módulo, esta estrutura também apresenta o alto nível de modularização que leva a uma manutenção e escalabilidade mais fáceis e econômicas.
- À medida que criamos funções comuns que podem ser usadas com eficiência pelos vários scripts de teste no Framework. Assim, a estrutura apresenta um alto grau de reutilização.
Contras:
- Como a Estrutura Baseada em Módulo, os dados de teste são armazenados nos scripts de teste, portanto, qualquer mudança nos dados de teste exigiria mudanças no script de teste também.
- Com a introdução das bibliotecas, o framework se torna um pouco complicado.
# 3) Estrutura de teste orientada a dados
Ao automatizar ou testar qualquer aplicativo, às vezes pode ser necessário testar a mesma funcionalidade várias vezes com o conjunto diferente de dados de entrada. Assim, em tais casos, não podemos deixar os dados de teste incorporados no script de teste. Portanto, é aconselhável reter os dados de teste em algum banco de dados externo fora dos scripts de teste.
O Data Driven Testing Framework ajuda o usuário a separar a lógica do script de teste e os dados de teste uns dos outros. Ele permite que o usuário armazene os dados de teste em um banco de dados externo. Os bancos de dados externos podem ser arquivos de propriedade, arquivos xml, arquivos do Excel, arquivos de texto, arquivos CSV, repositórios ODBC, etc. Os dados são armazenados convencionalmente em pares de “valor-chave”. Portanto, a chave pode ser usada para acessar e preencher os dados nos scripts de teste.
Observação : Os dados de teste armazenados em um arquivo externo podem pertencer à matriz de valores esperados e também à matriz de valores de entrada.
como o java é diferente do c ++
Exemplo:
Vamos entender o mecanismo acima com a ajuda de um exemplo.
Vamos considerar a funcionalidade “Gmail - Login”.
Passo 1: A primeira e a primeira etapa é criar um arquivo externo que armazene os dados de teste (dados de entrada e dados esperados). Vamos considerar uma planilha do Excel, por exemplo.
Passo 2: A próxima etapa é preencher os dados de teste no Script de teste de automação. Para este propósito, várias APIs podem ser usadas para ler os dados de teste.
public void readTD(String TestData, String testcase) throws Exception { TestData=readConfigData(configFileName,'TestData',driver); testcase=readConfigData(configFileName,'testcase',driver); FileInputStream td_filepath = new FileInputStream(TestData); Workbook td_work =Workbook.getWorkbook(td_filepath); Sheet td_sheet = td_work.getSheet(0); if(counter==0) { for (int i = 1,j = 1; i <= td_sheet.getRows()-1; i++){ if(td_sheet.getCell(0,i).getContents().equalsIgnoreCase(testcase)){ startrow = i; arrayList.add(td_sheet.getCell(j,i).getContents()); testdata_value.add(td_sheet.getCell(j+1,i).getContents());}} for (int j = 0, k = startrow +1; k <= td_sheet.getRows()-1; k++){ if (td_sheet.getCell(j,k).getContents()==''){ arrayList.add(td_sheet.getCell(j+1,k).getContents()); testdata_value.add(td_sheet.getCell(j+2,k).getContents());}} } counter++; }
O método acima ajuda a ler os dados de teste e a etapa de teste abaixo ajuda o usuário a digitar os dados de teste na GUI.
element.sendKeys (obj_value.get (obj_index));
Prós:
- O recurso mais importante dessa estrutura é que ela reduz consideravelmente o número total de scripts necessários para cobrir todas as combinações possíveis de cenários de teste. Portanto, menor quantidade de código é necessária para testar um conjunto completo de cenários.
- Qualquer mudança na matriz de dados de teste não prejudicaria o código do script de teste.
- Aumenta a flexibilidade e facilidade de manutenção
- Um único cenário de teste pode ser executado alterando os valores dos dados de teste.
Contras:
- O processo é complexo e requer um esforço extra para chegar às fontes de dados de teste e aos mecanismos de leitura.
- Requer proficiência em uma linguagem de programação que está sendo usada para desenvolver scripts de teste.
# 4) Estrutura de teste baseada em palavras-chave
A estrutura de teste orientada por palavras-chave é uma extensão da Estrutura de teste orientada a dados no sentido de que ela não apenas separa os dados de teste dos scripts, mas também mantém um determinado conjunto de código pertencente ao script de teste em um arquivo de dados externo.
Esse conjunto de código é conhecido como palavras-chave e, portanto, a estrutura é assim chamada. Palavras-chave são autodirigidas quanto às ações que precisam ser realizadas no aplicativo.
As palavras-chave e os dados de teste são armazenados em uma estrutura semelhante a uma tabela e, portanto, também são popularmente considerados como Framework dirigido por tabela. Observe que palavras-chave e dados de teste são entidades independentes da ferramenta de automação que está sendo usada.
ExemploCaso de teste da estrutura de teste orientada por palavras-chave
No exemplo acima, palavras-chave como login, clicar e verificar o link são definidas no código.
Dependendo da natureza do aplicativo, palavras-chave podem ser derivadas. E todas as palavras-chave podem ser reutilizadas várias vezes em um único caso de teste. A coluna do localizador contém o valor do localizador que é usado para identificar os elementos da web na tela ou os dados de teste que precisam ser fornecidos.
Todas as palavras-chave necessárias são projetadas e colocadas no código base do framework.
Prós:
- Além das vantagens fornecidas pelos testes orientados a dados, a estrutura orientada por palavras-chave não exige que o usuário possua conhecimento de script, ao contrário dos testes orientados a dados.
- Uma única palavra-chave pode ser usada em vários scripts de teste.
Contras:
- O usuário deve estar bem familiarizado com o mecanismo de criação de palavras-chave para poder aproveitar com eficiência os benefícios fornecidos pela estrutura.
- A estrutura se complica gradualmente à medida que cresce e uma série de novas palavras-chave são introduzidas.
# 5) Estrutura de teste híbrido
Como o nome sugere, o Hybrid Testing Framework é uma combinação de mais de um framework acima mencionado. A melhor coisa sobre essa configuração é que ela aproveita os benefícios de todos os tipos de estruturas associadas.
Exemplode Hybrid Framework
A folha de teste conteria as palavras-chave e os dados.
No exemplo acima, a coluna de palavra-chave contém todas as palavras-chave necessárias usadas no caso de teste específico e a coluna de dados direciona todos os dados necessários no cenário de teste. Se alguma etapa não precisar de nenhuma entrada, ela poderá ser deixada em branco.
# 6) Estrutura de desenvolvimento orientada por comportamento
O framework Behavior Driven Development permite a automação de validações funcionais em um formato facilmente legível e compreensível para Analistas de Negócios, Desenvolvedores, Testadores, etc. Tais frameworks não requerem necessariamente que o usuário esteja familiarizado com a linguagem de programação. Existem diferentes ferramentas disponíveis para BDD, como pepino, Jbehave etc. Detalhes da estrutura do BDD são discutidos posteriormente no tutorial do pepino. Também discutimos detalhes sobre a linguagem Gherkin para escrever casos de teste no Cucumber.
Componentes da estrutura de teste de automação
Embora a representação pictórica de uma estrutura acima seja autoexplicativa, ainda assim destacaríamos alguns pontos.
- Repositório de Objetos : O acrônimo Object Repository como OR é constituído pelo conjunto de tipos de localizadores associados a elementos da web.
- Dados de teste: Os dados de entrada com os quais o cenário seria testado e podem ser os valores esperados com os quais os resultados reais seriam comparados.
- Arquivo de configuração / constantes / configurações de ambiente : O arquivo armazena as informações relacionadas ao URL do aplicativo, informações específicas do navegador, etc. Geralmente, são as informações que permanecem estáticas em toda a estrutura.
- Genéricos / Lógicas de programa / Leitores : Estas são as classes que armazenam as funções que podem ser comumente usadas em toda a estrutura.
- Ferramentas de construção e integração contínua : Estas são as ferramentas que auxiliam os recursos da estrutura para gerar relatórios de teste, notificações por email e informações de registro.
Conclusão
As estruturas ilustradas acima são as estruturas mais populares usadas pela fraternidade de teste. Existem várias outras estruturas também no local. Para todos os outros tutoriais, basearíamos no Estrutura de teste orientada a dados .
Neste tutorial, discutimos os fundamentos de uma estrutura de automação. Também discutimos os tipos de frameworks disponíveis no mercado.
Próximo Tutorial # 21 : No próximo tutorial, faríamos brevemente apresentá-lo à estrutura de exemplo, o MS Excel que armazenaria os dados de teste, manipulações do Excel etc.
Até então, fique à vontade para fazer suas perguntas sobre frameworks de automação.
Leitura recomendada
- 7 fatores que afetam a estimativa de teste do projeto de automação do Selenium - Tutorial do Selenium # 32
- Introdução ao Selenium WebDriver - Selenium Tutorial # 8
- Scripts Eficientes do Selenium e Cenários de Solução de Problemas - Tutorial # 27 do Selenium
- Depurando Scripts Selenium com Logs (Tutorial Log4j) - Tutorial Selenium # 26
- 30+ Melhores Tutoriais de Selênio: Aprenda Selênio com Exemplos Reais
- Tutoriais detalhados do Eclipse para iniciantes
- Como localizar elementos em navegadores Chrome e IE para criar scripts do Selenium - Tutorial do Selenium nº 7
- Tutorial Cucumber Selenium: Cucumber Java Selenium WebDriver Integration