escola superior aberta do brasil – esab pós-graduação em ...
escola superior aberta do brasil – esab pós-graduação em ...
escola superior aberta do brasil – esab pós-graduação em ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
ESCOLA SUPERIOR ABERTA DO BRASIL <strong>–</strong> ESAB<br />
PÓS-GRADUAÇÃO EM ENGENHARIA DE SISTEMAS<br />
PERON REZENDE DE SOUSA<br />
AUTOMAÇÃO DE TESTES EM SOFTWARES E SITES WEB<br />
VILA VELHA <strong>–</strong> ES<br />
2008
PERON REZENDE DE SOUSA<br />
AUTOMAÇÃO DE TESTES EM SOFTWARES E SITES WEB<br />
Monografia apresentada à ESAB <strong>–</strong> Escola<br />
Superior Aberta <strong>do</strong> Brasil, sob orientação<br />
<strong>do</strong> Dr. Jaime Roy Doxsey e da Me.<br />
Beatriz Christo Gobbi.<br />
VILA VELHA <strong>–</strong> ES<br />
2008
PERON REZENDE DE SOUSA<br />
AUTOMAÇÃO DE TESTES EM SOFTWARES E SITES WEB<br />
VILA VELHA <strong>–</strong> ES<br />
2008<br />
Aprovada <strong>em</strong> ....... de .................. de 2008
Dedico este trabalho à DEUS por me<br />
proteger <strong>em</strong> to<strong>do</strong>s os meus caminhos;<br />
À minha a<strong>do</strong>rável esposa por sua paciência,<br />
compreensão e amor;<br />
À minha mãe por me orientar e motivar<br />
desde a infância;<br />
E à minha tia por ter possibilita<strong>do</strong>, há 16<br />
anos atrás, o inicio <strong>do</strong>s meus estu<strong>do</strong>s na<br />
área da informática.
AGRADECIMENTOS<br />
À minha esposa, pela revisão ortográfica e<br />
gramatical deste trabalho.<br />
Aos meus orienta<strong>do</strong>res, Dr. Jaime Roy<br />
Doxsey e Me. Beatriz Christo Gobbi; aos<br />
colabora<strong>do</strong>res Bruno Otero, Alvaro Mendes,<br />
Cláudio Carvalho e Mario Calleri, da<br />
REDEA/RJ, e a Helio Leão, da RSI<br />
Informática.
“Somos o que repetidamente faz<strong>em</strong>os.<br />
A excelência, portanto, não é um feito, mas<br />
um hábito.”<br />
(Aristóteles)
RESUMO<br />
Este trabalho faz uma breve apresentação da disciplina de testes, citan<strong>do</strong> os tipos,<br />
comentan<strong>do</strong> o processo e o vinculo de testes com a qualidade, passan<strong>do</strong> por<br />
questões relacionadas ao ambiente, controle de versionamento e diversas questões<br />
envolven<strong>do</strong> o equilíbrio entre custos, prazos e qualidade, chegan<strong>do</strong> a um roteiro<br />
para aquisição de ferramentas destinadas a automação, que evita equívocos<br />
gera<strong>do</strong>s pela grande variedade de contratos de venda. Também apresenta os tipos<br />
e técnicas de automatização e uma grande variedade de ferramentas comerciais,<br />
livres e orientação sobre a construção de uma ferramenta própria. Evidencia a<br />
importância das ferramentas para geração automática de casos, massa e para os<br />
testes de stress. Conclui que, para obter a máxima eficiência no processo é<br />
necessário combinar as técnicas de automação; <strong>em</strong> alguns casos pode ser<br />
preferível o teste manual; e que os custos <strong>do</strong> processo automatiza<strong>do</strong> pod<strong>em</strong> estar<br />
concentra<strong>do</strong>s <strong>em</strong> fatores diversos, como a montag<strong>em</strong> e manutenção de um<br />
ambiente, e não nas ferramentas.
LISTA DE FIGURAS<br />
Figura 1 <strong>–</strong> Gestão de ambientes ..........................................................................23<br />
Figura 2 <strong>–</strong> Ambientes ...........................................................................................23<br />
Figura 3 <strong>–</strong> Baseline ..............................................................................................26<br />
Figura 4 <strong>–</strong> Possíveis níveis de maturidade previstos no modelo CMM ...............31<br />
Figura 5 <strong>–</strong> Ex<strong>em</strong>plo de script ...............................................................................34<br />
Figura 6 <strong>–</strong> Aplicação da técnica keyword-driven .................................................60<br />
Figura 7 <strong>–</strong> Estratégia de testes caixa-branca e caixa-preta .................................78<br />
Figura 8 <strong>–</strong> Visão <strong>do</strong> modelo de processo de qualidade de software <strong>em</strong> “U” ........81<br />
Figura 9 <strong>–</strong> Funcionamento de uma ferramenta de testes ....................................83
LISTA DE GRÁFICOS<br />
Gráfico 1 <strong>–</strong> Custo hipotético (<strong>em</strong> horas) para diferentes processos de teste ........36<br />
Gráfico 2 <strong>–</strong> Teste manual x teste automatiza<strong>do</strong> <strong>do</strong> módulo de Promoções ..........37<br />
Gráfico 3 <strong>–</strong> Teste manual x teste automatiza<strong>do</strong> <strong>do</strong> módulo de Atend. a Clientes ..38<br />
Gráfico 4 <strong>–</strong> Esforço dedica<strong>do</strong> à correção de defeitos ............................................41<br />
Gráfico 5 <strong>–</strong> Esforço gerencial para alcançar níveis maiores de maturidade .........42<br />
Gráfico 6 <strong>–</strong> Regra de 10 de Myers ........................................................................43<br />
Gráfico 7 <strong>–</strong> Custo de correção de defeitos ............................................................44<br />
Gráfico 8 <strong>–</strong> Risco de teste numa aplicação de TI tradicional ................................46<br />
Gráfico 9 <strong>–</strong> Risco de teste numa aplicação web ...................................................47<br />
Gráfico 10 <strong>–</strong> T<strong>em</strong>po de resposta x nº de usuários (como descobrir gargalos) ........61
LISTA DE TABELAS<br />
Tabela 1 <strong>–</strong> Métricas coletadas para o módulo de Promoções .............................36<br />
Tabela 2 <strong>–</strong> Linha ilustrativa de “Ganho” ...............................................................37<br />
Tabela 3 <strong>–</strong> Métricas coletadas para o módulo de Atendimento a Clientes ...........38<br />
Tabela 4 <strong>–</strong> Comparativo entre testes manuais e automatiza<strong>do</strong>s .........................45<br />
Tabela 5 <strong>–</strong> Distribuição <strong>do</strong> esforço <strong>em</strong> testes .......................................................48<br />
Tabela 6 <strong>–</strong> Distribuição <strong>do</strong> esforço <strong>em</strong> lega<strong>do</strong>s (implantação) .............................48<br />
Tabela 7 <strong>–</strong> Custos das atividades de uma revisão ...............................................50<br />
Tabela 8 <strong>–</strong> Teste por palavras-chave ...................................................................59<br />
Tabela 9 <strong>–</strong> Custo/esforço <strong>em</strong> projetos novos .......................................................84<br />
Tabela 10 <strong>–</strong> Custo/esforço na manutenção de sist<strong>em</strong>as ........................................85<br />
Tabela 11 <strong>–</strong> Custo/esforço na montag<strong>em</strong> <strong>em</strong> ambiente de homologação .............86<br />
Tabela 12 <strong>–</strong> Ex<strong>em</strong>plo de requerimento num quadro comparativo ..........................87<br />
Tabela 13 <strong>–</strong> Cadastro de clientes ...........................................................................89<br />
Tabela 14 <strong>–</strong> Transferência ......................................................................................89<br />
Tabela 15 <strong>–</strong> Verificação de sal<strong>do</strong> ...........................................................................89
LISTA DE QUADROS<br />
Quadro 1 <strong>–</strong> Histórico <strong>do</strong>s testes de software .........................................................16<br />
Quadro 2 <strong>–</strong> Evolução <strong>do</strong>s conceitos de qualidade .................................................16<br />
Quadro 3 <strong>–</strong> Evolução <strong>do</strong> processo de qualidade e de testes de software .............17<br />
Quadro 4 <strong>–</strong> Ex<strong>em</strong>plo de priorização das categorias de testes ...............................20<br />
Quadro 5 <strong>–</strong> Características para um software de qualidade ..................................21<br />
Quadro 6 <strong>–</strong> Normas de qualidade <strong>em</strong> desenvolvimento de software .....................30<br />
Quadro 7 <strong>–</strong> Automação x teste manual .................................................................35<br />
Quadro 8 <strong>–</strong> Alternativas na execução <strong>do</strong>s testes ..................................................46<br />
Quadro 9 <strong>–</strong> Alternativas na conferência <strong>do</strong>s testes ...............................................51<br />
Quadro 10 <strong>–</strong> Tipos de automação ...........................................................................53<br />
Quadro 11 <strong>–</strong> Ferramentas de teste/depuração para programas concorrentes ........71<br />
Quadro 12 <strong>–</strong> O que automatizar? .............................................................................82<br />
Quadro 13 <strong>–</strong> Visão Comercial ..................................................................................88<br />
Quadro 14 <strong>–</strong> Visão Acadêmica ................................................................................88<br />
Quadro 15 <strong>–</strong> Novas Tendências ..............................................................................88<br />
Quadro 16 <strong>–</strong> Ferramentas da Borland para a automação de testes de software .....90<br />
Quadro 17 <strong>–</strong> Ferramentas da IBM para a automação de testes de software ...........90<br />
Quadro 18 <strong>–</strong> Ferramentas comerciais .....................................................................91<br />
Quadro 19 <strong>–</strong> Características apresentadas pelas ferramentas de teste OO ...........92<br />
Quadro 20 <strong>–</strong> Melhores ferramentas Open Source para gestão e automação .........93
LISTA DE SIGLAS<br />
ANSI American National Standards Institute<br />
BSTQB Brazilian Software Testing Qualifications Board<br />
CAST Computer-Aided Software Testing<br />
CLI Command Line Interface<br />
CMM Capability Maturity Model<br />
CMMi Modelo integra<strong>do</strong> que poderá substituir o CMM no futuro<br />
DLL Dynamic Link Library<br />
DoD Departamento de Defesa Norte-Americano<br />
EPD Evolução <strong>do</strong> Processo de Desenvolvimento<br />
FSW Fábrica de Software<br />
FTS Fábrica de Testes<br />
GE Grava/Executa<br />
GUI Graphical User Interface<br />
HP Hewlett-Packard<br />
IEEE Institute of Electrical and Electronics Engineers<br />
ISO International Standards Organization<br />
MDS Meto<strong>do</strong>logia de Desenvolvimento de Sist<strong>em</strong>as<br />
MFC Microsoft Foundation Class Library<br />
MPI Message Passing Interface<br />
OLE Object Linking and Embedding<br />
POO Programação Orientada a Objetos<br />
OSI Open Source Initiative<br />
PF Pontos de função<br />
PQS Processo de Qualidade de Software<br />
PSM Pratical Software Measur<strong>em</strong>ent<br />
PVM Parallel Virtual Machine<br />
QA Quality Assurance<br />
QAI Quality Assurance International<br />
RAD Rapid Application Development
REDEA/RJ Representação de desenvolvimento de aplicativos <strong>do</strong> Rio de Janeiro<br />
ROI Returno of Investiment<br />
SBQS Sim<strong>pós</strong>io Brasileiro de Qualidade de Software<br />
SDLC Software Development Life Cycle<br />
SEI Software Engineering Institute<br />
SLA Service Level Agre<strong>em</strong>ent<br />
SPICE Software Process Improv<strong>em</strong>ent and Capability dEtermination<br />
SWEBOK Software Engineering Body of Knowledge<br />
TSL Test Script Language<br />
UAT User Acceptance Test<br />
UML Unified Modeling Language<br />
XML eXtensible Markup Language<br />
XP eXtr<strong>em</strong>e Programming
SUMÁRIO<br />
INTRUDUÇÃO .......................................................................................14<br />
CAPÍTULO I <strong>–</strong> CONCEITOS BÁSICOS DE TESTES .......................15<br />
1.1 HISTÓRICO ..............................................................................15<br />
1.2 ESTRATÉGIAS .........................................................................18<br />
1.3 PROGRESSIVIDADE E REGRESSIVIDADE ...........................18<br />
1.4 CATEGORIAS ..........................................................................19<br />
1.5 TIPOS .......................................................................................21<br />
1.6 AMBIENTES ............................................................................22<br />
1.7 MASSA ....................................................................................24<br />
1.8 VERSIONAMENTO ..................................................................25<br />
CAPÍTULO II <strong>–</strong> O PROCESSO DE TESTES ......................................28<br />
2.1 PADRÕES DE QUALIDADE ....................................................29<br />
CAPÍTULO III <strong>–</strong> AUTOMAÇÃO DE TESTES ......................................33<br />
3.1 CUSTOS E PRAZOS ................................................................39<br />
3.1.1 Adquirin<strong>do</strong> uma ferramenta ..................................................51<br />
3.2 TIPOS DE AUTOMAÇÃO .........................................................53<br />
3.2.1 Capture/Playback (Captura e executa) ................................56<br />
3.2.2 Scripts estrutura<strong>do</strong>s ..............................................................58<br />
3.2.3 Data-Driven (Técnica orientada a da<strong>do</strong>s) ............................58<br />
3.2.4 Keyword-Driven (Técnica orientada a palavras-chave) …..59<br />
3.2.5 Teste de estresse ...................................................................61<br />
3.3 FERRAMENTAS ......................................................................62<br />
3.3.1 Suites .......................................................................................62<br />
3.3.2 Software ..................................................................................63<br />
3.3.3 Sites web .................................................................................65
3.3.4 Estrutural .................................................................................66<br />
3.3.5 Mutação ...................................................................................67<br />
3.3.6 Orienta<strong>do</strong>s a objetos e de componentes .............................68<br />
3.3.7 Orienta<strong>do</strong>s a aspectos ..........................................................70<br />
3.3.8 Concorrentes ............................................................................70<br />
3.3.9 Open Source ...........................................................................71<br />
3.3.10 Faça você mesmo ..................................................................72<br />
CONSIDERAÇÕES FINAIS ..................................................................73<br />
REFERÊNCIAS BIBLIOGRÁFICAS .....................................................74<br />
GLOSSÁRIO...........................................................................................76<br />
ANEXOS ................................................................................................78
INTRODUÇÃO<br />
Palavras-chave: automação, testes, software.<br />
Em 2008, o merca<strong>do</strong> t<strong>em</strong> consolida<strong>do</strong> o “ideal de qualidade” seja por força da<br />
competitividade ou até pela necessidade de redução de custos. Porém, o<br />
desenvolvimento e a manutenção de aplicações corretas, confiáveis e seguras têm<br />
enfrenta<strong>do</strong> a escassez de profissionais qualifica<strong>do</strong>s <strong>em</strong> testes, de publicações na<br />
área e a falta de divulgação das ferramentas de automação.<br />
A maioria das suites de linguagens de programação não traz <strong>em</strong> seus pacotes<br />
ferramentas para automatizar os testes e o fornece<strong>do</strong>r, talvez por falha no<br />
treinamento da equipe de vendas, não costuma divulgar a existência delas aos<br />
compra<strong>do</strong>res da suite e não patrocinam a divulgação junto aos autores que<br />
escrev<strong>em</strong> sobre suas linguagens. O resulta<strong>do</strong> desse quadro é uma grande<br />
quantidade de informações dispersas <strong>em</strong> vários lugares, obrigan<strong>do</strong> o desenvolve<strong>do</strong>r<br />
a um verdadeiro “garimpo” para achar as ferramentas que possam atender as suas<br />
necessidades e não ter que “reinventar a roda”. Isso quan<strong>do</strong> o desenvolve<strong>do</strong>r já<br />
ouviu falar sobre o assunto, pois muitos n<strong>em</strong> t<strong>em</strong> conhecimento sobre a existência<br />
das ferramentas para automatizar testes.<br />
Por essas razões escolh<strong>em</strong>os este t<strong>em</strong>a. Desejamos examinar as técnicas atuais de<br />
automação de testes <strong>em</strong> software e sites web, além de fazer um levantamento das<br />
aplicações disponíveis no merca<strong>do</strong>. Quer<strong>em</strong>os conhecer as dificuldades<br />
encontradas no processo e as vantagens da automação de testes quanto a redução<br />
de custos, prazos e aumento de qualidade <strong>do</strong> produto final. Apresentar<strong>em</strong>os um<br />
breve resumo sobre a disciplina de testes, sobre todas as implicações financeiras<br />
envolvidas no processo, as principais técnicas e uma rápida referência sobre o que é<br />
ofereci<strong>do</strong> pelo merca<strong>do</strong>.<br />
Este trabalho foi elabora<strong>do</strong> com base nas meto<strong>do</strong>logias de pesquisa exploratória e<br />
bibliográfica.<br />
14
CAPÍTULO I <strong>–</strong> CONCEITOS BÁSICOS DE TESTES<br />
Abordar<strong>em</strong>os neste capitulo a disciplina de testes e sua evolução, mas s<strong>em</strong> maiores<br />
detalhes, antes de entrarmos no t<strong>em</strong>a central deste trabalho.<br />
Também apresentar<strong>em</strong>os algumas “boas práticas” que são válidas tanto para a<br />
execução manual <strong>do</strong>s testes quanto na automação e ver<strong>em</strong>os o que considerar<br />
durante o processo, para a garantia da qualidade no desenvolvimento de software e<br />
sites web.<br />
1.1 HISTÓRICO<br />
Pod<strong>em</strong>os definir os testes como uma atividade, que t<strong>em</strong> como objetivo verificar se o<br />
software construí<strong>do</strong> está de acor<strong>do</strong> com sua especificação e se satisfaz as<br />
expectativas <strong>do</strong> cliente e/ou utiliza<strong>do</strong>r <strong>do</strong> sist<strong>em</strong>a. Testes é parte integrante <strong>do</strong><br />
processo de Validação e Verificação (V & V) da Engenharia de Software (Anexo D),<br />
sen<strong>do</strong> considerada a técnica dinâmica que exercita a impl<strong>em</strong>entação, Sommerville<br />
(apud CORREIA, 2004, p.1).<br />
Para compl<strong>em</strong>entar a definição acima, vejamos o que um <strong>do</strong>s guias de “boas<br />
praticas”, na área de engenharia de software, o SWEBOK (http://www.swebok.org/),<br />
define como teste:<br />
Teste de software consiste na verificação dinâmica <strong>do</strong> comportamento de<br />
um programa, através de um conjunto finito de casos de teste,<br />
adequadamente seleciona<strong>do</strong> a partir de um conjunto infinito de<br />
possibilidades, contra um comportamento espera<strong>do</strong> especifica<strong>do</strong>. SWEBOK<br />
(apud ARGOLLO, 2008).<br />
Esse guia traz diversas orientações sobre a organização de to<strong>do</strong> o processo de<br />
desenvolvimento, inclusive sobre testes e qualidade.<br />
É interessante ressaltar que às vezes os termos teste e qualidade se confund<strong>em</strong> e<br />
nesse guia pod<strong>em</strong>os identificar facilmente que existe diferença entre qualidade de<br />
software e teste de software.<br />
15
Tanto a qualidade quanto os testes dev<strong>em</strong> estar presente <strong>em</strong> to<strong>do</strong> o processo de<br />
construção da aplicação, mas a qualidade se estende por todas as outras<br />
disciplinas, sen<strong>do</strong> seu escopo mais abrangente <strong>em</strong> diversos aspectos se compara<strong>do</strong><br />
ao de testes.<br />
O estu<strong>do</strong> da qualidade se aperfeiçoava por meio <strong>do</strong>s processos industriais (qua.2)<br />
antes mesmo de se imaginar o conceito de software. O estu<strong>do</strong> <strong>do</strong>s testes de<br />
software t<strong>em</strong> pouco mais de 50 anos, mas só começou a ganhar uma maior atenção<br />
<strong>do</strong> merca<strong>do</strong> nos últimos 10 anos. Veja o quadro a seguir:<br />
Quadro 1 <strong>–</strong> Histórico <strong>do</strong>s testes de software<br />
1957 O teste de software torna-se um processo<br />
1970 Com a engenharia de software aumenta a importância da disciplina de testes<br />
1972 Ocorre a primeira conferência sobre testes na Universidade da Carolina <strong>do</strong> Norte<br />
1979 Myers produz um <strong>do</strong>s primeiros trabalhos sobre o processo de testes<br />
Primeiros conceitos de qualidade de software, criação <strong>do</strong>s padrões:<br />
1980<br />
•<br />
•<br />
IEEE (Institute of Electrical and Electronics Engineers)<br />
ANSI (American National Standards Institute)<br />
• ISO (International Standards Organization)<br />
1990 Começam a ser desenvolvidas as ferramentas de teste<br />
Fonte: Bartié (2002, p.3-4)<br />
O interesse pela qualidade só começou a se intensificar devi<strong>do</strong> ao crescimento<br />
exponencial <strong>do</strong>s programas <strong>em</strong> linhas de código e também pelos níveis de<br />
complexidade que estavam sen<strong>do</strong> alcança<strong>do</strong>s a cada dia.<br />
Quadro 2 <strong>–</strong> Evolução <strong>do</strong>s conceitos de qualidade<br />
1900 Inspeção <strong>pós</strong>-produção Avalia o produto final, depois de pronto<br />
1940 Controle estatístico da produção Avalia os subprodutos das etapas de produção<br />
1950 Procedimento de produção Avalia to<strong>do</strong> o procedimento de produção<br />
1960 Educação das pessoas Avalia as pessoas envolvidas no processo<br />
1970 Otimização <strong>do</strong>s processos Avalia e otimiza cada processo<br />
1980 Projeto robusto Avalia o projeto de produção<br />
1990 Engenharia simultânea Avalia a própria concepção <strong>do</strong> produto<br />
Fonte: Oshiro (2007, p.148-149)<br />
A principio, técnicas foram utilizadas para separar os códigos <strong>em</strong> módulos menores,<br />
mas <strong>em</strong> pouco t<strong>em</strong>po os analistas estavam se ven<strong>do</strong> envolvi<strong>do</strong>s com centenas,<br />
algumas vezes até milhares, de módulos que dificultavam a “visão <strong>do</strong> to<strong>do</strong>” (qua.3).<br />
Com o t<strong>em</strong>po ficou difícil prever se uma simples alteração na funcionalidade de um<br />
<strong>do</strong>s módulos, causaria probl<strong>em</strong>as <strong>em</strong> cascata <strong>em</strong> outras.<br />
16
Quadro 3 - Evolução <strong>do</strong> processo de qualidade e de testes de software<br />
Características 1960 1980 2000<br />
Tamanho <strong>do</strong> software Pequeno Médio Muito grande<br />
Complexidade <strong>do</strong> software Baixa Média Alta<br />
Tamanho da equipe de desenvolvimento Pequeno Médio Grande<br />
Padrões e meto<strong>do</strong>logias de<br />
desenvolvimento<br />
Interno Modera<strong>do</strong> Sofistica<strong>do</strong><br />
Padrões e meto<strong>do</strong>logias de qualidade e<br />
testes<br />
Interno Modera<strong>do</strong> Sofistica<strong>do</strong><br />
Organizações de qualidade e testes B<strong>em</strong> poucas Algumas Muitas<br />
Reconhecimento da importância da<br />
Pequeno Algum Significante<br />
qualidade<br />
Tamanho da equipe de qualidade e testes Pequeno Pequeno Grande<br />
Fonte: Bartié (2002, p.5)<br />
Depois se seguiram às incompatibilidades decorrentes de sist<strong>em</strong>as operacionais,<br />
versões de DLL, erros no uso <strong>do</strong> polimorfismo, hardware, etc.<br />
Atualmente muitas <strong>em</strong>presas ainda não amadureceram a idéia de que é necessário<br />
investir na disciplina de testes, apesar de todas essas questões. Algumas só<br />
invest<strong>em</strong> nos testes manuais, alegan<strong>do</strong> que testes automatiza<strong>do</strong>s é um luxo<br />
desnecessário, pois conhec<strong>em</strong> casos <strong>em</strong> que a automação não representou ganho<br />
para o processo de desenvolvimento.<br />
Certamente o probl<strong>em</strong>a se encontra mais na definição <strong>do</strong>s processos <strong>do</strong> que na<br />
automação <strong>em</strong> si.<br />
[...] as <strong>em</strong>presas acabam atuan<strong>do</strong> na automação de teste s<strong>em</strong> a definição<br />
de objetivos e expectativas claros e reais e s<strong>em</strong> a aplicação de técnicas<br />
apropriadas. Por conseqüência, têm-se constata<strong>do</strong> um grande número de<br />
insucessos nos esforços para a automação de teste [...] (FANTINATO,<br />
2004, p.2)<br />
Independente da forma como os testes dev<strong>em</strong> ser feitos, insistir <strong>em</strong> considerá-los<br />
uma atividade que não agrega valor e que é cara, só ira comprometer a<br />
sobrevivência da <strong>em</strong>presa <strong>em</strong> um merca<strong>do</strong> que se apresenta cada vez mais<br />
competitivo.<br />
Quanto ao dil<strong>em</strong>a de automatizar ou não, voltar<strong>em</strong>os a esse assunto mais a frente.<br />
17
1.2 ESTRATÉGIAS<br />
A estratégia de testes caixa-branca (testes estruturais) verifica o software<br />
internamente, seu código fonte, estrutura de banco de da<strong>do</strong>s, seqüência lógica de<br />
execução de tarefas, etc. Trata-se, portanto de um procedimento complexo que<br />
exige <strong>do</strong> testa<strong>do</strong>r um bom conhecimento sobre as tecnologias usadas no<br />
desenvolvimento <strong>do</strong> sist<strong>em</strong>a, Bartié (2002, p.104-106).<br />
Na estratégia de caixa-preta (testes funcionais) trabalha somente com os da<strong>do</strong>s de<br />
entradas e os resulta<strong>do</strong>s produzi<strong>do</strong>s pelo sist<strong>em</strong>a (Anexo A), s<strong>em</strong> se preocupar <strong>em</strong><br />
como o programa chegou àqueles resulta<strong>do</strong>s. Nesse caso o testa<strong>do</strong>r não precisa<br />
saber como o sist<strong>em</strong>a foi construí<strong>do</strong>. Essa estratégia é utilizada pelos testes<br />
basea<strong>do</strong>s <strong>em</strong> requisitos e é responsável pela maioria das ferramentas de automação<br />
disponíveis no merca<strong>do</strong>.<br />
Antes de se falar <strong>em</strong> automação pod<strong>em</strong>os concluir que os testes caixa-branca são<br />
realiza<strong>do</strong>s pelo desenvolve<strong>do</strong>r e que os testes caixa-preta pod<strong>em</strong> ser realiza<strong>do</strong>s por<br />
qualquer pessoa, pois trata se apenas <strong>do</strong> uso da aplicação.<br />
Atualmente, a automação que trabalha com o conceito de caixa-preta pode exigir<br />
que o testa<strong>do</strong>r tenha conhecimentos <strong>em</strong> programação.<br />
O testa<strong>do</strong>r comum deve continuar existin<strong>do</strong>, só que fora <strong>do</strong> ambiente de<br />
desenvolvimento. As maiorias das MDS enxergam esse testa<strong>do</strong>r na fase de<br />
homologação, na figura <strong>do</strong> cliente e/ou <strong>do</strong> usuário final.<br />
1.3 PROGRESSIVIDADE E REGRESSIVIDADE<br />
Progressividade consiste <strong>em</strong> avaliar um sist<strong>em</strong>a novo ou apenas a parte nova de um<br />
sist<strong>em</strong>a antigo. To<strong>do</strong>s os programas novos passam por testes de progressão,<br />
somente quan<strong>do</strong> algo é modifica<strong>do</strong> que pod<strong>em</strong>os realizar um teste de progressão ou<br />
de regressão.<br />
18
O teste de regressão consiste <strong>em</strong> avaliar to<strong>do</strong> o sist<strong>em</strong>a a<strong>pós</strong> uma modificação de<br />
código e/ou configuração de ambiente, poden<strong>do</strong> ser uma nova versão ou release,<br />
pois aplicar somente o teste de progressão pode ocultar probl<strong>em</strong>as gera<strong>do</strong>s <strong>em</strong><br />
outras partes <strong>do</strong> sist<strong>em</strong>a <strong>em</strong> decorrência da ultima alteração.<br />
A automação de testes mostra-se com maior eficiência quan<strong>do</strong> utilizada nos testes<br />
de regressão. Principalmente, quan<strong>do</strong> pouco esforço é necessário na adaptação <strong>do</strong>s<br />
scripts antigos, para rodar novamente to<strong>do</strong>s os casos de testes antigos e novos.<br />
Com testes manuais o t<strong>em</strong>po para realizá-los seria muito maior e ainda estaríamos<br />
expostos às falhas de um processo moroso e cansativo, Bartié (2002, p.107-108).<br />
Em resumo, seu principal objetivo é verificar que o sist<strong>em</strong>a continua a realizar as<br />
mesmas funções e da mesma maneira que na versão anterior, Pfleeger (apud<br />
CORREIA, 2004, p.2).<br />
1.4 CATEGORIAS<br />
A separação <strong>do</strong>s testes <strong>em</strong> categorias, descrita por Bartié (2002, p.109-110), não se<br />
trata apenas de uma conceituação acadêmica.<br />
Essa separação realmente ajuda na elaboração de casos mais abrangentes.<br />
Evitan<strong>do</strong> com isso que, no momento <strong>do</strong> levantamento sobre “o que” testar, alguns<br />
itens acab<strong>em</strong> esqueci<strong>do</strong>s.<br />
A importância de cada categoria (qua.4) varia de um projeto para o outro. Por<br />
ex<strong>em</strong>plo, não t<strong>em</strong>os uma preocupação acentuada no quesito “Carga e<br />
Concorrência” para um projeto de editor de texto, onde somente um usuário usa o<br />
editor por vez. Até pod<strong>em</strong>os nos preocupar com “Volume” relacionan<strong>do</strong>-o ao<br />
trabalho com textos extensos. Apesar das possíveis divergências, a importância<br />
definida por Bartié adequa-se perfeitamente a grande maioria <strong>do</strong>s sist<strong>em</strong>as.<br />
19
Quadro 4 <strong>–</strong> Ex<strong>em</strong>plo de priorização das categorias de testes<br />
Tipo Importância Descrição da categoria<br />
Funcional Essencial<br />
Visa garantir que não haverá diferença entre os requisitos<br />
funcionais e o software desenvolvi<strong>do</strong>.<br />
Checa o des<strong>em</strong>penho <strong>do</strong> programa, ou seja, verifica se ele<br />
Performance Médio impacto mantém um t<strong>em</strong>po de resposta aceitável mesmo <strong>em</strong><br />
condições extr<strong>em</strong>as.<br />
Confiabilidade e<br />
Disponibilidade<br />
Alto impacto<br />
Monitora o programa por um t<strong>em</strong>po para identificar<br />
interrupções (confiabilidade) e mensurar o t<strong>em</strong>po para<br />
solucionar o probl<strong>em</strong>a (disponibilidade).<br />
Simula invasões com o intuito de obter informações<br />
Segurança Essencial sigilosas ao que possam prejudicar o funcionamento <strong>do</strong><br />
sist<strong>em</strong>a.<br />
Também conheci<strong>do</strong> como teste de stress ele funciona<br />
Carga e<br />
Concorrência<br />
Alto impacto<br />
simulan<strong>do</strong> situações atípicas no sist<strong>em</strong>a, como aumento no<br />
tráfego da rede, transações sucessivas e simultâneas, entre<br />
outras.<br />
Verifica a navegação nas telas, clareza das mensagens,<br />
Usabilidade Médio impacto facilidade para obter ajuda, entre outros itens relaciona<strong>do</strong>s à<br />
interação com o usuário.<br />
Compatibilidade Essencial<br />
Testa o comportamento <strong>em</strong> função de alterações no<br />
versionamento de componentes de hardware e software.<br />
Também conheci<strong>do</strong> como teste de portabilidade, testa o<br />
Configuração Baixo impacto comportamento <strong>do</strong> programa <strong>em</strong> ambientes diferentes, tanto<br />
de hardware quanto de software.<br />
Contingência Alto impacto<br />
Analisa os procedimentos que a equipe deve a<strong>do</strong>tar <strong>em</strong><br />
caso de falhas.<br />
Analisa o comportamento <strong>do</strong> sist<strong>em</strong>a, durante o processo de<br />
Instalação Médio impacto<br />
instalação, nas mais diversas possibilidades, por ex<strong>em</strong>plo:<br />
nova instalação, reinstalação, variação de alternativas para<br />
instalação.<br />
É s<strong>em</strong>elhante ao teste de carga, porém esse não trabalha<br />
com oscilações e sim com o crescimento contínuo da base<br />
Volume Alto impacto até o limite suporta<strong>do</strong> e com isso verificar o funcionamento<br />
<strong>do</strong> programa nessas condições. Alguns autores chamam<br />
esse teste de teste de distribuição.<br />
Recuperação Alto impacto<br />
Avalia a capacidade <strong>do</strong> sist<strong>em</strong>a <strong>em</strong> poder voltar a operar<br />
normalmente a<strong>pós</strong> a ocorrência de um erro.<br />
Fonte: Bartié (2002, p.120)<br />
Verifican<strong>do</strong> o conteú<strong>do</strong> da NBR 13596 (qua.5), que é a versão <strong>brasil</strong>eira da<br />
ISSO/IEC 9126, vimos que esse padrão de qualidade relaciona itens a ser<strong>em</strong><br />
observa<strong>do</strong>s no desenvolvimento de aplicações, para a obtenção de um produto de<br />
qualidade, que são muito s<strong>em</strong>elhantes às categorias descritas por Bartié.<br />
Entre as diferenças vale observar o it<strong>em</strong> “Testabilidade”, da característica<br />
“Manutenibilidade”, pois aumenta nossa visão <strong>do</strong> produto final para além da<br />
percepção <strong>do</strong> usuário.<br />
20
Quadro 5 - Características para um software de qualidade<br />
Característica Sub-característica Pergunta chave para a sub-característica<br />
Adequação Propõe-se a fazer o que é apropria<strong>do</strong>?<br />
Funcionalidade<br />
(satisfaz as<br />
necessidades?)<br />
Acurácia Faz o que foi proposto de forma correta?<br />
Interoperabilidade Interage com os sist<strong>em</strong>as especifica<strong>do</strong>s?<br />
Conformidade Está de acor<strong>do</strong> com as normas, leis, etc.?<br />
Segurança de acesso Evita acesso não autoriza<strong>do</strong> aos da<strong>do</strong>s?<br />
Maturidade Com que freqüência apresenta falhas?<br />
Tolerância à falhas Ocorren<strong>do</strong> falhas, como ele reage?<br />
Confiabilidade<br />
(é imune a falhas?)<br />
Recuperabilidade É capaz de recuperar da<strong>do</strong>s <strong>em</strong> caso de falha?<br />
Inteligibilidade<br />
Usabilidade<br />
Apreensibilidade<br />
(é fácil de usar?)<br />
Operacionalidade<br />
É fácil entender o conceito e a aplicação?<br />
É fácil aprender a usar?<br />
É fácil de operar e controlar?<br />
Eficiência<br />
T<strong>em</strong>po<br />
(é rápi<strong>do</strong> e<br />
Qual é o t<strong>em</strong>po de resposta, a velocidade de<br />
execução?<br />
"enxuto"?) Recursos Quanto recurso usa? Durante quanto t<strong>em</strong>po?<br />
Analisabilidade<br />
Manutenibilidade<br />
Modificabilidade<br />
(é fácil de<br />
modificar?)<br />
Estabilidade<br />
Testabilidade<br />
É fácil de encontrar uma falha, quan<strong>do</strong> ocorre?<br />
É fácil modificar e adaptar?<br />
Há grande risco quan<strong>do</strong> se faz alterações?<br />
É fácil testar quan<strong>do</strong> se faz alterações?<br />
Adaptabilidade É fácil adaptar a outros ambientes?<br />
Portabilidade Capac. para ser<br />
(é fácil de usar <strong>em</strong> instala<strong>do</strong><br />
É fácil instalar <strong>em</strong> outros ambientes?<br />
outro ambiente?) Conformidade Está de acor<strong>do</strong> com padrões de portabilidade?<br />
Capac. para substituir É fácil usar para substituir outro?<br />
Fonte: NBR 13596 (apud OSHIRO, 2007, p.152-153)<br />
1.5 TIPOS<br />
Existe uma infinidade de tipos de testes, cada um com suas respectivas técnicas.<br />
Alguns se misturam, outros são apenas sinônimos. Cada autor costuma ter sua lista<br />
particular “<strong>do</strong>s mais importantes”, mas os principais conjuntos de teste são os de<br />
unidade, integração, sist<strong>em</strong>a e validação.<br />
Não é o objetivo desse trabalho discorrer sobre to<strong>do</strong>s os tipos possíveis de testes.<br />
Apenas apresentar<strong>em</strong>os alguns conceitos, durante a apresentação de alguns t<strong>em</strong>as,<br />
conforme sua relevância para o contexto desse estu<strong>do</strong>.<br />
Como pod<strong>em</strong>os ver nos Anexos B e C, a muito para considerar quan<strong>do</strong> da<br />
elaboração de um plano de testes.<br />
21
Com a crescente complexidade da disciplina de testes o merca<strong>do</strong> já começa a exigir<br />
“especialistas” para essa tarefa. Os cursos que se propõe a capacitação profissional<br />
e as certificações começam a se proliferar.<br />
Algumas pesquisas argumentam que esta será uma das áreas com maior d<strong>em</strong>anda<br />
de <strong>em</strong>prego num futuro próximo e, conseqüent<strong>em</strong>ente, maior valorização salarial. A<br />
Computer World dedicou um post para falar das 6 áreas de TI que são a prova de<br />
recessão, com base <strong>em</strong> uma pesquisa, da JobFox, realizada <strong>em</strong> julho deste ano. O<br />
<strong>do</strong>cumento faz uma ressalva na área de testes: “Especially good for those with<br />
automated testing expertise”, ou seja, especialmente bom para aqueles com<br />
conhecimento <strong>em</strong> automação de testes, Eudescosta (2008).<br />
1.6 AMBIENTES<br />
O ambiente de testes pode ser <strong>do</strong> tipo ativo ou por d<strong>em</strong>anda. Quan<strong>do</strong> construímos<br />
um ambiente e o mant<strong>em</strong>os, mesmo depois <strong>do</strong> término <strong>do</strong> projeto que o originou<br />
(s<strong>em</strong>pre disponível para simular a produção, através de rotinas eventuais, diárias,<br />
quinzenais, mensais, anuais), estamos utilizan<strong>do</strong> o tipo ativo. Esse tipo também é o<br />
melhor para testes de interfaces por parte <strong>do</strong> homologa<strong>do</strong>r 1 , pois não o colocamos<br />
<strong>em</strong> contato com o ambiente de desenvolvimento (fig.1) e não corr<strong>em</strong>os o risco de<br />
comprometer o ambiente de produção. Outra vantag<strong>em</strong> é que ele promove a<br />
integração entre plataformas s<strong>em</strong> que se tenha o trabalho de reinstalar to<strong>do</strong>s os<br />
sist<strong>em</strong>as envolvi<strong>do</strong>s e reproduzir as massas de testes de cada um a cada novo<br />
projeto ou evolução de aplicação. Esse ambiente também nos possibilita aperfeiçoar<br />
um controle rígi<strong>do</strong> de acessos.<br />
Uma vez prepara<strong>do</strong>, o ambiente ativo proporciona uma redução nos custos a médio<br />
e longo prazo, além de possibilitar uma melhora na performance <strong>do</strong> processo.<br />
O ambiente por d<strong>em</strong>anda é construí<strong>do</strong> de acor<strong>do</strong> com os pedi<strong>do</strong>s e conforme a<br />
necessidade. Em termos de hardware, a disponibilidade <strong>do</strong>s equipamentos pode<br />
1 Cliente e/ou usuário final.<br />
22
tornar esse custo tão alto quanto o <strong>do</strong> ambiente ativo, mas é comum apenas a<br />
requisição de espaço <strong>em</strong> disco <strong>em</strong> máquinas já existente, tanto <strong>do</strong> ambiente de<br />
desenvolvimento quanto <strong>do</strong> ambiente de produção, para a realização <strong>do</strong>s testes. Em<br />
alguns casos não chega n<strong>em</strong> a ser um ambiente, apenas um “quebra-galho”.<br />
Figura 1 <strong>–</strong> Gestão de ambientes<br />
Fonte: Bartié (2002, p.165)<br />
Na construção de um ambiente de testes separa<strong>do</strong> <strong>do</strong> ambiente de produção e de<br />
desenvolvimento dev<strong>em</strong>os ter <strong>em</strong> mente o seguinte: quan<strong>do</strong> implantamos um<br />
sist<strong>em</strong>a nesse ambiente dev<strong>em</strong>os nos questionar se existe algum tipo de integração<br />
com outros sist<strong>em</strong>as (seja ela <strong>do</strong> tipo real-time, on-line e/ou batch) e se eles também<br />
estão implanta<strong>do</strong>s nesse mesmo ambiente.<br />
A realização <strong>do</strong>s testes no ambiente de homologação é conhecida como teste alpha<br />
(fig.2). Quan<strong>do</strong> os testes ocorr<strong>em</strong> no ambiente de produção receb<strong>em</strong> o nome de<br />
teste beta.<br />
Ambiente de desenvolvimento<br />
Desenvolvimento<br />
Fontes<br />
Estrutura interna<br />
Teste:<br />
Unidade<br />
Integração<br />
Categoria:<br />
Funcional<br />
Usabilidade<br />
Ambiente de teste e<br />
homologação<br />
Teste:<br />
Ambiente de produção<br />
Sist<strong>em</strong>a Teste:<br />
Teste:<br />
Categoria: Aceitação<br />
Aceitação<br />
Funcional<br />
Carga<br />
Performace<br />
Instalação<br />
Segurança<br />
Categoria:<br />
Aceite formal<br />
Alpha-teste<br />
Categoria:<br />
Beta-teste<br />
Produção<br />
Em<br />
desenvolvimento<br />
Figura 2 <strong>–</strong> Ambientes<br />
Fonte: Bartié (2002, p.166-167)<br />
Em teste Em homologação<br />
Em<br />
produção<br />
23
Bartié (2002, p.159) também l<strong>em</strong>bra que, outra característica <strong>do</strong> teste alpha é<br />
realização <strong>em</strong> ambiente simula<strong>do</strong> da <strong>em</strong>presa desenvolve<strong>do</strong>ra da aplicação,<br />
fisicamente separa<strong>do</strong> <strong>do</strong> ambiente de desenvolvimento.<br />
A equipe encarregada da preparação também deve observar todas as questões<br />
relativas à compatibilidade entre o ambiente de homologação e o de produção, para<br />
evitar o funcionamento incorreto da aplicação devi<strong>do</strong> a probl<strong>em</strong>as de versionamento,<br />
portabilidade, recursos de hardware, etc.<br />
1.7 MASSA<br />
Em algumas livrarias virtuais, quan<strong>do</strong> informamos nossos da<strong>do</strong>s para realizar uma<br />
compra, a<strong>pós</strong> digitarmos o CEP, a aplicação web se encarrega de preencher<br />
automaticamente no endereço o nome da rua, bairro, município e UF. As<br />
informações que constam no banco de da<strong>do</strong>s da aplicação antes de qualquer<br />
pessoa te-la utiliza<strong>do</strong> são conhecidas como carga inicial.<br />
Muitas vezes, para testar uma aplicação <strong>em</strong> to<strong>do</strong> o seu potencial, é necessário que<br />
o sist<strong>em</strong>a já contenha da<strong>do</strong>s que vão além da carga inicial e que simul<strong>em</strong> o uso por<br />
parte <strong>do</strong> usuário, ao longo de algum t<strong>em</strong>po. Esses da<strong>do</strong>s são chama<strong>do</strong>s de massa<br />
de testes.<br />
Incluir manualmente esses da<strong>do</strong>s, além de ser uma tarefa d<strong>em</strong>orada, é muito<br />
monótono para qualquer pessoa. Já exist<strong>em</strong> diversas ferramentas que se<br />
encarregam de gerar a massa de testes e que utilizam técnicas de redução, para<br />
uso de um registro de cada tipo (file-aid rdx), e descaracterização, para proteger<br />
da<strong>do</strong>s pessoais e evitar que, <strong>em</strong> caso de algum acidente, esses da<strong>do</strong>s sejam<br />
revela<strong>do</strong>s (data solution).<br />
Em qualquer um <strong>do</strong>s casos é recomendável que utiliz<strong>em</strong> apenas da<strong>do</strong>s fictícios ou<br />
de <strong>do</strong>mínio público para compor essas massas.<br />
24
Com relação ao uso de ferramentas para automação <strong>do</strong> processo testes, tenha<br />
preferência pelas que possibilit<strong>em</strong> o retorno da massa ao “momento zero”, ou seja,<br />
quan<strong>do</strong> terminamos de testar a aplicação pode ser interessante fazer a massa de<br />
testes retornar ao seu esta<strong>do</strong> inicial, para poder reproduzir os mesmos testes com a<br />
garantia de obter os mesmos resulta<strong>do</strong>s.<br />
1.8 VERSIONAMENTO<br />
Quan<strong>do</strong> as aplicações começaram a “conversar” entre si, principalmente na<br />
interação entre aplicações via automação OLE, começaram a ocorrer probl<strong>em</strong>as<br />
decorrentes da incompatibilidade de versões, devi<strong>do</strong> às muitas variações de rotinas,<br />
que <strong>em</strong> tese deveriam atender tanto as chamadas que utilizam as novas<br />
características quanto as antigas.<br />
Esses probl<strong>em</strong>as também se estenderam aos sist<strong>em</strong>as operacionais, as DLL de uso<br />
geral, sobre recursos da própria aplicação, polimorfismo de POO, hardware, etc.<br />
Já os browsers (navega<strong>do</strong>res para internet) são um caso a parte, pois sofr<strong>em</strong> com a<br />
variabilidade <strong>do</strong>s padrões e das interpretações dadas aos mesmos.<br />
To<strong>do</strong>s esses fatores obrigam os desenvolve<strong>do</strong>res a atentar para um rigoroso<br />
controle de configuração <strong>em</strong> caso de mudanças, seja pela simples instalação <strong>em</strong><br />
computa<strong>do</strong>res diferentes ou pelo upgrade da aplicação.<br />
A utilização de um processo automatiza<strong>do</strong> de testes pode garantir uma considerável<br />
economia de recursos, quan<strong>do</strong> é necessário testar o produto <strong>em</strong> diversos tipos de<br />
configuração. Na atualização também pod<strong>em</strong>os ter uma boa economia, quan<strong>do</strong><br />
pouca coisa é modificada ao nível da interface, mas convêm avaliar to<strong>do</strong> o software<br />
novamente (teste de regressão).<br />
Qu<strong>em</strong> já adquiriu um software e checou antes a “configuração mínima” percebe a<br />
importância desses procedimentos.<br />
25
Mesmo quan<strong>do</strong> é utiliza<strong>do</strong> ferramentas para automação <strong>do</strong>s testes, muito t<strong>em</strong>po<br />
pode ser perdi<strong>do</strong> quan<strong>do</strong> não se t<strong>em</strong> o cuida<strong>do</strong> de guardar a baseline, como<br />
ver<strong>em</strong>os a seguir.<br />
As idéias defendidas pelas categorias “Compatibilidade” e “Configuração” (qua.4)<br />
dev<strong>em</strong> ser a<strong>do</strong>tadas e seus registros acompanha<strong>do</strong>s e controla<strong>do</strong>s. Tanto projetos<br />
novos quanto as mudanças corretivas e/ou evolutivas dev<strong>em</strong> possuir registros da<br />
configuração <strong>do</strong> ambiente, artefatos, hardware, etc.<br />
Decorrente <strong>do</strong> controle <strong>do</strong> versionamento surgiu à expressão baseline. Baseline é<br />
“[...] o resulta<strong>do</strong> <strong>do</strong> esforço de criação de um ambiente inicial pronto para sofrer o<br />
processamento <strong>do</strong>s testes planeja<strong>do</strong>s.” (BARTIÉ, 2002, p.169).<br />
A IBM desenvolveu uma ferramenta chamada ClearCase, que faz parte da suite <strong>do</strong><br />
Rational. Ela trabalha com o seguinte entendimento sobre baseline: imagine quatro<br />
artefatos sen<strong>do</strong> desenvolvi<strong>do</strong>s paralelamente, que foram evoluin<strong>do</strong> e receben<strong>do</strong><br />
cada um versões particulares. Neste caso, baseline seria o conjunto de artefatos,<br />
com versões especificas, para que uma aplicação maior pudesse funcionar a<br />
contento. A figura a seguir ilustra melhor essa definição:<br />
Figura 3 <strong>–</strong> Baseline<br />
26
Para implantar o projeto e <strong>do</strong>cumentá-lo dev<strong>em</strong>os considerar o Pacote 1 V.2, Pacote<br />
2 V.1, Pacote 3 V.3 e Pacote 4 V.2, conforme determina a baseline.<br />
O objetivo <strong>do</strong> baseline é “[...] validar a cópia <strong>do</strong>s componentes <strong>do</strong> ambiente de<br />
produção para o ambiente de homologação.” (BRITO, 2000, p.43).<br />
No ex<strong>em</strong>plo anterior citamos artefatos, mas o conceito de baseline também é<br />
utiliza<strong>do</strong> <strong>em</strong> outros casos, como ambiente e hardware.<br />
O baseline torna-se muito útil quan<strong>do</strong> precisamos restabelecer um sist<strong>em</strong>a para<br />
testes corretivos e/ou evolutivos. Pensan<strong>do</strong> nisso, Ungarelli (2007) definiu baseline<br />
como sen<strong>do</strong> a configuração tomada <strong>em</strong> um momento estratégico <strong>do</strong> projeto com o<br />
objetivo de servir como referência para as atividades posteriores identificadas<br />
conforme o plano de gestão de configuração. Quanto às modificações ele também<br />
l<strong>em</strong>bra que, quan<strong>do</strong> uma ocorrência é resolvida, o teste que deu orig<strong>em</strong> à mesma<br />
deverá ser novamente executa<strong>do</strong> sen<strong>do</strong> que, para isso, deve ser gera<strong>do</strong> um novo<br />
baseline com a versão corrigida <strong>do</strong> <strong>do</strong>cumento ou sist<strong>em</strong>a.<br />
O controle <strong>do</strong> versionamento também ajuda a evitar probl<strong>em</strong>as deriva<strong>do</strong>s da falta de<br />
equalização entre ambientes. Essa falta de equalização geralmente ocorre quan<strong>do</strong><br />
uma solicitação <strong>em</strong>ergencial provoca uma mudança diretamente no ambiente de<br />
produção, e por falta de acompanhamento, não se efetua o acerto nos ambientes de<br />
desenvolvimento e homologação.<br />
27
CAPÍTULO II <strong>–</strong> O PROCESSO DE TESTES<br />
O processo de testes deve ser inicia<strong>do</strong> junto com o projeto e deve acompanhá-lo no<br />
decorrer das d<strong>em</strong>ais etapas <strong>do</strong> desenvolvimento, isso garante uma redução nos<br />
custos <strong>em</strong> virtude da prevenção de probl<strong>em</strong>as já no inicio <strong>do</strong> desenvolvimento.<br />
Plano, estratégia, cenário, roteiro, casos, massa e evidências de testes são os<br />
principais artefatos elabora<strong>do</strong>s e revistos ao longo <strong>do</strong> processo de avaliação (Anexo<br />
D). Nesse processo também encontramos as atividades de inspeção e auditoria de<br />
código-fonte, que, inclusive, pod<strong>em</strong> utilizar ferramentas de automatização.<br />
Quanto aos artefatos, a automação t<strong>em</strong> si<strong>do</strong> mais utilizada junto aos casos e a<br />
massa de testes. Como já falamos sobre a massa de testes, vejamos os casos.<br />
Segun<strong>do</strong> Ungarelli (2007) os casos de teste especificam entradas, resulta<strong>do</strong>s<br />
espera<strong>do</strong>s e condições de execução estabelecen<strong>do</strong> o que será testa<strong>do</strong>. Para<br />
Correia (2004, p.2) a qualidade de um caso de teste é descrita através de quatro<br />
atributos:<br />
1. Capacidade de encontrar defeitos;<br />
2. Capacidade <strong>em</strong> exercitar mais de um aspecto reduzin<strong>do</strong> assim a quantidade de<br />
casos de teste requeri<strong>do</strong>s;<br />
3. Baixo custo necessário para a realização <strong>do</strong> caso de teste incluin<strong>do</strong> o esforço de<br />
desenho, execução e análise <strong>do</strong>s resulta<strong>do</strong>s de teste;<br />
4. Baixo esforço de manutenção necessário sobre o caso de teste a cada alteração<br />
<strong>do</strong> sist<strong>em</strong>a.<br />
Estes quatro atributos dev<strong>em</strong> ser balancea<strong>do</strong>s de forma a ter casos de testes com<br />
boa qualidade.<br />
Os <strong>do</strong>is primeiros atributos independ<strong>em</strong> da forma de teste (automática ou manual).<br />
Quanto aos <strong>do</strong>is últimos ver<strong>em</strong>os mais a frente diversas situações que d<strong>em</strong>onstram<br />
<strong>em</strong> que casos uma forma é melhor que a outra. O esforço de construção e de<br />
28
manutenção requeri<strong>do</strong> para um teste automático é normalmente maior <strong>do</strong> que para<br />
um teste manual equivalente, mas uma vez construí<strong>do</strong>, o automático tende a ser<br />
mais econômico que o manual. O esforço de execução e de verificação de<br />
resulta<strong>do</strong>s será uma pequena fração <strong>do</strong> esforço de construção e consideravelmente<br />
menores que a forma manual.<br />
2.1 PADRÕES DE QUALIDADE<br />
Igualmente ao que ocorre na indústria, o segmento de TI v<strong>em</strong> sen<strong>do</strong> cont<strong>em</strong>pla<strong>do</strong><br />
com diversos tipos de certificações para qu<strong>em</strong> se propõe a garantir ao merca<strong>do</strong> a<br />
qualidade <strong>do</strong>s processos usa<strong>do</strong>s no desenvolvimento de suas aplicações.<br />
A<strong>do</strong>tar um padrão de qualidade não é uma tarefa simples, mas é possível colher<br />
bons frutos. Veja a seguir alguns comentários sobre os probl<strong>em</strong>as e benefícios<br />
referentes a implantação de uma cultura de qualidade, segun<strong>do</strong> Bartié (2002, p.50-<br />
64):<br />
Probl<strong>em</strong>as enfrenta<strong>do</strong>s:<br />
• Ausência de gerência de qualidade independente<br />
• Ausência de procedimentos de testes automatiza<strong>do</strong>s<br />
• Qualidade é s<strong>em</strong>pre aplicada tardiamente no desenvolvimento<br />
• Ausência de profissionais capacita<strong>do</strong>s <strong>em</strong> qualidade de software<br />
• Falta de um modelo corporativo de qualidade<br />
• Foco <strong>em</strong> testes progressivos aumenta os riscos<br />
• Deficiência no planejamento <strong>do</strong>s testes<br />
• Sob pressão, os testes são sacrifica<strong>do</strong>s<br />
• Ausência de um ambiente de testes isola<strong>do</strong><br />
• Transferir o planejamento ao analista de sist<strong>em</strong>as<br />
• Dificultar o acesso <strong>do</strong> analista de testes ao software<br />
Benefícios alcança<strong>do</strong>s:<br />
• Torna o ciclo de desenvolvimento confiável<br />
29
• Garante ações corretivas no ciclo de desenvolvimento<br />
• Evita a ingerência <strong>do</strong> projeto de software<br />
• Amplia as chances de sucesso <strong>do</strong> projeto de software<br />
• Amplia a produtividade <strong>do</strong> desenvolvimento<br />
o Fator desorganização<br />
o Fator retrabalho<br />
• Evitam a propagação de erros<br />
• Automação de testes reduz custos <strong>do</strong> projeto<br />
Citamos abaixo os principais órgãos certifica<strong>do</strong>res de qualidade no desenvolvimento<br />
de software:<br />
• IEEE (Institute of Eletrical and Electronics Engineers)<br />
• ANSI (American National Stantards Institute)<br />
• ISO (International Stantards Organization)<br />
Na seqüência veja um quadro com algumas das normas definidas por estas<br />
instituições:<br />
Norma<br />
Quadro 6 <strong>–</strong> Normas de qualidade <strong>em</strong> desenvolvimento de software<br />
Comentário<br />
ISO 9126 Características da qualidade de produtos de software.<br />
NBR 13596 Versão <strong>brasil</strong>eira da ISO 9126<br />
ISO 14598<br />
Guias para a avaliação de produtos de software, basea<strong>do</strong>s na utilização prática<br />
da norma ISO 9126<br />
ISO 12119<br />
Características de qualidade de pacotes de software (software de prateleira,<br />
vendi<strong>do</strong> com um produto <strong>em</strong>bala<strong>do</strong>)<br />
IEEE P1061 Standard for Software Quality Metrics Metho<strong>do</strong>logy (produto de software)<br />
ISO 12207<br />
Software Life Cycle Process. Norma para a qualidade <strong>do</strong> processo de<br />
desenvolvimento de software.<br />
NBR ISO 9001<br />
Sist<strong>em</strong>as de qualidade - Modelo para garantia de qualidade <strong>em</strong> Projeto,<br />
Desenvolvimento, Instalação e Assistência Técnica (processo)<br />
Gestão de qualidade e garantia de qualidade. Aplicação da norma ISO 9000 para<br />
NBR ISO 9000-3<br />
o processo de desenvolvimento de software.<br />
NBR ISO 10011 Auditoria de Sist<strong>em</strong>as de Qualidade (processo)<br />
CMM<br />
Capability Maturity Model. Modelo da SEI (Instituto de Engenharia de Software<br />
<strong>do</strong> Departamento de Defesa <strong>do</strong>s EEUU) para avaliação da qualidade <strong>do</strong><br />
processo de desenvolvimento de software. Não é uma norma ISO, mas é muito<br />
b<strong>em</strong> aceita no merca<strong>do</strong>.<br />
SPICE ISO Projeto da ISO/IEC para avaliação de processo de desenvolvimento de software.<br />
15504<br />
Ainda não é uma norma oficial ISO, mas o processo está <strong>em</strong> andamento.<br />
Fonte: Oshiro (2007, p.151)<br />
30
O CMM (Capability Maturity Model) da Software Engineering Institute esta se<br />
tornan<strong>do</strong> o padrão no merca<strong>do</strong>, sua classificação <strong>em</strong> níveis possibilita ao merca<strong>do</strong><br />
um visão sobre o que esperar de determinada <strong>em</strong>presa.<br />
Por ex<strong>em</strong>plo, a SEI (Software Engineering Institute) estima que as <strong>em</strong>presas que se<br />
encontram no Nível 1 (fig.4) <strong>do</strong> modelo CMM gastam cerca de 55% (gra.4) <strong>do</strong>s<br />
esforços <strong>em</strong> correção de defeitos oriun<strong>do</strong>s <strong>do</strong> projeto de desenvolvimento.<br />
NÍVEL 5 FOCO NO APERFEIÇOAMENTO<br />
OTIMIZADO<br />
OTIMIZADO DO PROCESSO<br />
NÍVEL 4 PROCESSO MEDIDO E<br />
MENSURÁVEL<br />
GERENCIADO CONTROLADO<br />
NÍVEL 3 PROCESSO CARACTERIZADO E<br />
PADRONIZADO<br />
DEFINIDO BEM ENTENDIDO<br />
NÍVEL 2 TAREFAS "MESTRAS" PODEM SER<br />
CULTURAL<br />
REPETITIVO REPETIDAS CONTINUAMENTE<br />
NÍVEL 1 PROCESSO IMPREVISÍVEL E<br />
ANÁRQUICO<br />
INICIAL POUCO CONTROLADO<br />
Figura 4 <strong>–</strong> Possíveis níveis de maturidade previstos no modelo CMM<br />
Fonte: Bartié (2002, p.9)<br />
Exist<strong>em</strong> outros <strong>do</strong>is modelos de qualidade <strong>em</strong> software que ainda não atingiram uma<br />
maior popularidade: O PSM e o SPICE.<br />
O PSM (Pratical Software Measur<strong>em</strong>ent) é um modelo para mensuração de projetos<br />
de software. Cria<strong>do</strong> <strong>em</strong> 1994 sob o patrocínio <strong>do</strong> DoD (Departamento de Defesa<br />
Norte-Americano), o PSM foi publica<strong>do</strong> pela primeira vez 1997. O modelo v<strong>em</strong><br />
sen<strong>do</strong> atualiza<strong>do</strong> por profissionais da área de Software Process Improv<strong>em</strong>ent e foi<br />
utiliza<strong>do</strong> como base para a elaboração da Process Area Measur<strong>em</strong>ent and Analysis<br />
<strong>do</strong> CMMi (modelo integra<strong>do</strong> que poderá substituir o CMM no futuro), Calleri (2005,<br />
p.20).<br />
31
O SPICE (Software Process Improv<strong>em</strong>ent and Capability dEtermination) teve<br />
desenvolvimento inicia<strong>do</strong> <strong>em</strong> 1993 e sua primeira versão foi liberada <strong>em</strong> 1995. Ele<br />
não foi proposto como modelo de qualidade ou de impl<strong>em</strong>entação, e sim como meio<br />
adequa<strong>do</strong> à avaliação <strong>do</strong> processo de desenvolvimento de software, Spice Project<br />
(apud CALLERI, 2005, p.30).<br />
Seu projeto visava o desenvolvimento de uma norma internacional para avaliação de<br />
software; coordenação e análise de sua utilização; aprimoramento e sua<br />
consolidação como norma. Como resulta<strong>do</strong>, foi criada a norma internacional ISO/IEC<br />
(International Electrotechnical Commision) 15504, Sepin (apud CALLERI, 2005,<br />
p.30).<br />
32
CAPÍTULO III <strong>–</strong> AUTOMAÇÃO DE TESTES<br />
A crescente complexidade nos sist<strong>em</strong>as informáticos juntamente com os<br />
méto<strong>do</strong>s de desenvolvimento rápi<strong>do</strong> e incr<strong>em</strong>ental <strong>–</strong> como por ex<strong>em</strong>plo,<br />
Rapid Application Development e Extr<strong>em</strong>e Programming, que promet<strong>em</strong><br />
intervalos de entrega mais freqüentes <strong>–</strong> requer<strong>em</strong> testes de qualidade que<br />
possam ser rapidamente executa<strong>do</strong>s s<strong>em</strong>pre que necessário. Em tal<br />
cenário os testes manuais são pouco vantajosos, visto que muitos testes<br />
são re-executa<strong>do</strong>s a cada release <strong>do</strong> sist<strong>em</strong>a. (CORREIA, 2004, p.1).<br />
Pod<strong>em</strong>os até falar <strong>em</strong> qualidade utilizan<strong>do</strong> testes manuais, mas só o uso de<br />
ferramentas de automação pode fazer com que alta produtividade e qualidade<br />
and<strong>em</strong> juntas.<br />
As funcionalidades mais propícias à automação são aquelas que envolv<strong>em</strong> a<br />
execução de tarefas repetitivas e cansativas, facilmente suscetíveis a erros, ou<br />
impossíveis de ser<strong>em</strong> realizadas manualmente, Fantinato (2004, p.14).<br />
Segun<strong>do</strong> Argollo (2008), a automação de testes t<strong>em</strong> como principais características:<br />
• Diminuição <strong>do</strong> esforço;<br />
• O foco não é repetir um teste b<strong>em</strong> sucedi<strong>do</strong>, mas melhorá-lo;<br />
• Repetir quan<strong>do</strong> algo é altera<strong>do</strong> (software e/ou ambiente).<br />
Não é possível automatizar tu<strong>do</strong>, mas pod<strong>em</strong>os atingir um bom nível de automação<br />
quan<strong>do</strong> utilizamos as ferramentas basicamente para controlar a execução <strong>do</strong>s testes<br />
e comparar os resulta<strong>do</strong>s obti<strong>do</strong>s com os resulta<strong>do</strong>s espera<strong>do</strong>s, além de relatar os<br />
resulta<strong>do</strong>s obti<strong>do</strong>s.<br />
Como ver<strong>em</strong>os mais adiante algumas ferramentas pod<strong>em</strong> oferecer suporte às<br />
linguagens que manipulam scripts, com o objetivo de apoiar o processo de<br />
automação. Esses scripts serv<strong>em</strong>, principalmente, para simular ações, alterar<br />
valores e verificar o conteú<strong>do</strong> <strong>do</strong>s objetos da interface gráfica. Eles também contam<br />
com recursos similares aos ofereci<strong>do</strong>s pelas linguagens de programação como C,<br />
Java e Delphi. Um desses recursos é a possibilidade de incluir coman<strong>do</strong>s para<br />
33
controle de fluxo (if, while, case) e com isso diminuir o tamanho <strong>do</strong> código de<br />
controle.<br />
Veja a seguir um ex<strong>em</strong>plo de script e seu resulta<strong>do</strong> na tela:<br />
Figura 5 <strong>–</strong> Ex<strong>em</strong>plo de script<br />
Fonte: Argollo (2008)<br />
34<br />
Win<strong>do</strong>w.Localizar.ProcurarPor.TypeText(“automação”);<br />
Win<strong>do</strong>w.Localizar.Diferenciar.Click();<br />
Win<strong>do</strong>w.Localizar.Localizar.Click();<br />
MainWin<strong>do</strong>ws.Document.ChechSelText(“automação”);<br />
Para Argollo (2008), os scripts também apresentam algumas limitações, como por<br />
ex<strong>em</strong>plo:<br />
• Scripts são dependentes <strong>do</strong>s el<strong>em</strong>entos da interface gráfica: Se a interface<br />
mudar, o script para de funcionar;<br />
• As linguagens de testes normalmente reconhec<strong>em</strong> somente os el<strong>em</strong>entos básicos<br />
da interface gráfica.<br />
Algumas ferramentas ainda apresentam um terceiro fator negativo que é a<br />
impossibilidade de reaproveitamento <strong>do</strong> código <strong>em</strong> outro caso de teste. Voltar<strong>em</strong>os<br />
a falar de scripts e como superar essas limitações mais adiante.<br />
Já mencionamos que n<strong>em</strong> tu<strong>do</strong> pode ser automatiza<strong>do</strong>, no entanto pod<strong>em</strong> ocorrer<br />
casos <strong>em</strong> que determinada ferramenta de automação existe, mas não deve ser<br />
utilizada, ou seja, não dev<strong>em</strong>os apenas atentar para “o que pode ser<br />
automatiza<strong>do</strong>?”, mas também para “o que deve ser automatiza<strong>do</strong>?”.<br />
Essa decisão deve envolver os desenvolve<strong>do</strong>res e os gerentes de projeto. No Anexo<br />
E, segue um roteiro com questões que pod<strong>em</strong> orientar a decisão.<br />
Tanto as questões <strong>do</strong> Anexo E, quanto os apontamentos a seguir, tratam sobre a<br />
escolha entre os testes manuais e os automatiza<strong>do</strong>s, e serv<strong>em</strong> apenas para orientar,
pois ainda que se tenha a consciência de que um determina<strong>do</strong> procedimento de<br />
teste automatiza<strong>do</strong> deva ser a<strong>do</strong>ta<strong>do</strong> o equilíbrio com os custos e os prazos acabam<br />
se tornan<strong>do</strong> o ponto crucial de toda a questão. O próximo tópico t<strong>em</strong> como foco<br />
justamente isto e vai apresentar diversos fatores que muitas vezes faz<strong>em</strong> com que<br />
algumas palavras diferentes pareçam sinônimas, como custo, investimento e<br />
economia.<br />
Quadro 7 <strong>–</strong> Automação x teste manual<br />
Quan<strong>do</strong> a automação de testes faz senti<strong>do</strong>? Quan<strong>do</strong> focar <strong>em</strong> teste manual?<br />
Para valer a pena, dev<strong>em</strong>os observar as Para valer a pena focar <strong>em</strong> testes manuais,<br />
seguintes questões:<br />
dev<strong>em</strong>os observar as questões seguintes:<br />
• Os testes que usar<strong>em</strong> técnicas de regressão • Quan<strong>do</strong> se faz uso de testes de instalação,<br />
ou de confirmação. Quan<strong>do</strong> precisa constan- setup, operações muito específicas, como,<br />
t<strong>em</strong>ente <strong>do</strong> trabalho de repetir.<br />
por ex<strong>em</strong>plo, que envolvam hardware (ex.:<br />
• Quan<strong>do</strong> se faz uso de testes aleatórios instalação de componentes de equipamen-<br />
(ran<strong>do</strong>m ou monkeys testes) que utilizam tos). Isto inclui manutenções <strong>em</strong> geral.<br />
caminhos aleatórios grava<strong>do</strong>s por dentro da • Faz uso de testes de configuração e de com-<br />
aplicação e de grande quantidade de da<strong>do</strong>s patibilidade. Este tipo de teste geralmente<br />
de testes.<br />
requer muita intervenção humana.<br />
• Testes de carga, volume, capacidade. Como • O mesmo vale para testes de error handing<br />
responder se o sist<strong>em</strong>a funcionará com 50 (tratamento de erros) e de recuperação. No-<br />
mil usuários simultâneos?<br />
vamente este tipo de teste trabalha com er-<br />
• Performance e confiabilidade. Com a “chegaros força<strong>do</strong>s de maneira que repeti-los pode<br />
da” <strong>do</strong>s sist<strong>em</strong>as web, cada vez mais v<strong>em</strong>os ficar caro.<br />
este tipo de sist<strong>em</strong>a fazer uso de ferramen- • Testes de usabilidade. Mais um caso <strong>em</strong> que<br />
tas de performance.<br />
é preciso intervenção humana para o devi<strong>do</strong><br />
• Quan<strong>do</strong> se faz teste de componentes (unida- julgamento e validação <strong>do</strong>s testes.<br />
de) os quais dev<strong>em</strong> ser retesta<strong>do</strong>s várias • O mesmo anterior vale para <strong>do</strong>cumentação e<br />
vezes.<br />
Fonte: Molinari (2003, p.105)<br />
help.<br />
No gráfico a seguir (gra.1) pod<strong>em</strong>os ver que os testes manuais tornam-se mais<br />
dispendiosos que os diversos tipos de automação, porém a opção pelo teste manual<br />
pode ser determinada pelo t<strong>em</strong>po disponível e pela complexidade <strong>do</strong> teste, Molinari<br />
(2003, p.105).<br />
Aconselhamos aos que irão implantar a automação de testes, que busqu<strong>em</strong> definir<br />
estratégias de coleta e análises métricas relacionadas ao processo de teste de<br />
software, isso ajudará a justificar o investimento aplica<strong>do</strong> e a otimizar cada etapa,<br />
Fantinato (2004, p.8).<br />
Vejamos um caso prático, o uso <strong>do</strong> framework AutoTest que foi desenvolvi<strong>do</strong> sobre<br />
a plataforma IBM Rational Functional Tester for Java and Web.<br />
35
O processo foi utiliza<strong>do</strong> <strong>em</strong> um sist<strong>em</strong>a desenvolvi<strong>do</strong> pela <strong>em</strong>presa CPqD Telecom<br />
& IT Solutions, por meio da DSB <strong>–</strong> Diretoria de Soluções <strong>em</strong> Billing. A equipe de<br />
desenvolvimento era formada por cerca de 160 pessoas, das quais 25 trabalhavam<br />
na atividade de teste.<br />
700<br />
600<br />
500<br />
400<br />
300<br />
200<br />
100<br />
0<br />
Design Phase<br />
Release 1<br />
Release 2<br />
Release 3<br />
Release 4<br />
Release 5<br />
Release 6<br />
Release 7<br />
Release 8<br />
Release 9<br />
Release 10<br />
Gráfico 1 <strong>–</strong> Custo hipotético (<strong>em</strong> horas) para diferentes processos de teste<br />
Fonte: Mark Utting (apud ARGOLLO, 2008)<br />
Manual<br />
CaptureReplay<br />
Scripts<br />
ActionWord<br />
ModelBased<br />
Analisar<strong>em</strong>os apenas os da<strong>do</strong>s colhi<strong>do</strong>s nos módulos “Promoções” e “Atendimento a<br />
Clientes”.<br />
Do total de casos de teste projeta<strong>do</strong>s, primeiramente foram executa<strong>do</strong>s apenas os<br />
casos de teste mais críticos de forma manual.<br />
Tabela 1 <strong>–</strong> Métricas coletadas para o módulo de Promoções<br />
Tipo de métrica Teste manual Teste automatiza<strong>do</strong><br />
Número de casos de teste executa<strong>do</strong>s 930 1644<br />
Cobertura funcional <strong>do</strong>s casos de teste 1 65% 88%<br />
Erros detecta<strong>do</strong>s 174 + 33<br />
T<strong>em</strong>po de projeto de teste 101 h 101 h<br />
T<strong>em</strong>po de uma execução completa <strong>do</strong>s casos de teste 123 h 14 h<br />
Análise <strong>do</strong>s resulta<strong>do</strong>s e registro de erros 34 h 28 h<br />
Fonte: Fantinato (2004, p.10)<br />
36
7.200,00<br />
6.000,00<br />
4.800,00<br />
3.600,00<br />
2.400,00<br />
1.200,00<br />
-<br />
Evolução<br />
Re-execução 1<br />
Re-execução 2<br />
Re-execução 3<br />
Re-execução 4<br />
Re-execução 5<br />
Re-execução 6<br />
Re-execução 7<br />
Re-execução 8<br />
Re-execução 9<br />
Re-execução 10<br />
Gráfico 2 <strong>–</strong> Teste manual x teste automatiza<strong>do</strong> <strong>do</strong> módulo de Promoções<br />
Fonte: Fantinato (2004, p.11)<br />
Manual<br />
Automático<br />
Ganho<br />
Analisan<strong>do</strong> primeiramente os resulta<strong>do</strong>s <strong>do</strong> módulo “Promoções” e comparan<strong>do</strong> as<br />
formas (tab.1), v<strong>em</strong>os que o aumento na identificação de erros (+33) pode estar<br />
relaciona<strong>do</strong> ao aumento <strong>do</strong> escopo, mas não há como ignorar o fato de que o teste<br />
automatiza<strong>do</strong> é realiza<strong>do</strong> 15 vezes mais rápi<strong>do</strong> que o manual. Essa diferença se<br />
torna mais evidente quan<strong>do</strong> consideramos a repetição <strong>do</strong>s testes (gra.2).<br />
Tabela 2 <strong>–</strong> Linha ilustrativa de “Ganho”<br />
Gráfico 7 Gráfico 6<br />
Serviço Ganho Serviço Ganho<br />
Projeto 0% Evolução -68%<br />
Execução inicial -131% Re-execução 1 2%<br />
Re-execução 1 -61% Re-execução 2 30%<br />
Re-execução 2 -28% Re-execução 3 45%<br />
Re-execução 3 -9% Re-execução 4 55%<br />
Re-execução 4 4% Re-execução 5 62%<br />
Re-execução 5 13% Re-execução 6 66%<br />
Re-execução 6 20% Re-execução 7 70%<br />
Re-execução 7 25% Re-execução 8 73%<br />
Re-execução 8 29% Re-execução 9 75%<br />
Re-execução 9 32% Re-execução 10 77%<br />
Re-execução 10 35%<br />
Fonte: Fantinato (2004, p.11-12)<br />
A linha que representa o “Ganho” (gra.2 e gra.3) é apenas ilustrativa (tab.2), serve<br />
para mostrar o des<strong>em</strong>penho <strong>do</strong> teste automatiza<strong>do</strong> <strong>em</strong> relação ao teste manual.<br />
37
Tabela 3 <strong>–</strong> Métricas coletadas para o módulo de Atendimento a Clientes<br />
Tipo de métrica Teste manual Teste automatiza<strong>do</strong><br />
Número de casos de teste executa<strong>do</strong>s - 246<br />
Cobertura funcional <strong>do</strong>s casos de teste - 71%<br />
Erros detecta<strong>do</strong>s - 18<br />
T<strong>em</strong>po de projeto de teste - 718 h<br />
T<strong>em</strong>po de uma execução completa <strong>do</strong>s casos de teste<br />
525 h<br />
4 h<br />
Análise <strong>do</strong>s resulta<strong>do</strong>s e registro de erros<br />
Fonte: Fantinato (2004, p.12)<br />
(estima<strong>do</strong>)<br />
100 h<br />
(estima<strong>do</strong>)<br />
Quanto ao módulo “Atendimento a Clientes”, por se tratar de um módulo <strong>em</strong><br />
evolução (tab.3), as planilhas de teste não foram criadas durante a atividade de<br />
projeto de teste, mas apenas adaptadas a partir <strong>do</strong> projeto anterior para cobrir as<br />
funcionalidades adicionadas ou alteradas.<br />
1.800,00<br />
1.600,00<br />
1.400,00<br />
1.200,00<br />
1.000,00<br />
800,00<br />
600,00<br />
400,00<br />
200,00<br />
-<br />
Projeto<br />
Execução inicial<br />
Re-execução 1<br />
Re-execução 2<br />
Re-execução 3<br />
Re-execução 4<br />
Re-execução 5<br />
Re-execução 6<br />
Re-execução 7<br />
Re-execução 8<br />
Re-execução 9<br />
Re-execução 10<br />
Gráfico 3 <strong>–</strong> Teste manual x teste automatiza<strong>do</strong> <strong>do</strong> módulo de Atendimento a Clientes<br />
Fonte: Fantinato (2004, p.12)<br />
62 h<br />
Manual<br />
Automático<br />
Ganho<br />
A diferença de 525 horas para 4, no t<strong>em</strong>po de execução, é justificada por se tratar<br />
de um módulo com uma grande quantidade de operações, que d<strong>em</strong>andam muitos<br />
acessos ao banco de da<strong>do</strong>s, via SQL, tanto para preparar os testes quanto para<br />
analisar resulta<strong>do</strong>s.<br />
38
Não houve teste manual para este módulo, por isso que apenas foram estima<strong>do</strong>s os<br />
valores para efeito de comparação.<br />
Outros autores também realizaram comparações entre os testes manuais e os<br />
automatiza<strong>do</strong>s, para Linz e Daigl (apud CORREIA, 2004, p.2), a<strong>pós</strong> investimentos<br />
iniciais de criação de infra-estrutura, o gasto <strong>em</strong> testes automáticos representa 40%<br />
<strong>do</strong> gasto com testes manuais.<br />
3.1 CUSTOS E PRAZOS<br />
“Não pense <strong>em</strong> automação como um mecanismo para diminuir o prazo da realização<br />
<strong>do</strong>s testes, mas como uma forma de aproveitar melhor o t<strong>em</strong>po para obter um<br />
produto mais confiável.” (ARGOLLO, 2008).<br />
As palavras de Argollo nos l<strong>em</strong>brar da filosofia Kaizen, que prega a melhora<br />
continua <strong>do</strong>s processos. Também encontramos esse ideal nas <strong>em</strong>presas de nível 5<br />
<strong>do</strong> CMM (fig.4).<br />
Todas as pessoas envolvidas com testes dev<strong>em</strong> ter esse “horizonte” como meta,<br />
pois a simples repetição <strong>do</strong>s mesmos de forma automática não é suficiente para<br />
extrair um verdadeiro ganho econômico nas atividades de teste, é necessário uma<br />
melhoria contínua, para que possam ser executadas rotinas que não foram<br />
consideradas anteriormente. Por isso é importante adquirir ferramentas que<br />
possibilit<strong>em</strong> a reutilização de casos de testes, seja por meio de scripts ou por outra<br />
técnica qualquer.<br />
Dev<strong>em</strong>os buscar a reutilização, porque esse é um <strong>do</strong>s grandes benefícios da<br />
automação. Ela possibilita a execução de um teste de regressão completo <strong>em</strong> to<strong>do</strong> o<br />
programa com um mínimo de esforço e o máximo <strong>em</strong> qualidade. As <strong>em</strong>presas que<br />
faz<strong>em</strong> uso <strong>do</strong>s testes manuais tend<strong>em</strong> a fazer apenas testes de progressão, devi<strong>do</strong><br />
ao alto custo <strong>do</strong>s testes de regressão quan<strong>do</strong> realiza<strong>do</strong>s manualmente. Como<br />
39
pod<strong>em</strong>os ver a seguir Bartié (2002, p.45 e 193) reconhece o custo, mas é um <strong>do</strong>s<br />
que enfatizam a importância <strong>do</strong>s testes de regressão:<br />
O risco de que as novas alterações tenham comprometi<strong>do</strong> as funcionalidades<br />
anteriores tende a aumentar ainda mais à medida que o software vai se<br />
tornan<strong>do</strong> mais complexo.<br />
...<br />
Os custos relativos à execução <strong>do</strong>s testes de progressão não são<br />
importantes. São importantes os custos de execução <strong>do</strong>s testes de<br />
regressão, pois estes dev<strong>em</strong> ser continuamente executa<strong>do</strong>s ao longo da<br />
vida <strong>do</strong> software.<br />
Por outro la<strong>do</strong>, não investir na qualidade <strong>do</strong> software pode gerar prejuízos de<br />
diversas ordens. Conforme estu<strong>do</strong>s apresenta<strong>do</strong>s por Bartié (2002, p.6):<br />
• Mais de 30% <strong>do</strong>s projetos são cancela<strong>do</strong>s antes de ser<strong>em</strong> finaliza<strong>do</strong>s.<br />
• Mais de 70% <strong>do</strong>s projetos falham nas entregas das funcionalidades<br />
esperadas.<br />
• Os custos extrapolam <strong>em</strong> mais de 180% os valores originalmente<br />
previstos.<br />
• Os prazos exced<strong>em</strong> <strong>em</strong> mais de 200% os cronogramas originais.<br />
Não pod<strong>em</strong>os generalizar, consideran<strong>do</strong> que to<strong>do</strong>s esses probl<strong>em</strong>as têm sua orig<strong>em</strong><br />
na deficiência <strong>do</strong> processo de testes. Requisitos mal elabora<strong>do</strong>s, falhas no<br />
acompanhamento <strong>do</strong> cronograma ou sub-estimativas de prazos e custos, também<br />
são fatores que causam probl<strong>em</strong>as ao projeto, mas o processo de verificar antes<br />
para depois validar (Anexo D) ajuda a minimizar esses efeitos além de toda uma<br />
cultura de qualidade.<br />
Também não pod<strong>em</strong>os ignorar o fato de que a atividade de teste é cara e repetitiva.<br />
Dependen<strong>do</strong> <strong>do</strong> risco e da complexidade da aplicação, a parcela <strong>do</strong> esforço de<br />
desenvolvimento alocada ao teste varia entre 30% e 50%. O custo <strong>do</strong> teste na<br />
maioria <strong>do</strong>s sist<strong>em</strong>as comerciais varia entre 40% e 50% <strong>do</strong> custo total de<br />
desenvolvimento, Argollo (2008).<br />
Até o processo de obtenção de uma certificação, <strong>em</strong> um órgão internacional de<br />
qualidade, costuma ser b<strong>em</strong> caro.<br />
O CMM (Capability Maturity Model) é um desses padrões de qualidade. Para<br />
defender a tese de que vale a pena investir <strong>em</strong> um padrão de qualidade a SEI<br />
40
(Software Engineering Institute) realizou uma pesquisa, com base nos da<strong>do</strong>s e <strong>em</strong><br />
sua experiência ela estimou alguns valores para as <strong>em</strong>presas que a<strong>do</strong>tam o CMM.<br />
Inclusive já citamos essa pesquisa, quan<strong>do</strong> mencionamos que as <strong>em</strong>presas que se<br />
encontram no Nível 1, <strong>do</strong> modelo CMM, gastam cerca de 55% <strong>do</strong>s esforços <strong>em</strong><br />
correção de defeitos oriun<strong>do</strong>s <strong>do</strong> projeto de desenvolvimento. Veja agora o gráfico<br />
completo:<br />
Esforço de correção<br />
60%<br />
50%<br />
40%<br />
30%<br />
20%<br />
10%<br />
0%<br />
55%<br />
35%<br />
20%<br />
10%<br />
1 2 3 4 5<br />
Nível de maturidade<br />
Gráfico 4 <strong>–</strong> Esforço dedica<strong>do</strong> à correção de defeitos<br />
Fonte: Bartié (2002, p.14)<br />
“Muitos gerentes vê<strong>em</strong> o processo de automação de testes de software como algo<br />
que pouco agrega valor.” (MOLINARI, 2003, p.102).<br />
Por que será que, mesmo diante <strong>do</strong> gráfico anterior, os gerentes continuam<br />
tendenciosos a dispensar investimentos <strong>em</strong> testes? Provavelmente esse fato esta<br />
relaciona<strong>do</strong> ao alto grau de investimentos e esforços necessários no inicio da<br />
implantação de um programa de qualidade. Veja o próximo gráfico com mais alguns<br />
da<strong>do</strong>s levanta<strong>do</strong>s pelo SEI:<br />
5%<br />
41
Esforço gerencial<br />
30%<br />
25%<br />
20%<br />
15%<br />
10%<br />
5%<br />
0%<br />
0%<br />
25%<br />
15%<br />
10%<br />
1 2 3 4 5<br />
Nível de maturidade<br />
Gráfico 5 <strong>–</strong> Esforço gerencial para alcançar níveis maiores de maturidade<br />
Fonte: Bartié (2002, p.15)<br />
Não há gerente que não se pergunte “A <strong>em</strong>presa está preparada para receber uma<br />
nova cultura? Será que isso vai dar resulta<strong>do</strong>?”.<br />
Pod<strong>em</strong>os considerar que o gerente deve observar os seguintes custos, associa<strong>do</strong>s à<br />
implantação de um processo de testes automatiza<strong>do</strong>:<br />
• Aquisição da tecnologia, hardware gasto na instalação das ferramentas;<br />
• Recursos necessários à escolha <strong>do</strong>s tipos de ferramentas (planejamento,<br />
performance, teste de regressão, funcional, de monitoração, etc);<br />
• Recursos necessários à compra e instalação das ferramentas;<br />
• Treinamento;<br />
• Custos de uso da tecnologia. Licenças / quantidade de usuários das mesmas<br />
ferramentas;<br />
• Recursos necessários à automação (desenvolvimento de scripts);<br />
• Recursos necessários à manutenção <strong>do</strong>s scripts;<br />
• Suporte <strong>do</strong> fornece<strong>do</strong>r.<br />
5%<br />
42
Para piorar o quadro a experiência mostra que o esforço necessário para criar,<br />
verificar e <strong>do</strong>cumentar um teste automático é de 3 a 10 vezes maior <strong>do</strong> que o<br />
necessário para criar e executar o teste manualmente, Argollo (2008).<br />
Seja o teste manual ou automatiza<strong>do</strong>, o custo associa<strong>do</strong> à definição, <strong>do</strong>cumentação<br />
e execução de um processo de teste é recupera<strong>do</strong> ao permitir a detecção e correção<br />
<strong>do</strong>s defeitos nas fases iniciais <strong>do</strong> desenvolvimento de um sist<strong>em</strong>a, diminuin<strong>do</strong> os<br />
ciclos de desenvolvimento.<br />
Seguin<strong>do</strong> o modelo de PQS <strong>em</strong> “U” (Anexo D), identificamos as atividades de<br />
verificação no inicio <strong>do</strong> ciclo. Essas verificações são importantes na redução <strong>do</strong>s<br />
custos ao longo <strong>do</strong> processo, tanto que resultaram na regra de 10, formulada por<br />
Myers (gra.6). Segun<strong>do</strong> Myers um erro não identifica<strong>do</strong> nas fases iniciais <strong>do</strong><br />
desenvolvimento ocasiona prejuízos exponenciais à medida que o projeto avança.<br />
10000<br />
1000<br />
100<br />
10<br />
1<br />
Requisitos Análise e<br />
modelag<strong>em</strong><br />
Gráfico 6 <strong>–</strong> Regra de 10 de Myers<br />
Fonte: Bartié (2002, p.31)<br />
Código Teste de<br />
software<br />
Produção<br />
Veja a seguir um gráfico que apresenta levantamento feito por Argollo, sobre os<br />
custos da propagação <strong>do</strong>s defeitos e quanto foi gasto nas correções <strong>em</strong> cada fase<br />
<strong>do</strong> projeto.<br />
43
16.000,00<br />
14.000,00<br />
12.000,00<br />
10.000,00<br />
8.000,00<br />
6.000,00<br />
4.000,00<br />
2.000,00<br />
-<br />
Requisitos Projetos Codificação Teste Manutenção<br />
Gráfico 7 <strong>–</strong> Custo de correção de defeitos<br />
Fonte: Argollo (2008)<br />
Fases de desenvolvimento<br />
Não chega a ser igual ao idealiza<strong>do</strong> por Myers, mas pod<strong>em</strong>os notar que ele se<br />
aproximou muito da realidade.<br />
Esses gráficos mostram a importância da qualidade e que ela não se aplica apenas<br />
a fase de testes. Ela deve existir <strong>em</strong> todas as etapas, verifican<strong>do</strong> a conformidade<br />
<strong>do</strong>s trabalhos realiza<strong>do</strong>s.<br />
Quanto à opção por um teste manual ou automatiza<strong>do</strong>, vamos ver a seguir um caso<br />
apresenta<strong>do</strong> por Argollo na SBQS 2008. O relato envolve o desenvolvimento de um<br />
sist<strong>em</strong>a da área de seguros, a gerência teve que decidir entre qual esforço <strong>em</strong>pregar<br />
no processo de testes, veja os da<strong>do</strong>s disponibiliza<strong>do</strong>s a gerência:<br />
• Execução <strong>do</strong>s testes manuais: 5 p/m (5 pessoas x 4 s<strong>em</strong>anas)<br />
• Automação <strong>do</strong>s testes: 18 p/m (3 pessoas x 6 meses)<br />
Pod<strong>em</strong>os ver que o esforço para os testes automáticos é b<strong>em</strong> maior que a<br />
realização <strong>do</strong>s testes manuais, porém dev<strong>em</strong>os perceber que esse esforço só será<br />
44
feito uma única vez e o t<strong>em</strong>po necessário à execução automatizada <strong>do</strong>s mesmos é<br />
de apenas uma s<strong>em</strong>ana, exigin<strong>do</strong> um esforço de 1,25 p/m.<br />
Os gerentes também consideraram a possibilidade de repetir a avaliação, nesse<br />
caso o investimento seria recupera<strong>do</strong> <strong>em</strong> cinco ciclos e a diferença poderia ser<br />
reinvestida no aprimoramento <strong>do</strong>s testes.<br />
A escolha foi pela automação e o resulta<strong>do</strong> foi o seguinte:<br />
• O número de incidentes no sist<strong>em</strong>a <strong>em</strong> produção caiu de 80% a 90%;<br />
• A economia para <strong>em</strong>presa ao término de um ano foi <strong>superior</strong> ao orçamento anual<br />
<strong>do</strong> departamento de teste.<br />
Continuar<strong>em</strong>os a comparar os testes manuais e os automatiza<strong>do</strong>s. Veja a próxima<br />
tabela, ela apresenta os custos de testes referentes à preparação <strong>do</strong> ambiente, de<br />
execução e de conferência:<br />
Tabela 4 <strong>–</strong> Comparativo entre testes manuais e automatiza<strong>do</strong>s<br />
Etapas <strong>do</strong>s testes Teste manual<br />
Teste<br />
automatiza<strong>do</strong><br />
Melhoria<br />
(%)<br />
Planejamento 32 40 -25%<br />
Definição <strong>do</strong>s casos de testes 262 117 55%<br />
Execução <strong>do</strong>s testes 466 23 95%<br />
Conferência <strong>do</strong>s testes 117 58 50%<br />
Gerenciamento <strong>do</strong> erro 117 23 80%<br />
Relatórios finais 96 16 83%<br />
Duração total (<strong>em</strong> horas) 1.090 277 75%<br />
Fonte: The Newsletter of the Quality Assurance (apud BARTIÉ, 2002, p.64)<br />
Esta tabela d<strong>em</strong>onstra um estu<strong>do</strong> que envolveu 1.750 casos de testes e 700 defeitos<br />
existentes. À medida que re-executamos os testes, o ganho de t<strong>em</strong>po, controle e<br />
confiabilidade fica claro.<br />
A mera repetição não deve ser o único fator para a opção pelos testes<br />
automatiza<strong>do</strong>s e a a<strong>do</strong>ção destes s<strong>em</strong> aplicá-los <strong>em</strong> testes de regressão total<br />
também é algo que deixa a desejar.<br />
45
Pod<strong>em</strong>os ver no quadro a seguir que a regressão parcial usan<strong>do</strong> testes<br />
automatiza<strong>do</strong>s não reduz o risco de não cobertura, apenas reduz o custo e <strong>em</strong><br />
alguns casos n<strong>em</strong> isso.<br />
Quadro 8 <strong>–</strong> Alternativas na execução <strong>do</strong>s testes<br />
Regressão Total Regressão Parcial<br />
• Baixo risco de não-cobertura • Alto risco de não cobertura<br />
• Alto custo de execução<br />
• Custo de execução menor<br />
Teste Manual • Execução lenta<br />
• Execução lenta<br />
• Reutilização zero<br />
• Reutilização zero<br />
• Interferências humanas<br />
• Interferências humanas<br />
• Baixo risco de não-cobertura • Alto risco de não cobertura<br />
Teste<br />
Automatiza<strong>do</strong><br />
• Baixo custo de execução<br />
• Execução rápida<br />
• Reutilização total<br />
• Menor custo de execução possível<br />
• Execução mais rápida possível<br />
• Reutilização total<br />
• S<strong>em</strong> interferências humanas • S<strong>em</strong> interferências humanas<br />
Fonte: Bartié (2002, p.196)<br />
A equipe responsável pelos testes deve ter a preocupação de reduzir os riscos ao<br />
máximo e <strong>em</strong> cada uma das categorias (qua.4).<br />
25<br />
20<br />
15<br />
10<br />
5<br />
0<br />
Funcionalidade<br />
Performance<br />
Segurança<br />
Usabilidade<br />
Gráfico 8 <strong>–</strong> Risco de teste numa aplicação de TI tradicional<br />
Fonte: Molinari (2003, p.180)<br />
Disponibilidade<br />
Operabilidade<br />
Como já mencionamos anteriormente, o nível de importância de cada categoria pode<br />
mudar <strong>em</strong> função <strong>do</strong> projeto e <strong>do</strong>s riscos envolvi<strong>do</strong>s.<br />
46
Essas diferenças pod<strong>em</strong> estar no formato da aplicação <strong>em</strong> si, ou seja, se é um<br />
projeto de software ou site web.<br />
Mesmo na escolha <strong>do</strong> titulo deste trabalho tiv<strong>em</strong>os a preocupação de enfatizar essa<br />
diferença.<br />
Molinari (2003, p.180) realça essa diferença ao apresentar uma maior distribuição<br />
<strong>do</strong>s riscos nos projetos web (gra.8 e gra.9).<br />
Quan<strong>do</strong> comparamos uma aplicação web com uma aplicação que funciona sobre<br />
uma estrutura cliente/servi<strong>do</strong>r as diferenças na distribuição <strong>do</strong>s riscos diminu<strong>em</strong>.<br />
14<br />
12<br />
10<br />
8<br />
6<br />
4<br />
2<br />
0<br />
Funcionalidade<br />
Performance da Residência<br />
Segurança<br />
Itens de Performace <strong>do</strong> Site<br />
Integração<br />
Gráfico 9 <strong>–</strong> Risco de teste numa aplicação web<br />
Fonte: Molinari (2003, p.181)<br />
Infra-estrutura<br />
Usabilidade<br />
Localização<br />
Disponibilidade Pós-entrega<br />
Uma “boa pratica” <strong>em</strong> testes é separar a equipe que testa da equipe que<br />
desenvolve. Pensan<strong>do</strong> nisso muitas <strong>em</strong>presas contratam uma FSW (fábrica de<br />
software) para desenvolver e uma FTS (fábrica de testes) para testar. Isso não<br />
significa que a FSW não vai fazer testes, ela inclusive se preocupa b<strong>em</strong> mais com os<br />
erros <strong>em</strong> uma situação assim, pois, caso a FTS ache erros, a FSW, além de ter o<br />
custo de consertá-los, arca com o custo de reenvio a FTS para o re-teste.<br />
47
A FSW é responsável, principalmente, pelos testes de unidade, integra<strong>do</strong> e de<br />
sist<strong>em</strong>as. Esses testes não são feitos pela FTS, mas pod<strong>em</strong> passar pela inspeção<br />
desta. Segue abaixo um quadro com um ex<strong>em</strong>plo de distribuição de esforço para as<br />
atividades da FTS:<br />
Tabela 5 <strong>–</strong> Distribuição <strong>do</strong> esforço <strong>em</strong> testes<br />
PROJETO MANUTENÇÕES<br />
Atividade<br />
Percentual de Percentual de<br />
Esforço<br />
Esforço<br />
Auditoria de Código-Fonte --- ---<br />
Inspeção de artefatos de teste 5% 5%<br />
Planejamento de Teste 32% 15%<br />
Execução e Evidenciação de Teste sobre uma<br />
entrega parcial de software<br />
Execução e evidenciação de teste de Aceite de um<br />
28% 30%<br />
Serviço de Desenvolvimento e/ou Manutenção de<br />
Software<br />
22% 35%<br />
Publicação de Ocorrências de Teste 3% 5%<br />
Automatização de teste<br />
Fonte: Carvalho (2008, s.16)<br />
10% 10%<br />
Quan<strong>do</strong> a <strong>em</strong>presa contratante resolve a<strong>do</strong>tar um ambiente ativo para homologação,<br />
a FTS pode ser contratada para a tarefa de montar nesse ambiente os mesmos<br />
sist<strong>em</strong>as que se encontram <strong>em</strong> produção. A distribuição de esforço para essa tarefa<br />
pode ser visto a seguir:<br />
Tabela 6 <strong>–</strong> Distribuição <strong>do</strong> esforço <strong>em</strong> lega<strong>do</strong>s (implantação)<br />
Atividade Percentual de Esforço<br />
Planejamento de Teste 20%<br />
Acompanhamento da montag<strong>em</strong> <strong>do</strong> sist<strong>em</strong>a no<br />
ambiente de homologação<br />
30%<br />
Execução e evidenciação de teste sobre sist<strong>em</strong>a<br />
40%<br />
lega<strong>do</strong><br />
Automatização de teste 10%<br />
Fonte: Carvalho (2008, s.17)<br />
Consider<strong>em</strong>os o seguinte ex<strong>em</strong>plo: A FSW vai desenvolver um projeto 700 PF<br />
(pontos de função). Consideran<strong>do</strong> que a FTS cobra R$ 50,00 2 para uma<br />
produtividade de 3 pf/h (pontos de função por hora) <strong>em</strong> caso de projetos novos,<br />
ter<strong>em</strong>os um custo total, com um processo automatiza<strong>do</strong> de testes, de R$ 93.340,00,<br />
veja o Anexo G. No Anexo H e I, apresentamos ex<strong>em</strong>plos de cálculos sobre serviços<br />
2 Os valores são fictícios, mas muito próximos <strong>do</strong> que é cobra<strong>do</strong> no merca<strong>do</strong> atualmente (Set/08).<br />
48
de manutenção e preparação de ambiente, respectivamente. Os valores calcula<strong>do</strong>s<br />
<strong>em</strong> horas pod<strong>em</strong> ser utiliza<strong>do</strong>s facilmente na montag<strong>em</strong> de cronogramas <strong>em</strong><br />
programas como o MS Project da Microsoft.<br />
Vimos até aqui diversas razões para optar pelo processo de testes automatiza<strong>do</strong>,<br />
mas quan<strong>do</strong> nos deparamos com um custo de quase c<strong>em</strong> mil reais é natural ter<br />
certo receio. Afinal sab<strong>em</strong>os agora quanto custa, mas não sab<strong>em</strong>os quanto dinheiro<br />
economizamos ao a<strong>do</strong>tar essa prática.<br />
Molinari (2003, p.40) propôs a seguinte fórmula para medir o custo de um defeito<br />
encontra<strong>do</strong>:<br />
Custo médio <strong>do</strong> defeito =<br />
(nº de pessoas envolvidas * nº de dias gastos) * custo por pessoa-dia<br />
(nº de defeitos resolvi<strong>do</strong>s)<br />
Esta fórmula pode ajudar a compl<strong>em</strong>entar as avaliações de custos futuros com base<br />
<strong>em</strong> da<strong>do</strong>s históricos e estimar uma produtividade <strong>em</strong> pontos de função, mas não<br />
chega a dizer quanto economizamos com o uso <strong>do</strong>s testes. Isso não significa que<br />
este tipo de informação não deva ser registrada, pod<strong>em</strong>os inclusive usar<br />
ferramentas bug tracking para esse trabalho, conforme aconselha Ungarelli (2007):<br />
É desejável, para o acompanhamento e controle <strong>do</strong>s bugs registra<strong>do</strong>s, a<br />
utilização de uma ferramenta de bug tracking assim, características<br />
importantes de um registro poderão ser facilmente resgatadas. Segu<strong>em</strong><br />
algumas características importantes: gravidade <strong>do</strong> bug, prioridade <strong>do</strong> bug,<br />
status, versão <strong>do</strong> software ou artefato, a fase que bug ocorreu, histórico,<br />
relator e responsável pela resolução, etc.<br />
Da mesma forma que acreditamos que não é possível automatizar tu<strong>do</strong> também<br />
acreditamos que não é preciso medir tu<strong>do</strong>, para não tornar essa tarefa burocrática e<br />
cara d<strong>em</strong>ais.<br />
To<strong>do</strong> o esforço para encontrar, mensurar, quantificar e analisar falhas <strong>em</strong> uma<br />
aplicação só vai fazer senti<strong>do</strong> se o erro for corrigi<strong>do</strong>, Molinari (2003, p.52) l<strong>em</strong>bra<br />
b<strong>em</strong> o caso <strong>do</strong> processa<strong>do</strong>r Pentium da Intel que apresentou um Bug <strong>em</strong> 1994. A<br />
Intel havia descoberto o probl<strong>em</strong>a através de seus engenheiros de teste, antes <strong>do</strong><br />
chip ser lança<strong>do</strong>, porém, por decisão gerencial, houve o lançamento <strong>do</strong> produto, pois<br />
49
havia o entendimento que o probl<strong>em</strong>a não era severo. Por ex<strong>em</strong>plo, ao tentar fazer o<br />
cálculo:<br />
(4.195.835 / 3.145.727) * 3.145.727 / 4.195.835<br />
Se a resposta fosse zero 3 , o computa<strong>do</strong>r funcionava; caso contrário, aparecia um<br />
“bug” no chip que travava a máquina.<br />
No dia 30 de outubro de 1994, Dr. Thomas R. Nicely <strong>do</strong> Lynchburg College (Virginia<br />
- EUA) rastreou um resulta<strong>do</strong> inespera<strong>do</strong> devi<strong>do</strong> a probl<strong>em</strong>as de divisão. O<br />
probl<strong>em</strong>a foi joga<strong>do</strong> na internet, mas a Intel não considerava um “bug” de fato e ela<br />
tentou vender isso a imprensa, mas acabou amargan<strong>do</strong> um prejuízo de mais de US$<br />
400 milhões com reposição de chips.<br />
Quer<strong>em</strong>os ilustrar com essa história que os testes feitos pelos engenheiros da Intel,<br />
certamente, custaram b<strong>em</strong> menos que os milhões gastos na substituição <strong>do</strong>s<br />
processa<strong>do</strong>res.<br />
O custo <strong>do</strong>s testes pode ter si<strong>do</strong> mais baixo <strong>do</strong> que se imagina, caso a falha tenha<br />
si<strong>do</strong> identificada no inicio <strong>do</strong> processo, conforme principio de Myers (gra.6), pois não<br />
ficou claro <strong>em</strong> que momento o erro foi encontra<strong>do</strong> nos laboratórios da Intel.<br />
Brito (2000, p.47), chama a atenção para o simples ato de fazer uma conferência <strong>do</strong><br />
que foi realiza<strong>do</strong> <strong>em</strong> determinada etapa. Ela cita um caso <strong>em</strong> que uma revisão de<br />
requisitos foi efetuada com a participação <strong>do</strong> seguinte quadro de funcionários:<br />
Tabela 7 <strong>–</strong> Custos das atividades de uma revisão<br />
Profissional Quantidade Custo/Hora T<strong>em</strong>po Estima<strong>do</strong> Total<br />
Analista Pleno 3 28,11 04:30 379,49<br />
Programa<strong>do</strong>r 1 21,48 04:30 96,66<br />
Líder de Projeto 1 36,28 06:00 217,68<br />
Total 693,83<br />
Fonte: Brito (2000, p.47)<br />
3 O cálculo dessa equação retorna 1 nos processa<strong>do</strong>res atuais<br />
50
Essa tabela t<strong>em</strong> o objetivo de fornecer rapidamente a informação sobre os custos<br />
despendi<strong>do</strong>s com uma revisão. Ainda que foss<strong>em</strong> realizadas 5 revisões, um número<br />
exagera<strong>do</strong>, para uma única especificação de requisitos, o custo de R$ 3.469,05 é<br />
aceitável se compara<strong>do</strong> ao valor <strong>do</strong> projeto que estava <strong>em</strong> questão (R$ 827.608,20),<br />
pois as revisões evitam que, no momento da homologação, sejam descobertos erros<br />
de requisitos funcionais que inviabilizam sua implantação. Causan<strong>do</strong> assim um<br />
prejuízo maior na forma de retrabalho, caso o cliente ainda deseje o produto e<br />
concorde <strong>em</strong> aguardar sua correção.<br />
Brito não cita como essa verificação foi feita, pois ainda pod<strong>em</strong>os encontrar<br />
diferenciais entre a forma manual e automática nessa questão. Veja o quadro a<br />
seguir:<br />
Quadro 9 <strong>–</strong> Alternativas na conferência <strong>do</strong>s testes<br />
Conferências Manuais Conferências Automatizadas<br />
• Planejamento mais simples<br />
• Planejamento mais complexo<br />
• Maior custo de re-execução<br />
• Menor custo de re-execução<br />
• Execução mais lenta<br />
• Execução mais rápida<br />
• Reutilização zero<br />
• Reutilização total<br />
• Com interpretações humanas<br />
Fonte: Bartié (2002, p.198)<br />
• S<strong>em</strong> interpretações humanas<br />
Nas fases iniciais pode ser preferível a<strong>do</strong>tar conferências manuais, como a revisão<br />
de requisitos. Principalmente quan<strong>do</strong> não t<strong>em</strong>os a intenção de fazer uma nova<br />
verificação.<br />
3.1.1 Adquirin<strong>do</strong> uma ferramenta<br />
Exist<strong>em</strong> opções para <strong>em</strong>presa de qualquer porte, desde caríssimos “elefantes<br />
brancos” até as chamadas Open Source. Quan<strong>do</strong> a dúvida aparece Molinari (p.109-<br />
114) sugere fazer o seguinte:<br />
• Definir requerimentos iniciais (Quais probl<strong>em</strong>as a ferramenta deve resolver? Que<br />
recursos a ferramenta precisa ter para ser efetiva no seu ambiente? Quais são<br />
suas regras de utilização, custo, etc?)<br />
51
o Itens de compatibilidade (sist<strong>em</strong>a operacional, linguag<strong>em</strong> de programação,<br />
outros softwares)<br />
o Audiência com a ferramenta (Solicitar uma apresentação da ferramenta; Qu<strong>em</strong><br />
usará a ferramenta no dia-a-dia? Quanto é necessário <strong>em</strong> t<strong>em</strong>po e energia<br />
para treinamento? Como se espera que a automação de testes seja paga?)<br />
o Regra financeira (Determinar o budget (orçamento) antes de ir as compras;<br />
Inclui quantas licenças, treinamento, manutenção e impl<strong>em</strong>entação?;<br />
Necessidade de aquisição de máquinas exclusivas para testes; Quais os<br />
benefícios espera<strong>do</strong>s, são quantificáveis e mensuráveis? Qual o ROI (returno<br />
of investiment))<br />
o Requerimento de negócio (veja Anexo J)<br />
• Investigar as opiniões (Internet, NewsGroups, literatura disponível, veja o que<br />
outras pessoas a<strong>do</strong>taram, <strong>em</strong> que a ferramenta é melhor ou pior que a<br />
concorrência?)<br />
• Refinar os seus requerimentos (discuta com qu<strong>em</strong> vai usar)<br />
• Refinar a lista (selecione as três melhores com base na lista de requerimentos)<br />
• Avaliar os finalistas (ver os softwares de d<strong>em</strong>onstrações ou hands-on)<br />
• Implantação da ferramenta escolhida (treinamento, piloto, inicie medições,<br />
acompanhe o processo, comunicação clara)<br />
As ferramentas Open Source t<strong>em</strong> como positivo o preço, mas as soluções<br />
comerciais 4 se defend<strong>em</strong> argumentan<strong>do</strong> que as ferramentas gratuitas não oferec<strong>em</strong><br />
integração.<br />
Entre as ferramentas Open Source o OpenSta da Cyrano t<strong>em</strong> ofereci<strong>do</strong> alguma<br />
integração, mas ainda é limita<strong>do</strong>. Apesar dessas limitações o Watir (Web Application<br />
Testing in Ruby) e o Selenium tëm ganha<strong>do</strong> força no merca<strong>do</strong>.<br />
Entre os grandes fornece<strong>do</strong>res de soluções comerciais t<strong>em</strong>os a integração como<br />
ponto positivo e negativo o preço e adequação.<br />
Outras ferramentas serão mencionadas mais adiante.<br />
4 Vamos chamar de solução comercial as ferramentas que não são gratuitas.<br />
52
3.2 TIPOS DE AUTOMAÇÃO<br />
Da mesma forma que não há um consenso entre os autores sobre os tipos de<br />
testes, suas classificações e inter-relações, o mesmo ocorre com os tipos de<br />
automação, mas concordamos <strong>em</strong> dizer que “As principais técnicas de automação<br />
de teste apresentadas na literatura são: record & playback, programação de scripts,<br />
data-driven e keyword-driven.” (FANTINATO, 2004, p.2).<br />
Vamos apresentar também a visão de outros autores.<br />
Caetano (2007) agrupou os tipos de automação <strong>em</strong> <strong>do</strong>is paradigmas, os testes<br />
basea<strong>do</strong>s na interface gráfica e os basea<strong>do</strong>s na lógica de negócio. Veja o quadro a<br />
seguir que apresenta as vantagens e desvantagens de cada um:<br />
Paradigma Vantagens<br />
Quadro 10 <strong>–</strong> Tipos de automação<br />
Desvantagens<br />
Basea<strong>do</strong> na Não requer modificações na aplicação Existe uma forte dependência da<br />
Interface Gráfica para criar os testes automatiza<strong>do</strong>s. estabilidade da interface gráfica. Se a<br />
Também não é necessário tornar a interface gráfica mudar, os testes<br />
aplicação mais fácil de testar<br />
falham. Baixo des<strong>em</strong>penho para testes<br />
(testabilidade) porque os testes se automatiza<strong>do</strong>s que exig<strong>em</strong> centenas de<br />
baseiam na mesma interface utilizada milhares de repetições, testes de<br />
pelos usuários.<br />
funcionalidades que realizam cálculos<br />
complexos, integração entre sist<strong>em</strong>as<br />
diferentes e assim por diante.<br />
Basea<strong>do</strong> na Foco na camada onde existe maior Requer grandes modificações na<br />
Lógica de probabilidade de existir erros.<br />
aplicação para expor as<br />
Negócio Independência das mudanças da funcionalidades ao mun<strong>do</strong> exterior.<br />
interface gráfica. Alto des<strong>em</strong>penho para Exige profissionais especializa<strong>do</strong>s <strong>em</strong><br />
testes automatiza<strong>do</strong>s que exig<strong>em</strong> programação para criar os testes<br />
centenas de milhares de repetições, automatiza<strong>do</strong>s. Exist<strong>em</strong> poucas<br />
testes de funcionalidades que realizam ferramentas/frameworks que suportam<br />
cálculos complexos, integração entre essa abordag<strong>em</strong> (normalmente é<br />
sist<strong>em</strong>as diferentes e assim por diante.<br />
Fonte: Caetano (2007)<br />
necessário criar soluções caseiras).<br />
Molinari (2003, p.107-108) reconhece que não há uma unanimidade no merca<strong>do</strong> <strong>em</strong><br />
relação aos tipos de ferramentas de teste existentes e que não existe uma<br />
classificação “mínima”, mas ele defende a existência de duas correntes. Uma<br />
comercial, que foca as funcionalidades, e outra acadêmica, que foca a forma básica<br />
de concepção (Anexo K).<br />
53
Segun<strong>do</strong> Bartié (2002, p.181) a automação, que é desenvolvida <strong>em</strong> paralelo ao<br />
desenvolvimento da aplicação principal, pode ser classificada <strong>em</strong> <strong>do</strong>is tipos de<br />
componentes de testes fundamentais: controla<strong>do</strong>res e simula<strong>do</strong>res.<br />
Os controla<strong>do</strong>res de testes (Test-drivers) serv<strong>em</strong> para testar uma unidade de<br />
software, disparan<strong>do</strong> chamadas com os mais varia<strong>do</strong>s cenários existentes. Já os<br />
simula<strong>do</strong>res (Stubs) testam tanto software quanto hardware, crian<strong>do</strong> artificialmente<br />
“respostas simuladas” que imitam conversas entre aplicativos, como, por ex<strong>em</strong>plo, o<br />
teste de uma máquina que faz cálculos com base na velocidade <strong>do</strong> vento, ao invés<br />
de produzir o vento é melhor alimentar a máquina com as mais variadas velocidades<br />
<strong>do</strong> ar para concluir os testes mais rapidamente e de forma mais completa, pois<br />
poder<strong>em</strong>os simular todas as possibilidades.<br />
Bartié (2002, p.185-192) separa componentes de ferramentas de testes (que ele<br />
também chama de CAST, Computer-Aided Software Testing), para ele as<br />
ferramentas de testes pod<strong>em</strong> ser classificadas <strong>em</strong> cinco categorias, com suas<br />
respectivas características:<br />
• Planejamento de testes<br />
o Análise de criticidade <strong>–</strong> prioriza testes, estima t<strong>em</strong>po, custo e equipes;<br />
o Gera<strong>do</strong>r de <strong>do</strong>cumentos <strong>–</strong> gestão de versão, organiza work-flow de prepara-<br />
ção, elaboração, inspeção e aceite de <strong>do</strong>cumentos.<br />
• Revisões e inspeções<br />
o Análise de complexidade <strong>–</strong> auxiliam na identificação de áreas complexas, a<br />
experiência diz que <strong>em</strong> 20% está 80% <strong>do</strong>s probl<strong>em</strong>as;<br />
o Compreensão de código <strong>–</strong> auxilia a inspeção de código-fonte;<br />
o Análise sintática e de s<strong>em</strong>ântica <strong>–</strong> localiza erros de sintaxe que o compila<strong>do</strong>r<br />
não detecta.<br />
• Modelag<strong>em</strong> e automação<br />
o Modelag<strong>em</strong> de testes <strong>–</strong> planeja e constrói os testes identifican<strong>do</strong> os cenários<br />
de teste;<br />
o Gera<strong>do</strong>r de massa de da<strong>do</strong>s;<br />
o Automatiza<strong>do</strong>r de scripts.<br />
• Execução e conferência<br />
54
o Executor de scripts;<br />
o Análise de cobertura <strong>–</strong> usa<strong>do</strong> nos testes caixa branca para identificar áreas <strong>do</strong><br />
código não cobertas pelos testes <strong>em</strong> execução;<br />
o Testa<strong>do</strong>res de m<strong>em</strong>ória <strong>–</strong> detecta probl<strong>em</strong>as de uso e alocação de m<strong>em</strong>ória;<br />
o Simula<strong>do</strong>res e medi<strong>do</strong>res de performance <strong>–</strong> destinam-se aos testes de carga,<br />
volume e performance.<br />
• Suporte aos testes<br />
o Gerenciamento de defeitos <strong>–</strong> produz indica<strong>do</strong>res diversos de qualidade;<br />
o Gerenciamento de configurações <strong>–</strong> controla mudanças <strong>em</strong> <strong>do</strong>cumentação, fon-<br />
tes e ambientes físicos.<br />
Carvalho e Filho (2005) faz<strong>em</strong> distinção entre ferramentas usadas <strong>em</strong> plataforma<br />
alta (mainframe) e plataforma baixa (Win<strong>do</strong>ws e Sun). Ambas são s<strong>em</strong>elhantes na<br />
automação que executa as mesmas ações de um usuário on-line e na necessidade<br />
de programação. Quanto às diferenças, pod<strong>em</strong>os citar que o teste automatiza<strong>do</strong> na<br />
plataforma alta pode ser executa<strong>do</strong> <strong>em</strong> batch, ou seja, não há necessidade de uma<br />
estação dedicada ao teste e os objetos a ser<strong>em</strong> automatiza<strong>do</strong>s na plataforma alta<br />
obedec<strong>em</strong> a padrões rígi<strong>do</strong>s, característicos dessa plataforma, enquanto que os da<br />
plataforma baixa estão <strong>em</strong> constante processo de evolução.<br />
Caetano (2007) também faz referência à filosofia apresentada pelo "Guide to the<br />
CSTE Common Body of Knowledge" <strong>do</strong> QAI que diz: apesar de não existir uma<br />
categorização amplamente difundida das ferramentas de teste, a experiência t<strong>em</strong><br />
mostra<strong>do</strong> que elas são normalmente agrupadas <strong>em</strong> 8 áreas distintas:<br />
1. Ferramentas de automação de testes de regressão;<br />
2. Ferramentas para gestão de defeitos;<br />
3. Ferramentas para testes de performance/stress;<br />
4. Ferramentas manuais;<br />
5. Ferramentas de rastreabilidade;<br />
6. Ferramentas de cobertura de código;<br />
7. Ferramentas para gestão de testes;<br />
8. Ferramentas de apoio à execução <strong>do</strong>s testes.<br />
55
Argollo (2008) defende ainda os testes basea<strong>do</strong>s <strong>em</strong> modelos. Neste tipo os casos<br />
são deriva<strong>do</strong>s de um modelo que descreve as propriedades e características <strong>do</strong><br />
sist<strong>em</strong>a <strong>em</strong> teste. Este modelo fornece uma descrição <strong>do</strong> comportamento <strong>do</strong> sist<strong>em</strong>a<br />
<strong>em</strong> avaliação.<br />
Conforme estimativa da Mark Utting, apresentada por Argollo, os testes basea<strong>do</strong>s<br />
<strong>em</strong> modelos pod<strong>em</strong> ser mais eficientes que as outras técnicas (gra.1) e no futuro ela<br />
pode se tornar uma das principais técnicas utilizadas pelo merca<strong>do</strong>.<br />
Caetano (2007) cita ainda os testes <strong>do</strong> tipo Interface de Linha de Coman<strong>do</strong><br />
(Command Line Interface - CLI) onde a interação ocorre através de um prompt ou<br />
shell <strong>do</strong> sist<strong>em</strong>a operacional.<br />
A lógica de negócio da aplicação pode ser exercitada por meio da execução de um<br />
conjunto de coman<strong>do</strong>s e parâmetros pré-determina<strong>do</strong>s. Talvez você esteja<br />
pensan<strong>do</strong> nos arquivos BAT <strong>do</strong> DOS, mas não é esse o caso. O objetivo da CLI é<br />
fornecer uma interface para o mun<strong>do</strong> exterior que não seja dependente da interface<br />
gráfica da aplicação, controlar a execução <strong>do</strong>s testes e apresentar os resulta<strong>do</strong>s.<br />
3.2.1 Capture/Playback (Captura e executa)<br />
Qu<strong>em</strong> já utilizou “macros” no Word ou Excel, t<strong>em</strong> uma boa idéia de como a técnica<br />
de Capture/Playback funciona.<br />
Ao acionar o recurso de gravação/captura (Record/Playback ou Capture/Playback)<br />
a ferramenta passa a fazer o registro de to<strong>do</strong>s os passos <strong>do</strong> usuário, nesse<br />
momento dev<strong>em</strong>os executar os casos de testes e interromper o processo de<br />
gravação quan<strong>do</strong> desejarmos incluir verificações.<br />
Internamente a ferramenta terá cria<strong>do</strong> um script com essas ações.<br />
56
Da mesma forma que ocorre com as macros no Word e no Excel, pod<strong>em</strong>os repetir<br />
todas as ações gravadas bastan<strong>do</strong> executar o script cria<strong>do</strong>.<br />
Pod<strong>em</strong>os ver que a geração <strong>do</strong>s scripts é feita de forma rápida e fácil. Possibilitan<strong>do</strong><br />
que o automatiza<strong>do</strong>r não detenha conhecimento de programação e não onere a<br />
primeira execução <strong>do</strong>s testes trabalhan<strong>do</strong> horas <strong>em</strong> scripts complexos (gra.3).<br />
Porém com o decorrer <strong>do</strong> t<strong>em</strong>po essa técnica não se mostra tão eficiente (gra.1).<br />
Quan<strong>do</strong> optamos por um testa<strong>do</strong>r que não vai manipular os scripts ou até pelo fato<br />
da ferramenta não permitir essa manipulação, estamos condicionan<strong>do</strong> a criação de<br />
novos scripts toda vez que precisarmos de novos testes ou quan<strong>do</strong> algo for muda<strong>do</strong><br />
na interface.<br />
Devi<strong>do</strong> à falta de coman<strong>do</strong>s de controle de fluxo e pela impossibilidade <strong>do</strong> uso de<br />
tabelas, um testa<strong>do</strong>r, que conhece programação, pode se deparar com uma<br />
quantidade muito grande de scripts para manipular.<br />
Segun<strong>do</strong> Correia (2004, p.6), a maioria das ferramentas que utilizam essa técnica<br />
interage com o standard Microsoft Foundation Class Library (MFC), ou seja, caso o<br />
sist<strong>em</strong>a a ser testa<strong>do</strong> esteja usan<strong>do</strong> uma tecnologia diferente como, por ex<strong>em</strong>plo, a<br />
Java Foundation Class Library, a ferramenta pode não funcionar. Por isso que<br />
algumas ferramentas também trabalham com o reconhecimento <strong>do</strong>s objetos através<br />
das coordenadas espaciais <strong>do</strong> ecrã.<br />
Correia também l<strong>em</strong>bra que é possível usar essas ferramentas para testar stored<br />
procedures PL-SQL, a WebServices, aplicações servi<strong>do</strong>ras ou um componente<br />
através de uma DLL, a solução passa pela criação de uma camada de interface<br />
gráfica standard simples, que possibilita a invocação <strong>do</strong>s serviços a ser<strong>em</strong> testa<strong>do</strong>s.<br />
Através deste recurso, pod<strong>em</strong>os dizer que essa técnica permite a execução e<br />
comparação automática de testes <strong>em</strong> to<strong>do</strong>s os níveis: unidade, módulo, integração,<br />
sist<strong>em</strong>a ou aceitação.<br />
57
3.2.2 Scripts estrutura<strong>do</strong>s<br />
A técnica <strong>do</strong>s scripts estrutura<strong>do</strong>s permite a redução <strong>do</strong> código e sua reutilização,<br />
como também a possibilidade de organizar seu funcionamento <strong>em</strong> um framework<br />
que forneça funções básicas de automação.<br />
Necessita-se de um maior esforço <strong>do</strong> automatiza<strong>do</strong>r no início para a criação <strong>do</strong>s<br />
scripts, a compensação v<strong>em</strong> com a manutenção que é simples <strong>em</strong> caso de mudança<br />
na interface ou na adição de novos casos.<br />
O automatiza<strong>do</strong>r deve ter conhecimento de programação.<br />
Algumas ferramentas não possibilitam o uso de tabelas, ou seja, o conteú<strong>do</strong> da ação<br />
<strong>do</strong> usuário deve estar no script (hard-coded).<br />
3.2.3 Data-Driven (Técnica orientada a da<strong>do</strong>s)<br />
Nesta técnica os casos de teste são armazena<strong>do</strong>s <strong>em</strong> tabelas (Anexo L). A<br />
ferramenta usa scripts para ler os da<strong>do</strong>s dessas tabelas e processar os casos de<br />
teste de acor<strong>do</strong> com o cenário defini<strong>do</strong> (Anexo F).<br />
A grande vantag<strong>em</strong> desta técnica está <strong>em</strong> usar o mesmo script, s<strong>em</strong> alteração, para<br />
executar novos casos de teste s<strong>em</strong>elhantes.<br />
Dependen<strong>do</strong> de como o script é escrito, as alterações na interface não causam<br />
grandes probl<strong>em</strong>as, pois as ferramentas costumam usar “mapas de interface”.<br />
Segun<strong>do</strong> Fantinato (2004, p.7) esse mapa é um arquivo que contém nomes fictícios<br />
<strong>do</strong>s componentes da interface gráfica (GUI) da aplicação e as propriedades que os<br />
identificam unicamente. Este mapa é utiliza<strong>do</strong> para que to<strong>do</strong> componente da GUI<br />
seja referencia<strong>do</strong> nos scripts e nas planilhas de teste por um nome que independa<br />
de mudanças da aplicação, com o objetivo de que as alterações introduzidas na<br />
58
interface gráfica da aplicação impliqu<strong>em</strong>, apenas, <strong>em</strong> atualizações no mapa de<br />
interface, preservan<strong>do</strong> e tornan<strong>do</strong> o teste mais robusto.<br />
O esforço necessário para desenvolvimento <strong>do</strong>s scripts aumenta devi<strong>do</strong> a maior<br />
complexidade <strong>do</strong>s mesmos.<br />
3.2.4 Keyword-Driven (Técnica orientada a palavras-chave)<br />
Essa técnica usa tabelas para armazenar os casos de teste e os scripts para ler as<br />
informações da tabela e processar os casos de teste. Cada tabela também contém<br />
da<strong>do</strong>s de diversos cenários de teste. O diferencial está no uso de palavras-chave<br />
para referenciar scripts específicos (tab.8), isso possibilita uma maior flexibilidade<br />
para a definição de novos cenários de teste. Os testes também são defini<strong>do</strong>s <strong>em</strong><br />
termos de processos de negócios.<br />
Exige-se <strong>do</strong> testa<strong>do</strong>r um pouco mais de conhecimento <strong>em</strong> desenvolvimento de<br />
software <strong>do</strong> que a técnica anterior, data-driven, pois os scripts desenvolvi<strong>do</strong>s são<br />
mais complexos.<br />
Tabela 8 - Teste por palavras-chave<br />
Cadastro Silva José 30.123-A 12.700,00<br />
Cadastro Moraes Carlos 40.456-B 8.200,00<br />
Transferência 30.123-A 40.456-B 500,00<br />
VerificaSal<strong>do</strong> 30.123-A 12.200,00<br />
VerificaSal<strong>do</strong> 40.456-B 8.700,00<br />
Fonte: Argollo (2008)<br />
Na tabela keyword-driven anterior, à primeira coluna possui as palavras que faz<strong>em</strong><br />
referência aos procedimentos (scripts, também conheci<strong>do</strong>s como scripts de suporte)<br />
previamente construí<strong>do</strong>s para executar determinada rotina de teste. As colunas<br />
seguintes possu<strong>em</strong> os “parâmetros” que serão usa<strong>do</strong>s pela rotina (script). Por<br />
ex<strong>em</strong>plo, “Transferência” é uma rotina encarregada de passar dinheiro de uma conta<br />
para outra e, para realizar essa tarefa, ela recebe como parâmetro a conta de<br />
orig<strong>em</strong> (30.123-A), a conta de destino (40.456-B) e o valor a ser transferi<strong>do</strong> (500,00).<br />
59
Figura 6 - Aplicação da técnica keyword-driven<br />
Fonte: Adaptada de Fewster e Grahm (apud Correia, 2004, p.6)<br />
Na técnica keyword-driven t<strong>em</strong>os portanto três estruturas básicas que são: o script<br />
de controle, os ficheiros de teste e os scripts de suporte (fig.6).<br />
Dentre as técnicas para a construção de testes automáticos as mais evoluídas são<br />
as data-driven e keyword-driven, que permit<strong>em</strong> reutilização (inclusive <strong>em</strong> sist<strong>em</strong>as<br />
diferentes) e flexíbilidade.<br />
Como mencionamos no tópico scripts estrutura<strong>do</strong>s é possível, a partir <strong>do</strong>s scripts,<br />
elaborar frameworks. Fantinato apresentou <strong>em</strong> seu trabalho o AutoTest, que usa<br />
uma técnica mista de automação de teste, chamada de técnica keyword-data-driven,<br />
definida a partir de duas outras técnicas de automação conhecidas, dessa forma ele<br />
aproveita o que há de melhor <strong>em</strong> cada uma delas.<br />
Neste framework também foi necessário usar o IBM Rational Test Manager, que é<br />
uma ferramenta de gerenciamento de projeto de teste que possibilita a integração<br />
com as d<strong>em</strong>ais ferramentas da suite de desenvolvimento da IBM Rational. Seu uso<br />
60
possibilitou um melhor gerenciamento <strong>do</strong>s resulta<strong>do</strong>s e a obtenção de relatórios<br />
mais específicos e detalha<strong>do</strong>s.<br />
3.2.5 Teste de estresse<br />
O framework AutoTest foi desenvolvi<strong>do</strong> sobre a plataforma IBM Rational<br />
Functional Tester for Java and Web, uma ferramenta de automação de teste<br />
que oferece suporte somente à programação e a execução de scripts de<br />
teste. Apesar de dar suporte nativo à técnica “record & playback” de<br />
automação de testes, o Functional Tester usa Java como linguag<strong>em</strong> <strong>do</strong>s<br />
scripts de teste, permitin<strong>do</strong> a aplicação de técnicas mais avançadas de<br />
programação de scripts <strong>–</strong> como a técnica keyword-data-driven.<br />
(FANTINATO, 2004, p.6).<br />
Pod<strong>em</strong>os dizer que atualmente é impensável realizar um teste de stress de forma<br />
manual.<br />
Mas como funciona? Como é possível “imitar” o comportamento de centenas ou até<br />
milhares de usuários?<br />
T<strong>em</strong>po de resposta (segun<strong>do</strong>s)<br />
16<br />
14<br />
12<br />
10<br />
8<br />
6<br />
4<br />
2<br />
0<br />
Gargalo<br />
1 2 3 4 5 6 7 8 9 10<br />
Número de usuários<br />
Gráfico 10 <strong>–</strong> T<strong>em</strong>po de resposta x nº de usuários (como descobrir gargalos)<br />
Fonte: Molinari (2003, p.188)<br />
61
Molinari (2003, p.187) afirma que no teste automatiza<strong>do</strong> de stress a ferramenta cria<br />
usuários virtuais (Vu ou Vusers <strong>–</strong> Virtual User) e as situações de testes passam a ser<br />
cenários (Scenarios). Nos cenários de teste simula-se, por ex<strong>em</strong>plo, uma carga de<br />
10 usuários virtuais a cada 30 segun<strong>do</strong>s até 1000 usuários e com o teste duran<strong>do</strong> no<br />
máximo uma hora.<br />
Enquanto a avaliação ocorre a ferramenta registra diversas informações que pod<strong>em</strong><br />
indicar a presença de probl<strong>em</strong>as durante a execução <strong>do</strong> teste, como por ex<strong>em</strong>plo o<br />
aparecimento de gargalos (gra.10).<br />
Pode ser necessário um investimento adicional <strong>em</strong> hardware, dependen<strong>do</strong> da<br />
“potência” que se deseja atingir com o teste. Mas atenção para não confundir o<br />
des<strong>em</strong>penho <strong>do</strong> programa testa<strong>do</strong> com o <strong>do</strong> servi<strong>do</strong>r onde ele se encontra instala<strong>do</strong>.<br />
3.3 FERRAMENTAS<br />
Neste tópico citar<strong>em</strong>os as ferramentas de teste e apresentar<strong>em</strong>os informações<br />
adicionais <strong>em</strong> alguns casos.<br />
3.3.1 Suites<br />
As principais suites são:<br />
JProbe Suite (http://www.quest.com/jprobe/) é um conjunto de três<br />
ferramentas, composto por: JProbe Profiler and M<strong>em</strong>ory Debugger que<br />
ajuda a eliminar gargalos de execução causa<strong>do</strong>s por algoritmos ineficientes<br />
<strong>em</strong> códigos Java e aponta as causas de perdas de m<strong>em</strong>ória nessas<br />
aplicações, rastrean<strong>do</strong> quais objetos seguram referências para outros;<br />
JProbe Threadalyzer, que monitora interações entre threads e avisa o<br />
testa<strong>do</strong>r quan<strong>do</strong> essa interação representar perigo, b<strong>em</strong> como identifica<br />
potenciais perigos de concorrências e deadlocks; e JProbe Coverage, que<br />
localiza códigos não testa<strong>do</strong>s e mede quanto <strong>do</strong> código está sen<strong>do</strong><br />
exercita<strong>do</strong>, permitin<strong>do</strong> ao testa<strong>do</strong>r estimar a confiança <strong>do</strong>s testes<br />
executa<strong>do</strong>s. Delamaro et al (2007, p.170).<br />
• SilkTest: pertence a Segue, mas a <strong>em</strong>presa é controlada pela Borland (qua.16);<br />
62
• Rational: IBM (qua.17);<br />
• QADirector: Compuware;<br />
• JProbe Suite: Quest Software;<br />
3.3.2 Software<br />
Comentar<strong>em</strong>os agora as ferramentas de automação. Algumas, além de automatizar<br />
testes <strong>em</strong> software também trabalham com sites web. Começar<strong>em</strong>os por uma que<br />
apresenta essa característica.<br />
A WinRunner é desenvolvida pela Mercury Interactive, mas a <strong>em</strong>presa é controlada<br />
pela HP (Hewlett-Packard). Essa ferramenta cria uma lista com as propriedades<br />
físicas juntamente com os respectivos valores de atribuição, usa<strong>do</strong>s para<br />
identificação de cada objeto gráfico, forman<strong>do</strong> o que é chama<strong>do</strong> de “descrição física”<br />
<strong>do</strong> objeto. A relação entre a descrição física e o nome lógico é mantida <strong>em</strong> arquivos<br />
chama<strong>do</strong>s de GuiMap (veja a razão para a criação desses mapas no it<strong>em</strong> 3.2.3<br />
Data-Driven).<br />
A WinRunner utiliza a técnica Capture/Playback, mas as limitações referentes ao uso<br />
da MFC são resolvidas através de add-ins, isso é que possibilita o uso <strong>do</strong><br />
WinRunner <strong>em</strong> aplicações Java, PowerBuilder, Visual Basic e aplicações Web.<br />
A ferramenta WinRunner também faz uso da técnica de script estrutura<strong>do</strong>, ela possui<br />
uma linguag<strong>em</strong> estruturada, s<strong>em</strong>elhante a C, chamada TSL (Test Script Language),<br />
Correia (2004, p.4).<br />
O HiperStation grava telas <strong>em</strong> seqüência num arquivo PDS que recebe um<br />
tratamento com uma linguag<strong>em</strong> de programação Rex. Ele é usa<strong>do</strong> <strong>em</strong> plataforma<br />
alta e funciona com o EXTRA! Enterprise, da Attachmate Corporation.<br />
Os scripts cria<strong>do</strong>s no HiperStation são cadastra<strong>do</strong>s no Control<strong>–</strong>M.<br />
63
O Control-M é responsável por iniciar e controlar to<strong>do</strong> o fluxo de jobs (processos)<br />
que serão executa<strong>do</strong>s dentro da periodicidade e dependências que foram<br />
cadastradas dentro dele. Carvalho (2005).<br />
A QA-Teste, desenvolvida pela <strong>em</strong>presa <strong>brasil</strong>eira RSI Informática, é utilizada <strong>em</strong><br />
plataforma baixa, para auxiliar os processos de planejamento, criação,<br />
<strong>do</strong>cumentação e manutenção de massa de testes. Essa ferramenta é focada no<br />
planejamento e arquitetura de teste. Ela se integra as ferramentas de automação,<br />
<strong>em</strong> particular a QA-Run, da Compuware. O uso <strong>em</strong> conjunto dessas ferramentas<br />
ocorre da seguinte forma:<br />
• Geração de Massas de Da<strong>do</strong>s e “Scripts Padrões” (QA-Teste);<br />
• “Filmag<strong>em</strong>” e Automatização (QA-Run);<br />
Dois scripts são gera<strong>do</strong>s pelo QA-Teste. No primeiro estão as definições das<br />
variáveis conforme definidas na massa de testes e o caminho <strong>do</strong> arquivo de massa<br />
de testes gera<strong>do</strong> pelo QA-Teste. Nesse arquivo também existe um loop para<br />
executar cada caso.<br />
No segun<strong>do</strong> estão às referências das variáveis definidas no primeiro. Esse é o script<br />
usa<strong>do</strong> para filmag<strong>em</strong>, e posteriormente para a automatização.<br />
As ferramentas QA Wizard e e-Test pod<strong>em</strong> ser utilizadas exclusivamente com a<br />
técnica Record/Playback. Já as ferramentas Functional Tester, Robot, WinRunner,<br />
QuickTestPro, TestSmith 5 , QA-Run e SilkTest, além da funcionalidade de gravação<br />
de scripts de teste, oferec<strong>em</strong> uma linguag<strong>em</strong> de programação permitin<strong>do</strong> que a<br />
técnica de programação de scripts seja utilizada. Nenhuma delas oferec<strong>em</strong> suporte<br />
nativo às técnicas de automação de teste data-driven e keyword-driven, não<br />
trabalham diretamente com o conceito de mapa de interface. Apesar disso, algumas<br />
dessas ferramentas oferec<strong>em</strong> certa facilidade, <strong>em</strong> diferentes níveis, no uso da<br />
técnica data-driven, Fantinato (2004, p.6).<br />
5 http://qualityforge.com/testsmith/index.html<br />
64
Vale l<strong>em</strong>brar que Fantinato usou as técnicas data-driven e keyword-driven com a<br />
ferramenta IBM Rational Functional Tester for Java and Web através <strong>do</strong> framework<br />
AutoTest.<br />
TestMentor 6 e JFunc 7 (uma extensão funcional da ferramenta JUnit 8 usada para a<br />
automação <strong>do</strong> teste de unidade) são ferramentas de suporte a automação de teste,<br />
ambas oferec<strong>em</strong> suporte por meio da criação de classes de teste que dev<strong>em</strong><br />
interagir diretamente com as classes <strong>do</strong> sist<strong>em</strong>a, sen<strong>do</strong> compiladas e ligadas juntas,<br />
Fantinato (2004, p.14).<br />
O Visual Studio Team Syst<strong>em</strong>, da Microsoft, permite automatizar a gerência da<br />
qualidade e o SDLC (Software Development Life Cycle). Ele “profissionaliza” o<br />
processo de testes com um pacote de ferramentas integradas de testes unitários,<br />
cobertura de código, análise estática de código e carga, além <strong>do</strong>s recursos de<br />
gerenciamento, Microsoft (2008).<br />
3.3.3 Sites web<br />
O Watir t<strong>em</strong> se destaca<strong>do</strong> entre as ferramentas para automação de testes <strong>em</strong> sites<br />
web. Exist<strong>em</strong> vários fóruns na internet com milhares de participantes que interag<strong>em</strong><br />
entre si tiran<strong>do</strong> dúvidas e trocan<strong>do</strong> dicas sobre a operação da ferramenta e da<br />
linguag<strong>em</strong> Ruby (linguag<strong>em</strong> de scripts utilizada pelo Watir).<br />
Esta popularização é um fator a mais para as <strong>em</strong>presas escolher<strong>em</strong> essa<br />
ferramenta, pois se torna mais fácil encontrar profissionais qualifica<strong>do</strong>s no merca<strong>do</strong>,<br />
dispensan<strong>do</strong> assim o custo com treinamento.<br />
O Watir pode ser melhora<strong>do</strong> com o add-on Test-Report e a extensão WET, ambos<br />
serv<strong>em</strong> para gerar relatórios <strong>do</strong>s testes. Diferente de frameworks Java, como o<br />
HttpUnit e o JWebUnit, o Watir realmente abre um browser Internet Explorer e vai<br />
6 http://www.javatesting.com/Product/java/stm/index.html<br />
7 JUnit Functional Testing Extension (http://jfunc.sourceforge.net/)<br />
8 Ferramenta para execução de testes unitários e integra<strong>do</strong>s <strong>em</strong> JAVA<br />
65
ealizan<strong>do</strong> ações, ele ainda não funciona com outros browsers. O Firefox, da Mozilla,<br />
possui uma extensão chamada Web Developer que ajuda a impl<strong>em</strong>entar os testes<br />
funcionais, Papo (2005).<br />
A ferramenta ReWeb é usada para obter e analisar as páginas da aplicação web,<br />
geran<strong>do</strong> a instância <strong>do</strong> metamodelo UML.<br />
O TestWeb gera e executa o conjunto de casos de teste, conforme a instância <strong>do</strong><br />
metamodelo UML gera<strong>do</strong> pela ReWeb e o critério de teste que será <strong>em</strong>prega<strong>do</strong>.<br />
A<strong>pós</strong> a execução <strong>do</strong>s casos de teste, o testa<strong>do</strong>r avalia os resulta<strong>do</strong>s obti<strong>do</strong>s, isto é,<br />
verifica se a saída obtida está correta para determinada entrada. A ferramenta<br />
também fornece uma saída numérica especifican<strong>do</strong> o nível de cobertura alcança<strong>do</strong><br />
pelo conjunto de teste.<br />
A ferramenta denominada WAT (Web Application Testing), impl<strong>em</strong>enta as funções<br />
necessárias à geração de casos de teste, execução <strong>do</strong> conjunto gera<strong>do</strong> e avaliação<br />
<strong>do</strong>s resulta<strong>do</strong>s obti<strong>do</strong>s com o processamento. A WAT utiliza a análise estática de<br />
uma aplicação web resultante da execução da ferramenta WARE, que realiza<br />
engenharia reversa da aplicação. Delamaro et al (2007, p.227-228).<br />
O Fitnesse liga uma página web de um wiki ao seu sist<strong>em</strong>a sob teste, através de<br />
classes de negócio ou da interface <strong>do</strong> usuário. Esse mo<strong>do</strong> de trabalho aumenta a<br />
colaboração entre clientes e os desenvolve<strong>do</strong>res <strong>do</strong> sist<strong>em</strong>a.<br />
Um projeto que possui a filosofia data-driven e não a record/playback é o da<br />
ferramenta Canoo WebTest. Ela utiliza como fundamento o HtmlUnit e os testes<br />
são escritos através de arquivos XML, Papo (2005).<br />
3.3.4 Estrutural<br />
“A aplicação de critérios de teste s<strong>em</strong> o apoio de ferramentas automatizadas tende a<br />
ser uma atividade propensa a erros e limitada a programas muito simples.”<br />
(DELAMARO ET AL, 2007, p.65).<br />
66
A RXVP80 e a TCAT, apóiam a aplicação de critérios estruturais basea<strong>do</strong>s somente<br />
no Grafo de Fluxo de Controle. A ferramenta RXVP80, distribuída pela General<br />
Research Corporation, é um sist<strong>em</strong>a que realiza basicamente a análise de cobertura<br />
<strong>do</strong> teste de arcos <strong>em</strong> programas escritos <strong>em</strong> Fortran.<br />
A ferramenta TCAT (Test-Coverage Analysis Tool), distribuída pela Software<br />
Research Corporation, realiza o teste de unidades segun<strong>do</strong> o critério Teste de<br />
Ramos Lógicos (arcos).<br />
A ferramenta SCORE apóia o teste de arcos de programas escritos <strong>em</strong> Pascal,<br />
ten<strong>do</strong> si<strong>do</strong> desenvolvida na Hitachi.<br />
A POKE-TOOL (Potential Uses Criteria Tool for Program Testing) apóia a aplicação<br />
de critérios no teste de unidade de programas escritos na linguag<strong>em</strong> C e encontra-<br />
se disponível <strong>em</strong> ambiente UNIX. A versão mais recente está disponível na<br />
Incuba<strong>do</strong>ra Virtual da FAPESP (http://incuba<strong>do</strong>ra.fapesp.br/projects/poketool/),<br />
Delamaro et al (2007, p.65-69).<br />
3.3.5 Mutação<br />
Para apoiar o teste de mutação <strong>em</strong> POO, Alexander et al (apud DELAMARO ET AL,<br />
2007, p.172), propuseram a arquitetura de uma ferramenta, denominada Object<br />
Mutation Engine <strong>–</strong> OME, que impl<strong>em</strong>enta um subconjunto <strong>do</strong>s opera<strong>do</strong>res de<br />
mutação no teste de classes Java.<br />
A Mutation Testing Syst<strong>em</strong> impl<strong>em</strong>enta parte <strong>do</strong> conjunto de opera<strong>do</strong>res de<br />
mutação. A ferramenta utiliza o framework JUnit para <strong>do</strong>cumentar e executar de<br />
forma automática os casos de teste, determinan<strong>do</strong> o número de mutantes mortos e o<br />
escore de mutação obti<strong>do</strong>, Delamaro et al (2007, p.173).<br />
67
A ferramenta Mothra foi desenvolvida por pesquisa<strong>do</strong>res da Purdue University e <strong>do</strong><br />
Georgia Institute of Technology e é utilizada <strong>em</strong> programas Fortran 77, Delamaro et<br />
al (2007, p.97).<br />
A Proteum é similar à Mothra, porém destina-se a linguag<strong>em</strong> C e possui algumas<br />
facilidades para processamento bacth, Delamaro et al (2007, p.98-99).<br />
3.3.6 Orienta<strong>do</strong>s a objetos e de componentes<br />
A seguir será apresentada uma breve descrição, parcialmente extraída <strong>do</strong> trabalho<br />
de Domingues (apud DELAMARO, 2007, p.169-173), é uma série de ferramentas<br />
comerciais e não comerciais que se encontram disponíveis para o teste de POO e<br />
algumas também destinadas ao teste de componentes, principalmente para o teste<br />
de programas escritos <strong>em</strong> C++ e Java.<br />
A ferramenta de teste PiSCES (Coverage Tracker for Java) é utilizada <strong>em</strong> teste de<br />
applets Java. PiSCES é uma ferramenta de medida de cobertura (coman<strong>do</strong>s e<br />
decisões) que identifica quais partes <strong>do</strong> código-fonte já foram exercitadas durante a<br />
avaliação e quais ainda precisam ser.<br />
TCAT/Java e JCover serv<strong>em</strong> para cobertura de coman<strong>do</strong>s e decisões para applets<br />
Java.<br />
Parasoft C++ Test é utilizada <strong>em</strong> teste de unidade para códigos C/C++.<br />
Parasoft Insure++ trabalha na detecção de defeitos <strong>em</strong> t<strong>em</strong>po de execução para<br />
códigos C/C++ e acelera as tarefas de depuração.<br />
ProLint Advanced Graphical Lint verifica os módulos de uma aplicação com o<br />
objetivo de encontrar defeitos e inconsistências para mais de 600 tipos de<br />
probl<strong>em</strong>as, proporcionan<strong>do</strong> maior confiabilidade e portabilidade de códigos C/C++.<br />
68
Rational PureCoverage faz análise de cobertura (coman<strong>do</strong>s e decisões) para<br />
códigos C++ e Java.<br />
Rational Purify detecta defeitos <strong>em</strong> t<strong>em</strong>po de execução para códigos C/C++. Como<br />
a Rational PureCoverage, essa ferramenta permite ao testa<strong>do</strong>r escolher o nível de<br />
verificação por módulos.<br />
JaBUTi seu diferencial é a não-exigência da disponibilidade <strong>do</strong> código-fonte para a<br />
realização <strong>do</strong>s testes. A ferramenta trabalha diretamente com bytecode Java e apóia<br />
a aplicação <strong>do</strong>s critérios To<strong>do</strong>s-Nós, Todas-Arestas, To<strong>do</strong>s-Usos e To<strong>do</strong>s-<br />
Potenciais-Usos no teste intraméto<strong>do</strong>s.<br />
Component Test Bench (CTB), pode ser utilizada no teste de componentes de<br />
software. A ferramenta fornece um padrão genérico que permite ao desenvolve<strong>do</strong>r<br />
<strong>do</strong> componente especificar o conjunto de teste utiliza<strong>do</strong> na avaliação de um da<strong>do</strong><br />
componente. O conjunto de teste é armazena<strong>do</strong> <strong>em</strong> um arquivo XML (eXtensible<br />
Markup Language) e executa<strong>do</strong> por meio de uma ferramenta que compõe o CTB,<br />
denominada IRTB (Instrumented runtime syst<strong>em</strong>), ou eles pod<strong>em</strong> ser executa<strong>do</strong>s<br />
invocan<strong>do</strong>-se a execução de uma máquina virtual Java, ou ainda, compilan<strong>do</strong> e<br />
executan<strong>do</strong> programas <strong>em</strong> C ou C++.<br />
Parasoft JTest testa classes para códigos Java. A principal diferença entre JTest e<br />
CTB é que JTest utiliza o framework JUnit para armazenar e executar os casos de<br />
teste automaticamente, enquanto CTB armazena os casos <strong>em</strong> arquivos XML.<br />
Glass JAR Toolkit (GJTK) é uma ferramenta de teste de cobertura que opera<br />
diretamente no bytecode Java e não requer o código-fonte para aplicar critérios de<br />
fluxo de controle (cobertura de coman<strong>do</strong>s e decisões) <strong>em</strong> bytecode Java.<br />
Nas ferramentas que permit<strong>em</strong> avaliação de cobertura de código por meio de<br />
critérios estruturais, todas apóiam somente o teste de fluxo de controle (cobertura de<br />
coman<strong>do</strong>s e decisão) <strong>em</strong> POO. Nenhuma delas apóia a aplicação de algum critério<br />
de fluxo de da<strong>do</strong>s, seja para o teste de unidade, integração ou sist<strong>em</strong>a. Com<br />
exceção da ferramenta GlassJAR e as que apóiam o teste funcional, todas as<br />
69
d<strong>em</strong>ais necessitam <strong>do</strong> código-fonte para a aplicação <strong>do</strong>s critérios, dificultan<strong>do</strong> sua<br />
utilização no teste estrutural de componentes de software por parte <strong>do</strong>s clientes, que<br />
<strong>em</strong> geral, não têm acesso ao código-fonte.<br />
3.3.7 Orienta<strong>do</strong>s a aspectos<br />
A ferramenta JaBUTi/AJ é uma extensão da ferramenta Java Bytecode<br />
Understanding and Testing (JaBUTi) proposta para o teste de POO escritos <strong>em</strong><br />
Java. JaBUTi/AJ foi estendida para testar a estrutura das unidades de programas<br />
OA (orienta<strong>do</strong>s a aspectos) escritos <strong>em</strong> AspectJ, utilizan<strong>do</strong> os modelos e critérios<br />
descritos na seção anterior, Delamaro et al (2007, p.198).<br />
3.3.8 Concorrentes<br />
Segun<strong>do</strong> Delamaro et al (2007, p.246-249), a maioria das ferramentas existentes<br />
auxilia a análise, a visualização, o monitoramento e a depuração de um programa<br />
concorrente. Ex<strong>em</strong>plos dessas ferramentas são: TDCAda que apóia a depuração de<br />
programas na linguag<strong>em</strong> ADA, utilizan<strong>do</strong> execução determinística; ConAn<br />
(ConcurrencyAnalyser), que gera drivers para o teste de unidade de classes de<br />
programas concorrentes Java; e Xab, MDB e Paragraph para programas escritos<br />
<strong>em</strong> ambiente de passag<strong>em</strong> de mensagens. Xab e Paragraph objetivam o<br />
monitoramento de programas PVM e MPI, respectivamente.<br />
A ferramenta Della Pasta (Delaware Parallel Software Testing Aid) permite o teste<br />
de programas concorrentes com m<strong>em</strong>ória compartilhada.<br />
STEPS e Astral são ferramentas que apóiam a visualização e a depuração de<br />
programas PVM. Ambas geram caminhos para cobrir el<strong>em</strong>entos requeri<strong>do</strong>s por<br />
critérios estruturais basea<strong>do</strong>s <strong>em</strong> fluxo de controle.<br />
70
ValiPar permite que programas <strong>em</strong> diferentes ambientes de passag<strong>em</strong> de<br />
mensagens sejam testa<strong>do</strong>s. Atualmente, a ferramenta encontra-se configurada para<br />
PVM e MPI.<br />
Quadro 11 <strong>–</strong> Ferramentas de teste/depuração para programas concorrentes<br />
Ferramenta<br />
Fluxo de<br />
da<strong>do</strong>s<br />
Fluxo de<br />
controle<br />
Execução<br />
controlada Depuração<br />
TDC Ada a<br />
<br />
ConAn b<br />
<br />
Della Pasta c<br />
<br />
Xab d<br />
<br />
Visit d<br />
<br />
MDB d<br />
<br />
STEPS d<br />
<br />
Astral d<br />
<br />
XMPI e<br />
<br />
Umpire e<br />
<br />
d, e<br />
ValiPar <br />
a b c d e<br />
Ada, Java, Shm<strong>em</strong>, PVM, MPI<br />
Fonte: Delamaro et al (2007, p.249)<br />
O quadro 17 sintetiza as principais características das ferramentas existentes para<br />
apoiar a atividade de teste de programas concorrentes.<br />
3.3.9 Open Source<br />
Nos tópicos anteriores também foram citadas ferramentas gratuitas para automação<br />
de testes. Citar<strong>em</strong>os mais algumas, adicionan<strong>do</strong> comentários as já citadas.<br />
PMD é utilizada para auditoria de código fonte Java; Selenium é uma ferramenta<br />
GE para sites web; Fitnesse e o Watir, trabalham respectivamente com tabelas e<br />
palavras-chave; Jmeter faz avaliação de des<strong>em</strong>penho.<br />
JUnit é um framework de teste que v<strong>em</strong> sen<strong>do</strong> muito utiliza<strong>do</strong> e viabiliza a<br />
<strong>do</strong>cumentação e a execução automática de casos de teste. Quan<strong>do</strong> se analisa o<br />
Anexo O observa-se que o framework JUnit é uma das ferramentas que pode ser<br />
utilizada tanto para o programa quanto para o teste de componentes de software<br />
71
desenvolvi<strong>do</strong>s <strong>em</strong> Java, mas tal ferramenta apóia apenas a execução automática de<br />
casos de teste e realização de testes funcionais, s<strong>em</strong> apoio de nenhum critério de<br />
teste específico e não fornecen<strong>do</strong> informação sobre a cobertura de código obtida por<br />
determina<strong>do</strong> conjunto de teste. Outra ferramenta que também apóia somente o teste<br />
funcional é a CTB, Delamaro et al (2007, p.171 e 173).<br />
3.3.10 Faça você mesmo<br />
Não existin<strong>do</strong> a intenção de produzir um produto melhor para o merca<strong>do</strong>, não há<br />
motivo para “reinventar a roda”. Além <strong>do</strong>s custos com o desenvolvimento da<br />
aplicação outros gastos irão surgir, como por ex<strong>em</strong>plo, os gastos com treinamento,<br />
pois não há conhecimento no merca<strong>do</strong> sobre a ferramenta e também não haverá<br />
fóruns na internet com dicas sobre o produto.<br />
Caso a <strong>em</strong>presa decida optar pelo desenvolvimento de uma nova ferramenta, ela<br />
pode começar pelo estu<strong>do</strong> da API (Application Programming Interface ou Interface<br />
de Programação de Aplicativos) que representa um conjunto de operações expostas<br />
por uma aplicação, a fim de permitir que outras aplicações possam acessar ou<br />
consumir as suas funcionalidades, esse recurso será útil na criação de ferramentas<br />
captura/executa. A técnica de automação OLE também pode ser usada, porém esse<br />
recurso necessita que o desenvolve<strong>do</strong>r especifique com qual aplicação a ferramenta<br />
deve estabelecer um vínculo.<br />
O objetivo de uma API é fornecer uma interface para o mun<strong>do</strong> exterior que<br />
não seja dependente da interface gráfica da aplicação. A automação de<br />
testes baseada na API faz uso dessa característica para orquestrar a<br />
execução <strong>do</strong>s testes. Uma das vantagens advindas <strong>do</strong> uso de uma API é<br />
que a aplicação externa que consome as operações expostas, não precisa<br />
conhecer <strong>em</strong> detalhes como essas operações são impl<strong>em</strong>entadas.<br />
(CAETANO, 2007).<br />
Caso a ferramenta seja desenvolvida para avaliar sites web é mais adequa<strong>do</strong><br />
analisar o resulta<strong>do</strong> <strong>do</strong> conteú<strong>do</strong> <strong>do</strong> arquivo e não o que é apresenta<strong>do</strong> na tela. Por<br />
ex<strong>em</strong>plo, um GIF pode ficar mudan<strong>do</strong> sua aparência, mas uma instrução será s<strong>em</strong>pre a mesma.<br />
72
CONSIDERAÇÕES FINAIS<br />
Com o resulta<strong>do</strong> dessa pesquisa passamos a conhecer os probl<strong>em</strong>as da imprecisão<br />
e morosidade <strong>do</strong>s testes manuais <strong>em</strong> contra ponto ao aumento <strong>do</strong> tamanho e da<br />
complexidade <strong>do</strong>s programas. Conhec<strong>em</strong>os também os vários tipos de testes e<br />
examinamos as principais técnicas utilizadas na automação. Identificamos que a<br />
muito a se considerar <strong>em</strong> um processo de testes e que dev<strong>em</strong>os planejá-los desde o<br />
início <strong>do</strong> projeto de desenvolvimento, como também a necessidade de uma prévia<br />
estruturação de to<strong>do</strong> o processo (técnicas, frameworks, ambientes, baselines, etc).<br />
Esperamos que essa pesquisa tenha contribuí<strong>do</strong> para orientação daqueles que<br />
estão inician<strong>do</strong> seu caminho <strong>em</strong> testes e que ela possa poupar seus esforços na<br />
busca pela informação.<br />
Fiz<strong>em</strong>os um levantamento sobre ferramentas para to<strong>do</strong>s os bolsos, mas esperamos<br />
tê-lo conscientiza<strong>do</strong> de que n<strong>em</strong> s<strong>em</strong>pre esse é o principal custo de toda a operação<br />
e a busca pelo equilíbrio entre os pilares custo, prazo e qualidade irá acompanhá-lo<br />
<strong>em</strong> seu dia-a-dia na área de testes.<br />
Vimos que a oferta das ferramentas, sob a estratégia caixa-branca, é determinada<br />
pela linguag<strong>em</strong> usada no desenvolvimento e que a estratégia caixa-preta pode<br />
oferecer soluções conjuntas para software e sites web. Também recomendamos a<br />
escolha de ferramentas que possam combinar as técnicas de capture/playback,<br />
data-driven, keyword-driven e scripts, seja com ou s<strong>em</strong> o uso de frameworks, além<br />
de chamar a atenção para o refinamento e reutilização <strong>do</strong>s scripts e <strong>do</strong>s casos de<br />
testes, como também para o futuro da técnica “modelo de da<strong>do</strong>s”. Identificamos a<br />
importância das ferramentas para geração automática de casos e massa de teste e<br />
para os testes de stress.<br />
Por último, sugerimos uma visita ao BSTQB (http://www.bstqb.org.br/), este órgão<br />
apresenta <strong>em</strong> seu site o material necessário à certificação de profissionais de teste,<br />
e leitura <strong>do</strong>s artigos sobre testes da Java Magazine e da recém lançada revista<br />
Testing Experience (http://www.testingexperience.com/).<br />
73
REFERÊNCIAS BIBLIOGRÁFICAS<br />
ARGOLLO, Miguel. Automação de testes: Características, vantagens e limitações.<br />
Trabalho apresenta<strong>do</strong> durante o SBQS 2008 <strong>–</strong> VII SIMPÓSIO BRASILEIRO DE<br />
QUALIDADE DE SOFTWARE, Florianópolis, jun. 2008.<br />
BARTIÉ, Alexandre. Garantia da qualidade de software: Adquirin<strong>do</strong> maturidade<br />
organizacional. Rio de Janeiro: Elsevier, 2002.<br />
BORLAND. Automação de testes de software. [S.l.]: Borland, 2008. Disponível <strong>em</strong>:<br />
. Acesso <strong>em</strong>: 10 ago. 2008, 12:13:40.<br />
______. Gerenciamento da qualidade <strong>do</strong> ciclo de vida. [S.l.]: Borland, 2008.<br />
Disponível <strong>em</strong>: . Acesso <strong>em</strong>: 31 ago. 2008, 11:50:45.<br />
BRITO, Rosane Deganeli de. Do ambiente de desenvolvimento ao ambiente de<br />
produção: Os testes de software como garantia da qualidade. Osasco: Universidade<br />
Cândi<strong>do</strong> Mendes, 2000.<br />
CAETANO, Cristiano. Automação e gerenciamento de testes: Aumentan<strong>do</strong> a<br />
produtividade com as principais soluções Open Source e gratuitas (2a edição). [S.l.]:<br />
Linha de Código, 2007. Disponível <strong>em</strong>: . Acesso <strong>em</strong>: 10 ago. 2008, 12:12:24.<br />
______. Introdução à automação de testes funcionais. [S.l.]: TestExpert, 2007.<br />
Disponível <strong>em</strong>: . Acesso <strong>em</strong>: 10 ago.<br />
2008, 12:02:26.<br />
CALLERI, Mário. Qualidade de software no desenvolvimento de sist<strong>em</strong>as<br />
corporativos. Rio de Janeiro: Centro Educacional de Realengo, 2005.<br />
CARVALHO, Cláudio et al. Apresentação EPD: Disciplina de teste. Rio de Janeiro:<br />
REDEA/RJ, 31 mar. 2008.<br />
CARVALHO, Cláudio; FILHO, Francisco de J.R. Automação <strong>do</strong>s processos de<br />
testes. Rio de Janeiro: REDEA/RJ, 16 nov. 2005.<br />
CORREIA, Simone; SILVA, Alberto. Técnicas para construção de testes<br />
funcionais automáticos. [S.l.]: Instituto Português de Qualidade, 2004. Disponível<br />
<strong>em</strong>: . Acesso<br />
<strong>em</strong>: 13 set. 2008, 14:58:32.<br />
DELAMARO, Márcio Eduar<strong>do</strong>; MALDONADO, José Carlos; JINO, Mario. Introdução<br />
ao teste de software. Rio de Janeiro: Elsevier, 2007.<br />
EUDESCOSTA. Automação de testes, uma tendência. [S.l.]: TestExpert, 2008.<br />
Disponível <strong>em</strong>: . Acesso <strong>em</strong>: 14 set.<br />
2008, 21:52:12.<br />
74
FANTINATO, Marcelo et al. AutoTest <strong>–</strong> Um framework reutilizável para a automação<br />
de teste funcional de software. [S.l.]: SBC <strong>–</strong> Sociedade Brasileira de Computação,<br />
2004. Disponível <strong>em</strong>: . Acesso <strong>em</strong>: 10 ago. 2008, 12:03:26.<br />
HETZEL, William. Guia completo ao teste de software. Rio de Janeiro: Campus,<br />
1987.<br />
IBM. Gerenciamento de qualidade de software. [S.l.]: IBM, 2008. Disponível <strong>em</strong>:<br />
. Acesso <strong>em</strong>: 31 ago. 2008, 11:56:30.<br />
MENDES, Alvaro. Novo ASC [mensag<strong>em</strong> pessoal]. Mensag<strong>em</strong> recebida por<br />
<strong>em</strong> 25 ago. 2008.<br />
MICROSOFT. Test Edition. [S.l.]: Microsoft, 2008. Disponível <strong>em</strong>: . Acesso <strong>em</strong>: 31 ago. 2008, 11:54:30.<br />
______. Usan<strong>do</strong> automação de interface <strong>do</strong> usuário para testes automatiza<strong>do</strong>s.<br />
[S.l.]: Microsoft, 2008. Disponível <strong>em</strong>: .<br />
Acesso <strong>em</strong>: 16 ago. 2008, 19:57:40.<br />
MOLINARI, Leonar<strong>do</strong>. Testes de software: Produzin<strong>do</strong> sist<strong>em</strong>as melhores e mais<br />
confiáveis. São Paulo: Érica, 2003.<br />
OSHIRO, Ângela <strong>do</strong>s Santos. Gerência de projetos. Vila Velha: Escola Superior<br />
Aberta <strong>do</strong> Brasil, 2007.<br />
PAPO, José Paulo. Ferramentas para automação de testes. [S.l.]: José Papo<br />
Weblog, 2005. Disponível <strong>em</strong>: . Acesso <strong>em</strong>: 10 ago. 2008, 11:59:28.<br />
RSI Informática. Uso da ferramenta QA-Teste para controlar massas de teste.<br />
Rio de Janeiro: REDEA/RJ, dez. 2005.<br />
UNGARELLI, Adriano. Teste de software como controle de qualidade. [S.l.]: Via6,<br />
2007. Disponível <strong>em</strong>: .<br />
Acesso <strong>em</strong>: 31 ago. 2008, 12:00:20.<br />
WIKIPÉDIA. Código aberto. [S.l.]: Wikipédia, 2008. Disponível <strong>em</strong>:<br />
. Acesso <strong>em</strong>: 17 ago. 2008, 13:56:44.<br />
75
GLOSSÁRIO<br />
Varias das definições a seguir foram extraídas <strong>do</strong> site Wikipédia<br />
(http://pt.wikipedia.org/).<br />
Add-On ou Add-In <strong>–</strong> é o nome que se dá a um recurso ou acessório que melhora ou<br />
aperfeiçoa a coisa à qual ele é acrescenta<strong>do</strong> <strong>em</strong> utensílios eletrônicos. A expressão<br />
é usada para softwares e hardwares <strong>em</strong> geral, mas é bastante típica de jogos para<br />
computa<strong>do</strong>r (ou videogames) e consolas para videojogos.<br />
Análise estática <strong>–</strong> a idéia é a mesma da auditoria de código, trata-se de uma<br />
verificação da estrutura <strong>do</strong> código e das nomenclaturas de variáveis, funções,<br />
objetos, entre outras atividades.<br />
Bug <strong>–</strong> Defeito, falha no software ou site.<br />
Engenharia reversa <strong>–</strong> elaborar a <strong>do</strong>cumentação de um sist<strong>em</strong>a a partir dele próprio<br />
(da operação <strong>do</strong> programa concluí<strong>do</strong>).<br />
Framework <strong>–</strong> captura a funcionalidade comum a várias aplicações. Elas dev<strong>em</strong><br />
pertencer ao mesmo <strong>do</strong>mínio de probl<strong>em</strong>a.<br />
Grafo de Fluxo de Controle <strong>–</strong> é a representação usual para a relação de fluxo de<br />
controle de um programa. Essas relações de dependências determinam a seqüência<br />
necessária entre operações.<br />
Hands-On - usar o programa propriamente dito.<br />
Hard-Coded <strong>–</strong> é a inserção de da<strong>do</strong>s diretamente pelo usuário <strong>em</strong> um programa.<br />
Kaizen - significa de melhoria contínua, gradual, na vida <strong>em</strong> geral (pessoal, familiar,<br />
social e no trabalho).<br />
76
NewsGroups <strong>–</strong> são grupos de discussão on-line, o mesmo que fóruns, onde os<br />
internautas com interesses <strong>em</strong> comum se juntam para falar de tu<strong>do</strong>, desde software<br />
até política.<br />
Open Source <strong>–</strong> Código Aberto. Software gratuito. O termo código aberto, ou open<br />
source <strong>em</strong> inglês, foi cunha<strong>do</strong> pela OSI (Open Source Initiative) e se refere ao<br />
mesmo software também chama<strong>do</strong> de software livre, ou seja, aquele que respeita as<br />
quatro liberdades definidas pela Free Software Foundation.<br />
Polimorfismo <strong>–</strong> permite que méto<strong>do</strong>s apresent<strong>em</strong> várias formas, de acor<strong>do</strong> com seu<br />
contexto. Por ex<strong>em</strong>plo, quan<strong>do</strong> pod<strong>em</strong>os usar sorvete.cobertura(caldadechocolate)<br />
no lugar <strong>do</strong> coman<strong>do</strong> sorvete.cobertura(caldadechocolate, granula<strong>do</strong>s) e vice-versa.<br />
Post - essa palavra aparece no texto com o mesmo senti<strong>do</strong> de blog, Blog é uma<br />
página web atualizada freqüent<strong>em</strong>ente, composta por pequenos parágrafos<br />
apresenta<strong>do</strong>s de forma cronológica.<br />
REDEA/RJ <strong>–</strong> Uma das divisões da Caixa Econômica Federal responsável por<br />
desenvolver e manter as soluções tecnológicas da instituição financeira.<br />
Release <strong>–</strong> pequena atualização <strong>do</strong> programa.<br />
Wiki <strong>–</strong> são utiliza<strong>do</strong>s para identificar um tipo específico de coleção de <strong>do</strong>cumentos<br />
<strong>em</strong> hipertexto ou o software colaborativo usa<strong>do</strong> para criá-lo.<br />
77
ANEXO A <strong>–</strong> ESTRATÉGIAS DE TESTE<br />
CAIXA-BRANCA CAIXA-PRETA<br />
Figura 7 <strong>–</strong> Estratégias de testes caixa-branca e caixa-preta<br />
78
ANEXO B <strong>–</strong> TIPOS DE TESTES (MOLINARI)<br />
Segun<strong>do</strong> Molinari (2003, p.160-162) os tipos de teste são:<br />
• Teste de unidade • Teste de integração<br />
• Teste de sist<strong>em</strong>a • Teste operacional<br />
• Teste negativo-positivo • Teste de regressão<br />
• Teste de caixa-preta (Black-Box Test) • Teste de caixa-branca (White-Box Test)<br />
• Teste beta • Teste de verificação de versão<br />
• Teste funcional • Teste de performance<br />
• Teste de carga<br />
• Teste de estresse<br />
79<br />
• Teste de aceitação <strong>do</strong> usuário ou UAT<br />
(user acceptance test)<br />
• Teste de volume • Teste de instalação<br />
• Teste de configuração • Teste de integridade<br />
• Teste de <strong>do</strong>cumentação • Teste de aplicações Mainframe<br />
• Teste de segurança • Teste de aplicações Server<br />
• Teste de aplicações Client • Teste de aplicações Web<br />
• Teste de aplicações Network • Teste de ameaça ou Thread<br />
• Teste de monitoração • Teste de módulo<br />
• Monkey Test
ANEXO C <strong>–</strong> COMPLEMENTO DE TIPOS (BRITO)<br />
A seguir apresentamos parte da lista de Rosane Brito, apenas com tipos não cita<strong>do</strong>s<br />
anteriormente no Anexo B.<br />
Classifican<strong>do</strong> alguns tipos de teste dentro das estratégias de testes (caixa-branca e<br />
caixa-preta) t<strong>em</strong>os o seguinte, Brito (2000, p.23-34):<br />
• Caixa-preta • Caixa-branca<br />
o Teste de partição de equivalência o Teste de caminhos básicos<br />
o Teste <strong>do</strong>s valores limites o Testes de condição<br />
o Teste basea<strong>do</strong> <strong>em</strong> probabilidade de<br />
o Técnicas de testes de condição<br />
erro Teste de ramos<br />
o Teste de comparação Teste de <strong>do</strong>mínio<br />
80<br />
Teste de ramos e opera<strong>do</strong>res<br />
relacionais<br />
Teste de laço simples<br />
Teste de laço aninha<strong>do</strong><br />
Teste de laços concatena<strong>do</strong>s<br />
Teste de laços não estrutura<strong>do</strong>s
ANEXO D <strong>–</strong> PROCESSO DE TESTES<br />
Figura 8 <strong>–</strong> Visão <strong>do</strong> modelo de processo de qualidade de software <strong>em</strong> “U”.<br />
Fonte: Bartié (2002, p.36)<br />
81
ANEXO E <strong>–</strong> AQUISIÇÃO DE FERRAMENTAS<br />
Quadro 12 <strong>–</strong> O que automatizar?<br />
Razões para o desenvolve<strong>do</strong>r<br />
1. Quantas vezes você repete o teste de uma mesma funcionalidade até retirar to<strong>do</strong>s os “bugs”<br />
existentes?<br />
2. E quanto t<strong>em</strong>po isto representa <strong>em</strong> relação ao t<strong>em</strong>po de escrita de código e compilação? Você<br />
concordaria <strong>em</strong> dizer que pelo menos 50% <strong>do</strong> t<strong>em</strong>po <strong>em</strong> que você está na frente <strong>do</strong><br />
computa<strong>do</strong>r, está re-testan<strong>do</strong> alguma coisa que não funcionou na primeira compilação como<br />
deveria, ou que estava funcionan<strong>do</strong> e parou de funcionar?<br />
3. Quan<strong>do</strong> você corrige um “bug”, garante que não introduziu outro?<br />
4. Para garantir que tu<strong>do</strong> está funcionan<strong>do</strong> <strong>em</strong> uma aplicação, a<strong>pós</strong> cada compilação, é preciso<br />
repetir to<strong>do</strong>s os testes?<br />
5. Como você faria para testar o comportamento da sua aplicação quan<strong>do</strong> <strong>do</strong>is ou mais usuários<br />
executass<strong>em</strong>, exatamente no mesmo instante, funcionalidades que pod<strong>em</strong> influenciar uma na<br />
outra? E se foss<strong>em</strong> 50 usuários? A sua aplicação vai perder performance? Vai funcionar<br />
erra<strong>do</strong>?<br />
6. Já aconteceu de você atender a reclamações de seu usuário dizen<strong>do</strong> que uma funcionalidade<br />
não está funcionan<strong>do</strong> e ela estava perfeita na versão anterior?<br />
7. Imagine que, quan<strong>do</strong> você testou uma parte da aplicação pela primeira vez, uma “câmera de<br />
vídeo inteligente” estava atrás de você e decorou exatamente como repetir esse teste mais<br />
tarde e apenas lhe diz o que funcionou da mesma forma e o que mu<strong>do</strong>u de comportamento.<br />
Imagine agora que s<strong>em</strong>pre que recompilar sua aplicação esse robô pode repetir to<strong>do</strong>s os testes<br />
que você já fez enquanto toma um café?<br />
Razões para o gerente<br />
8. Quanto você gastou no último projeto entre a aparente conclusão da aplicação e a efetiva<br />
conclusão de toda a fase de testes e ajustes? Quanto isso representou de t<strong>em</strong>po no seu<br />
cronograma? E de dinheiro?<br />
9. Sua equipe de programação certamente não trabalhava 24 horas por dia. O desenvolve<strong>do</strong>r<br />
precisa descansar. Enquanto isto, como aproveitar da melhor forma possível a máquina<br />
parada? Não seria útil que ela ficasse executan<strong>do</strong> sozinha alguma atividade mecânica <strong>em</strong> vez<br />
de ficar desligada? Que tal se enquanto seu desenvolve<strong>do</strong>r <strong>do</strong>rme, um robô executasse to<strong>do</strong>s<br />
os testes que precisam ser executa<strong>do</strong>s para verificar se a aplicação está funcionan<strong>do</strong><br />
corretamente?<br />
10. E que tal se no dia seguinte cada desenvolve<strong>do</strong>r tivesse <strong>em</strong> cima de sua mesa, ou na sua caixa<br />
postal eletrônica, uma lista de todas as mudanças de comportamento da aplicação <strong>em</strong> relação a<br />
uma versão anterior? Não seria bom também que ao registrar, o defeito tivesse si<strong>do</strong> corrigi<strong>do</strong>, o<br />
usuário fosse imediatamente avisa<strong>do</strong> através de caixa postal?<br />
11. O que você acha de poder deixar o desenvolve<strong>do</strong>r só desenvolven<strong>do</strong> e retirar dele a<br />
responsabilidade de testar a aplicação? E se a “câmera de vídeo inteligente” que havia grava<strong>do</strong><br />
seus testes, além de na manhã <strong>do</strong> dia seguinte distribuir to<strong>do</strong>s os possíveis defeitos<br />
identifica<strong>do</strong>s para os desenvolve<strong>do</strong>res responsáveis, que tal se lhe entregasse periodicamente<br />
estatísticas como, tipos de defeito mais encontra<strong>do</strong>s, número de defeitos encontra<strong>do</strong>s no<br />
perío<strong>do</strong> de responsabilidade <strong>do</strong> desenvolve<strong>do</strong>r, t<strong>em</strong>po médio de solução <strong>do</strong>s defeitos, etc.<br />
12. E sua equipe de suporte é s<strong>em</strong>pre igual à que desenvolveu o sist<strong>em</strong>a? Quan<strong>do</strong> um<br />
desenvolve<strong>do</strong>r assume o suporte de um módulo desenvolvi<strong>do</strong> por outro, quanto t<strong>em</strong>po <strong>em</strong><br />
média ele leva para conhecer to<strong>do</strong>s os detalhes sobre as funcionalidades da aplicação? Em<br />
algum lugar existe um script detalha<strong>do</strong> sobre to<strong>do</strong>s os testes que dev<strong>em</strong> ser feitos no aplicativo<br />
para garantir que a nova versão está livre de probl<strong>em</strong>as?<br />
Fonte: Molinari (2003, p.103-104)<br />
82
ANEXO F <strong>–</strong> FUNCIONAMENTO DA FERRAMENTA DE TESTE<br />
Da<strong>do</strong>s de teste<br />
Resulta<strong>do</strong>s<br />
espera<strong>do</strong>s<br />
Scripts<br />
Ferramenta<br />
Scripts<br />
Relatórios<br />
Figura 9 <strong>–</strong> Funcionamento de uma ferramenta de testes<br />
Fonte: Argollo (2008)<br />
Da<strong>do</strong>s<br />
Resulta<strong>do</strong>s<br />
Interface Gráfica<br />
Programa <strong>em</strong><br />
Teste<br />
83
ANEXO G <strong>–</strong> DISTRIBUIÇÃO DO ESFORÇO - PROJETOS NOVOS<br />
Fonte: REDEA/RJ<br />
Tabela 9 <strong>–</strong> Custo/esforço <strong>em</strong> projetos novos<br />
84
ANEXO H <strong>–</strong> DISTRIBUIÇÃO DO ESFORÇO - MANUTENÇÃO<br />
Fonte: REDEA/RJ<br />
Tabela 10 <strong>–</strong> Custo/esforço na manutenção de sist<strong>em</strong>as<br />
85
ANEXO I <strong>–</strong> DISTRIBUIÇÃO DO ESFORÇO - AMBIENTE<br />
Tabela 11 <strong>–</strong> Custo/esforço na montag<strong>em</strong> <strong>em</strong> ambiente de homologação<br />
Fonte: REDEA/RJ<br />
86
ANEXO J <strong>–</strong> COMPARANDO FERRAMENTAS<br />
Neste quadro foram usa<strong>do</strong>s notas de 1 a 10. Os pesos escolhi<strong>do</strong>s foram 1, 3 e 9,<br />
pois eles são de base cúbica (3 x ). Este tipo de técnica reflete mais facilmente os<br />
pesos de itens que serão avalia<strong>do</strong>s.<br />
Tabela 12 <strong>–</strong> Ex<strong>em</strong>plo de requerimento num quadro comparativo<br />
Fornece<strong>do</strong>r Empr A Empr B<br />
Ferramenta Soft A Soft B<br />
Critérios Peso/Notas Ideal Nota Nota<br />
Facilidade de Uso 1 10 9 7<br />
Produtividade 1 10 9 7<br />
Confiabilidade 1 10 9 8<br />
Recursos de monitoração <strong>em</strong> geral 1 10 9 7<br />
Recursos de gráficos <strong>em</strong> geral 1 10 9 7<br />
Recursos de relatórios <strong>em</strong> geral 1 10 9 7<br />
Recursos de customização 3 10 9 7<br />
Suporte a gráficos atuais 3 10 8 5<br />
Monitoração local (ex: REP <strong>em</strong> prod.) 3 10 8 7<br />
Documentação disponível 1 10 8 5<br />
Monitoração app Web 3 10 8 7<br />
Monitoração app Client Server 3 10 10 5<br />
Monitoração app Siebel 3 10 8 10<br />
Monitoração app Magellan 3 10 7 5<br />
Integração com BD Oracle 3 10 7 8<br />
Integração com outros BD 1 10 8 7<br />
Integração horizontal/vertical 1 10 9 5<br />
Política de licença 3 10 10 10<br />
Força <strong>do</strong> fabricante 1 10 8 7<br />
Popularidade HOJE 1 10 10 9<br />
Representação no Brasil 1 10 10 8<br />
Representação no RJ 3 10 7 5<br />
Serviços de suporte 3 10 8 10<br />
TCO (avalia<strong>do</strong> inversamente) 1 10 7 7<br />
Suporte - Profissionais disponíveis 1 10 5 8<br />
Suporte - Custo (avalia<strong>do</strong> inversamente) 9 10 9 6<br />
Custo - Produto (avalia<strong>do</strong> inversamente) 9 10 8 9<br />
TOTAL 650 542 471<br />
Percentual relativo ao ideal 0,83384615 0,72461538<br />
Fonte: Molinari (2003, p.111-112)<br />
87
ANEXO K <strong>–</strong> TIPOS DE FERRAMENTAS SEGUNDO MOLINARI<br />
Test Design<br />
Quadro 13 - Visão Comercial<br />
Ajuda na decisão da escolha <strong>do</strong> teste que precisa ser executa<strong>do</strong>.<br />
GUI Test Drivers &<br />
Capture/Replay<br />
Ajudam na execução de testes que façam uso de uma GUI (graphical<br />
user interface), independente se a aplicação é Web, Client-Server, Java,<br />
etc.<br />
Load & Performance<br />
Ferramentas especializadas <strong>em</strong> dar “uma carga pesada de da<strong>do</strong>s” ao<br />
sist<strong>em</strong>a. Também conheci<strong>do</strong> como ferramentas <strong>do</strong> “test-driver”.<br />
Non-GUI Test Drivers Ferramentas de automação de execução <strong>do</strong>s testes com uma interface<br />
& Test Managers gráfica. Pod<strong>em</strong> trabalhar com grandes suites de testes.<br />
Ferramentas que ajudam na impl<strong>em</strong>entação <strong>do</strong>s testes. Um ex<strong>em</strong>plo<br />
Test Impl<strong>em</strong>entation típico seria a geração automática de sub-rotinas para tratamento de<br />
falhas óbvias no programa.<br />
Test Evaluation<br />
Ferramenta que ajuda a avaliar a qualidade <strong>do</strong>s seus testes A ferramenta<br />
de análise de cobertura de código (“code coverage”) seria um ex<strong>em</strong>plo.<br />
Static Analysis<br />
Ferramentas que analisam o programa s<strong>em</strong> executá-lo. Ferramentas de<br />
métricas pertenc<strong>em</strong> a esta categoria.<br />
Defect Tracking<br />
Ferramentas que ajudam a gerenciar um “banco de da<strong>do</strong>s” com os<br />
defeitos encontra<strong>do</strong>s.<br />
Fonte: Molinari (2003, p.107)<br />
Quadro 14 - Visão Acadêmica<br />
Capture/Replay Captura os coman<strong>do</strong>s executa<strong>do</strong>s por usuários e os executam.<br />
Code Auditors Análise e auditoria de código que está sen<strong>do</strong> testa<strong>do</strong>.<br />
Debuggers<br />
Ferramentas típicas <strong>do</strong>s programa<strong>do</strong>res, que visam retirar erros básicos<br />
<strong>do</strong> código desenvolvi<strong>do</strong>.<br />
Standards Checkers Ferramentas que permit<strong>em</strong> verificar padrões de interface.<br />
Structural Analyzers<br />
Ferramentas que permit<strong>em</strong> analisar a estrutura de aplicação-alvo de<br />
teste.<br />
Test Coverage<br />
Analyzers<br />
Análises de cobertura de código.<br />
Test Data Extraction Ferramentas de extração e verificação de da<strong>do</strong>s para teste.<br />
Test Data Generators Ferramentas de geração de massas de da<strong>do</strong>s para teste.<br />
Test Manag<strong>em</strong>ent Ferramenta de gerenciamento de teste.<br />
Fonte: Molinari (2003, p.107-108)<br />
Ferramenta de testes<br />
funcional e regressão<br />
(caixa-preta)<br />
Ferramenta de teste de<br />
performance e carga<br />
Ferramenta de planejamento<br />
de testes<br />
Ferramenta de testes de<br />
monitoração<br />
Ferramentas de testes<br />
estrutural (caixa-branca)<br />
Fonte: Molinari (2003, p.108)<br />
Quadro 15 <strong>–</strong> Novas Tendências<br />
Captura os coman<strong>do</strong>s executa<strong>do</strong>s por usuários e os executam.<br />
Testar performance e carga de um sist<strong>em</strong>a torna-se cada vez<br />
necessário.<br />
Planejar testes torna-se cada vez mais necessário.<br />
Testes <strong>em</strong> t<strong>em</strong>po real da aplicação <strong>em</strong> produção, verifican<strong>do</strong> sua<br />
disponibilidade. O seu SLA se tornou necessário.<br />
Testar o código quan<strong>do</strong> ele está <strong>em</strong> sua concepção t<strong>em</strong> se torna<strong>do</strong><br />
extr<strong>em</strong>amente útil para melhorar a qualidade <strong>do</strong> código <strong>em</strong> si.<br />
88
ANEXO L <strong>–</strong> EXEMPLOS DE TABELAS DATA-DRIVEN<br />
Tabela 13 - Cadastro de clientes<br />
Sobrenome Nome Conta De<strong>pós</strong>ito<br />
Silva José 30.123-A 12.700,00<br />
Moraes Carlos 40.456-B 8.200,00<br />
Fonte: Argollo (2008)<br />
Tabela 14 - Transferência<br />
Conta Conta Valor<br />
30.123-A 40.456-B 500,00<br />
Fonte: Argollo (2008)<br />
Tabela 15 - Verificação de sal<strong>do</strong><br />
Conta Sal<strong>do</strong><br />
30.123-A 12.200,00<br />
40.456-B 8.700,00<br />
Fonte: Argollo (2008)<br />
89
ANEXO M <strong>–</strong> SUITES SEGUE (BORLAND) E IBM<br />
Quadro 16 - Ferramentas da Borland para a automação de testes de software<br />
Borland Gauntlet Integração contínua e cobertura de código para desenvolvimento ágil<br />
Borland SilkPerformer Automação de teste de performance e carga para software<br />
Borland SilkTest Automação de teste funcional e de regressão<br />
SilkCentral Test Manager<br />
Fonte: Borland (2008)<br />
Gerenciamento de qualidade por meio <strong>do</strong> alinhamento entre requisitos<br />
e objetivos de negócios<br />
Quadro 17 - Ferramentas da IBM para a automação de testes de software<br />
Rational Functional Tester<br />
Rational Functional Tester<br />
Extension for Terminalbased<br />
Applications<br />
Rational Manual Tester<br />
Rational Purify for Linux<br />
and UNIX<br />
Rational Purify for<br />
Win<strong>do</strong>ws<br />
Rational PurifyPlus<br />
Enterprise Edition<br />
Rational PurifyPlus for<br />
Linux and UNIX<br />
Rational PurifyPlus for<br />
Win<strong>do</strong>ws<br />
Rational Robot Rational<br />
Robot<br />
Rational Test RealTime<br />
Fonte: IBM (2008)<br />
Testes funcionais automatiza<strong>do</strong>s avança<strong>do</strong>s de aplicativos Java, da<br />
Web e VS.NET basea<strong>do</strong>s <strong>em</strong> WinForm.<br />
Estende o Rational Functional Tester para suportar o teste de<br />
aplicativos basea<strong>do</strong>s <strong>em</strong> terminal.<br />
Aprimora os esforços de autoria e execução de testes manuais<br />
utilizan<strong>do</strong> novas técnicas de design de testes.<br />
Fornece detecção de fuga de m<strong>em</strong>ória e de corrupção de m<strong>em</strong>ória<br />
para Linux e UNIX.<br />
Fornece detecção de fuga de m<strong>em</strong>ória e de corrupção de m<strong>em</strong>ória<br />
para Win<strong>do</strong>ws.<br />
Fornece análise de t<strong>em</strong>po de execução para Win<strong>do</strong>ws, Linux e UNIX.<br />
Conjunto de ferramentas de análise de t<strong>em</strong>po de execução para<br />
desenvolvimento <strong>em</strong> Java e C/C++ basea<strong>do</strong> <strong>em</strong> Linux e UNIX.<br />
Análise <strong>do</strong> t<strong>em</strong>po de execução para desenvolvimento <strong>em</strong> Java, C/C++,<br />
Visual Basic e .NET gerencia<strong>do</strong> basea<strong>do</strong> <strong>em</strong> Win<strong>do</strong>ws.<br />
Ferramenta de automatização de testes de uso geral para aplicativos<br />
cliente/servi<strong>do</strong>r.<br />
Permite o teste de componentes e a análise <strong>em</strong> t<strong>em</strong>po de execução<br />
para software integra<strong>do</strong> e de t<strong>em</strong>po real de plataformas cruzadas.<br />
90
ANEXO N <strong>–</strong> SOLUÇÕES COMERCIAIS<br />
Ferramenta Informações<br />
WinRunner<br />
Quadro 18 <strong>–</strong> Ferramentas comerciais<br />
Automação de software e sites web, desenvolvida pela Mercury Interactive<br />
(http://www.mercuryinteractive.com/)<br />
QuickTest Pro Mercury Interactive (http://www.mercuryinteractive.com/)<br />
TestComplete AutomatedQA (http://www.automatedqa.com/)<br />
Ap Test Manager ApTest (http://www.aptest.com/resources.html)<br />
e-Test Empirix (http://www.<strong>em</strong>pirix.com/)<br />
TestArchitect LogiGear (http://www.logigear.com/)<br />
Eccox Auditoria de código fonte (Cobol/DB2), Eccox (http://www.eccox.com.br/)<br />
XPediter Compuware (http://www.compuware.com/)<br />
QA-Load<br />
Ferramenta usada para teste de stress, Compuware<br />
(http://www.compuware.com/)<br />
QA-Run Automatização de plataforma baixa, Compuware (http://www.compuware.com/)<br />
HiperStation<br />
Automatização de plataforma alta (on-line), Compuware<br />
(http://www.compuware.com/)<br />
Devpartner Auditoria de código fonte (JAVA), Compuware (http://www.compuware.com/)<br />
Família File-Aid Controle de confiabilidade, Compuware (http://www.compuware.com/)<br />
QA-Teste<br />
Estruturação e controle <strong>do</strong>s casos e da massa de teste, RSI Informática<br />
(http://www.rsinet.com.br/)<br />
Control-M Controle de produtividade, BMC Software (http://www.bmc.com/)<br />
QA-Wizard Seapine (http://www.seapine.com/qawizard.html)<br />
IPL<br />
LDRA Ltd<br />
Testwell<br />
ADL Translation<br />
Syst<strong>em</strong><br />
Para as linguagens AdaTEST, Cantata, Cantata++, geração automática <strong>do</strong>s<br />
casos de teste baseadas <strong>em</strong> código fonte, IPL (http://www.iplbath.com/)<br />
Geração automática <strong>do</strong>s casos de teste baseadas <strong>em</strong> código fonte, LDRA<br />
Testbed (http://www.ldra.com/)<br />
Para C, C++ e Java, geração automática <strong>do</strong>s casos de teste baseadas <strong>em</strong><br />
código fonte, Testwell (http://www.testwell.sci.fi/homepage.html)<br />
Geração automática <strong>do</strong>s casos de teste baseadas <strong>em</strong> especificação formal<br />
91
ANEXO O <strong>–</strong> SOLUÇÕES COMERCIAIS<br />
Quadro 19 <strong>–</strong> Características apresentadas pelas ferramentas de teste OO<br />
Ferramentas de<br />
teste de software<br />
Teste de unidade<br />
Teste de integração<br />
Teste de sist<strong>em</strong>a<br />
Critérios funcionais<br />
PiSCES Java <br />
SunTest Java <br />
xSuds Toolsuite C/C++ <br />
JProbe Developer Suite Java <br />
TCAT/Java Java <br />
JCover Java <br />
Parasoft C++ Test C/C++ <br />
Parasoft Insure++ C/C++ <br />
ProLint C/C++ <br />
Rational PureCoverage C++/Java <br />
Rational Purify C/C++ <br />
JUnit Java<br />
Cobertura Java<br />
JaBUTi Java <br />
CTB Java/C/C++<br />
Parasoft JTest Java <br />
Glass JAR Toolkit Java<br />
Object Mutation Engine Java <br />
Ferramenta de Chevalley Java <br />
Ferramenta de Ma et al Java <br />
Mutation Testing Syst<strong>em</strong> Java <br />
Fonte: Delamaro et al (2007, p.174)<br />
Critérios de fluxo de controle<br />
Critérios de fluxo de da<strong>do</strong>s<br />
Critérios basea<strong>do</strong>s <strong>em</strong> mutação<br />
Linguag<strong>em</strong> suportada<br />
Exigências de código-fonte<br />
Atividade de depuração<br />
Teste de regressão<br />
92
ANEXO P <strong>–</strong> FERRAMENTAS DE TESTE GRATUITAS<br />
Quadro 20 - Melhores ferramentas Open Source para gestão e automação<br />
Categoria Ferramenta<br />
Gestão de<br />
projetos<br />
Testes de<br />
performance<br />
Gestão de testes<br />
Gestão de<br />
defeitos<br />
Gestão de<br />
requisitos<br />
ProjectKoach - http://www.projectkoach.com/<br />
PHP-Collab - http://www.php-collab.org/<br />
GanttProject - http://ganttproject.biz/<br />
Project-Open - http://www.project-open.com/<br />
OpenWorkbench - http://www.openworkbench.org/<br />
XPlanner - http://www.xplanner.org/<br />
WebCollab - http://webcollab.sourceforge.net/<br />
Mindquarry - http://www.mindquarry.com/<br />
OpenSTA - http://www.opensta.org/<br />
JMeter - http://jakarta.apache.org/jmeter/index.html<br />
Microsoft WEB Application Stress Tool -<br />
http://www.microsoft.com/<strong>do</strong>wnloads/details.aspx?FamilyID=e2c0585a-062a-439ea67d-75a89aa36495&DisplayLang=en<br />
Webload - http://www.webload.org/<br />
The Grinder - http://grinder.sourceforge.net/<br />
TestLink - http://www.teamst.org/<br />
QaManager - http://qamanager.sourceforge.net/<br />
RTH - http://www.rth-is-quality.com/<br />
TestMaster - http://testmaster.sourceforge.net/<br />
Testitool - http://major<strong>do</strong>jo.com/testitool/<br />
Test Case Web (TCW) - http://tcw.sourceforge.net/<br />
Testopia - http://www.mozilla.org/projects/testopia/<br />
Mantis - http://www.mantisbt.org/<br />
Bugzilla - http://www.bugzilla.org/<br />
Scarab - http://scarab.tigris.org/<br />
BugNET - http://www.bugnetproject.com/<br />
TRAC - http://trac.edgewall.org/<br />
OSRMT - http://www.osrmt.com/<br />
Tiger PRO - http://www.seecforum.unisa.edu.au/seectools.html<br />
Xuse - http://xuse.sourceforge.net/<br />
REM (REquisite Manag<strong>em</strong>ent) -<br />
http://www.lsi.us.es/descargas/descarga_programas.php?id=3<br />
93
Testes<br />
funcionais<br />
TRUC - http://sourceforge.net/projects/truc<br />
Plan<strong>do</strong>ra - http://plan<strong>do</strong>ra.sourceforge.net/<br />
Jer<strong>em</strong>ia - http://jer<strong>em</strong>ia.sourceforge.net/<br />
Selenium (WEB) - http://www.openqa.org/selenium/<br />
actiWATE (WEB) - http://www.actiwate.com/<br />
Marathon (Java Swing) - http://www.marathontesting.com/marathon/<br />
Watir (WEB) - http://wtr.rubyforge.org/<br />
Canoo WEBTest (WEB) - http://webtest.canoo.com/<br />
Apo<strong>do</strong>ra (WEB) - http://www.apo<strong>do</strong>ra.org/<br />
Abbot (Java Swing) - http://abbot.sourceforge.net/<br />
SoapUI (WEBServices) - http://www.soapui.org/<br />
SOAPSonar Personal Edition (WEBServices) - http://www.crosschecknet.com/<br />
LISA WS-Testing (WEBServices) -<br />
http://www.itko.com/site/products/lisa/ws_testing.jsp<br />
Squish for KDE (Linux) - http://www.froglogic.com/<br />
SharpRobo (WinForm .NET) -<br />
http://confluence.public.thoughtworks.org/display/SHRO/Home<br />
FitNesse - http://fitnesse.org/<br />
Estimativas Construx Estimate - http://www.construx.com/Page.aspx?nid=68<br />
Controle de<br />
versões<br />
Fonte: Caetano (2007)<br />
TortoiseCVS http://www.tortoisecvs.org/<br />
WinCVS - http://www.wincvs.org/<br />
Subversion - http://subversion.tigris.org/<br />
Darcs - http://darcs.net/<br />
94