29.09.2013 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!