Buscar

Testes de Interface por Robô

Prévia do material em texto

Testes de interface por robô
Apresentação
O teste de software automatizado é uma etapa muito importante no processo de desenvolvimento. 
As atividades de teste têm como objetivo descobrir erros e defeitos de aplicações, a fim de produzir 
produtos confiáveis para o mercado. Para isso, a equipe de garantia de qualidade deve realizar 
testes manuais ou de automação adequados.
Nesta Unidade de Aprendizagem, você vai estudar a utilização do Robot Framework para 
desenvolver scripts de automação usando o Selenium para testar a interface gráfica do usuário 
(GUI). Vai aprender a personalizar seus scripts automatizados e também entender como o Robot 
Framework realiza testes de automação.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Conceituar testes de interface por robô com Selenium.•
Identificar o teste de interface por robô com Selenium por meio de suas características.•
Prever a aplicação do teste de interface por robô com Selenium.•
Desafio
O teste de aplicativos da web apresenta nova gama de desafios para testes em comparação com a 
testagem de aplicativos de desktop. Atualmente, são utilizados sistemas dinâmicos, que consistem 
em um back-end e um front-end e são geralmente heterogêneos, ou seja, são compostos de vários 
componentes desenvolvidos em diferentes linguagens de programação. Os aplicativos da web 
geralmente suportam vários usuários e operam em um ambiente muito mais aberto do que os 
aplicativos de desktop.
Você é analista de testes e foi designado para implementar a automação de testes de uma aplicação 
web. Essa aplicação tem uma enorme quantidade de possíveis interações com a interface do 
usuário (GUI), pois cada sequência de comandos da GUI pode resultar em um estado diferente. 
Além disso, um comando da GUI pode precisar ser avaliado em todos esses estados, o que resulta 
em um grande número de permutações de entrada.
Você foi recomendado a realizar o trabalho com a automação desses testes utilizando Selenium 
com Robot Framework, conforme imagem abaixo:
O Selenium é um conjunto de quatro diferentes ferramentas de software. Cada ferramenta tem 
uma abordagem diferente no suporte à automação de testes baseado na web.
I. Selenium IDE (Integrated Development Environment) 
II. Selenium RC (Remote Control) 
III. Selenium WebDriver 
IV. Selenium Grid
Com a finalidade de compreender a utilização das ferramentas para automação de testes e concluir 
a tarefa que lhe foi designada na empresa, responda a questões a seguir:
a) Qual a diferença entre cada um dos componentes do Selenium?
b) Considerando a resposta da questão anterior, qual é a ferramenta mais indicada para ser utilizada 
neste cenário? Justifique sua resposta.
Infográfico
O Selenium é geralmente a primeira ferramenta de automação de testes a ser mencionada, 
especialmente para testes baseados na web. Essa popularidade tem muita relação com o fato de ser 
de código aberto, livre para começar a usar e experimentar e por ter compatibilidade com quase 
todos os navegadores existentes. Para criação rápida de script de prova de conceito, o Selenium 
tem um ambiente de desenvolvimento integrado (IDE) que suporta ações de gravação na interface 
do usuário e, em seguida, as reproduz.
No Infográfico, você vai ver o detalhamento de cada umas das dimensões para desenvolvimento de 
testes automatizados usando o Selenium.
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/26313ca2-c3a6-49b6-ad9d-1848cab14266/2c4728cc-c355-46e0-b186-8a8cc385ebca.png
 
 
Conteúdo do livro
A automação de testes exige o design, a criação e a manutenção de diferentes níveis de testes, 
incluindo o ambiente em que os testes serão executados, as ferramentas usadas, as bibliotecas de 
código que fornecem funcionalidade, os scripts e as cadeias de teste, as estruturas de registro e os 
relatórios de resultados do teste. Dependendo das ferramentas usadas, monitorar e controlar a 
execução dos testes pode ser uma combinação de processos manuais e automatizados.
No capítulo Testes de interface por robô, da obra Testes de software e gerência de configuração, que 
é base teórica desta Unidade de Aprendizagem, você vai saber mais detalhes sobre Robot 
Framework, que é uma estrutura de automação de teste genérica para testes de aceitação e 
desenvolvimento orientada a testes de aceitação (ATDD) e suas bibliotecas de suporte.
Boa leitura.
TESTES DE 
SOFTWARE E 
GERÊNCIA DE 
CONFIGURAÇÃO
Karine Birnfeld
Testes de interface por robô
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
  Conceituar testes de interface por robô com Selenium.
  Identificar o teste de interface por robô com Selenium por meio de 
suas características.
  Aplicar o teste de interface por robô com Selenium.
Introdução
Automatizar testes é uma forma de exercitar e verificar o software de-
senvolvido sem que haja participação humana. A integração das ferra-
mentas de automatização de testes nos processos de desenvolvimento 
de software contribui para que o ciclo de vida do projeto seja reduzido, 
assim como o seu custo. Além disso, essas ferramentas apresentam maior 
eficácia. Dessa forma, elas encontram maior quantidade de falhas e erros 
no sistema em desenvolvimento. 
Com a identificação de mais erros e a sua correção, a chance de a 
aplicação ter falhas ao ser entregue ao cliente é reduzida (MESZAROS, 
2007). Com o objetivo de apoiar a estratégia de automação de testes, 
neste capítulo, você vai estudar a implantação de testes automatizados 
com Selenium.
Testes com Selenium
O Robot Framework é um framework de código aberto para automação de 
testes. Ele é usado para testes de aceitação e para desenvolvimento orientado 
a testes de aceitação (Acceptance Test-Driven Development — ATDD). O 
Robot Framework tem uma sintaxe de dados de teste tabular e usa a abordagem 
de teste orientada por palavras-chave. Como a estrutura do robô segue uma 
arquitetura modular, a capacidade de teste pode ser estendida por bibliotecas 
de teste programadas com Python ou Java.
Esse framework é considerado uma estrutura de automação de testes de 
terceira geração. A configuração dos dados de teste da estrutura do robô não 
requer necessariamente programação ou script, mas apenas alteração de dados. 
O conceito de teste orientado por palavra-chave facilita a criação de dados de 
teste que direcionam a execução do teste.
A estrutura central do Robot Framework é implementada com Python, 
tornando-o independente do sistema operacional e do aplicativo. Ele também é 
executado em Jython (JVM) e IronPython (.NET). A possibilidade de executá-
-lo em qualquer sistema operacional que suporta Python o torna altamente 
flexível (ROBOT FRAMEWORK, 2019).
O Robot Framework processa os dados de teste quando é iniciado. A 
estrutura não precisa conhecer o sistema de destino, mas utiliza bibliotecas 
de teste para interagir com ele. As bibliotecas usam interfaces de aplicativos 
ou ferramentas de teste separadas como drivers.
Como você pode ver na Figura 1, a estrutura real se baseia nos dados de 
teste criados e, em seguida, utiliza os dados com a ajuda de diferentes biblio-
tecas. As bibliotecas, em seguida, usam ferramentas e interfaces para levar o 
sistema em teste a executar várias funções.
Figura 1. Arquitetura Robot Framework.
Fonte: Robot Framework Foundation (c2016, documento 
on-line).
Test Data
Robot Framework
Test Libraries
Test Tools
Test library API
Test data syntax
Application interfaces
System Under Test
Por sua vez, o Selenium é um conjunto de ferramentas que permite auto-
matizar testes de diferentes formas. Ele faz isso por meio de um conjunto de 
Testes de interface por robô2
funções que possibilitam a localização de elementos de interface do usuário 
e a comparação entre os resultados previstos para o teste e o comportamento 
real daaplicação (SELENIUMHQ, 2013).
As estratégias de automação simulam o usuário interagindo com o sistema 
em desenvolvimento. Em geral, os profissionais de testes aprendem a usar duas 
estratégias para automatizar os testes funcionais de interface com o usuário: 
codificar scripts de testes e utilizar ferramentas de captura/reprodução para 
gravar as ações do usuário com a aplicação.
Gravação
O Selenium IDE (Integrated Development Environment) é uma ferramenta 
para a construção de scripts de teste por meio de um plug-in para o navegador 
Firefox, que fornece uma interface amigável para o desenvolvimento dos testes 
automatizados. O Selenium IDE usa uma abordagem record-and-playback, 
capturando as ações executadas pelo testador em um script que permite re-
produzir o caso de teste posteriormente. Com os passos gravados, é possível 
reproduzi-los novamente em testes futuros e verifi car se as funcionalidades 
da aplicação estão funcionando corretamente.
Entre as vantagens da ferramenta, você pode considerar a facilidade 
de uso, já que ela não exige um nível alto de conhecimento técnico ou 
experiência (KOVALENKO, 2014). Além disso, o Selenium IDE é uma 
ferramenta de uso rápido e intuitivo: basta você acionar o botão de gravar e 
utilizar a aplicação que deseja testar como um usuário comum; a ferramenta 
identificará os elementos acessados na interface e gravará as suas ações. 
Já as desvantagens ficam por conta da inflexibilidade dos testes criados, 
pois existe a limitação de usar apenas o Firefox como browser para gravar 
e reproduzir os testes.
Existe também a dificuldade de esses testes automatizados se adaptarem 
às mudanças. A técnica de gravar e reproduzir as ações do usuário é afe-
tada quando ocorrem mudanças na interface ou no código do sistema. Essa 
dificuldade de se adaptar às mudanças compromete o reuso desses testes 
automatizados gravados. Segundo Kovalenko (2014), de forma geral, é baixo o 
nível de reuso dos testes funcionais de interface com o usuário automatizados 
via gravação.
Observe, na Figura 2, a seguir, os passos para a criação dos scripts com 
o Selenium IDE.
3Testes de interface por robô
Figura 2. Fluxo de gravação com a utilização do Selenium IDE.
A seguir, veja a descrição de cada um dos passos mostrados na Figura 2.
  Capturar os passos do caso de teste: o testador interage diretamente 
com o sistema, seguindo um caso de teste específico. Para cada ação 
feita pelo testador, a ferramenta cria um passo no script de testes.
  Definir critérios de validação: para validar as condições de saída 
do caso de teste, o Selenium IDE fornece vários mecanismos que 
permitem ao testador verificar o resultado da execução. Baseando-
-se nos critérios do caso de teste, o testador seleciona determinado 
elemento da página e faz asserções para verificar se os valores 
presentes naqueles componentes atendem aos resultados esperados 
para o caso de teste.
  Executar script: a execução do script de teste serve para verificar se o 
script gerado capturou todos os passos do caso de teste e se as verifica-
ções correspondem aos resultados esperados. Essa execução reproduz 
todas as ações e entradas informadas pelo testador durante a gravação 
do script. Ao final da execução, o critério de validação é avaliado 
informando ao usuário sobre o sucesso ou a falha do caso de teste.
Após a criação do script, é possível exportá-lo para uma das linguagens de 
programação suportadas, o que permite ao testador aprimorar o caso de teste 
de forma programática. Essa é uma característica importante do Selenium 
Testes de interface por robô4
IDE, já que ele é uma ferramenta de prototipagem rápida que não fornece 
recursos mais avançados como iterações e instruções condicionais. Para uma 
estratégia de automação mais robusta, recomenda-se o Selenium WebDriver 
(SELENIUMHQ, 2013).
Codificação
O Selenium WebDriver é uma API (Application Programming Interface) 
orientada a objetos, disponível para as linguagens de programação Java, C#, 
Ruby, Phyton e Javascript (SELENIUMHQ, 2013). Além da fl exibilidade 
proporcionada pela programação, a ferramenta suporta vários navegadores; 
entre eles: Google Chrome, Internet Explorer, Firefox e Opera. Além disso, 
ela permite testes em plataformas móveis, como Android e IOS.
Os componentes da tela são identificados por atributos do HTML (Hyper-
Text Markup Language), como o ID, ou por CSS e XPATH (ZHAN, 2015). 
O CSS (Cascading Style Sheets) é uma linguagem voltada para a forma ou o 
estilo como os componentes de tela são apresentados em um arquivo escrito 
em linguagem de marcação, como o HTML. Já o XPATH é uma linguagem de 
caminho XML e está voltada para a hierarquia dos itens de marcação contidos 
no HTML. Dessa forma, ele monta o caminho (path) partindo do item de mais 
alto nível até chegar ao elemento que deseja identificar. A verificação é feita 
utilizando frameworks de teste como JUnit, NUnit ou TestNG. O framework 
a ser usado depende da linguagem utilizada para codificar os scripts de testes, 
já que o Selenium WebDriver suporta diversas linguagens de programação 
(ZHAN, 2015).
Entre as vantagens de automatizar os testes funcionais de interface com 
o usuário via codificação está a melhor resposta às mudanças que afetam os 
testes. O código pode ser ajustado para que os testes automatizados voltem a 
funcionar corretamente, o que aumenta o seu poder de reuso. Outra impor-
tante vantagem é a possibilidade de executar os testes em diversos browsers 
(GUNDECHA, 2012).
A desvantagem é que, por ser feito via codificação, esse meio de automatizar 
testes funcionais de interface com o usuário exige um bom conhecimento 
sobre lógica de programação e sobre a linguagem que será utilizada. Além 
disso, há a necessidade de uma configuração antes de se iniciar a codificação 
e a execução dos testes automatizados. Na Figura 3, a seguir, você pode ver 
o processo de criação de um teste automatizado.
5Testes de interface por robô
Figura 3. Fluxo de codificação com a utilização do Selenium WebDriver.
Você pode buscar mais informações sobre a utilização do Selenium WebDriver no 
link a seguir.
https://qrgo.page.link/NL4Lo
Link
Características do teste com Selenium
Todos os recursos mencionados a seguir garantem que o Robot Framework 
seja usado para automatizar os casos de teste de maneira rápida e profi ciente.
Sintaxe tabular
Como você pode ver na Figura 4, o Robot Framework se baseia em arquivos 
de confi guração que seguem uma formatação específi ca do documento. Esse 
formato é chamado de “sintaxe de dados de teste tabular”. Isso signifi ca que, 
após o início de uma seção, toda nova linha de texto precisa ser planejada com 
dois ou mais espaços. Dados de teste são defi nidos em arquivos de confi guração, 
usando uma sintaxe específi ca. Vários casos de teste em um arquivo criam 
Testes de interface por robô6
um conjunto de testes, e vários arquivos em um diretório criam uma estrutura 
aninhada de suítes de teste (ROBOT FRAMEWORK, 2019).
Figura 4. Arquivo de dados de teste.
Fonte: Robot Framework (2019, documento on-line).
O Robot Framework suporta quatro formatos de arquivo diferentes. O 
formato tabular pode ser definido usando HTML, valores separados por 
tabulações (TSV), texto simples ou reStructuredText (reST). De acordo com o 
guia do usuário do Robot Framework, o formato de arquivo de texto simples 
é recomendado. A Figura 4 descreve um exemplo de um arquivo de dados de 
teste de texto simples. Os arquivos de dados de teste de texto simples devem 
ter uma extensão de arquivo .txt ou .robot (ROBOT FRAMEWORK, 2019).
A estrutura do script é simples e pode ser dividida em quatro seções. Veja 
a seguir.
  Settings: aqui, você configura as bibliotecas que serão utilizadas, os 
caminhos para arquivos auxiliares (page objects, por exemplo), os 
contextos e os hooks.
  Variables: é a lista das variáveis a serem usadas (de preferência com 
descrição) e a definição dos valores de algumas dessas variáveis.
  Test cases: essaé a seção mais importante, pois sem ela o seu teste 
não roda. É aqui que ficam os cenários/casos de teste, com ou sem 
implementação.
  Keywords: aqui, você pode definir palavras-chave ou implementar os 
cenários de teste descritos anteriormente.
7Testes de interface por robô
Todas as seções que você acabou de ver são opcionais e dependem de 
como o seu código foi escrito, exceto a test cases. A utilização dessas seções 
é importante para a melhor organização do código. 
Os rótulos a seguir não são obrigatórios, mas também ajudam na organização.
  [DOCUMENTATION]: essa palavra-chave precede a descrição da 
funcionalidade ou do cenário de teste. Fique atento: se a documentação 
é feita na seção settings, ela não deve estar entre colchetes. Estes só são 
usados dentro dos test cases.
  [TAGS]: esse é um rótulo mais simples para o cenário, caso você queira ou 
precise rodar somente um ou poucos casos. É possível fazer isso chamando 
pelo título dos cenários na linha de comando, mas, como geralmente eles 
são grandes, no geral as tags acabam sendo a melhor opção.
O Python é uma linguagem indentada, ou seja, blocos de comando são sepa-
rados por espaços ou tabulações, formando uma indentação visual obrigatória. 
Não existem símbolos de “abre” e “fecha”; o Robot herda essa formatação.
As variáveis no Robot são representadas por ${variavel}. O Robot tem a peculiaridade 
de ignorar um espaço entre palavras. Assim, ${nome_da_variavel} é igual a ${nome 
da variavel}. Elas também são case insensitive. As divisões dos argumentos são feitas 
por, no mínimo, dois espaços. Por exemplo:
comando (dois espaços) argumento1 (dois espaços) argumento 2…
Repare que o espaço no “argumento 2” é ignorado. O sinal de atribuição (=) também 
é opcional. Valores podem ser atribuídos das seguintes formas:
${valor} valor
${valor} = valor
Testes de interface por robô8
Palavras-chave
Testes orientados por palavras-chave ou testes orientados por tabela são 
amplamente aplicados a automações independentes de aplicativos. O testador 
precisa desenvolver tabelas de dados com palavras-chave, independente-
mente da estrutura de automação de teste ou de qualquer outra ferramenta 
usada para executá-la. Em seguida, é necessário codifi car o script de teste, 
que “direcionará” o aplicativo testado e os dados. As tabelas em um teste 
orientado por palavra-chave contêm as informações sobre a funcionalidade 
do aplicativo testado e as instruções passo a passo para cada teste. No geral, 
pode-se falar de:
  palavras-chave de nível superior, usadas para testar um aspecto es-
pecífico do sistema;
  palavras-chave de nível inferior, utilizadas para manter os casos 
de teste mínimos e concisos (o teste de funcionalidade necessário é 
separado em várias palavras-chave de nível inferior);
  palavras-chave técnicas, implementadas no teste para acessar real-
mente o sistema e executar os testes.
O framework inicia a execução com a análise dos arquivos de dados de teste. 
Em seguida, ele usa palavras-chave definidas nos arquivos de dados de teste 
e começa a interagir com o sistema de destino. As bibliotecas se comunicam 
diretamente com o sistema, mas outras ferramentas de teste também podem 
ser utilizadas como drivers (ROBOT FRAMEWORK, 2019).
Como você pode ver na Figura 5, as palavras-chave atuam como coman-
dos para o framework saber o que deve ser executado no sistema de destino. 
É possível utilizar palavras-chave predefinidas encontradas em bibliotecas 
existentes; além disso, novas palavras-chave podem ser definidas para novas 
bibliotecas.
9Testes de interface por robô
Figura 5. Arquivo de dados de teste com palavras-chave.
Fonte: Robot Framework (2019, documento on-line).
Seções diferentes (tabelas de dados de teste) de um arquivo de dados de 
teste são separadas por uma linha de texto começando e terminando com um 
ou mais caracteres de asterisco (*). Além disso, as seções devem ser separadas 
por uma quebra de linha, para manter os dados legíveis. Variáveis globais 
são inicializadas na seção Variáveis. Uma variável começa com um sinal de 
dólar ($) e o nome pode ser qualquer coisa, desde que descreva a finalidade 
da variável e esteja cercado por um par de chaves ({}). Ao definir palavras-
-chave, a primeira linha de cabeçalho deve ser deixada sem identificação. 
Testes de interface por robô10
Cada palavra deve começar com uma letra maiúscula e ser separada por um 
espaço. Ao se aprofundar na definição da palavra-chave, o recuo deve ter pelo 
menos dois caracteres de espaço.
Na Figura 5, há quatro caracteres de espaço no recuo. Recomenda-se 
manter a largura do recuo consistente em todos os arquivos de dados de teste 
em um conjunto de testes. Especialmente no formato de texto simples, o uso 
de caracteres de espaço é recomendado em vez de um caractere tabular. Além 
disso, ao se referir a uma variável entre palavras-chave, pelo menos dois 
caracteres de espaço devem ser usados antes da variável para o analisador do 
Robot Framework separar as variáveis das palavras-chave usuais.
Aplicação do teste com Selenium
Um processo de automação coerente deve englobar atividades prévias ao 
desenvolvimento de scripts. Essas atividades incluem, por exemplo, a defi ni-
ção da estratégia de automação e a análise dos benefícios e da viabilidade do 
processo para a aplicação ou o sistema em teste.
Nem todos os testes manuais devem ser automatizados. Como um script 
automatizado requer mais análise, mais design, mais engenharia e mais manu-
tenção do que um script manual, você deve calcular o custo de criá-lo. Além 
disso, assim que criar o script automatizado, você tem de mantê-lo para sempre, 
e isso também deve ser considerado. Quando o sistema a ser testado muda, 
geralmente os scripts automatizados precisam ser alterados simultaneamente.
A análise prévia à automatização deve levar em conta os pontos listados 
a seguir.
  Complexidade da aplicação: é necessário investigar a complexidade 
da aplicação a ser automatizada e a sua integração com a ferramenta 
de automação. Aplicações complexas podem exigir elevado esforço 
na codificação dos scripts de automação, ou mesmo ser incompatíveis 
com determinadas ferramentas de automação, o que pode inviabilizar 
a iniciativa.
  Estabilidade da aplicação: caso a aplicação não esteja suficientemente 
madura (sobretudo no início do seu ciclo de vida) e seja previsível que 
venha a sofrer constantes alterações, a automação é dificultada pelo 
grande esforço de manutenção dos scripts e pode se revelar pouco 
compensadora.
11Testes de interface por robô
  Ciclo de vida da aplicação: caso o ciclo de vida da aplicação em questão 
seja curto — por exemplo, um sistema desenvolvido para uma situação 
específica que terá seu uso descontinuado em breve —, é improvável 
que a automação seja viável.
Inevitavelmente, você vai identificar novas maneiras pelas quais um script 
automatizado pode falhar: simplesmente obter um valor de retorno nunca visto 
antes fará com que a automação falhe, por exemplo. Quando isso acontecer, 
você vai ter de alterar, testar e implantar novamente o script. Esses problemas 
geralmente não ocorrem com testes manuais.
Um caso de negócio precisa ser feito antes e enquanto você automatiza 
os seus testes. Você deve analisar se o custo total da automação do teste será 
retornado, podendo ser executado N vezes nos próximos M meses. Muitas 
vezes, a resposta obtida por meio dessa análise é que a automatização não 
vale a pena. Dessa forma, alguns testes permanecerão manuais porque não 
há retorno positivo sobre o investimento (Return On Investment — ROI) para 
automatizá-los.
Alguns testes manuais simplesmente não podem ser automatizados porque o pro-
cesso de pensamento do testador manual é essencial para o sucesso do teste. Testes 
exploratórios, ataques de falhas e alguns outros tipos de testes manuais ainda são 
necessários para o sucesso de um esforço de teste.
Uma vez que uma iniciativa de automação seja considerada viável para 
dadosistema, deve-se inicialmente realizar uma análise dos testes candidatos 
à automação. Essa análise permite identificar quais são os testes que, uma 
vez automatizados, gerarão maior retorno em relação ao esforço requerido 
para a sua automação.
Existem testes cuja automatização é mais aconselhável. A seguir, veja 
alguns exemplos.
Testes de interface por robô12
  Testes de carga e desempenho: testes automáticos são um pré-requisito 
para esse tipo de teste. É impraticável economicamente utilizar cem ou 
mais usuários, durante um teste, para acessar um sistema simultanea-
mente a fim de avaliar a sua qualidade sob tais condições.
  Testes de regressão: representam uma das melhores aplicações da au-
tomação de testes. Testes de regressão usualmente custam muito tempo 
para serem executados manualmente e são muito suscetíveis a erro hu-
mano, devido ao seu nível de repetitividade. Ao automatizar, reduz-se 
drasticamente a possibilidade de o sistema ser produzido com a inserção 
de um novo defeito em uma funcionalidade antiga. Além disso, o ganho 
em tempo de execução dos testes geralmente justifica a sua utilização.
  Tarefas repetitivas: nesses casos, a grande vantagem do teste automá-
tico se deve à redução de erros. Testes manuais repetitivos normalmente 
exigem um grande nível de concentração do testador, que não deve se 
distrair, apesar do cansaço psicológico da repetição. Assim, justifica-
-se a automação nos casos em que se verifica que os testes têm obtido 
resultados não verdadeiros devido a falhas humanas.
  Smoke tests: são testes básicos aplicados às principais funcionalidades 
do sistema. Esse tipo de teste visa a identificar defeitos nas funciona-
lidades com o intuito de avaliar se a versão liberada pode continuar 
sendo testada pela equipe de testes.
  Testes de unidade: com a existência de tantas ferramentas gratuitas de 
testes unitários para quase todas as linguagens, não utilizá-las é con-
traprodutivo. O ganho em tempo ao utilizar essas ferramentas justifica 
a sua utilização na maioria dos casos.
  Cálculos matemáticos: o objetivo desse tipo de texto é evitar erros 
humanos.
  Funcionalidades críticas: como seres humanos são influenciados 
pelo seu humor ao executarem uma tarefa, funcionalidades críticas 
não deveriam depender de um testador, que pode esquecer-se de testar 
algo importante.
  Preparação de pré-condições: ferramentas de automação de testes 
podem e devem ser usadas para preparar ambientes de teste, como 
condições iniciais ou entradas que serão utilizadas nos testes. É claro 
que esse jamais será o primeiro passo a ser dado quando se pretende 
automatizar um software; porém, uma vez que se possua a ferramenta, 
deve-se utilizá-la de modo a maximizar a produtividade.
13Testes de interface por robô
Por outro lado, a automação não é recomendada para os casos listados a 
seguir.
  Funcionalidades novas: essas funcionalidades têm uma grande pro-
babilidade de mudanças, então o ideal seria criar o teste quando se 
alcança certa estabilidade.
  Funcionalidades pouco usadas: haverá um custo e um esforço des-
necessários, já que os testes serão pouco aplicados em decorrência da 
pouca utilização da funcionalidade.
  Funcionalidades que exigem inspeção visual: não existe uma maneira 
de avaliar a interface de um sistema e a sua usabilidade. Para isso, é 
necessária a visão de um testador.
  Protótipos: o protótipo é utilizado momentaneamente no início de um 
projeto de software, para ser exibido para clientes ou para a própria 
organização. Por isso, não há a necessidade de automatizar testes em 
um protótipo, já que ele ainda não é o software propriamente dito.
A automação de testes de software não possui competências isoladas. Para 
o sucesso e o bom uso da automação de testes, deve haver testabilidade no 
software. A testabilidade examina as diferentes probabilidades e características 
comportamentais que levam o código a falhar se alguma coisa estiver incorreta. 
Assim, a testabilidade está alinhada e engajada com a qualidade da aplicação.
Os níveis de testabilidade de uma aplicação podem ser definidos e enten-
didos conforme a apresentação de falhas durante a execução de testes. Um 
programa tem alta testabilidade se ele tende a expor as suas falhas durante os 
testes com entradas que geram defeitos. Um programa tem baixa testabilidade 
se ele tende a ocultar as falhas detectadas durante os testes, produzindo saídas 
corretas para entradas que geram defeitos.
Seja por execuções manuais ou execuções automatizadas de testes, é impor-
tante e indispensável ter requisitos bem documentados, detalhados, objetivos 
e alinhados com o que se espera do software enquanto produto final. É com 
esses requisitos e documentos que o testador ou automatizador de testes vai 
desenvolver os testes manuais e os scripts de testes automatizados.
Tanto em aplicações já desenvolvidas quanto em novas a serem criadas, 
algumas alterações serão pertinentes e necessárias para que se tenha testabili-
dade. Normalmente, é preciso realizar modificações na aplicação para torná-la 
mais fácil de ser testada. Essas modificações têm o objetivo de incorporar um 
conjunto de mecanismos que facilitam a observação e o controle do estado 
dos componentes internos da aplicação.
Testes de interface por robô14
GUNDECHA, U. Selenium testing tools cookbook: over 90 recipes to build, maintain, and 
improve test automation with selenium webdriver. Birminghan: Packt, 2012.
KOVALENKO, D. Selenium design patterns and best practices. Birmingham: Packt, 2014.
MESZAROS, G. xUnit test patterns: refactoring test code. Upper Saddle River: Addison-
-Wesley, 2007.
ROBOT FRAMEWORK. [Site]. [2019]. Disponível em: http://robotframework.
org/#introduction. Acesso em: 24 jun. 2019.
ROBOT FRAMEWORK FOUNDATION. Robot framework user guide: version 3.1.2. c2016. 
Disponível em: https://robotframework.org/robotframework/latest/RobotFrameworkU-
serGuide.html. Acesso em: 24 jun. 2019.
SELENIUMHQ. Selenium webdriver. 2013. Disponível em: http://docs.seleniumhq.org/
docs/03_webdriver.jsp. Acesso em: 24 jun. 2019.
ZHAN, Z. Selenium webdriver recipes in C#. 2nd ed. New York: Apress Media, 2015.
Leituras recomendadas
A4Q. Alliance for qualification. 2018. Disponível em: https://cdn.website-editor.net/0
fa31c5707954e47832ceaaddbdfde76/files/uploaded/A4Q_SeleniumTesterFounda-
tion_Syllabus.pdf. Acesso em: 24 jun. 2019.
PRASAD, R. Learning selenium testing tools. 3rd ed. Birmingham: Packt, 2015.
PUGH, K. Lean-agile acceptance test-driven development: better software through colla-
boration. Upper Saddle River: Addison-Wesley, 2011.
SELENIUM2LIBRARY. [2019]. Disponível em: https://rtomac.github.io/robotframework-
-selenium2library/doc/Selenium2Library.html. Acesso em: 24 jun. 2019.
15Testes de interface por robô
Dica do professor
Uma classe geralmente usada para a automatização de testes é a classe Java.awt.Robot. Ela é usada 
para assumir o controle do mouse e do teclado. Uma vez que você obtém o controle, pode fazer 
qualquer tipo de operação relacionada a esses dispositivos por meio do código Java.
Na Dica do Professor você vai saber o que é Java Robot, qual o processo de instalação e como 
pode trabalhar com a classe de robô no webdriver de Selenium. Também aprenderá as vantagens e 
desvantagens da classe e da estrutura do robô Java, além dos métodos da classe do robô em 
detalhes.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/17edab55c21da774b4916466ed825d06
Exercícios
1) Selenium IDE é uma ferramenta para a construção de scripts de teste por meio de um plugin 
para o navegador Firefox, que fornece uma interface amigável para o desenvolvimento de 
testes automatizados. O Selenium IDE usa abordagem record-and-playback.
O que é a abordagem record-and-playback?
A) Uma função em uma biblioteca de software.
B) A interface na qual os testes do Seleniumsão escritos.
C) A representação das camadas, componentes e interfaces de uma arquitetura de automação 
de testes.
D) Uma abordagem de automação de testes que permite gravar, salvar e reproduzir scripts de 
teste.
E) Uma fonte para determinar o resultado esperado de um caso de teste.
2) O Robot Framework utiliza uma sintaxe tabular, pois se baseia em arquivos de configuração 
que seguem uma formatação específica. A estrutura do script pode ser dividida em seções. 
Qual dessas seções necessita, obrigatoriamente, constar no seu arquivo de automatização? 
A) Settings.
B) Variables.
C) Test cases.
D) Keywords.
E) Documentation.
Selenium é um conjunto de ferramentas usadas para automatizar testes por meio de um 
conjunto de funções que permitem a localização de elementos de interface do usuário e a 
comparação entre os resultados previstos para o teste e o comportamento real da aplicação. 
Cada ferramenta tem uma abordagem diferente no suporte ao teste de automação baseado 
na web.
3) 
Para qual das ferramentas do Selenium a sua aplicação está correta?
A) Selenium IDE (Integrated Development Environment) é uma API (Application Programming 
Interface) orientada a objetos; disponível para as linguagens de programação Java, C#, Ruby, 
Phyton e Javascript.
B) Selenium RC (Remote Control) é um plugin do Firefox. É a estrutura mais simples da Suíte 
Selenium e permite gravar e reproduzir scripts.
C) Selenium WebDriver é uma estrutura de automação de navegador que aceita comandos e os 
envia para um navegador. Ele é implementado por meio de um driver específico do 
navegador.
D) Selenium Grid usa uma abordagem record-and-playback, capturando as ações executadas pelo 
testador em um script que permite reproduzir o caso de teste posteriormente.
E) Selenium WebDriver é uma ferramenta usada em conjunto com o Selenium RC para executar 
testes em diferentes máquinas e navegadores em paralelo.
4) Na seção VARIABLES são listadas as variáveis a serem usadas (de preferência com 
descrição) e a definição dos valores de algumas dessas variáveis.
Qual é a forma correta de declaração das variáveis nos dados de teste do Robot?
A) $(nome_da_variavel).
B) ${nome_da_variavel}.
C) &{nome_da_variavel}.
D) @(nome_da_variavel).
E) @{nome_da_variavel}.
5) Alguns testes manuais simplesmente não podem ser automatizados porque o processo de 
pensamento do testador manual é essencial para o sucesso do teste. Testes exploratórios, 
ataques de falhas e alguns outros tipos de testes manuais ainda são necessários para o 
sucesso de um esforço de teste. 
Qual das alternativas abaixo é correta em relação à indicação para automação de testes?
A) É aconselhável a automação de testes de carga e desempenho.
B) Não é recomendada a automatização de testes com tarefas repetitivas.
C) Testes automatizados são imprescindíveis para as funcionalidades novas do sistema.
D) Funcionalidades pouco usadas precisam ser automatizadas, já que nem sempre são acessadas 
por outros testes.
E) Não é aconselhado o processo de automatização para testes de regressão, já que os testes 
manuais são executados de maneira mais rápida.
Na prática
O Robot é um framework para automação de testes de aceitação (acceptance test-driven 
development). É open source e independente de sistema operacional. Nativamente implementado 
para Python e Java, mas também roda em Jython (JVM) e IronPython (.NET). Sua sintaxe é tabular, 
como o Python, e usa uma abordagem de palavras-chave (keyword driven). Essa abordagem permite 
a escrita de cenários com linguagem totalmente natural.
Confira, Na Prática, como fazer uma busca simples no Google utilizando testes automatizados com 
Robot Framework.
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/541c7f5c-7eae-45a7-b3f9-ef1101d08b4c/0fb481a8-ae34-4299-a187-b54cc4e067cb.jpg
Saiba +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
Rebot Framework user guide
Leia a documentação oficial do Robot Framework, que traz um guia do usuário com descrição bem 
completa de todas as funcionalidades desta ferramenta.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Rebot Framework demo
Acesse um aplicativo de demonstração que se trata de uma calculadora muito simples 
implementada com o Python (calculator.py). Ele contém apenas lógica de negócios e nenhuma 
interface de usuário.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Automação de testes de aplicações móveis sem necessidade de 
programação
Leia o artigo no qual é demonstrado o desenvolvimento de um framework de monitorização e teste 
de aplicações Android com base em especificações, capaz de testar aplicações com suporte 
multiplataforma sem necessidade de alterar ou conhecer o seu código fonte.
http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html
https://github.com/robotframework/RobotDemo
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Caso de demonstração de uma framework para automatização 
do teste de APIs de aplicações SaaS
Leia a dissertação que está enquadrada num contexto real em que é realizada a seleção de 
ferramentas de teste de APIs, para posteriormente escolher a mais adequada e utilizá-la na 
automatização de um conjunto de casos de teste inserido na cloud.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Automação de testes utilizando ferramentas open source em 
ambiente ágil de desenvolvimento com SCRUM
Leia o artigo no qual os autores compartilham experiências sobre a automação do processo de 
teste de um sistema web desenvolvido utilizando SCRUM.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Applying test automation in usability testing
Leia a tese que estuda a aplicabilidade da automação de testes no contexto de testes de 
usabilidade.
https://repositorio-aberto.up.pt/handle/10216/85797
https://repositorium.sdum.uminho.pt/handle/1822/39595
https://www.academia.edu/10000636/Automa%C3%A7%C3%A3o_de_Testes_utilizando_ferramentas_Open_Source_em_Ambiente_%C3%81gil_de_Desenvolvimento_com_SCRUM
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://www.theseus.fi/bitstream/handle/10024/169365/Automation_in_usabilitytesting_Virtanen_Final_publ.pdf?sequence=2

Continue navegando

Outros materiais