Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Atualmente, cada vez mais empresas buscam a diminuição dos custos nas atividades de
produção e mais agilidade na fase de teste para trazer o produto para o mercado de maneira
rápida e com qualidade (ler Nota DevMan 1). Nesse cenário, as metodologias ágeis de
desenvolvimento ganham evidência, pois se destacam dos processos de desenvolvimento
tradicionais devido, principalmente, ao fato de darem prioridade ao desenvolvimento de
funcionalidades através de código executável ao invés da produção de extensa
documentação, e ainda, respostas rápidas às mudanças e colaboração com o cliente ao invés
de seguir planos rígidos e negociações contratuais.
ambiente para o qual foi projetado. O seu objetivo é revelar falhas em um produto, para que
as causas dessas falhas sejam identificadas e possam ser corrigidas pela equipe de
desenvolvimento antes da entrega final.
Por conta dessa característica das atividades de teste, dizemos que sua natureza é
“destrutiva”, e não “construtiva”, pois visa ao aumento da confiança de um produto através da
exposição de seus problemas, porém antes de sua entrega ao usuário final.
O conceito de teste de software pode ser compreendido através de uma visão intuitiva ou
mesmo de uma maneira formal. Existem atualmente várias definições para esse conceito. De
uma forma simples, testar um software significa verificar através de uma execução controlada
se o seu comportamento corre de acordo com o especificado. O objetivo principal desta tarefa
é revelar o número máximo de falhas dispondo do mínimo de esforço, ou seja, mostrar aos que
desenvolvem se os resultados estão ou não de acordo com os padrões estabelecidos.
http://www.devmedia.com.br/websys.5/webreader_print.asp?cat=48&artigo=4133&revista=impressao_43#a-4133 2/13
10/4/2014 DevMedia - Versão para impressão
Figura 1. TestLink
A ferramenta Selenium RC e IDE é uma ferramenta para automação de testes funcionais caixa-
preta que utiliza a abordagem rec-and-play e oferece suporte a testes em aplicações web. O
Selenium IDE é um plugin do Mozilla Firefox, com ele é possível gravar ações do usuário no
browser criando scripts de teste para edição e execução posteriormente. As gravações se
tornam scripts de testes em diversas linguagens como: Java, Ruby, C#, Pearl, PHP, HTML e
Python. Pode ser executado em vários navegadores, entre eles: Firefox, IE e Chrome.
O Mantis (ver Figura 2) é uma ferramenta OpenSource para registro e controle de defeitos.
Ele possui uma interface amigável onde o testador registra os defeitos, o desenvolvedor
recebe a notificação por e-mail e atualiza a situação do defeito que poderá ser: confirmed
(defeito confirmado), acknowledge (sob investigação), feedback (precisa de esclarecimento) e
Resolved (defeito resolvido). O testador ao receber a mudança de situação do defeito poderá
responder reabrindo o defeito ou validando e fechando o defeito. Pela ferramenta é possível
visualizar a lista de defeitos e exportar para os formatos excel e word.
Figura 2. Mantis
Como principal foco deste artigo, serão mostrados o processo de teste usado para a
metodologia ágil scrum, tutorial de como a integração das ferramentas são feitas e os
resultados da experiência no uso de integração de ferramentas de automação de testes
funcionais em um ambiente de desenvolvimento conduzido pelo SCRUM (ler Nota DevMan 2).
No decorrer do artigo mostraremos as notáveis vantagens e os problemas de se adotar tal
prática de qualidade no dia-a-dia de trabalho.
Nota Devman 2: Scrum: Em 1999, Ken Schwaber e Mike Beedle escreveram o primeiro livro
sobre Scrum: Agile Software Development with Scrum. Os autores definem Scrum não como
uma metodologia, mas como um framework conceitual, um conjunto de ideias, técnicas e
práticas que levam ao estabelecimento de uma atitude mental de trabalho. As equipes Scrum
são formadas como times, e devem assumir um comprometimento com o trabalho que alcança
http://www.devmedia.com.br/websys.5/webreader_print.asp?cat=48&artigo=4133&revista=impressao_43#a-4133 3/13
10/4/2014 DevMedia - Versão para impressão
• Antes de cada Sprint a equipe realiza uma reunião chamada de Sprint Planning onde as
funcionalidades e as tarefas a serem feitas são definidas. Todos os dias a equipe se reuni
durante no máximo quinze minutos para informar suas atividades e os impedimentos (Daily
Meeting). O responsável da equipe pela manutenção desse processo, reuniões e resolução de
impedimentos é o Scrum Master.
http://www.devmedia.com.br/websys.5/webreader_print.asp?cat=48&artigo=4133&revista=impressao_43#a-4133 4/13
10/4/2014 DevMedia - Versão para impressão
Processo de Teste
Como no Scrum o desenvolvimento e o teste precisam ser ágeis, a equipe de teste do Projeto
era composta por um líder de teste e dois testadores sendo um dedicado a automação dos
testes no Selenium.
A equipe decidiu automatizar os casos de teste sabendo que isso minimizaria custos,
aumentaria a produtividade e garantiria sua qualidade, reduzindo prin¬cipalmente, o tempo de
teste. Além disso, a automação iria ajudar a cobrir as funcionalidades verificadas
adequadamente.
As estórias de usuário eram feitas com o Product Owner (PO) e detalhadas em cenários para
a melhor compreensão da funcionalidade. Através das estórias e dos cenários os casos de
testes eram escritos. Houve a uti¬lização de uma prática chamada Desenvolvimento Dirigido
por Testes de Estórias (Story-Test Driven Development). Esta prática diz que antes de
começar a desenvolver a estória, a equipe de programadores, analistas, gerentes, testadores
e clientes devem colaborar para definir os critérios de aceitação e cenários. Critérios esses
que foram utilizados pela equipe de teste como base para que a qualidade nos testes e nas
funcionalidades testadas fosse alcançada. Abaixo nós temos um exemplo de cenário definido
no contexto do projeto:
O relatório sumarizado com todos os defeitos encontrados era gerado e enviado para a
equipe. Este processo está representado na Figura 4. Contudo, conforme a suite de teste
crescia com a adição de mais teste, chegando até a 210 casos de teste, executá-los na
regressão ficava cada vez mais trabalhoso e algumas pendências de execução acabavam
http://www.devmedia.com.br/websys.5/webreader_print.asp?cat=48&artigo=4133&revista=impressao_43#a-4133 5/13
10/4/2014 DevMedia - Versão para impressão
para serem terminadas no próximo Sprint, o que queria dizer débito técnico para a equipe de
teste.
Nota Devman 3: Conceitos de teste: A atividade de teste é composta por alguns elementos
essenciais que auxiliam na formalização desta atividade. Esses elementos são os seguintes:
• Caso de Teste. descreve uma condição particular a ser testada e é composto por valores de
entrada, restrições para a sua execução e um resultado ou comportamento esperado.
• Procedimento de Teste. é uma descrição dos passos necessários para executar um caso (ou
um grupo de casos) de teste.
• Critério de Teste: serve para selecionar e avaliar casos de teste de forma a aumentar as
possibilidades de provocar falhas ou, quando isso não ocorre, estabelecer um nível elevado
de confiança na correção do produto.
http://www.devmedia.com.br/websys.5/webreader_print.asp?cat=48&artigo=4133&revista=impressao_43#a-4133 6/13
10/4/2014 DevMedia - Versão para impressão
do banco de dados. Isto por que o Testlink não está disponível para enviar dados para o
bugtracker e nem receber dados do bugtracker.
Com a configuração para a integração feita, o processo sob o ponto de vista do usuário
ocorre desta maneira:
1. Durante a execução de um teste, ele falha;
2. O Usuário salva resultado da execução no testlink;
3. O Usuário registra esse defeito na ferramenta de bugtracker;
4. No Testlink, na tabela que exibe os dados dos resultados de execução, um ícone para
acessar recurso do bugtracker estará disponível;
5. O Usuário clica no link que abre uma página da Web usada para a comunicação com o
bugtracker em questão;
6. O Usuário insere o ID do defeito registrado;
7. Depois que o usuário salva a execução, o Testlink irá mostrar os dados retirados do banco
de dados do bugtracker.
Para configurar o Testlink com o mantis, é necessário que a versão do Testlink instalado seja
igual ou maior que 1.7.0 e o Mantis deve estar instalado no mesmo webserver.
O primeiro passo para configurar o Mantis para essa integração é habilitá-lo para receber
login anônimo. Para isso, basta abrir o seu arquivo de configuração config_inc.php e alterá-lo
desta forma mostrada abaixo:
http://www.devmedia.com.br/websys.5/webreader_print.asp?cat=48&artigo=4133&revista=impressao_43#a-4133 7/13
10/4/2014 DevMedia - Versão para impressão
$g_interface_bugs=MANTIS;
Ao iniciar o Testlink e indo para a página de execução, o link para inserir o defeito registrado
no Mantis estará aparecendo como indica a Figura 5.
Essa integração permite para a equipe de teste identificar e rastrear quais defeitos foram
gerados durante a execução dos casos de teste. Isto fornece métricas para a equipe de teste
identificar quais casos de teste encontraram mais defeitos e os defeitos não associados a
casos de teste podem alimentar a suite de teste com novos cenários a serem validados.
http://www.devmedia.com.br/websys.5/webreader_print.asp?cat=48&artigo=4133&revista=impressao_43#a-4133 8/13
10/4/2014 DevMedia - Versão para impressão
$tlCfg->api->enabled
$tlCfg->exec_cfg->enable_test_automation
$tlCfg->api->enabled = TRUE;
$tlCfg->exec_cfg->enable_test_automation = ENABLED
Para a integração acontecer uma chave de acesso ao Testlink deve ser gerada.
Isso é feito indo na página de Settings na seção API Interface clicando no botão Generate a
new Key (Figura 7). Essa chave é criada por usuário e permitirá ao Testlink identificar quem
está tentando acessar os serviços XML-RPC.
package selenium.integracao;
Selenium selenium;
SeleniumServer server;
selenium.start();
@Test
try {
selenium.open("/");
selenium.open("/login.php");
selenium.click("name=login_submit");
selenium.waitForPageToLoad("30000");
result = TestLinkAPIResults.TEST_PASSED;
http://www.devmedia.com.br/websys.5/webreader_print.asp?cat=48&artigo=4133&revista=impressao_43#a-4133 10/13
10/4/2014 DevMedia - Versão para impressão
} catch (Exception e) {
result = TestLinkAPIResults.TEST_FAILED;
note = e.getMessage();
e.printStackTrace();
} finally {
ResultadoExecucao.reportTestCaseResult
selenium.stop();
}
Para executar no eclipse basta clicar em cima da classe de teste com o botão direito do
mouse e selecionar Run->Junit Test. O resultado será automaticamente cadastrado no
Testlink.
Com isso, é possível economizar tempo em execução facilitando a geração de relatório de
teste.
Pontos positivos
A automação integrada trouxe benefícios para a equipe de teste e para a qualidade do
projeto alcançando a meta de obter um processo de teste efetivo e com mais agilidade.
Quanto à equipe foi observado que:
• Aumentou a segurança da equipe quanto ao teste automático, já que foram feitos testes mais
elaborados e complexos no Selenium;
• Não houve sobrecarga de execução de casos de teste, pois grande parte estava
automatizada e integrada;
• O ciclo de teste mostrado na Figura 4 era completamente executado sem deixar débito
técnico para o próximo sprint, levando em consideração a execução da etapa dos testes de
regressão e dos testes das novas funcionalidades;
• Os testes de regressão foram responsáveis por identificar a grande parte dos defeitos
encontrados no projeto, identificando quais funcionalidades eram afetadas pelas alterações de
código;
• Métricas para melhoria da suíte de testes puderam ser geradas como, por exemplo, a
identificação de casos de teste que não estavam associados ao Mantis;
• Foi possível a montagem de uma Suíte de Testes onde todos os scripts automáticos eram
executados sequencialmente. Isto economizou muito tempo;
• A automação economizava tempo. então testes manuais exploratórios contribuíram para que
defeitos de funcionalidades, performance e usabilidade fos¬sem encontrados;
• Por ser uma aplicação WEB, era satisfatório que o Sistema executasse perfeitamente em
http://www.devmedia.com.br/websys.5/webreader_print.asp?cat=48&artigo=4133&revista=impressao_43#a-4133 11/13
10/4/2014 DevMedia - Versão para impressão
pelo menos dois navegadores. Os mais utilizados pelos clientes eram o Internet Explorer 8 e o
Mozilla Firefox. Testes de regressão encontraram inúmeros erros de cross-browser. Estes
eram identificados rapidamente.
Dificuldades
Durante a adequação do processo de teste, dificuldades também foram observadas pela
equipe dentre as quais podemos citar:
• A metodologia Scrum possibilita a mudança de requisitos no meio do processo de
desenvolvimento. Assim, houve scripts automáticos que foram totalmente perdidos por terem
ficado obsoletos após a mudança de algum requisito do sistema;
• A aplicação Web em desenvolvimento apresentou instabilidades e mudanças no framework,
então a cada mudança das propriedades de algum componente o script que testava a página
se tornava inválido, pois na abordagem rec-and-play o Selenium recupera o nome e
propriedades do objeto seleciona¬do para gravar o script. Se o componente mudou,
naturalmente o script automático não serve mais;
• Quando a interface do sistema não está estabilizada e passa por mudanças de
componentes, muito tempo se leva na atualização dos scripts de teste automáticos
consumindo mais recursos de tempo e pessoas, o que nos levou a conclusão de que apenas
integraríamos os casos de teste de funcionalidades estáveis que não passariam mais por
mudanças em sua interface.
Conclusão
As metodologias ágeis de desenvolvimento trouxeram não só mudanças de paradigma para
os desenvolvedores de software. Os testadores também tiveram que se adaptar às mudanças,
pois as atividades de teste passaram a buscar meios de não só gerar documentos de
execução de testes como também torná-los artefatos dinâmicos que respondam às solicitações
de mudança no decorrer do projeto.
LUANA LOBÃO
Atualmente trabalha com VV&T e desenvolvimento em projetos de jogos para mobile, nas
plataformas windows phone, ios e android. Está aprendendo sobre desenvolvimento e teste de caixa
branca na Plataforma Unity 3D. Possui experiência com gerenciamento, controle financeiro e técnico
de Projetos de P&D. Já trabalhou com automação de teste para as plataformas Desktop (Java), Web
http://www.devmedia.com.br/websys.5/webreader_print.asp?cat=48&artigo=4133&revista=impressao_43#a-4133 12/13
10/4/2014 DevMedia - Versão para impressão
(Java, C++), Data Warehouse (Cognos da IBM) e mobile (Symbian, Java ME e Windows Phone).
Possui certificação internacional em teste de software pelo International Software Testing
Qualifications Board (ISTQB / CTFL - Certified Tester Foundation Level) e certificado de Scrum
Developer (CSD) pela Scrum Alliance.
Eliane Collins
Mestranda de Engenharia elétrica pela Universidade Federal do Amazonas, MBA em Gerenciamento
de Projetos e Bacharel em Engenharia de Computação pela Universidade Estadual do Amazonas, 7
anos atuando no desenvolvimento de Software, desses 4 anos em Teste de Software. Trabalha
atualmente no Instituto Nokia de Tecnologia - INdT, como Pesquisadora, onde lidera uma equipe de
teste de software e desenvolve sistemas Web.
http://www.devmedia.com.br/websys.5/webreader_print.asp?cat=48&artigo=4133&revista=impressao_43#a-4133 13/13