Infra - Segurança

TMap Next(Test Management Approach) - Processo de Testes de Desenvolvimento - Parte 8-3

Entende-se por Testes de Desenvolvimento(development tests) o uso do conhecimento da implementação técnica do sistema. Isso começa com testes nas primeiras/menores do sistema: rotinas, unidades, programas, módulos, objetos, etc. Depois de ter sido estabelecido que as partes mais elementares do sistema sejam de qualidade aceitável, as partes maiores do sistema são submetidas a testes de integração. A ênfase aqui é na transferência de dados e as interfaces entre, por exemplo, as unidades até o nível do subsistema.

por Fábio Martinho Campos



Entende-se por Testes de Desenvolvimento(development tests) o uso do conhecimentoda implementação técnica do sistema. Isso começa comtestesnas primeiras/menoresdo sistema:rotinas, unidades,programas, módulos, objetos, etc.

Depois de tersido estabelecido queas partesmais elementaresdo sistema sejamde qualidade aceitável,as partes maioresdo sistema sãosubmetidas a testesde integração.A ênfase aqui énatransferência de dadose asinterfacesentre, por exemplo,as unidadesaté onível do subsistema.

Teste unitário: Um testerealizadono ambiente de desenvolvimentopelo desenvolvedor, com o objetivode demonstrar que umaunidade atendeos requisitos definidosnas especificações técnicas

Teste Unitário Integrado: Um testerealizadopelo desenvolvedorno ambiente de desenvolvimento, com o objetivode demonstrar que um grupo lógico deunidadesatende aos requisitosdefinidosnas especificações técnicas

Os testesde desenvolvimentosão parte integrantedo trabalho de desenvolvimentoexecutadapelo desenvolvedor.Eles nãoestão organizadoscomo um processoautônomo parauma equipe independente.

Apesar disso,uma série de atividadesdiferentespara o processode desenvolvimento de desenvolvimento,com o suas ordens mútuas e dependências, podem seridentificadas e descritascom o auxíliodomodelo de ciclo devidaTMap Next.

A elaboraçãodetalhadapode variarpor projetoou organizaçãoe depende,entre outras coisas, sobre ométodo de desenvolvimentoutilizadoe a disponibilidade decertas medidas de qualidade.

Um perigo ao organizar os testes de desenvolvimento é a tentação de adequar o processo de testes do ponto de vista dos testes de sistema e aceite. Sendo assim, quando comparamos os testes de desenvolvimento com os testes de sistema e aceite, um número significante de diferenças aparecem:

o Em contrates ao testes de sistema e aceite, os testes de desenvolvimento não podem ser organizados como um processo independente. Os testes de desenvolvimento formam uma parte integral do desenvolvimento de software, e a fase das atividades de teste é integrada com as atividades dos desenvolvedores.

o Pela razão que os testes de desenvolvimento usam o conhecimento técnico da implementação do sistema, outros tipos de defeitos são encontrados

o Com os testes unitários, em particular, o descobridor dos defeitos é freqüentemente o mesmo que resolve o defeito. Isso significa que a comunicação sobre defeitos é mínima.

o A abordagem dos testes de desenvolvimento é que todos os defeitos encontrados são resolvidos antes do software ser transferido. O reporte dos testes de desenvolvimento pode, portanto ser mais restrito do que os testes de sistema e aceite.

o É o primeiro processo de teste, o que significa que todos os defeitos ainda estão no produto, requerendo ajustes de defeito rápidos e baratos. Para que isso possa ser realizado, um ambiente de testes flexível com poucas barreiras procedurais é de grande importância.

o Testes de desenvolvimento são realizados pelos próprios desenvolvedores. A intenção básica do desenvolvedor é demonstrar que o produto funciona, enquanto o testador está procurando demonstrar diferenças entre a qualidade requerida e a qualidade atual.

o Testes de desenvolvimento são realizados pelos próprios desenvolvedores. A intenção básica do desenvolvedor é demonstrar que o produto funciona, enquanto o testador está procurando demonstrar diferenças entre a qualidade requerida e a qualidade atual

Na prática, testes de desenvolvimento são freqüentemente não estruturados: os testes não são planejados ou preparados, técnicas de design de teste não são usadas e não há visão no que tem que ser ou não testado e/ou com qual profundidade.

Um número de argumento são apresentados à seguir mostrando o porque esta não é uma prática(argumentos contra) e a importância da realizados dos testes de desenvolvimento(argumentos à favor):

o Argumentos Contra: Pressão do tempo/custo não efetivo, suficiente confiança na qualidade e existência de outras fases de teste para se preocupar com a qualidade.

o Argumentos à Favor: Estabelecer para o próprio desenvolvedor de que o software está com qualidade o suficiente para ser entregue para a próxima fase, menos retrabalho, o planejamento é melhor, o tempo total do desenvolvimento de certa forma é reduzido, retrabalho dos itens problemáticos em fases iniciais é mais barato do que estágios posteriores, analisar os defeitos que o próprio desenvolvedor acha é mais rápido e fácil, feedback instantâneo dos próprios desenvolvedores e estas vantagens são aplicadas para todo o projeto sendo que fases futuras de teste também se beneficiam.

Ainda, nos testes de desenvolvimento diferentes ferramentas são usadas e elas são parte do ambiente do desenvolvimento. O TMap Next cita as seguintes ferramentas:

o Depurador(debugger)

o Ferramenta de análise de código

o Ferramenta de teste unitário

Os testes de desenvolvimento são parte das atividades de um desenvolvedor e não são organizados como um processo com um time independente.

Ainda sim, um número diferente de atividades pode ser identificado para o processo de testes unitários e testes unitários integrados.

Na prática, as atividades de testes de desenvolvimento são pouco visíveis e reconhecidas do que os testes de sistema e aceite. Ainda, os resultados das atividades não são bem documentados.

As atividades dos testes de desenvolvimento estão espalhadas nas mesmas sete fases do processo de testes de sistema e aceite: Planejamento, Controle, Configuração e Manutenção da Infra-estrutura dos Testes, Preparação, Especificação, Execução e Conclusão.

As atividades para cada uma destas fases são apresentadas a seguir:

o Planejamento

1. Estabelecer as atribuições

2. Determinar as bases de teste(test basis)

3. Analisar os riscos do produto

4. Determinar a estratégia de testes

5. Estimar o esforço

6. Determinar o planejamento

7. Alocar as técnicas de teste

8. Definir os produtos de teste

9. Definir a organização

10. Definir a infra-estrutura

11. Organizar o gerenciamento

12. Feedback e consolidação do plano

o Controle

1. Gerenciamento

2. Monitoração

3. Reporte

4. Ajuste

o Configuração e Manutenção da Infra-estrutura dos Testes

Do ponto de vista do teste, pode existir requisitos específicos com relação a infra-estrutura. Se este for o caso, esta fase então é lidada dentro das atividades Configuração e Manutenção da Infra-estrutura dos Testes.

o Preparação

Enquanto que na fase de Planejamento a base de teste(test basis) é definida, a mesma ainda não é freqüentemente disponível para a execução nesta fase. Na fase de Preparação, deveria ser examinado que a base de teste(test basis) entregue é correspondente e usável no contexto dos acordos previamente estabelecidos no plano. Se este não parecer o caso, pode ser necessário ajustar o plano. Inspeção da base de teste(test basis)  é realizada executando-se a revisão da testabilidade

o Especificação

1. Investigar padrões de teste(test patterns) (opcional)

2. Criar especificações de teste

3. Criar suporte do software

o Execução

1. Desenvolver testes unitários(TDD)

2. Executar os (re) testes

3. Checar e avaliar os resultados de teste

4. Executar revisão de código(opcional)

o Conclusão

1. Entregar para o próximo nível de teste

2. Preservar o testware     

3. Avaliar o processo de teste(opcional)

Referências e Links:

- Livros utilizados para a base deste artigo e materiais de apoio

1. TMap Next, for result-driven testing

2. Software Testing: A guide to the TMap Approach

3. End-to-end testing with TMap Next

- Links

     - Site TMap Next: http://eng.tmap.net/Home/

-TMap Next Downloads: http://eng.tmap.net/Home/TMap/Downloads/index.jsp

          - Glossário TMap Next: http://eng.tmap.net/Home/TMap/Glossary.jsp

Fábio Martinho Campos

Fábio Martinho Campos - Bacharel em Computação pela UNITAU (Universidade de Taubaté), MBA em Gestão de Projetos pelo IPT (Instituto de Pesquisas Tecnológicas-USP). Trabalhou no INPE-MCT (Instituto Nacional de Pesquisas Espaciais) em São José dos Campos como analista de sistemas e desenvolvedor web da Intranet e Internet por dois anos. Trabalhou na empresa alemã Liebherr Guindastes e Máquinas Operatrizes como analista de sistemas e desenvolvedor web, atuando também como analista de processos para o projeto de GED (Gerenciamento Eletrônico de Documentos) da empresa. Na IBM Brasil trabalhou por um ano como analista de teste no GTO (Global Test Organization) e SEA&T (System Engineer Architecture and Test) no projeto internacional Blue Horizon Configurator. Ainda na IBM trabalhou no Projeto CADU e SCFI do Banco Bradesco. Possui as certificações CBTS (Certificação Brasileira de Teste de Software), CQA (Certified Quality Assurance), CST (Certified Software Testing), COBIT(ISACA), ISTQB/ISEB(CTFL) e IBM Certified Specialist – Software Quality. É palestrante da disciplina de Teste de Software e Qualidade de Software, contribui para o crescimento do mercado de Teste de Software no Brasil através de palestras e eventos em universidades.