Você está na página 1de 11

Teste de Software

UNIDADE 3
Para início de conversa

Olá, caro(a) aluno(a)! Como vai?

Na unidade passada apresentei os conceitos teóricos e práticos da montagem de testes unitários em


um sistema orientado a objetos. Esses testes são importantes para garantir a integridade das classes de
negócio; porém, apenas os testes unitários não são o suficiente para prover confiança no teu sistema que
está sendo desenvolvido. Para isso existem os testes de integração do sistema.

Mostrei que a qualidade da resposta do sistema depende da qualidade dos dados que são inseridos no
sistema. Para isso, é necessário realizar testes de integração entre os módulos utilizando cenários de
testes. Realizar tarefas de testes de sistema não é uma tarefa fácil, utilizar uma abordagem de testes
iterativa incremental é uma opção mais viável de realizar testes no sistema, porém, é um trabalho ex-
tremamente árduo para garantir a regressão dos testes, ou seja, toda vez que você adicionar um novo
módulo no sistema, isso irá afetar os módulos que já existiam no teu sistema.

Em outras palavras, isso significa que teu sistema precisa ser retestado, porque essas novas funcionali-
dades podem impactar nas funcionalidades que já existiam. Realmente estou caminhando para isso que
você está começando a supor, sim, o sistema precisa ser retestado a cada versão.

TESTES DE REGRESSÃO

Querido(a) aluno(a), cada vez que o software recebe uma alteração, normalmente a inclusão de um novo
módulo ou a alteração em alguma funcionalidade, o software muda. O problema da mudança é que novos
caminhos de fluxos de dados são criados, as entradas e saídas das interfaces do sistema podem sofrer
alterações e modificar comportamentos que antes funcionavam corretamente. Testes de regressão são a
reexecução dos subconjuntos de testes que já foram executados anteriormente, para garantir que essas
alterações não propagem efeitos colaterais indesejados.

Agora você deve estar se perguntando, o quanto de trabalho uma equipe de testes tem a cada incremento,
porque trabalhar com testes deve ser impraticável pela quantidade de cenários que precisam ser retesta-
dos a cada incremento.

Mas calma, nesta unidade eu vou falar de testes automatizados, os quais são uma excelente alternativa
para garantir a regressão quando há alterações no sistema.

TESTES AUTOMATIZADOS

Agora você deve estar se perguntando, o quanto de trabalho uma equipe de testes tem a cada incremento.
Trabalhar com testes deve ser impraticável pela quantidade de cenários que precisam ser criados, retesta-

1
dos a cada incremento. Trabalhar com testes de software é uma das especializações bastante procuradas
pelos profissionais de T.I. É uma área que possui diversos tipos de testes para diversas habilidades, exis-
tem testes manuais, automatizados, de desenvolvimento, entre outros. Consequentemente, você pode se
especializar em áreas diferentes dentro de testes de software e ser um profissional bastante disputado no
mercado de trabalho. Atualmente, as empresas estão investindo bastante em testes automatizados, pois,
eles possuem um esforço alto de criação no começo, porém ao longo do desenvolvimento esse esforço
diminui fortemente porque apenas alguns ajustes são implementados no futuro. Com isso, os testes de
regressão passam a ser bem fáceis de realizar.

A execução de testes automatizados é sempre mais rápida do que os testes manuais e com menos proba-
bilidade de erros. Investir em uma abordagem de testes baseada em testes automatizados está em alta
no mercado na atualidade. Existem várias abordagens para a automação de testes, porém, irei apresentar
as abordagens mais utilizadas no mercado de automatização de testes. Os tipos de automação são nor-
malmente agrupados de acordo com a maneira como os testes automatizados interagem com o software.

Caro(a) aluno(a), em geral, os tipos de automação são agrupados em dois paradigmas (mas não são limi-
tados a esses), conforme as informações abaixo, extraídas do Blog da Qualister:

Baseados na Interface Gráfica

Nesta abordagem os testes automatizados interagem de forma direta com a interface gráfica do software
simulando um usuário humano. Usualmente, as ações dos usuários são gravadas através da ferramenta
de testes automatizados, alguns chamam de Macro. A ferramenta de testes automatizados transforma
essas ações que foram gravadas em um script que pode ser reproduzido diversas vezes posteriormente.

Vantagens: Não precisam de modificações na aplicação para criação dos testes automatizados. Os testes
são realizados da mesma forma que os usuários utilizam o sistema, com isso, não precisam de adaptações
no sistema para criação dos testes automatizados baseados em interface.

Desvantagens: Existe uma enorme dependência da interface gráfica. Isso significa que se a interface grá-
fica mudar, os testes deixarão de funcionar corretamente. Baixo desempenho para testes automatizados
que exigem centenas de milhares de repetições, isso significa que assim como os testes manuais, quanto
mais cenários possíveis de teste, mais testes serão executados. Como esses testes utilizam a interface
gráfica como entrada de dados e que irá demorar em realizar todos os cenários, isso acontece em fun-
cionalidades que possuem uma grande quantidade de respostas possíveis, como por exemplo, rotinas de
cálculo.

Baseados na Lógica de Negócio

Nesta abordagem os testes automatizados, testam as funcionalidades da aplicação sem interagir com a
interface gráfica. Geralmente é necessário fazer modificações na aplicação para torná-la mais fácil de tes-
tar; essas modificações resultam em mecanismos para expor ao mundo exterior as interfaces de negócio
das funcionalidades do software.

2
A interface gráfica é apenas um meio de interação com o usuário que tem o intuito de fornecer um meio
para a entrada dos dados e apresentação dos resultados. A parte de um software que contém o pro-
cessamento da funcionalidade e o comportamento da aplicação é a camada de lógica de negócio. Esta
abordagem de testes é baseada no entendimento que a maior parte das falhas do sistema encontra-se
por defeitos de implementação das lógicas de negócio.

Vantagens: Foco na camada onde existe maior probabilidade de existir erros. Baixo acoplamento com a in-
terface gráfica, isso significa que as mudanças da interface gráfica não irão acarretar em retrabalho para
realizar ajustes no script de testes. Alto desempenho para testes automatizados que exigem centenas de
milhares de repetições, ou seja, testes de funcionalidades que possuem diversos cenários de testes são
executados mais rápidos, pois os dados são inseridos diretamente na interface de negócio e não por meio
de telas da aplicação.

Desvantagens: Requer grandes modificações na aplicação para expor as interfaces das funcionalidades
ao mundo exterior. Exigem profissionais especializados em programação para criar os testes automatiza-
dos. Existem poucas ferramentas/frameworks que suportam essa abordagem (normalmente é necessário
criar soluções próprias).

Visite a Página

Caso queira acessar o conteúdo completo sobre a Introdução à Automação de Testes,


acesse o link do blog Qualister indicado no seguinte link.

Querido(a) aluno(a), espero que você tenha entendido a diferença entre as maneiras de criar testes au-
tomatizados. Para fixar melhor os conhecimentos em testes automatizados, irei apresentar a você uma
ferramenta bastante simples de desenvolvimento de testes automatizados baseados em interface gráfica.

Como apresentado anteriormente à diferença entre as duas abordagens de testes automatizados (ba-
seados em interface gráfica e lógica de negócio), irei utilizar a abordagem baseada em interface gráfica,
pois, na unidade 2 exploramos os testes unitários, que de certa forma não deixa de serem testes automa-
tizados, pois os testes são executados pela máquina, e utilizam a abordagem de lógica de negócio, pois
acessam diretamente as interfaces do código fonte para executar suas ações.

Utilizarei a ferramenta Selenium, a qual é uma ferramenta bem simples de se usar para realizar testes
automatizados.

3
Veja a imagem a seguir:

Figura 1
Fonte: http://img.haixiaol.com/2015-10/31/03/201510310307496145947.jpeg

Praticando

Essa ferramenta Selenium oferecerá várias possibilidades de escrever testes automa-


tizados, desde a forma mais simplificadas de escrever testes, a forma mais robustas
de escrever os testes. A forma mais simples é usar uma das subdivisões do Selenium,
chamada de Selenium IDE, a qual é um plugin criado para o navegador Firefox para es-
crita dos testes. Possui uma interface bastante intuitiva que você escrever seus casos
de testes.

4
Observe a imagem a seguir:

Figura 2
Fonte: Criação do Professor

Ao adicionar o plugin do Selenium IDE no firefox no canto superior direito do navegador irá aparecer um
botão para acessar o plugin do Selenium IDE. Ele irá abrir uma janela para que você escreva e possa de
forma intuitiva escrever seus testes automatizados.

Observe a imagem a seguir, para obter a explicação de como utilizar a ferramenta.

Figura 3
Fonte: Criação do Professor
5
Esta é a interface gráfica do Selenium IDE, é uma interface bastante intuitiva, mas como ponto negativo,
ela mistura a língua portuguesa com a língua inglesa. O primeiro campo é a URL Base, neste campo você
digita a URL inicial que seu teste vai abrir, ou seja, o ponto de partida do seu programa para este caso
de teste. Você pode colocar a página inicial do seu projeto caso queira testar a navegação nos menus do
seu sistema, ou a URL direta da funcionalidade que você queira testar. Do lado esquerdo, você encontra
uma seção chamada de TEST CASE. Neste lugar você pode criar diversos casos de testes e os renomear.

Com essa interface não é necessário você entender muito de programação, pois no canto superior direito
tem um botão circular vermelho que permite você gravar os passos executando de forma manual o teste.
Simples de usar a gravação de comandos, ele irá armazenar um comando por vez dos passos que você
decidir fazer na funcionalidade, tais como: clique de mouse, escrita de teclado em algum campo específi-
co, aguardar carregamento de página. Cada comando desse é armazenado na seção central chamada de
comandos.

Neste lugar você vai encontrar a lista de comandos, que seu caso de testes vai executar até ser encerrado.
O mesmo pode ser feito de forma manual com os campos logo abaixo, na seção que permite você digitar
qual comando, qual alvo da tela irá sofrer a ação e qual o valor que você quer enviar, caso for um campo
que receba um valor. Você tem a opção de executar apenas um caso de testes do começo, ou de um ponto
específico ou a suíte completa de testes, os botões de início de execução te dão essa flexibilidade de
escolher como você deseja executar seus testes.

Exemplo

Para exemplificar o uso da ferramenta eu criei um caso de testes do site CÁLCULO EXATO para testar a
correção monetária de juros compostos de um montante de R$1.000,00 pelo índice nacional de custo da
construção (INCC), pelo período de um ano (no ano de 2015).

http://calculoexato.com.br/

Fiz a gravação dos passos por macro, preenchendo os campos como apresentando nas imagens seguintes.

6
Figura 4
Fonte: Criação do Professor

Figura 5
Fonte: Criação do Professor

7
Praticando

Então, a interface preenchida com meu caso de testes ficou preenchida dessa maneira:

Ao final, o programa realizou um comparativo do dado apresentado na tela, com o informado no caso de
teste do Selenium para verificar se o sistema fez o processamento de forma correta. No lado esquerdo,
existe uma sessão que apresenta dois dados, Runs e Failures (do inglês execuções e falhas). Como o
sistema se comportou de forma adequada e só teve um caso de teste executado, apresentou o resultado
com uma execução e nenhuma falha. Eu acharia mais adequado que ele tivesse escrito sucessos e falhas,
a quantidade de execuções, neste caso, é soma dos dois valores.

A imagem a seguir apresenta a resposta que o sistema apresentou para o teste utilizado.

Figura 6
Fonte: Criação do Professor

Como já falado anteriormente, nunca se esqueça de desenvolver os casos de testes para os fluxos ex-
cepcionais, você precisa testar também as respostas do sistema para situações que o usuário realiza
operações que não deveria fazer como colocar valores negativos para salário, deixar de preencher um
campo obrigatório, entre outras situações que o sistema deve estar precavido para eventuais problemas.

Veja o vídeo!

Prezado(a) estudante, se você se interessou em trabalhar com o Selenium IDE vou apre-
sentar um vídeo de um workshop explicativo sobre a ferramenta. É um vídeo bastante
grande com a duração de cinquenta e dois minutos, porém bastante didático e interes-
sante para você dar os primeiros passos, utilizando esta ferramenta.

8
O Selenium também dispõe de outras formas de fazer automação de testes, você pode baixar também
gratuitamente a versão WEBDRIVER a qual é uma versão mais completa, ou seja, com mais recursos para
escrita de testes automatizados, porém necessita de conhecimentos em programação para escrever os
testes. Esta versão permite a escrita de testes, tanto utilizando a interface gráfica como realizar testes
direto nas interfaces do negócio do teu software. A maioria dos casos de testes você consegue realizar
com a versão IDE do Selenium, a qual é uma versão mais simples de escrever testes.

Guarde essa ideia!

Um problema bastante comum que os criadores de testes automatizados encontram na


hora de executar um teste automatizado, com efeito de garantir a regressão do sistema
a cada adição de incremento, é que mudanças na interface gráfica podem gerar proble-
ma na execução dos testes. Um campo que mude seu identificador ou deixe de existir
na tela, irá acarretar em falha no seu teste. Então a cada incremento os testadores
devem estar atentos às mudanças no sistema. Nem sempre uma falha na execução de
um teste automatizado significa que o sistema está com alguma falha. Essa é a parte
chata de realizar testes automatizados, são pontuais os retrabalhos, mas sempre aca-
bam acontecendo a cada incremento. Porém, se você analisar o custo-benefício de não
realizar testes manuais em todo sistema para buscar efeitos colaterais em cada versão,
vale muito a pena investir em testes automatizados.

Este foi apenas um exemplo de ferramenta de geração de testes automatizados, mas no mercado você
encontra diversas, bem mais sofisticadas que possuem licença paga. Gosto de trabalhar com softwares
gratuitos, mas normalmente há bastantes limitações em suas versões, mas essa ferramenta é bem inte-
ressante e atende as necessidades em geral.

Nesta unidade discutimos bastante sobre testes de regressão utilizando os testes automatizados para
realizar a automação dos mesmos. Na última unidade, iremos ver as métricas para testes e discutir abor-
dagens para gerar testes de requisitos não funcionais. Até agora com testes unitários e testes automati-
zados apenas discutimos como testar as funcionalidades do software, ou seja, os requisitos funcionais.

Até lá, caro(a) aluno(a)!

Acesse o Ambiente Virtual

Lembre-se: é muito importante que você realize todas as atividades disponíveis no


Ambiente Virtual de Aprendizagem (AVA), pois possuem caráter avaliativo.

Espero você na nossa próxima unidade. Bons estudos!

9
Referências Bibliográficas

Sommerville, I; Engenharia de software 9 ed. 2011; 528p

Pfleeger, S. L.; Engenharia de software: teoria e prática 2004.

Pressman, R.; Engenharia de Software: uma abordagem profissional 7 ed. 2011.

10

Você também pode gostar