Escolar Documentos
Profissional Documentos
Cultura Documentos
UNIVERSIDADE DE FORTALEZA
CENTRO DE CINCIAS TECNOLGICAS
MESTRADO EM INFORMTICA APLICADA
Fortaleza, CE - Brasil
Dezembro / 2007
Livros Grtis
http://www.livrosgratis.com.br
Milhares de livros grtis para download.
ii
Fortaleza, CE - Brasil
Dezembro / 2007
iii
Banca Examinadora:
________________________________________________________
Prof. Pedro Porfrio Muniz Farias, D. Sc.
(Prof. Orientador UNIFOR)
________________________________________________________
Prof. Nabor das Chagas Mendona, Ph. D.
(Membro da Banca Examinadora UNIFOR)
________________________________________________________
Prof. Rossana Maria de Castro Andrade, Ph. D.
(Membro da Banca Examinadora UFC)
iv
vi
AGRADECIMENTOS
vii
viii
ix
Abstract of the dissertation presented to the board of faculties of the Master Program
in Applied Informatics at the University of Fortaleza, as partial fulfillment of the requirements
for the Masters degree in Applied Informatics.
Functional testing automation has become a real interest for software development
teams, mainly because of the great cost reduction and the increase in productivity observed on
medium and long terms with the use of this practice. This dissertation proposes a framework
to improve reusability and maintainability of automated test suites. The proposed solution was
developed at SERPRO and has been used in real projects. The framework, called FuncTest,
applies software patterns and the Data-driven and Keyword-driven techniques to organize
automated test suites. The efforts to improve FuncTest intend to adapt it for generating tests
automatically using the Model-based Testing technique.
Keywords: Testing Automation; Functional Testing, Black Box Testing; Software
Testing, Regression Testing, Software Patterns.
SUMRIO
1. INTRODUO .................................................................................................................... 1
1.1 MOTIVAO...................................................................................................................... 1
1.2 OBJETIVO .......................................................................................................................... 5
1.3 ORGANIZAO DO TRABALHO .......................................................................................... 6
2. AUTOMAO DE TESTES FUNCIONAIS ................................................................... 7
2.1 INTRODUO .................................................................................................................... 7
2.2 TESTE DE SOFTWARE ......................................................................................................... 7
2.2.1 Atividades de Teste ................................................................................................ 9
2.2.1.1 Identificao ............................................................................................ 10
2.2.1.2 Projeto ..................................................................................................... 10
2.2.1.3 Construo ............................................................................................... 11
2.2.1.4 Execuo ................................................................................................. 11
2.2.1.5 Comparao ............................................................................................. 12
2.2.2 Nveis de Teste ..................................................................................................... 12
2.2.2.1 Teste Unitrio .......................................................................................... 13
2.2.2.2 Teste de Integrao.................................................................................. 14
2.2.2.3 Teste de Sistema ...................................................................................... 14
2.2.2.4 Teste de Aceitao .................................................................................. 15
2.2.3 Tcnicas de Teste ................................................................................................. 15
2.2.3.1 Teste Caixa-preta (Black-box) ................................................................. 15
2.2.3.1.1 Particionamento em Classes de Equivalncia ................................. 16
2.2.3.1.2 Anlise de Valor-Limite .................................................................. 17
2.2.3.1.3 Grafo de Causa-Efeito ..................................................................... 18
2.2.3.2 Teste Caixa-branca (White-box) .............................................................. 22
2.2.3.2.1 Teste de Caminho Bsico ................................................................ 23
2.2.4 Tipos de Teste ...................................................................................................... 26
2.2.4.1 Funcionalidade ........................................................................................ 27
2.2.4.2 Usabilidade .............................................................................................. 28
xi
xii
xiii
FIGURAS
xiv
xv
TABELAS
xvi
LISTAGENS
Captulo 1
1. Introduo
1.1 Motivao
A construo de um software uma atividade que pode se tornar bastante complexa.
Dependendo das caractersticas e dimenses do sistema, muitos problemas podem ser
introduzidos. Para que estes problemas no se perpetuem at a entrega do sistema ao cliente,
essencial que o sistema seja devidamente testado. O intuito do teste de software executar
um programa ou um modelo utilizando algumas entradas em particular e verificar se seu
comportamento est de acordo com o esperado (DELAMARO et al., 2007).
Segundo PRESSMAN (2002), teste de software um elemento crtico da garantia de
qualidade de software e representa a reviso final da especificao, projeto e gerao de
cdigo. Isto decorre da falibilidade humana e refora a necessidade de uma constante
preocupao em identificar desvios desde o incio do processo de desenvolvimento. Neste
contexto, embora sejam devidamente revisados os artefatos gerados durante o processo de
desenvolvimento, no se pode garantir que sistemas entregues ao cliente no contenha
defeitos.
DELAMARO et al. (2007) definem defeito (do ingls, fault) como sendo um passo,
processo ou definio de dados incorretos. Tambm afirmam que a existncia de um
defeito pode ocasionar a ocorrncia de um erro (error) durante a execuo de um programa,
que se caracteriza por um estado inconsistente ou inesperado. Tal estado pode levar a uma
falha (failure), ou seja, pode fazer com que o resultado produzido pela execuo seja
diferente do resultado esperado. Eles ressaltam que estas definies no so unanimidades
entre os pesquisadores e engenheiros de software, e que, em particular, o termo erro
utilizado de maneira bastante flexvel, muitas vezes significando defeito ou falha.
Desta forma, durante o desenvolvimento do sistema, importante que a equipe
verifique constantemente os artefatos produzidos para evitar que defeitos se propaguem para
etapas seguintes do processo. Evidentemente, quanto mais tarde um defeito encontrado
maior o custo de sua correo (MYERS, 2004), podendo, em casos extremos, causar danos
irreparveis. Assim, o custo de correo pode ser significativamente minimizado quando
defeitos so encontrados precocemente.
O desafio, ento, encontrar o maior nmero de defeitos possvel nas etapas iniciais
do desenvolvimento, pois quanto mais cedo um erro identificado menor o seu custo de
correo. A Figura 1, adaptada de CRISTALLI (2006), ilustra o custo relativo para remoo
de defeitos durante etapas de um ciclo de desenvolvimento de software. No grfico, o custo de
remoo aumenta medida que se avana no ciclo de desenvolvimento. Por exemplo, a
remoo de um defeito aps o sistema ter sido disponibilizado em Produo pode custar at
80 vezes mais do que custaria se este fosse removido ainda na etapa de definio de
requisitos.
Bem documentada: nem sempre o profissional que mantm a sute o mesmo que
a criou. Mant-la bem documentada facilita a sua manuteno por outro
profissional;
de
teste
por
profissionais
sem
nenhum
conhecimento
especializado
em
desenvolvimento. Por outro lado, possibilita transtorno por permitir a incluso de informaes
desestruturadas nas planilhas, causa um retardo no acesso aos procedimentos de teste e limita
a persistncia dos dados de teste a esta tecnologia.
RYBALOV (2004) prope alguns padres de projeto para estruturar scripts de teste,
que podem ser adaptados tambm para testes de unidade. Esta abordagem complementar
abordagem aqui apresentada. Neste caso, preciso um conhecimento bastante especializado
em programao orientada a objetos para a criao das classes que implementam os scripts ou
que estruturam a implementao dos padres.
MESZAROS (2007) prope padres de projeto no contexto de testes unitrios.
1.2 Objetivo
Este trabalho apresenta um framework, denominado FuncTest, que implementa uma
arquitetura baseada na aplicao de padres de software e das tcnicas Data-driven e
Keyword-driven. O framework foi desenvolvido usando-se a ferramenta IBM Rational XDE
Tester (FUREY, 2004; IBM, 2004), portanto, se necessrio, precisa ser adaptado a outras
ferramentas Record and Playback orientadas a objetos.
O framework FuncTest promove, atravs da aplicao dos padres, a independncia
do SGBD onde os dados de teste so persistidos; a facilidade de incluso e excluso dos casos
de teste que iro compor a sute; a abstrao no acesso aos dados de teste e aos scripts de
teste; e um melhor reuso dos scripts de teste, devido granuralidade dos scripts e devido aos
dados de teste estarem associados aos passos de um caso de teste.
Antecipando-se necessidade de manuteno das sutes de teste automatizadas, a
arquitetura do framework desenvolvido foi essencialmente baseada em padres de software,
visando proporcionar maior flexibilidade. Com este objeto, aplicou-se o padro arquitetural
MVC (Model-View-Controller) e os padres de projeto Factory Method e Data Access Object
(DAO).
O padro arquitetural MVC (BUSCHMANN, 1996) foi utilizado para projetar a
arquitetura num nvel mais alto de abstrao. O padro DAO (ALUR, 2003) foi aplicado para
garantir transparncia de acesso aos dados de teste persistidos, tanto dados de entrada quanto
dados de sada esperados. O padro Factory Method (GAMMA, 1995), foi usado em duas
situaes: (1) para garantir independncia na obteno dos scripts de teste da sute; (2) para
fornecer transparncia no acesso aos objetos DAO.
Outro grande benefcio do uso do FuncTest o tratamento de erros centralizado, que
alm de minimizar os custos de manuteno do projeto de automao, possibilita, na maioria
dos casos, a execuo ininterrupta de sutes de teste.
O framework se encontra em uso por especialistas de teste do SERPRO (Servio
Federal de Processamento de Dados) (OLIVEIRA, 2007b). O processo de desenvolvimento
padro utilizado na equipe corresponde a uma customizao do RUP (Rational Unified
Process) (RUP, 2001) aderente ao nvel 3 do modelo CMMI (Capability Maturity Model
Integration) (CMMI, 2002). Uma verso preliminar do framework foi premiada
nacionalmente em congresso promovido pela empresa em 2006.
Captulo 2
2. Automao de Testes Funcionais
Este captulo apresenta uma viso geral sobre teste de software com destaque
para a automao de testes funcionais.
2.1 Introduo
Testar um software uma tarefa meticulosa que pode se tornar cansativa. Uma
alternativa para proporcionar a entrega de produtos confiveis em menor tempo a realizao
de teste de software de maneira automatizada (DUSTIN, 2003). No contexto deste trabalho, a
automao restringe-se execuo de testes funcionais (caixa-preta).
Automatizar a execuo de testes funcionais consiste na construo de scripts de teste
capazes de simular o comportamento de um usurio sobre a interface da aplicao em teste.
Para enquadrar este processo de automao num contexto mais amplo, ser primeiramente
apresentada uma viso geral sobre Teste de Software, destacando-se importantes fatores que
direcionam este trabalho para a soluo proposta.
Quanto mais erros um caso de teste detectar, mais ele pode ser considerado um caso de
teste de sucesso, embora algumas pessoas considerem um caso de teste de sucesso aquele que
no apresenta nenhum erro durante a sua execuo (MYERS, 2004).
Testar um software no uma tarefa trivial. Mesmo quando se trata de um programa
simples, como um sistema de controle bibliotecrio, o nmero de entradas e de combinaes
possveis pode ser expressivo o suficiente para tornar os testes insuficientes e enfadonhos.
Desta forma, a criao de casos de teste para todas as entradas possveis seria impraticvel.
Neste contexto, no se pode aferir que um programa est livre de erros. No h
garantia de que qualquer conjunto de entradas possvel resultar num comportamento
adequado da aplicao.
O desafio, ento, tratar teste de software como um processo integrado ao processo de
desenvolvimento, e no como uma fase ao final do ciclo de vida (DUSTIN, 2003). Isto
minimizar as chances de repercutir erros para etapas seguintes, reduzindo os custos do
projeto. A Figura 2 ilustra uma abordagem do processo de teste atravs de um Modelo V
simplificado, adaptado de CRAIG (2002).
10
2.2.1.1 Identificao
Nesta atividade, identificado o qu pode ser testado, preferencialmente priorizando
as condies de teste (itens ou eventos que podem ser verificados pelo teste). Esta atividade
preferencialmente realizada durante as etapas que compem o lado esquerdo do Modelo V de
Teste de Software ilustrado na Figura 2 (FEWSTER et al., 1999).
Segundo FEWSTER et al. (1999), condies de teste so descries de
circunstncias que poderiam ser examinadas. Elas podem ser documentadas sob diferentes
maneiras, incluindo sentenas simples, entradas em tabelas ou diagramas, como grafos de
fluxo.
2.2.1.2 Projeto
Esta atividade tem por objetivo definir como os testes sero realizados, incluindo prrequisitos para realizao de cada caso de teste, como variveis do ambiente de execuo ou
estado da base de dados. O projeto de casos de teste produz testes que abrangem entradas
especficas, sadas esperadas e outras informaes importantes para a execuo do teste, como
pr-requisitos de ambiente. Esta atividade preferencialmente realizada durante as etapas que
compem o lado esquerdo do Modelo V de Teste de Software ilustrado na Figura 2
(FEWSTER et al., 1999).
11
Durante esta atividade, os casos de teste podem ser associados s condies de teste
definidas, para garantir que elas so exercitadas pelos casos de teste projetados. Fewster et al.
(1999) apresenta um exemplo de caso de teste com cinco passos (steps), onde cada passo
associado a uma ou mais condies de teste. No exemplo, o caso de teste exercita trs
condies de teste, sendo uma delas derivada usando-se a tcnica Particionamento em Classes
de Equivalncia e as outras duas derivadas usando-se a tcnica Anlise do Valor Limite.
2.2.1.3 Construo
Nesta atividade, os casos de teste so implementados pela preparao dos scripts de
teste, manuais ou automatizados, as entradas e as sadas esperadas. Para testes automatizados,
as entradas e as sadas esperadas podem ser organizadas em arquivos separados ou como parte
dos scripts. Para testes manuais, estas sadas podem ser simplesmente anotadas. Configurar as
sadas esperadas para serem comparadas atravs de testes automatizados pode ser
significativamente mais complexo do que a configurao equivalente para testes manuais. A
atividades de construo de casos de teste preferencialmente realizada durante as etapas que
compem o lado esquerdo do Modelo V de Teste de Software ilustrado na Figura 2
(FEWSTER et al., 1999).
2.2.1.4 Execuo
Para testes manuais, a execuo normalmente realizada seguindo-se um
procedimento manual impresso. So ento fornecidas entradas, observadas as sadas e
registrados os problemas encontrados. Para testes automatizados, a execuo consiste na
utilizao de ferramenta apropriada, especificando-se os casos de teste que deve ser
executados, os quais podem corresponder a um ou mais scripts. Esta atividade
necessariamente realizada durante os nveis de teste que compem o lado direito do Modelo V
de Teste de Software ilustrado na Figura 2 (FEWSTER et al., 1999), pois a existncia do
software essencial para a execuo dos testes.
12
2.2.1.5 Comparao
Para se verificar o comportamento do software frente ao esperado, as sadas devem ser
comparadas, de maneira formal (investigando-se rigorosamente as diferenas entre as sadas
exatas as sadas esperadas) ou informal (baseando-se nas sadas que o testador esperava ver).
Algumas sadas normalmente so comparadas durante a execuo do sistema, como
mensagens ou validao de campos da tela. Outras sadas somente podem ser comparadas
aps a execuo completa do caso de teste, como mudanas de registros de banco de dados.
Um teste automatizado precisa combinar essas duas abordagens (FEWSTER et al., 1999).
Caso as sadas esperadas no correspondam s sadas dos casos de teste, de acordo
com a comparao realizada, supe-se que o teste tenha falhado. No entanto, o que se pode
dizer neste momento que estas diferenas precisam ser investigadas, ou sejam verificadas.
H casos em que estas diferenas so causadas por erro na seqncia de execuo do script,
erros de configurao do sistema ou por falhas na especificao do teste (FEWSTER et al.,
1999).
13
A Figura 5, adaptada de CRAIG (2002), ilustra os quatro nveis de teste numa relao
entre o escopo do software sob teste e a realidade de ambiente existente. CRAIG (2002)
afirma que cada nvel definido por um ambiente particular, que pode incluir configurao
de hardware, configurao de software, interfaces, testadores etc. Note que medida em que
voc se move para nveis mais altos de teste o ambiente se torna mais realstico.
14
15
16
17
Se uma condio de entrada especifica uma situao do tipo deve ser, define-se
uma classe de equivalncia vlida e uma invlida. Por exemplo, se o nome de um
funcionrio deve ser iniciado com uma letra, define-se uma classe de equivalncia
vlida inicia com letra e uma invlida no inicia com letra.
Aps definir as classes de equivalncia para cada condio de entrada, casos de teste
devem ser criados primeiramente para as classes de equivalncia vlidas, at que todas sejam
cobertas. Em seguida, deve ser criado um caso de teste para cada classe de equivalncia
invlida, pois o comportamento do sistema para cada uma dessas classes deve ser verificado
individualmente (MYERS, 2004).
Se uma condio de entrada especifica uma faixa de valores, devem ser definidos
casos de teste para os extremos da faixa e para os valores imediatamente alm dos
extremos. Por exemplo, se a faixa corresponder os inteiros de 3 e 10, devem ser
criados casos de teste para os valores 3, 10, 2 e 11. Esta diretriz tambm pode ser
utilizada para cada condio de sada. Por exemplo, caso o programa gere como
sada um nmero real que esteja entre 0,00 e 10,00, pode-se tentar criar casos de
teste para estes dois extremos e para os valores -0,01 e 10,01;
18
19
Baseando-se nas causas, nos efeitos e em suas combinaes, um grafo de causaefeito desenvolvido para cada unidade de especificao. As causas so os ns
posicionados no lado esquerdo de um relacionamento e os efeitos so os ns
posicionados no lado direito. Cada n pode assumir um valor booleano (0 ou
1, representando, respectivamente, a ausncia ou a presena de uma causa ou de
um efeito). A Figura 6 ilustra a notao bsica para a criao dos grafos;
20
Algumas restries devem ser especificadas no grafo para informar que algumas
combinaes so impossveis devido a restries sintticas ou de ambiente. A
Figura 8 ilustra os seis smbolos de restrio utilizados (E = No mximo um
elemento pode ter valor 1; I = Pelo menos um elemento deve ter o valor 1; O =
Apenas um dos elementos pode ter valor 1; R = se o valor de a 1, o valor de b
tem que ser 1; M = se o efeito a tem valor 1, o efeito b forado a valer 0).
21
Esta tabela deve possuir uma linha para cada causa e uma linha para cada efeito. As
entradas possveis para a tabela so as mesmas para um n no grafo: 0 ou 1. Segundo
BURNSTEIN (2003), a tabela deve refletir os relacionamentos e o grafo, e mostra os efeitos
para todas as possveis combinaes de causas. Caso um campo da tabela no seja preenchido
ou possua o smbolo -, significa que aquela entrada no influir na condio de sada.
A Tabela 1 representa a tabela de deciso do exemplo da Figura 7. Neste exemplo, so
apresentadas somente 3 colunas porque o valor de entrada para a causa C2 (o caractere
informado deve pertencer string) no influi na condio de sada quando o valor da causa
C1 (o tamanho da string deve ser um inteiro positivo de 1 a 80) 0.
22
As colunas da tabela sero utilizadas para gerar os casos de teste. A Tabela 2, adaptada
de BURNSTEIN (2003), exemplifica um conjunto de 3 casos de teste gerados atravs da
Tabela 1. No exemplo, considera-se que os caracteres sero pesquisados dentro da seguinte
string: abcde.
Entradas Tamanho da string
5
1
2
90
Sadas
3
Caractere no encontrado na
string
Inteiro fora da faixa
que cada caminho do cdigo seja exercitado pelo menos uma vez;
23
24
Neste exemplo, cada losango corresponde a uma condio simples. Caso existam
condies compostas, torna-se mais complexa a representao do grafo. A Listagem 1 mostra
25
um trecho de cdigo ilustrando um lao (comando estruturado Enquanto) que possui duas
condies a ele associadas.
Linha
1
...
5
...
10
...
Cdigo
...
...
Enquanto (x < 1) e (y < 1) faa
...
Fim Enquanto;
...
26
Usando uma dessas trs maneiras para calcular a complexidade ciclomtica do grafo G
da Figura 13, obtm-se as seguintes expresses:
4 regies = 4;
11 arestas 9 ns + 2 = 4;
3 ns predicados + 1 = 4.
1-11;
1-2-3-4-5-10-1-11;
1-2-3-6-8-9-10-1-11;
1-2-3-6-7-9-10-1-11.
Usability (Usabilidade),
Reliability (Confiabilidade),
Performance
27
dimenses de qualidade, como denomina o referido processo, existe um ou mais tipos de teste
associado(s) (Tabela 3):
Dimenses
de Qualidade
Funcionalidade
Usabilidade
Confiabilidade
Desempenho
Suportabilidade
Tipos de teste
Teste Funcional
Teste de Segurana
Teste de Volume
Teste de Usabilidade
Teste de Integridade
Teste de Estrutura
Teste de Stress
Teste de Avaliao de Desempenho
Teste de Conteno
Teste de Carga
Teste de Perfil de Desempenho
Teste de Configurao
Teste de Instalao
2.2.4.1 Funcionalidade
Seguem os tipos de teste associados dimenso Funcionalidade:
Teste Funcional: Myers (2004) define teste funcional como um processo de tentar
encontrar discrepncias entre o programa e sua especificao externa. Uma
especificao externa uma descrio precisa do comportamento do programa
do ponto de vista do usurio. Segundo RUP (2001), esse tipo de teste pode ser
implementado e executado em diferentes nveis de teste (unitrio, integrao,
sistema). Burnstein (2003) afirma que testes funcionais so caixa-preta por
natureza, uma vez que o foco est nas entradas e sadas apropriadas para cada
funo;
28
2.2.4.2 Usabilidade
Segue o nico tipo de teste associado dimenso Usabilidade de acordo com RUP
(2001):
2.2.4.3 Confiabilidade
Seguem os tipos de teste associados dimenso Confiabilidade de acordo com RUP
(2001):
29
2.2.4.4 Desempenho
Seguem os tipos de teste associados dimenso Desempenho de acordo com RUP
(2001):
2.2.4.5 Suportabilidade
Seguem os tipos de teste associados dimenso Suportabilidade de acordo com RUP
(2001):
Teste de Instalao: Este tipo de teste visa a garantir que o sistema seja instalado
conforme o esperado, mesmo em condies anormais, como espao insuficiente
em disco e interrupo de energia. So simuladas diferentes configuraes de
30
Uma regresso pode afetar novas caractersticas, conforme ilustrado na Figura 14, ou
caractersticas existentes, como ilustra a Figura 15. As duas figuras foram adaptadas de
BLACK (2007).
31
32
processo longo e tedioso. Alm disso, muitas ferramentas permitem que os testes
automatizados se iniciem em diferentes perodos, como, por exemplo, durante a madrugada,
desde que seja feita a devida configurao.
A automao dever refletir fielmente o teste especificado. Portanto, a qualidade do
teste automatizado depender diretamente da qualidade de sua especificao. Alm disso, a
deciso de se automatizar um teste precisa ser feita com base na anlise entre o seu custo e o
benefcio que ela oferece.
Evidentemente, quando se decide automatizar uma sute de teste de regresso,
importante que a sute seja projetada de maneira a possibilitar a sua fcil manuteno, para
que o custo de mant-la viabilize a sua utilizao.
Uma sute de teste de regresso pode compreender testes caixa-branca ou testes caixapreta. Apesar de ser mais comum a realizao de testes de regresso caixa-preta, algumas
equipes de desenvolvimento automatizam testes caixa-branca para garantir maior
confiabilidade ao cdigo desenvolvido. Esta uma prtica comum quando se trabalha com
Integrao Contnua (GOIS, 2007).
Ferramentas de Projeto de Testes (Test Design Tolls): usadas para derivar dados de
teste a partir de uma especificao;
Ferramentas de Projeto Lgico (Logical Design Tools): utilizadas para gerar casos
de teste;
33
34
35
36
(4) Digitar o ttulo de um livro existente (The Art of Software Testing) (Figura
19);
37
A Figura 21 ilustra o script criado com a ferramenta XDE Tester para a execuo do
caso de teste Pesquisa_Livros_Google. Este script foi gravado e alterado em seguida.
Somente o cdigo contido no mtodo testMain foi alterado. O restante do cdigo foi gerado
automaticamente, incluindo os comandos import e os comentrios. importante ressaltar
que este trabalho no prope apresentar detalhes de ambiente, configurao ou uso da
ferramenta.
38
O script da Figura 21 foi gerado com base no template de script de teste da ferramenta
(Listagem 2), o qual pode ser facilmente customizado.
%script:packageDeclaration%
import %helper:fullName%;
import
import
import
import
import
com.rational.test.ft.*;
com.rational.test.ft.object.interfaces.*;
com.rational.test.ft.script.*;
com.rational.test.ft.value.*;
com.rational.test.ft.vp.*;
/**
* Description
: XDE Tester Script
* @author %system:user.name%
*/
public class %script:name% extends %helper:name%
{
/**
* Script Name
: <b>%script:name%</b>
* Generated
: <b>%date% %time%</b>
* Description
: XDE Tester Script
* Original Host : %static:com.rational.test.ft.sys.OperatingSystem.getVersion%
*
* @since %date:yyyy/MM/dd%
* @author %system:user.name%
*/
public void testMain (Object[] args)
{
%script:insertBefore% this entire line will be deleted during initial script
generation
}
}
).
39
Com
seleo
deste
link,
ferramenta
adicionou
item
Desta forma, o XDE Tester consegue reconhecer objetos de interface e o valor de suas
propriedades. importante perceber que cada objeto da tela pertence a uma hierarquia, na
qual o primeiro elemento o prprio browser.
40
Durante a execuo de cada script, as interaes de usurio podem ser assistidas por
um expectador externo, embora a velocidade de algumas operaes seja quase imperceptvel
devido rapidez da ferramenta. Em outras palavras, aes como a conduo do mouse, os
cliques de boto e os preenchimentos de caixa de texto podem ser visualizadas
automaticamente durante a execuo do teste automatizado.
Ao final da execuo, gerado um relatrio de log contendo o registro de algumas
aes realizadas pela ferramenta, indicando se houve sucesso ou falha durante a execuo. A
Figura 24 ilustra o log apresentado via browser aps a execuo do script da Figura 21.
Para cada seo registrada no log, associado o termo PASS para as aes que
passaram no teste e o termo FAIL para as aes que falharam. A Figura 25 ilustra um log de
execuo do caso de teste Pesquisa_Livros_Google simulando o caso de no ter sido
localizado o link de retorno da consulta.
41
Com o uso framework, uma sute de teste pode ser inteiramente executada, sem
intervenes humanas, pois o seu mecanismo de tratamento de exceo evita a interrupo
dos testes, definindo uma estratgia distinta para cada exceo ocorrida.
Scripts Lineares;
Scripts Estruturados;
Scripts Compartilhados;
Data-driven;
Keyword-driven.
42
43
44
Embora esta tcnica aumente o reuso dos scripts, os mesmos ainda podem apresentar
dados hard-coded ou chamadas a outros scripts, tornando-os dependentes entre si.
A Figura 26, adaptada de FEWSTER et al. (1999), ilustra o diviso de um script linear
(IncluirFuncionario) em outros trs scripts. O primeiro (AbrirArquivo) abre o arquivo que lhe
passado como parmetro. O segundo (SalvarComo) salva o arquivo com o nome recebido
como parmetro em sua chamada. O terceiro (IncluirFuncionrio) ir chamar os dois outros
scripts, um no incio e outro ao final de sua execuo.
2.5.4 Data-Driven
A tcnica Data-driven consiste em eliminar dados de teste do corpo do script e inserilos em arquivos de dados independentes ou tabelas. A principal vantagem desta
independncia entre o cdigo dos scripts e os dados de teste permitir que o script seja
reutilizado para vrios conjuntos de dados de entrada. Alm disso, novos testes podem ser
adicionados sem o conhecimento da linguagem de programao de script correspondente.
A Figura 27, adaptada de FEWSTER et al. (1999), apresenta um exemplo simplificado
do uso desta tcnica.
45
2.5.5 Keyword-Driven
A tcnica Keyword-driven prope separar o desenvolvimento dos casos de teste do
desenvolvimento dos scripts de teste. Isto possibilita que testadores experientes no domnio da
aplicao concentrem-se na criao dos arquivos de teste, enquanto que profissionais com
conhecimento tcnico concentrem-se nos scripts de suporte.
O uso da tcnica Keyword-driven diminui a complexidade dos scripts, pois, assim
como ocorre quando descrevemos um teste manual, permite que os casos de teste sejam
especificados de maneira menos detalhada.
A Figura 28, adaptada de FEWSTER et al. (1999), ilustra como esta tcnica pode ser
aplicada.
46
CancelarMatricula,
IncluirDisciplina,
ExcluirDisciplina,
2.6 Concluso
Neste captulo, foi apresentada uma viso sobre teste de software e sobre automao
de testes funcionais, contextualizando a soluo desenvolvida. Foram apresentadas algumas
limitaes do uso de ferramentas Record and Playback, as quais podem comprometer a
criao, o reuso e a manutenibilidade dos scripts de teste. Em seguida, foram abordadas
algumas tcnicas para otimizar a criao dos scripts de teste.
Captulo 4
3. O Framework FuncTest
3.1 Introduo
O framework FuncTest foi construdo e validado no SERPRO (Servio Federal de
Processamento de Dados) com o intuito de melhorar a produtividade da automatizao de
testes funcionais executados por ferramentas Record and Playback. Ele foi desenvolvido na
ferramenta Rational XDE Tester, mas poder ser adaptado para uso em ferramentas similares,
que tambm trabalhem com scripts desenvolvidos em linguagem Java.
A arquitetura do framework, alm de possibilitar o desenvolvimento eficiente de sutes
de teste flexveis, garante um estratgico avano de equipes que iniciam as suas experincias
em automao de testes funcionais.
A principal vantagem de utilizar o framework minimizar o esforo de implementao
e, principalmente, de manuteno de testes automatizados. Portanto, sua arquitetura foi
idealizada para proporcionar maior reuso de cdigo e melhorar a manutenibilidade das sutes
de teste. Com este objetivo, foram aplicados padres de software para estruturar a arquitetura
do FuncTest. Alm disso, o framework favorece a aplicao das tcnicas Data-driven e
Keyword-driven, apresentadas anteriormente.
Dentre as caractersticas do framework, destacam-se:
48
49
50
3.2 Frameworks
Segundo VILJAMAA (2001), framework um conjunto de objetos reutilizveis que
engloba conhecimento de determinadas reas e se aplica a um domnio especfico.
Diferentemente dos componentes de uma biblioteca de classes, os quais so utilizados
individualmente, as classes de um framework so reutilizadas como um todo para resolver
uma instncia de um certo problema (LAJOIE, 2003). Portanto, o uso de frameworks pode
acelerar o desenvolvimento de novos projetos e garantir uma arquitetura padronizada,
permitindo que a equipe de desenvolvimento possa se concentrar em detalhes especficos das
aplicaes.
O conceito de frameworks na literatura heterogneo. Segundo GOMES (2002), h
os que o classificam como uma aplicao inacabada, como uma arquitetura de software,
como uma meta-aplicao, como um template de grau mais elevado, ou at como um
componente. Tambm ressalta que, independentemente do conceito que seja dado aos
frameworks, os seguintes fatores devem ser levados em conta: um modelo de aplicao
orientado ao objeto; est incompleto; pode ser estendido, portanto flexvel; reutilizvel;
pertence a um domnio especfico de aplicaes; constitudo principalmente por um
conjunto de classes e suas interconexes; disponibiliza um padro a ser seguido e uma srie
de funcionalidades pr-definidas; tem o propsito de gerar aplicaes completas atravs da
personalizao de suas instncias.
Existe um estreito relacionamento entre frameworks e padres de projeto,
especialmente porque os padres de projeto tipicamente promovem flexibilidade de software,
caracterstica essencial para possibilitar a especializao de frameworks em projetos reais.
Neste contexto, padres de projeto podem ser utilizados (BRINGEL FILHO, 2004).
Os frameworks so divididos em frozen spots e hot spots. Os frozen spots so partes
invariveis de um framework, as quais definem uma arquitetura genrica de um software. Os
hot spots representam as partes flexveis de um framework, sob a qual os desenvolvedores
adicionam seu prprio cdigo para incorporar funcionalidades especficas do projeto.
(VILJAMAA, 2001; PREE, 1994).
A Figura 30, adaptada de GOMES (2002), ilustra pontos em comum entre aplicaes
que instanciam um framework.
51
52
Uma relao entre um certo contexto, um certo sistema de foras que ocorrem
repetidamente naquele contexto, e uma certa configurao espacial que permite
que estas foras se solucionem por si s (ALEXANDER, 1979);
53
Uma regra de trs partes, que expressa a relao entre um certo contexto, um
certo sistema de foras que ocorre repetidamente naquele contexto, e uma certa
configurao de software que permite solucionar as foras (GABRIEL, 2002);
54
55
Permitem dizer mais com menos: quando se utiliza um padro em uma descrio,
outros desenvolvedores identificam precisamente o design que se tem em mente;
Permitem que se permanea em nvel de projeto por mais tempo: falar sobre
sistemas de software usando padres permite manter a discusso em nvel de
projeto, sem necessariamente entrar em detalhes de implementao;
56
3.3.6 Metapadres
Um metapadro um conjunto de padres de projeto que descreve como construir
frameworks independentes de um domnio especfico. Eles constituem uma abordagem
elegante e poderosa para classificar e descrever padres em um metanvel (PREE, 1995). Eles
descrevem blocos de construo prontos para uso ou semi-acabados.
Em estgios de projeto e implementao, metapadres provem as principais
construes para o desenvolvimento de um framework bem projetado. Um framework
considerado bem projetado quando a composio e a interao entre os blocos de construo
que constituem toda a arquitetura do sistema so bem definidos (ANDRADE, 2001).
Em Souza (2005), o conceito inicial definido por Pree (1995) no contexto de padres
de projeto ampliado para metapadres no contexto de padres de requisitos e padres de
teste. No mesmo trabalho, proposto um catlogo de padres para auxiliar o processo de
desenvolvimento de sistemas de informao.
57
Padro Teste CRUD: utilizado para especificar os casos de teste das operaes de
Incluso, Consulta, Alterao e Excluso (CRUD). Este padro indica idias de
teste tpicas e cenrios de falha recorrentes para as quatro operaes citadas
(CRUD), os quais facilitam e agilizam a execuo dos testes. Como exemplos de
idias tpicas para testar operaes CRUD, so citados: inserir entidade j existente
e verificar resultado; inserir nova entidade e verificar se os dados so iguais aos
fornecidos na insero;
Padro Teste Relatrio: utilizado para especificar casos de teste de relatrios. Este
padro apresenta testes tpicos e cenrios de falhas recorrentes na visualizao,
exportao ou impresso dados de entidades de acordo com filtros especificados,
agrupamentos, totalizaes e informaes a serem apresentadas. Como exemplos
de idias tpicas para testes de relatrios, so citados: verificar resultados em
combinaes de filtros de relatrio; verificar visualizao e impresso; verificar
totalizaes, clculos e agrupamentos; verificar formato; verificar formato e dados
em arquivos exportados;
58
decises. Como exemplos de idias tpicas para testes para este tipo de operao,
so citados: verificar seqncia correta dos passos; verificar mensagens e
explicaes dos passos; verificar se as informaes dos passos anteriores so
passadas de forma correta entre os contextos; verificar resultado final da transao;
restringe-se
criao
de
uma
arquitetura
flexvel
para
aumentar
3.3.9 Anti-Padres
certamente til estudar maneiras bem sucedidas de resolver problemas. tambm
proveitoso aprender com erros cometidos. Este o conceito por trs de anti-padres.
Enquanto padres descrevem boas solues para problemas recorrentes, anti-padres
(AntiPatterns) descrevem solues que trazem mais conseqncias negativas do que
benefcios (LAPLANTE et al., 2005). Segundo APPLETON (2000), se um padro
representa uma melhor prtica, ento um anti-padro representa uma lio aprendida.
H dois tipos de anti-padro (KOENIG, 1995):
59
Aqueles que descrevem soluo ruim para um problema que resultou em uma
situao ruim;
Aqueles que descrevem como se livrar de uma situao ruim e como proceder para
uma boa soluo a partir dela.
60
61
Creator.
classe
ConcreteCreator
ento
decidir
objeto
concreto
(ConcreteProduct) a ser criado e retornado (GAMMA et al., 1995). Portanto, a classe Cliente
chamar o mtodo fbrica implementado na classe ConcreteCreator e atribuir o retorno
deste mtodo ao seu objeto da interface Product.
A Figura 33 (GAMMA et al., 1995) ilustra o diagrama de classes do padro Factory
Method.
Product: define a interface de objetos que sero criados por um Factory Method;
62
BusinessObject:: representa
representa o cliente dos dados. o objeto que requer acesso
fonte de dados.
63
64
65
66
3.5.2.1 Suite.xml
O arquivo Suite.xml indica ao framework os casos de teste que pertencem sute. Este
arquivo acessado pela classe Principal. Ele formado por um conjunto de elementos
CasoTeste (Listagem 4), os quais se subdividem em:
TEMPLATE SUITE.XML
<CasoTeste>
<Nome>NomeDoCasoDeTeste1</Nome>
<Arquivo>NomeDoCasoDeTeste1.xml</Arquivo>
</CasoTeste>
<CasoTeste>
<Nome>NomeDoCasoDeTeste2</Nome>
<Arquivo>NomeDoCasoDeTeste2.xml</Arquivo>
</CasoTeste>
3.5.2.2 <NomeDoCasoDeTeste>.xml
Para cada caso de teste da sute, dever ser criado um arquivo XML composto por
elementos Step (Listagem 5), que se subdividem em:
Nome: nome do step;
DataSource: este marcador opcional. Ela define um datasource para casos em que o
script manipula dados.
TEMPLATE <NOMEDOCASODETESTE>.XML
<step>
<Nome>Step01</Nome>
</step>
67
<step>
<Nome>Step02</Nome>
<DataSource>NomeDataSource</DataSource>
</step>
3.5.2.3 Scripts.xml
Este arquivo representa a associao entre cada step da sute e seu script
correspondente (Listagem 6). Cada elemento do arquivo corresponde a um step.
TEMPLATE SCRIPTS.XML
<NomeStep01>Script01</Step01>
<NomeStep02>Script02</Step02>
3.5.2.4 Banco.xml
Este arquivo associa classes DAO aos SGBDs utilizados. Para cada SGBD, deve ser
criado um elemento que contm o nome da classe DAO correspondente (Listagem 7).
TEMPLATE BANCO.XML
<ORACLE>DAOOracle</ORACLE>
<SQLSERVER>DAOSQLServer</SQLSERVER>
<DB2>DAODB2</DB2>
<ACCESS>DAOAccess</ACCESS>
<INTERBASE>DAOInterbase</INTERBASE>
<MYSQL>DAOMySQL</MYSQL>
<SYBASE>DAOSybase</SYBASE>
68
3.5.2.5 DataSource.xml
Este arquivo contm informaes das diversas fontes de dados utilizadas pela sute
(Listagem 8). Para cada step que possua um datasource a ele associado, as informaes do
datasource so capturadas pela classe Controlador e enviadas para a classe DAO. A classe
DAO ento retorna os dados de teste.
TEMPLATE DATASOURCE.XML
<NomeDataSource01>
<Conexao>StringConexao</Conexao>
<Driver>NomeDriver</Driver>
<Tabela>NomeTabela</Tabela>
<Login>Login</Login>
<Senha>Senha</Senha>
<Banco>Banco01</Banco>
</NomeDataSource01>
3.5.2.6 Erros.xml
Para cada exceo que possa ocorrer durante a execuo da sute de teste, poder ser
criada uma classe que ir trat-la, a qual dever ter seu nome associado ao nome da exceo
correspondente no arquivo Erros.xml (Listagem 9).
TEMPLATE ERROS.XML
<Excecao1>Nome.do.Script.que.trata.a.Excecao1</Excecao1>
<Excecao2>Nome.do.Script.que.trata.a.Excecao2</Excecao2>
69
70
71
Figura 40 Uso do Padro Factory Method para a criao dos objetos DAO
Na Tabela 5, apresentada a correspondncia entre os participantes do padro Factory
Method e os participantes do framework que implementam este padro.
Participantes do Padro
Factory Method
Product
ConcreteProduct
Creator
ConcreteCreator
Factory DAO
IDAO
ConcreteDAO
AbstractFabricaDAO
FabricaDAO
72
CriarMinuta-C001_2,
CriarMinuta-C002_1,
CriarMinuta-C003_1
CriarMinuta-C004_1.
73
74
Da mesma forma, foi criado um arquivo XML para cada um destes casos de teste
contendo os seus steps. Para fins de exemplo, apresentado apenas um trecho de um destes
arquivos, correspondente ao primeiro caso de teste do cenrio C001 (Listagem 11). O
trecho sofreu pequenas adaptaes para facilitar o entendimento do propsito dos steps
destacados. So eles: IniciarSistema, Logar e PreencherMinutaC001.
...
<step>
<Nome>IniciarSistema</Nome>
</step>
<step>
<Nome>Logar</Nome>
<Dados>DadosLogin</Dados>
</step>
<step>
<Nome>PreencherMinutaC001</Nome>
<Dados>PreencherMinuta</Dados>
</step>
...
...
75
...
<PreencherMinuta>
<Conexao>jdbc:jtds:sqlserver://00.000.000.000:0000;DatabaseName=ProjetoBDadosTeste</Conexao>
<Driver>net.sourceforge.jtds.jdbc.Driver</Driver>
<Tabela>CT_PreencherMinuta</Tabela>
<Login>usuario</Login>
<Senha>senha</Senha>
<Banco>SQLSERVER</Banco>
</PreencherMinuta>
...
76
3.9 Concluso
Este captulo apresentou primeiramente uma viso geral sobre de padres de software,
detalhando alguns formatos e tipos de padro encontrados na literatura, bem como
apresentando os padres que foram utilizados na composio do framework FuncTest. Em
seguida, o framework foi apresentado, descrevendo os relacionamentos entre os elementos
que compem sua arquitetura e detalhando o seu funcionamento. Um exemplo extrado de um
caso prtico foi exibido para ilustrar a utilizao do framework. Por fim, foram destacados os
elementos de sua arquitetura que implementam o padres de software descritos.
Captulo 4
4. Relato de Experincia e Avaliao Preliminar
4.1 Introduo
Este captulo relata a experincia de uso do framework FuncTest em dois plos de
desenvolvimento do SERPRO (www.serpro.gov.br), a maior empresa pblica de prestao de
servios em tecnologia da informao do Brasil. Os dois plos (A e B) onde o framework foi
utilizado pertencem regional de Fortaleza.
Embora as duas equipes que utilizam o framework tenham adotado o uso de
automao como forma de garantir maior produtividade na execuo de testes funcionais, o
processo de desenvolvimento da empresa no exige o uso desta abordagem.
Primeiramente, ser brevemente abordada a disciplina (macroatividade) de testes
pertencente ao processo de desenvolvimento da empresa. Em seguida, so relatadas as
experincias das duas equipes, destacando-se uma anlise de dados coletados na experincia
da segunda equipe. Por fim, so listados alguns benefcios observados durante as experincias
vivenciadas na empresa.
78
A atividade Planejar Testes responsvel por definir o escopo dos testes, recursos a
serem utilizados, estimativas, estratgias e tcnicas de testes que serviro de controle e
acompanhamento para as demais atividades. O principal artefato de sada produzido nesta fase
o Plano de Teste.
Na atividade Projetar Testes, os casos de teste planejados so elaborados, ou seja,
criados e documentados. Esta elaborao normalmente feita com base nos casos de uso do
sistema sob teste. Cada caso de uso formado por fluxos de evento (principal e alternativos),
os quais determinam diferentes caminhos para a realizao do caso de uso. Estes caminhos
so denominados cenrios. Para cada cenrio produzido um ou mais casos de teste. Cada
caso de teste pode ser executado para conjuntos diferentes de dados de teste. Em paralelo,
iniciada a preparao do ambiente de testes.
importante lembrar que este trabalho est focado em testes em nvel de sistema, que
seguem uma abordagem caixa-preta. O primeiro plo (A) que utilizou o FuncTest inclusive
no tem acesso algum ao cdigo fonte de grande parte das aplicaes para as quais realizam
testes, o que possibilita unicamente a execuo de testes sob uma perspectiva de usurio final.
A abordagem do processo utilizado para projetar os casos de teste prope a derivao
de casos de teste a partir dos casos de uso. Portanto, cada cenrio corresponde a um ou mais
casos de teste derivados. A Figura 43 ilustra esta abordagem.
79
80
81
82
Foi realizada uma anlise do reuso de scripts nesta sute. Concluiu-se que cada script
foi utilizado em mdia 5,4 vezes (Figura 44). Subtraindo-se deste valor o primeiro uso dos
scripts, conclui-se que cada script foi reutilizado em mdia 4,4 vezes. importante considerar
que esta anlise no leva em considerao o tamanho e a complexidade dos scripts.
83
4.4 Concluso
Este captulo relatou a experincia do Servio Federal de Processamento de Dados
(SERPRO) no uso do framework FuncTest para a realizao de testes funcionais de regresso.
Tambm foram apresentados alguns dados que indicam uma viso parcial do reuso de scripts
obtido com o framework em um dos projetos.
Captulo 5
5. Concluso
85
Uma dificuldade relatada pela primeira equipe que utilizou o framework diz
respeito dificuldade de manuteno dos arquivos XML, por no ter sido criada uma
ferramenta que facilite a configurao dos mesmos.
Como trabalhos futuros, pretende-se adaptar o framework para a utilizao da
tcnica Model-based Testing (DALAL, 1999; EL-FAR, 2001), possibilitando a
gerao automtica de casos de teste. Alm disso, pretende-se realizar medies que
86
6. Referncias Bibliogrficas
Disponvel
em
http://www.cmcrossroads.com/bradapp/docs/patterns-
88
(BECK, 1987) BECK, Kent, CUNNINGHAM, Ward. Using Pattern Languages for ObjectOriented
Programs.
Technical
Report
CR-87-43,
1987.
Disponvel
em
http://c2.com/doc/oopsla87.html.
(BINDER, 1999) BINDER, R. V. Testing Object-Oriented Systems: Models, Patterns and
Tools, Addison-Wesley.
(BINDER, 1999) BINDER, R. V. Testing Object-Oriented Systems: Models, Patterns, and
Tools. 1 Ed. Massachusetts: Addison Wesley.
(BLACK, 2007) BLACK, Rex. Pragmatic Software Testing: Becoming an Effective and
Efficient Test Professional. John Wiley & Sons.
(BORLAND, 1994) Borland Software Corporation. Borland SilkTest: An Automated
Regression
and
Functional
Software
Testing
Tool.
Disponvel
em
89
2007)
COPLIEN,
James
O.
Pattern
Definition.
Disponvel
em
90
XDE
Tester.
Disponvel
em:
Data-driven.
Disponvel
em:
http://www-
128.ibm.com/developerworks/rational/library/05/1108_kelly/.
(KELLY, 2006) KELLY, Michael. Introduction to IBM Rational Functional Tester 7.0.
Disponvel em: http://www.ibm.com/developerworks/rational/library/06/1205_kelly/.
91
2000)
NAGLE,
C.,
Test
Automation
Frameworks,
disponvel
em
http://safsdev.sourceforge.net/FRAMESDataDrivenTestAutomationFrameworks.htm.
(OLIVEIRA, 2007a) OLIVEIRA, Rafael Braga de, GIS, Francisco Nauber Bernardo,
FARIAS, Pedro Porfrio Muniz, SOUZA, Jerffeson Teixeira de. Utilizao de Padres para
Otimizar a Automao de Testes Funcionais de Software. Sexta Conferncia Latinoamericana em Linguagem de Padres para Programao - SugarLoafPloP 2007.
(OLIVEIRA, 2007b) OLIVEIRA, Rafael Braga de, GIS, Francisco Nauber Bernardo,
FARIAS, Pedro Porfrio Muniz. Automao de Testes Funcionais: Uma Experincia do
SERPRO. 1st Brazilian Workshop on Systematic and Automated Software Testing (SAST
2007).
92
(OPENQA, 2007) OpenQA. Selenium IDE. Disponvel em: http://www.openqa.org/seleniumide/. Acessado em setembro de 2007.
(PARADKAR, 1994) PARADKAR, Amit. On the Experience of Using Cause-Effect Graphs
for Software Specification and Test Generation. Conference of the Centre for Advanced
Studies on Collaborative research - CASCON '94.
(PARASOFT, 1996) PARASOFT CORPORATION. Parasoft Jtest. 1997. Disponvel em:
http://www.parasoft.com/jtest. Acessado em julho de 2007.
(PREE, 1994). PREE, W. Meta patterns - a means for capturing the essentials of reusable
object-oriented design. in M. Tokoro and R. Pareschi (eds), Springer-Verlag, Proceedings
of the ECOOP, Bologna, Italy.
(PREE, 1995) PREE, W. Design Patterns for Object-Oriented Software Development.
Addison-Wesley Longman.
(PRESSMAN, 2002) PRESSMAN, Roger S. Engenharia de Software. McGraw Hill, 5 dio,
2002.
(RAINSBERGER, 2005) RAINSBERGER, J.B. and STIRLING, Scott. JUnit Recipes:
Practical Methods for Programmer Testing. Manning Publications Co.
(RISING, 2000) Linda Rising. The Pattern Almanac 2000. Addison-Wesley.
(ROBERTS, 1998) ROBERTS, Don, JOHNSON, Ralph E. Evolving Frameworks: A Pattern
Language for Developing Object-Oriented Frameworks, In "Martin, R. C.; Riehle, D. and
Buschmann, F. Pattern Languages of Program Design 3", Addison-Wesley, 1998,
Disponvel em: http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/frame/evolve.html.
(ROBERTSON, 1996) ROBERTSON, Suzanne. Requirements Patterns via Events / Use
Cases.
The
Atlantic
Systems
Guild.
Disponvel
em:
http://www.systemsguild.com/GuildSite/SQR/Requirements_Patterns.html. Acessado em
julho de 2007.
(RUP, 2001) Rational Software Corporation. Rational Unified Process, RUP. Disponvel em
http://www.wthreex.com/rup/. Acessado em agosto de 2007.
(RYBALOV, 2004) RYBALOV, Misha. Design Patterns for Customer Testing. Automated
Testing Guy. Disponvel em http://www.autotestguy.com/.
93
Livros Grtis
( http://www.livrosgratis.com.br )
Milhares de Livros para Download:
Baixar livros de Administrao
Baixar livros de Agronomia
Baixar livros de Arquitetura
Baixar livros de Artes
Baixar livros de Astronomia
Baixar livros de Biologia Geral
Baixar livros de Cincia da Computao
Baixar livros de Cincia da Informao
Baixar livros de Cincia Poltica
Baixar livros de Cincias da Sade
Baixar livros de Comunicao
Baixar livros do Conselho Nacional de Educao - CNE
Baixar livros de Defesa civil
Baixar livros de Direito
Baixar livros de Direitos humanos
Baixar livros de Economia
Baixar livros de Economia Domstica
Baixar livros de Educao
Baixar livros de Educao - Trnsito
Baixar livros de Educao Fsica
Baixar livros de Engenharia Aeroespacial
Baixar livros de Farmcia
Baixar livros de Filosofia
Baixar livros de Fsica
Baixar livros de Geocincias
Baixar livros de Geografia
Baixar livros de Histria
Baixar livros de Lnguas