Buscar

aula06

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

Continue navegando