Notes
M6 #4 - Ferramentas de teste

Content of the notes (6)
Page 1
Ferramentas de teste
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
Identificar as ferramentas de software.
Descrever as principais ferramentas de teste de software.
Aplicar o teste de software com o uso do JUnit e testes com Java.
Introdução
As ferramentas de teste servem para automatizar as atividades de teste de
software, garantindo maior produtividade e mais rapidez na sua execução.
Existem muitas ferramentas que podem ser utilizadas em qualquer projeto
de desenvolvimento de software. Há opções com licenças pagas ou gratuitas,
mas nenhuma pode ser definida como a melhor. Cabe ao gestor do projeto
definir a ferramenta mais adequada, o que depende do artefato produzido.
Nesse sentido, é importante que você conheça as ferramentas mais
utilizadas pelos profissionais da área de qualidade de software. Neste capítulo,
você vai estudar as ferramentas de software, as principais ferramentas de teste
de software e ainda a aplicação do JUnit para os testes de software com Java.
Ferramentas de software
A realização dos testes, durante o desenvolvimento de um software, é a ativi-
dade que assegura a entrega de um produto de qualidade ao usuário fi nal. Isso
ocorre principalmente quando os testes são feitos ao longo de todo o ciclo de
vida do projeto, pois eles garantem o alinhamento aos requisitos do software.
O teste de software é um aspecto do projeto que exige planejamento, tempo,
conhecimento técnico, recursos, infraestrutura adequada e principalmente
comprometimento — tanto dos gestores do projeto quanto dos analistas que
trabalharão como testadores.
Como você pode imaginar, quanto mais tarde ocorre a correção de proble-
mas identificados nos testes, maior é o custo decorrente dessas correções, tanto
Financeiros quanto de imagem perante os usuários finais. Daí a importância
da realização dos testes desde o início do projeto de softwar
Existem muitas ferramentas que podem ser utilizadas em qualquer projeto
de desenvolvimento de software. Há opções com licenças pagas ou gratuitas,
mas nenhuma pode ser definida como a melhor. Cabe ao gestor do projeto
definir a ferramenta mais adequadas
Page 2
Existem basicamente três problemas que podem ser encontrados durante
a realização dos testes em um software, como você pode ver a seguir
Erro: normalmente é causado por algo que o ser humano fez de errado.
Pode ser um trecho de código de programação incorreto, um design
inadequado em uma parte da interface, entre outros exemplos.
Defeito: decorre de um erro, pois quando uma codificação ou um
design são elaborados de maneira incorreta, isso gera um problema de
documentação, codificação ou design de interface.
Falha: decorre de um defeito, ou seja, quando um defeito ocorrer,
pela tentativa de execução de uma parte do código ou da interface
com problema, uma falha de sistema vai acontecer e o sistema não vai
funcionar corretamente, podendo até mesmo sofrer uma interrupção
na sua execução.
As ferramentas de software permitem maior cobertura de identificação
de problemas e diminuem o esforço dos testadores e de toda a equipe, tanto
no apontamento dos problemas quanto na sua correção. Essas ferramentas
podem ser divididas nas categorias listadas a seguir. Elas são utilizadas ao
longo do ciclo de vida de desenvolvimento do software, como você pode ver
na Figura 1 (CAETANO, 2007).
Ferramentas para gestão de defeitos
Ferramentas para gestão de testes
Ferramentas para gestão de projetos
Ferramentas para automação de testes funcionais e de aceitação
Ferramentas para automação de testes de performance
Ferramentas para controle de versões
Ferramentas de apoio

A utilização de ferramentas na realização das atividades de testes de
software proporciona alguns benefícios muito importante
os testes podem ser repetidos em sua integralidade, de maneira exaustiva,
sem que isso torne a atividade incômoda e maçante para os testadores;
os casos de teste podem ser armazenados e executados, e seus resultados
podem ser documentados de maneira facilitada, ficando disponíveis para
que os demais integrantes da equipe de projeto os utilizem em seu trabalho;
os testes podem ser reproduzidos de maneira fiel, pois existe documen-
tação para cada atividade realizada no âmbito da ferramenta;
são gerados arquivos de log apontando tudo o que foi feito no decorrer
das atividades de teste, com indicação dos problemas encontrados.
Page 3
Não existe uma ferramenta ideal para ser aplicada em todos os casos.
Contudo, uma ferramenta automatizada de teste de software precisa envolver
necessariamente os seguintes aspectos para ser considerada um instrumento
de auxílio na realização das atividades de test
cada uma das menores partes do software que precisa ser testada deve
ser executada de maneira isolada e independente de todas as outras
unidades testadas;
todos os erros, defeitos e falhas identificados devem ser documentados;
a definição de cada unidade de teste, ou menor parte do software que
precisa ser testada, deve ser definida de maneira simples e não complexa.
TestLink https://goo.gl/1WBFFE
O TestLink é uma ferramenta automatizada de testes de software open source
escrita na linguagem de programação PHP. O principal objetivo dessa ferra-
menta é dar suporte às atividades realizadas para a gestão de testes. Como
padrão, o TestLink é instalado na língua inglesa, mas é possível alterar essa
configuração para o idioma português.
Por meio do TestLink, você pode elaborar planos de testes e gerar relató-
rios com diversas informações para acompanhar a realização das atividades
de testes. Essa ferramenta também possibilita registrar e organizar todos os
requisitos levantados junto ao usuário no início do projeto e, posteriormente,
associar cada caso de teste criado ao requisito correspondente.
principais funcionalidades :
controle de acesso e níveis de permissão, dependendo do perfil do
usuário (por exemplo, testador ou gerente de projeto);
organização dos casos de teste em pacotes hierárquicos que podem ser
organizados por prioridade;
classificação dos casos de teste por palavras-chave, a fim de facilitar a
pesquisa e organizar ainda mais a disposição dos casos de teste;
criação ilimitada de projetos e de casos de teste dentro de cada projeto,
ou seja, não há limite de quantidade para nenhum deles;
atribuição dos planos e casos de teste a testadores específicos;
geração de relatórios e gráficos com informações sobre os testes que
podem ser exportadas para diversas extensões, como CSV, PDF, Mi-
crosoft Excel e Microsoft Word;
possibilidade de integração com outras ferramentas automatizadas de
gestão de testes e de defeitos, como o Mantis.
Page 4
Selenium https://goo.gl/52Qs4M
A ferramenta de testes de software chamada Selenium surgiu nos anos 2000,
evoluiu ao longo dos anos e atualmente é uma das mais conhecidas ferramentas
de automação de teste open source para aplicativos web
O Selenium é multiplataforma, ou seja, funciona em diversos sistemas
operacionais, como Windows, Mac e Linux, e ainda em diversos navegadores
web, como Chrome, Internet Explorer e Firefox. Além disso, os seus scripts
de teste podem ser escritos em diversas linguagens de programação, como
Python, Ruby, Perl e Java.
Apesar de o Selenium poder ser utilizado em diversos ambientes de pro-
gramação diferentes, além de suportar casos de teste complexos que atendem
a altos níveis de complexidade de sistemas, é necessário ter muito conheci-
mento técnico para trabalhar com ele. É preciso ter habilidades avançadas
de programação. Além disso, é requerido bastante esforço para a criação de
estruturas automatizadas e bibliotecas que atendam às necessidades de teste,
por mais simples que sejam.
IBM Rational Functional Tester https://goo.gl/oEAWD1
A ferramenta de teste chamada IBM Rational Functional Tester é paga e serve
para a realização de testes funcionais e testes de regressão. Os scripts dos
casos de teste são escritos em Visual Basic, .NET e Java (CAETANO, 2007).
O IBM Rational possui um recurso inédito entre as ferramentas de teste: o
teste do storyboard. Nele, as ações dos usuários e testadores são registradas
e podem ser visualizadas posteriormente no formato de storyboard, feito por
meio de capturas da tela da ferramenta
Page 5
TestComplete https://goo.gl/UBu3QL
O TestComplete é uma ferramenta de testes paga considerada muito poderosa
para a realização de testes em aplicações web, dispositivos móveis e desktops.
Essa ferramenta suporta a elaboração de scripts de casos de teste em JavaScript,
VBScript, C++ e Python (CAETANO, 2007).
A ferramenta TestComplete possibilita que os testadores realizem testes
orientados por palavras-chave e dados. Além disso, oferece um recurso que
permite a gravação dos testes realizados e a sua reprodução, de maneira
simples e fácil de usar.
Teste de software com JUnit e testes com JAVA https://junit.org
Na área da engenharia de software, uma das atividades mais importantes é
o teste de software. Ele precisa ser feito ao longo de todo o ciclo de vida do
projeto de desenvolvimento do software. Isso se torna mais evidente quando
a equipe de projeto trabalha com extreme programming, que tem uma visão
voltada principalmente para os teste
Quando o produto de software precisa ser desenvolvido na linguagem
de programação Java, os testes de software podem ser implementados por
meio do JUnit. Atualmente, ele é um dos frameworks mais conhecidos para
a realização de testes em Java.
O JUnit é um framework que pertence a uma família de ferramentas de testes
de software chamada xUnit. Essas ferramentas são aplicadas em produtos de
software desenvolvidos em C++, SmallTalk, Java e outras linguagens de progra-
mação. Apesar de o JUnit ser bem simples de se utilizar, ele traz um ambiente
completo para a realização dos testes unitários e dos testes de regressão em
códigos escritos na linguagem Java, facilitando o trabalho do desenvolvedor.
Os testes unitários, que são aqueles realizados por meio do JUnit, asseguram
que cada método projetado trabalhe da maneira como se espera, averiguando
as menores partes do código desenvolvido, que, no caso da metodologia ágil,
são os métodos.
Para entender melhor o que significam essas menores partes do código, basta você
imaginar um sistema de uma escola em que existe uma classe chamada Aluno, com os
métodos calcularMedia() e calcularMensalidade(). Para averiguar se existe algum erro
que envolva esses métodos, é necessário testar cada um deles a fim de entender de
onde o problema está vindo. Para a realização desses testes unitários, uma boa saída
são os testes automatizados, que aumentam a produtividade do desenvolvedor pois
diminuem o tempo gasto com testes.
Essa ferramenta é dividida em duas partes: uma com métodos e anotações
que servem para a elaboração dos casos de teste; e outra que serve para realizar
a execução dos casos de teste criados pela primeira parte (CAETANO, 2007).
A execução dos testes, por meio do JUnit, é feita de forma totalmente
automatizada e sem que seja necessária a intervenção humana. Além disso,
a apresentação do resultado dos testes realizados pelos testadores é feita por
meio de algo semelhante a um semáforo: a cor verde significa que o teste foi
executado da maneira como estava escrito no caso de teste; a cor azul significa
que o teste apresentou algum erro de validação; e a cor vermelha significa que
houve algum erro de exceção na escrita do código em Java.
Para trabalhar com o JUnit, você deve tomar algumas precauções durante o
planejamento dos teste
definir um pacote em que fiquem armazenadas todos os casos de teste;
levar em consideração que cada caso de teste é responsável pelos testes
de uma classe do sistema;
criar vários procedimentos de teste, de modo que cada um deles realize
pequenos testes.
Page 6
Na versão atual, o JUnit se divide em sete classes e interfaces, que são
Assert, TestResult, Test, TestListener, TestCase, TestSuite e BaseTestRunner.
As principais são a TestCase, a TestSuite e a BaseTestRunner.
Para testar o código, o JUnit oferece o método assert, que é muito fácil de
entender. Um método de asserção, ou assert, recebe o valor que é o esperado
como resultado para o teste, ou seja, o valor correto, e um outro que é o resul-
tado obtido pelo teste. A comparação entre eles é realizada e o teste falha se
os valores forem diferentes, mas é realizado com sucesso se eles forem iguais.
Conhecendo esse conceito de assert, é possível realizar o teste em todo o
código desenvolvido. É preciso apenas conhecer os requisitos do sistema (a
ponto de saber quais valores devem ser retornados em cada teste) e os resultados
obtidos com os testes (para tecer as comparações).
Uma boa maneira de escrever um teste unitário eficiente é colocar asser-
ções para os valores realmente críticos ou relevantes para o sistema. Ou seja,
talvez não seja necessário testar valores intermediários das classes, apenas
resultados finais. Porém, outras vezes talvez os resultados intermediários
interfiram diretamente no resultado final e seja interessante inserir asserções
para eles também.
Ao adicionar casos de teste no JUnit, você deve ter em mente que um valor
pode corresponder a qualquer objeto Java. Por isso, é fundamental implementar o equals e o hashcode dos objetos de resposta que precisarão ser testados com
o JUnit (BITTENCOURT; TESSMANN; SCHIRMER, 2019).
Como exemplo de implementação de método de teste no JUnit, considere
o seguinte:

Como o método criado é um void, ele não vai receber nenhum argumento, ou
seja, será uma classe de teste mesmo. A partir disso, é preciso inserir asserções
para que se possa compreender o funcionamento do método:
Nesse código, o primeiro argumento é a mensagem que vai aparecer caso
o teste falhe. Para visualizar a mensagem de erro, basta alterar o último ar-
gumento para que traga um resultado incorreto. Essa é a maneira mais fácil e
básica de entender como os testes são realizados por meio do JUnit.
Caso o teste precise envolver elementos mais complexos, o script do caso
de teste pode se parecer com o que é mostrado na Figura 2, a seguir.
É importante você observar que a string é inicializada e recebe valor null
por três vezes, porque existem três métodos de teste. Os métodos @Before
são executados antes dos métodos de teste, e o @After é executado depois
deles. As anotações @Before e @After, da maneira como foram utilizadas,
permitem criar cenários de teste sempre zerados e corretamente inicializados
a cada ciclo de teste (BITTENCOURT; TESSMANN; SCHIRMER, 2019).
Information
- Description
- Pós-Graduação Engenharia de Software Note on M6 #4 - Ferramentas de teste , created by Lucas Erikson on 24/10/2022.
- Created by
- Lucas Erikson
- Views
- 0
- Rating