selenium framework creation
No último tutorial, nós o familiarizamos com o noções básicas de frameworks de automação de teste , seus componentes e tipos. Os frameworks ilustrados no tutorial anterior foram alguns dos frameworks mais populares usados pela fraternidade de teste.
Discutimos brevemente Frameworks baseados em Módulo, Framework baseado em Arquitetura de Biblioteca, Framework dirigido por palavras-chave, Framework Orientado a Dados e Framework Híbrido. Existem várias outras estruturas também no local.
Observe que estaríamos adotando Estrutura de automação de teste orientada a dados para o restante de nossos tutoriais.
Na atual tutorial nesta série , gostaríamos de torná-lo familiarizado com um estrutura de amostra, o Excels, que armazenaria os dados de teste e suas manipulações do Excel . Na mesma linha, avançaríamos e introduziríamos novas estratégias e recursos para amadurecer nossa estrutura.
Então, vamos aprender:
- Estratégia de criação de framework usando um projeto de amostra
- Acesse os dados de teste armazenados na fonte de dados externa
Seguindo em frente, começaríamos com a descrição da hierarquia do projeto que estaríamos criando para segregar os vários componentes do projeto.
Consulte a imagem abaixo para a hierarquia do projeto criada para o projeto de amostra. O projeto java abaixo pode ser facilmente criado dentro do eclipse da maneira como criamos os projetos nos tutoriais anteriores.
O que você aprenderá:
- Estrutura de pastas do projeto Selenium - Passo a passo
- Criação de dados de teste
- Conclusão:
- Leitura recomendada
Estrutura de pastas do projeto Selenium - Passo a passo
# 1) src - A pasta contém todos os scripts de teste, genéricos, leitores e utilitários. Todos esses recursos nada mais são do que simples classes java. Na pasta source (src), criamos uma hierarquia de pastas.
um teste - A pasta “test” é constituída principalmente de dois ingredientes - suite de teste e as pastas que representam os vários módulos do aplicativo em teste. Portanto, cada uma dessas pastas contém os scripts de teste específicos do módulo ao qual está associada. Testesuite é uma combinação lógica de mais de um script de teste. Assim, o usuário pode marcar uma entrada de qualquer um dos scripts de teste dentro do conjunto de testes que deseja executar nas execuções subsequentes.
teste de software, perguntas e respostas da entrevista comportamental
b) utilitários - A pasta “utilitários” é constituída por vários genéricos, constantes, leitores e classes para a implementação de exceções definidas pelo usuário. Cada uma das pastas em utilitários tem seu próprio significado.
- Leitor Excel - Uma classe genérica e comum foi criada para ler os dados de teste (parâmetros de entrada e resultados esperados) das planilhas do Excel
- EnvironmentConstants - A pasta é a integração das classes java que armazenam as variáveis estáticas que fazem referência aos caminhos e outros detalhes ambientais. Esses detalhes podem ser URL do aplicativo, URL para os bancos de dados, Credenciais para bancos de dados e URL para qualquer ferramenta de terceiros em uso. Os URLs de aplicativos díspares podem ser configurados para ambientes diferentes (dev, prod, test, master, slave etc).
- DataSetters - A pasta incorpora as classes que implementam os getters e setters dos dados de teste buscados no Excels. Para carregar vários conjuntos de dados de teste, criamos ArrayLists.
- Funções do usuário - A pasta acomoda as classes que cuidam dos critérios de acesso com base em função, se houver, para usuários instintos.
- FunctionLibrary - A pasta é constituída pelas classes que contêm funções e métodos que podem ser compartilhados e usados entre as várias classes. Muitas vezes, devemos realizar certos procedimentos antes e depois da execução do teste real, como login no aplicativo, configuração de ambientes, atividades relacionadas a rolagens, manipulações de dados, resultados de gravação, métodos que geram pré / pós-condições para outros métodos . Uma vez que tendemos a realizar essas atividades para todo ou a maior parte do script de teste. Portanto, é sempre recomendado criar uma classe separada para tais atividades, em vez de codificá-las repetidamente em cada um dos scripts de teste.
- PreConditionalMethods
- PostConditionalMethods
Muitas vezes, devemos realizar certos procedimentos antes e depois da execução do teste real, como login no aplicativo, configuração de ambientes, atividades relacionadas a funções de usuário, manipulação de dados, resultados de gravação, métodos que geram pré / pós-condições para outros métodos. Uma vez que tendemos a realizar essas atividades para todos ou a maior parte do script de teste, é sempre recomendável criar uma classe separada para tais atividades, em vez de codificá-las repetidamente em cada um dos scripts de teste.
CommonMethods
Como as pré e pós-condições, pode haver métodos e funções que podem ser usados por mais de um script de teste. Assim, esses métodos são agrupados em uma classe. O script de teste pode acessar esses métodos usando o objeto da classe comum.
# 2) arquivos excel - Os arquivos do Excel são considerados fontes de dados / provedores de dados para a execução do script de teste. Esses arquivos armazenam os dados de teste em pares de valor-chave. Observe que criamos uma planilha Excel separada para cada um dos scripts de teste, ou seja, cada script de teste tem seu próprio arquivo de dados de teste. O nome do script de teste e os arquivos de dados de teste / planilha do Excel correspondentes foram mantidos iguais para a perspectiva de rastreabilidade. Confira o exemplo de formato de dados de teste abaixo:
Formato de dados de teste
Cada uma das colunas representa uma chave e cada uma das linhas representa um dado / valor de teste. Especifique as várias linhas para executar o mesmo script de teste com vários conjuntos de dados.
Marque que os formatos de dados de teste são definidos exclusivamente pelo usuário. Portanto, com base em seus requisitos, você pode personalizar os arquivos de dados de teste.
# 3) biblioteca - A pasta atua como um repositório / artifactory para todos os arquivos jar, bibliotecas, drivers, etc. necessários para construir com sucesso o ambiente de teste e executar os scripts de teste. Consulte a figura a seguir para verificar as bibliotecas que seríamos empregadas em nosso projeto.
# 4) registros - A pasta contém um arquivo .txt que armazena as informações de registro em cada execução.
# 5) material de teste - A pasta contém os dados de teste reais que precisam ser carregados, se houver. Esta pasta entraria em cena quando nos deparamos com cenários de teste em que o usuário é obrigado a fazer upload de arquivos, documentos, fotos, relatórios, etc.
# 6) build.xml - O arquivo xml é usado pelo “Ant Server” para automatizar todo o processo de construção.
# 7) log4j.xml - Este arquivo xml é usado por um utilitário baseado em Java denominado “Log4j” para gerar os logs de execução.
Observação : Gostaríamos de estudar mais sobre os logs, exceções definidas pelo usuário e Ant em detalhes nos próximos tutoriais. Portanto, não entre em pânico se você ficar confuso entre as noções.
Agora, à medida que avançamos, vamos entender o fenômeno em que acessamos os arquivos do Excel e populamos os dados de teste em nossos scripts de teste.
Para compreender o processo mais facilmente, dividiríamos o processo nas seguintes etapas.
Criação de dados de teste
Passo 1 : A primeira e mais importante etapa é criar os dados de teste com os quais estaríamos executando os scripts de teste. Considerando o formato de dados de teste mencionado acima, vamos criar um arquivo excel denominado “TestScript1”. Forneça os valores nos elementos.
Passo 2 : O próximo passo é fazer o download de uma API / Biblioteca baseada em java padrão chamada “Java excel Library” (jxl) para poder acessar os métodos genéricos já criados para manipulação do Excel.
etapa 3 : Crie uma classe de leitor Excel genérica chamada “ExcelReader.java”. Copie o código abaixo no ExcelReader.java.
package Utilities; import java.io.File; import java.io.IOException; import java.util.Hashtable; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; /** * This is a utility class created to read the excel test data file before performing the test steps. * This class loads the excel file and * reads its column entries. * */ public class ExcelReader { /** * The worksheet to read in Excel file */ public static Sheet wrksheet; /** * The Excel file to read */ public static Workbook wrkbook = null; /** * Store the column data */ public static Hashtable dict = new Hashtable(); /** * Create a Constructor * * @param ExcelSheetPath * @throws BiffException * @throws WeblivException */ public ExcelReader(String ExcelSheetPath) throws IOException, BiffException { // Initialize try { wrkbook = Workbook.getWorkbook(new File(ExcelSheetPath)); wrksheet = wrkbook.getSheet('Sheet1'); } catch (IOException e) { throw new IOException(); } } /** * Returns the Number of Rows * * @return Rows */ public static int RowCount() { return wrksheet.getRows(); } /** * Returns the Cell value by taking row and Column values as argument * * @param column * @param row * @return Cell contents */ public static String ReadCell(int column, int row) { return wrksheet.getCell(column, row).getContents(); } /** * Create Column Dictionary to hold all the Column Names */ public static void ColumnDictionary() { // Iterate through all the columns in the Excel sheet and store the // value in Hashtable for (int col = 0; col Passo 4 : Crie uma classe genérica - “CommonMethods.java”. Crie um método comum dentro da classe que iria ler as células da planilha do Excel usando os métodos implementados em ExcelReader.java.
como inicializar a lista em java
/** * Read the test data from excel file * * @param data The TestData data object */ public void readExcelData (TestData data) { ArrayList browser = new ArrayList(); ArrayList username = new ArrayList(); ArrayList password = new ArrayList(); ArrayList element1 = new ArrayList(); ArrayList element2 = new ArrayList(); ArrayList element3 = new ArrayList(); // Get the data from excel file for (int rowCnt = 1; rowCnt Etapa 5 : Crie uma nova classe java chamada “TestData.java”. Essa classe atuaria como getter e setter para dados do Excel. Copie e cole o código a seguir na classe TestData.java.
package Utilities.dataSetters; import java.util.ArrayList; public class TestData { private ArrayList loginUser = null; private ArrayList password = null; private ArrayList browser = null; private ArrayList element1 = null; private ArrayList element2 = null; private ArrayList element3 = null; /** * @return loginUser */ public ArrayList getLoginUser() { return loginUser; } /** * @param loginUser */ public void setLoginUser(ArrayList loginUser) { this.loginUser = loginUser; } /** * @return password */ public ArrayList getPassword() { return password; } /** * @param password */ public void setPassword(ArrayList password) { this.password = password; } /** * @return browser */ public ArrayList getBrowser() { return browser; } /** * @param browser */ public void setBrowser(ArrayList browser) { this.browser = browser; } /** * @return element1 */ public ArrayList getElement1() { return element1; } /** * @param element1 */ public void setElement1(ArrayList element1) { this.element1 = element1; } /** * @return element2 */ public ArrayList getElement2() { return element2; } /** * @param element2 */ public void setElement2(ArrayList element2) { this.element2 = element2; } /** * @return element3 */ public ArrayList getElement3() { return element3; } /** * @param element3 */ public void setElement3(ArrayList element3) { this.element3 = element3; } }
Etapa 6 : A próxima etapa é criar instâncias das classes java “TestData.java” e “CommonMethods.java” dentro do script de teste para acessar e preencher os dados de teste. Consulte o snippet de código abaixo para inicialização de objeto, lendo dados do Excel e preenchendo os valores sempre que necessário.
// Create Objects public ExcelReader excelReaderObj; CommonMethods commonMethodobj = new CommonMethods(); TestData td = new TestData(); // Load the excel file for testing excelReaderObj = new ExcelReader(Path of the excel); // Load the Excel Sheet Col in to Dictionary for use in test cases excelReaderObj.ColumnDictionary(); // Get the data from excel file commonMethodobj.readExcelData (td); // Populate the username driver.findElement(By.id('idofElement')).sendKeys(data.getLoginUser().get(0));
Portanto, usando a instância da classe testData.java em conjunto com getters, qualquer valor de dados de teste pode ser preenchido no script.
Conclusão:
O tutorial girou principalmente em torno de noções como Criação de Framework e Acesso a dados de teste dos excelentes. Nós o familiarizamos com a estratégia de criação do Framework usando um projeto de amostra. Apresentamos brevemente os vários componentes e aspectos de nossa estrutura.
Para acessar os dados de teste armazenados na fonte de dados externa, usamos uma API baseada em java - jxl. Também criamos o código de amostra para ler e preencher os dados do Excel nos scripts de teste.
Próximo tutorial nº 22 : No próximo tutorial, basearíamos nosso tutorial no conceitos de genéricos e seu mecanismo de acessibilidade . Criaríamos alguns métodos genéricos de amostra e depois os acessaríamos nos scripts de teste. Também apresentaremos o conceito de Testsuite e o desenvolvimento de código de exemplo.
Leitura recomendada
- Introdução ao JUnit Framework e seu uso no Selenium Script - Selenium Tutorial # 11
- Data Driven Framework no Selenium WebDriver usando Apache POI
- Tutorial Cucumber Selenium: Cucumber Java Selenium WebDriver Integration
- Introdução ao Selenium WebDriver - Selenium Tutorial # 8
- Tutoriais detalhados do Eclipse para iniciantes
- Como usar o TestNG Framework para criar scripts do Selenium - Tutorial do TestNG Selenium nº 12
- 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