Baixe o app para aproveitar ainda mais
Prévia do material em texto
6ºAula Objetivos de aprendizagem Ao término desta aula, vocês serão capazes de: entender o que são as ferramentas de testes; saber como são as ferramentas de teste unitário; conhecer a ferramenta Selenium Web Driver. Olá, pessoal, tudo bem? Bem-vindos(as) novamente a nossa disciplina “Verificação e Validação de Software”. Nesta aula, vamos ver o que são as ferramentas para testes. Além disso, teremos um contato inicial com as algumas das principais ferramentas de testes utilizadas no mercado. Esta aula tem como objetivo mostrar essas ferramentas, para que você esteja preparado quando lidar com uma ferramenta de teste. Leia atentamente esta aula e se tiver alguma dúvida use a sua área do aluno. Bons estudos. Bons estudos! 179 Veri cação e Validação de Soft are 36 Seções de estudo 1 - Entendendo as ferramentas de testes 1 - Entendendo as ferramentas de testes 2 - Entendendo as ferramentas de testes unitários 3 - Selenium Web Driver Nas últimas cinco aulas, vimos o conceito de qualidade e testes em engenharia de software. Também vimos uma metodologia que valoriza a escrita de testes. Mas, você deve estar se perguntando: Como eu faço os testes automatizados no meu sistema? Existem muitos programas que podem fazer os testes por você. Isso pode poupar um tempo incrível na sua rotina de desenvolvimento, visto que normalmente os programadores testam manualmente seus programas, acessando os seus sistemas e inserindo manualmente os dados. Com um programa fazendo os testes por você, você poupa o seu tempo de fazer os testes manualmente, fazendo com que você ganhe mais tempo. Todos ganham. Mas cabe lembrar que existem vários programas para testes, sendo que cada um tem a sua função. Não vamos enumerar todos, pois existem dezenas deles na internet, e escrever sobre eles ocupará muito espaço nesta disciplina. Nesta aula, vamos apresentar dois tipos de ferramentas de testes: a primeira, para testes unitários; a segunda faz testes em páginas Web. A ferramenta de testes unitários que mostraremos nesta aula é o JUnit. Ele é um framework consolidado para testes unitários na linguagem Java. Também mostraremos o seu equivalente para o PHP, o PHPUnit. Para os testes de página Web, escolhemos falar sobre o Selenium Web Driver, uma ferramenta bastante utilizada por desenvolvedores Web, que pode ser integrada a qualquer linguagem de programação suportada. No momento em que este material está escrito, vários programadores estão desenvolvendo ferramentas para testes. Se você decidir estudar uma nova linguagem que esteja muito popular, provavelmente essa linguagem já terá alguma ferramenta de testes escrita. Além do Java e PHP, que vamos citar nesta aula, existe utilitários de testes para Node.JS, Javascript, Python, Ruby, C#, Delphi, Rust etc. Até existe ferramentas de testes para linguagens que não são de programação, como HTML e CSS. Agora, vamos mostrar essas ferramentas. 2 - Entendendo as ferramentas de testes unitários As ferramentas mais populares para testes são as de testes unitários. São por meio dessas ferramentas (ou frameworks) que os programadores desenvolvem os testes unitários. Esses testes são constituídos de classes ou arquivos, que contêm funções ou métodos que serão executados pelo programa testador. Mas como saber se o programa está indo para o lugar certo ou não? Simples. Essas ferramentas nos oferecem asserções, que são condições de testes. Ao declarar uma asserção, você estará indicando para essa ferramenta de testes que você está esperando alguma coisa, e se essa situação não acontecer isso significa que algo não está certo. Com essas ferramentas, você escreve os seus testes (pode ser junto com o seu código, caso adote a metodologia TDD, ou não) e executa todos eles de uma só vez, fazendo que você ganhe agilidade na hora de testar o seu sistema. Como já foi dito na aula sobre TDD, essas ferramentas podem ser divididas em duas partes. A primeira é uma biblioteca de métodos, que permite que o programador declare as asserções que serão testadas no código. A segunda é um executável que faz a execução dos testes. Normalmente, esses programas são executados em linha de comando, como o PHPUnit, que é um framework consolidado para a escrita de testes em PHP: Figura 1 - Tela de execução do PHPUnit Fonte: ANICHE; CARDOSO, 2016, p. 21. Mas, a maioria das IDEs e editores de texto avançados possuem integração nativa ou via plugins com essas ferramentas de testes, fazendo que você execute dentro do editor os testes e saiba do resultado dentro dos testes. Em alguns casos, o editor permite que você navegue direto para a linha do código em que o teste falhou! Figura 2 - Painel de resultado de testes na IDE Netbeans. 180 37 Existem várias ferramentas de testes unitários. Mas a mais famosa delas é o JUnit, criado para a linguagem Java. Essa é uma ferramenta poderosa e muito utilizada pelos programadores atualmente. Além disso, todas as principais IDEs de programação para a linguagem Java (Eclipse, IDEA e Netbeans) possuem suporte nativo a esse framework. Para que você saiba a estrutura de um teste, vamos reproduzir um código de um teste, de exemplo (suprimindo algumas coisas), publicado originalmente na documentação do JUnit ( < https://junit.org/junit5/docs/current/user- guide/#writing-tests-assertions >). Veja ele a seguir: //(...) class AssertionsDemo { @Test void standardAssertions() { assertEquals(2, 2); assertEquals(4, 4, "The optional assertion message is now the last parameter."); //(...) } @Test void groupedAssertions() { // In a grouped assertion all assertions are executed, and any // failures will be reported together. assertAll("person", () -> assertEquals("John", person.getFirstName()), () -> assertEquals("Doe", person.getLastName()) ); } //(...) @Test void exceptionTesting() { Throwable exception = assertThrows(IllegalArgumentException.class, () -> { throw new IllegalArgumentException("a message"); }); assertEquals("a message", exception.getMessage()); } //(...) } Nessa classe reproduzida aqui temos três métodos. O comentário que fica acima do nome de cada método indica que é um teste. Isso é importante, para que o programa saiba que é realmente um teste que deve ser executado. Esse recurso se chama anotações, que são metadados que são informados sobre uma classe, atributo ou método do nosso sistema. Em linguagens que não suportam esse recurso, devemos indicar e plicitamente que um método é um teste colocando a palavra “test” como pre o ou su o do nome do seu método. Isso depende de ferramenta para ferramenta. Em cada um dos seus métodos são chamados métodos com o prefixo “assert”. Esses métodos realizam testes e verificam se está OK ou não. Vamos a um exemplo. A linha com esse trecho: asse tE als 2 2 Está comparando se dois valores são iguais. Como é uma classe de exemplo, ele está comparando dois valores pré- definidos. Mas, normalmente, usamos essa asserção com uma variável, para ver se é igual ao valor esperado ou não. Se for igual ao valor esperado, o teste continua. Se não for, o teste para, e o programa indica uma falha. Nesse exemplo, o programa testa se um valor é igual, se dois valores estão em um mesmo objeto e se uma exceção é disparada no sistema. Existem diversas asserções que podem ser utilizadas para os nossos testes. Vale a pena dar uma olhada na documentação oficial dos frameworks para saber sobre isso. Outra coisa: as ferramentas de testes unitários são utilizadas por outras ferramentas como dependência. Ou seja, outras ferramentas de testes usam as ferramentas de testes unitários como base. Assim, as ferramentas de testes unitários são muito utilizadas no mundo da programação. Nas próximas duas aulas, vamos usaro JUnit como ferramenta para o nosso projeto de TDD. Vamos ver outra ferramenta, o Selenium Web Driver. 3 - Selenium Web Driver O Selenium Web Driver é uma ferramenta muito interessante. Com ele você pode emular a interação humana de páginas Web. Isso mesmo! Você pode fazer a interação humana com uma página Web através de um programa de computador. Não vamos entrar em grandes detalhes, mas o processo de configuração inicia-se em baixar o servidor Selenium e o driver. O servidor se encarrega de configurar os testes, enquanto que o driver se encarrega de ser a ponte entre o servidor e o navegador do usuário. Existem diversos drivers, sendo que existem drivers para os navegadores mais populares: Chrome e Firefox. O download é feito nessa página: <https://www. seleniumhq.org/download/>. A seguir, vemos uma reprodução da tela de download do Selenium: Fonte: Disponível em: < https://www.seleniumhq.org/download/ >. Acesso em: 16 set. 2018. 181 Veri cação e Validação de Soft are 38 Com o servidor e o driver instalados, deve-se configurar o framework de testes para aceitar os casos de teste do Selenium. Normalmente, é necessária alguma configuração extra ou a instalação de novas dependências no sistema. Depois que você fez a configuração do Selenium na sua ferramenta de testes unitários, basta escrever os testes unitários, mas com algumas diferenças: você deverá escrever quais interações serão feitas na página e qual será o comportamento esperado. Após isso, basta executar os testes como se fossem testes normais. O framework de testes unitários carregará o Selenium, que fará a abertura da página no navegador e fará todos os testes por você. Muito legal, não é mesmo? Com isso, você pode fazer testes diretamente na interface, emulando a interação usuário-sistema sem complicação. Normalmente, os frameworks de testes unitários que suportam o Selenium (JUnit e PHPUnit estão nesse grupo) possuem na sua documentação informações de como integrar o Selenium ao framework. Vale a pena dar uma olhada nas informações. E, com isso, finalizamos a nossa aula. Na próxima aula, faremos um projeto de desenvolvimento de um sistema usando TDD. Até lá! Retomando a aula Chegamos ao nal da se ta aula. Vamos relembrar? 1 - Entendendo as ferramentas de testes Aqui, vimos que existem muitas ferramentas de testes para atender as mais diversas necessidades. Se você decidir estudar uma nova linguagem que esteja muito popular, provavelmente essa linguagem já terá alguma ferramenta de testes escrita. Além do Java e PHP existem utilitários de testes para Node.JS, Javascript, Python, Ruby, C#, Delphi, Rust etc. Até existem ferramentas de testes para linguagens que não são de programação, como HTML e CSS. 2 - Entendendo as ferramentas de testes unitários Vimos que as ferramentas mais populares para testes são as de testes unitários. São por meio dessas ferramentas (ou frameworks) que os programadores desenvolvem os testes unitários. Esses testes são constituídos de classes ou arquivos, que contêm funções ou métodos que serão executados pelo programa testador. Essas ferramentas nos oferecem asserções, que são condições de testes. Ao declarar uma asserção, você estará indicando para essa ferramenta de testes que você está esperando alguma coisa, e se essa situação não acontecer isso significa que algo não está certo. 3 - Selenium Web Driver Por fim, vimos uma forma de testar páginas da internet, usando o Selenium Web Driver. Com ele, você pode emular a interação humana em uma página Web, escrevendo casos de teste, usando um framework de testes unitários. O Selenium converte os testes unitários escritos em interações, cuidando da abertura do navegador e da inserção dos dados. ANICHE, Maurício. Test-Driven Development: Teste e Design no Mundo Real. São Paulo: Casa do Código, 2012. ANICHE, Maurício; CARDOSO, André. Test-Driven Development: Teste e Design no Mundo Real com PHP. São Paulo: Casa do Código, 2016. PEIXOTO, Rafael. Selenium WebDriver: Descomplicando testes automatizados com Java. São Paulo: Casa do Código, 2017. Vale a pena ler Vale a pena GROFFE, Renato. Testando aplicações Web com Sele- nium WebDriver, .NET Core 2.0, .NET Standard 2.0 e xUnit. Medium, 2018. Disponível em: <https://medium.com/@ renato.groffe/testando-aplica%C3%A7%C3%B5es-web- com-selenium-webdriver-net-core-2-0-net-standard- 2-0-e-xunit-b85bd8713933>. Acesso em: 16 set. 2018. JUnit. JUnit 5 User Guide. 2018. Disponí- vel em: <https://junit.org/junit5/docs/current/ user-guide/#overview>. Acesso em: 16 set. 2018. MEDEIROS, Manoel Pimentel. JUnit Tutorial. De- vMedia, 2009. Disponível em: <https://www.devmedia. com.br/junit-tutorial/1432>. Acesso em: 16 set. 2018. PHPUnit. PHPUnit Manual. 2018. Dis- ponível em: <https://phpunit.readthedo- cs.io/en/7.3/>. Acesso em: 16 set. 2018. SELENIUM. Disponível em: <https:// www.seleniumhq.org/>. Acesso em: 16 set. 2018. Vale a pena acessar Minhas anotações 182
Compartilhar