domingo, 25 de abril de 2010

Automação de Teste - Planejamento, Design e Desenvolvimento dos Testes - parte 2

Esta é a segunda parte de 5 tópicos sobre Planejamento, Design e Desenvolvimento dos Testes automatizados
 


2. Desenhando os testes automatizados
Nesta fase abordamos a necessidade de definir o número de execuções que serão realizadas, os caminhos ou cenários que serão abordados.

Para uma ação mais efetiva dos testes, ocorre um mini-desenvolvimento dos testes automatizados, como o da codificação de uma aplicação do planejamento com objetivos, estratégias, definições dos scripts, analise, design e codificação dos scripts, mesmo que seja de forma automática (record-and-play). Sempre devemos ter toda esta preparação antes de começarmos a criar um script de automação, salvo a exceção de você automatizar seus Casos de Teste. Se você optar por automatizar todos os Casos de Teste já existentes uma matriz de rastreabilidade entre scripts e casos é bem-vinda para uma melhor organização. Lembre-se de que o planejamento destes scripts deve ter sempre o caminho percorrido pelo aplicativo, entradas e saídas esperadas, bem como os pontos de verificação de uma determinada parte da aplicação.

Após esta primeira fase de levantamento de ações e estratégias é necessário pôr em prática o teste interno destes scripts. Devemos agrupar scripts com ações/funções semelhantes e adotar uma convenção de nomes para cada script e para o grupo de scripts. Durante a execução destes scripts a equipe de teste será capaz de medir o número de técnicas utilizadas e uma estimativa do número de procedimentos testados durante esta execução. Com isso podemos confrontar o número de testes manuais e saber se aquele script seria mais viável se testado manualmente. Um documento contendo todas estas iterações, execuções e desenho gráfico da execução dos scripts devem ser criados. Também devemos ter todo o esforço necessário para o apoio dos testes tanto manuais como automáticos.

Seguido todos estes processos teremos toda a arquitetura dos testes automatizados criada descrevendo a estrutura destes testes e definindo a maneira e quando os testes serão inseridos e organizados em apoio ao esforço total de testes.
Agora é necessário identificarmos os procedimentos de testes que serão os mais sofisticados e obter seus resultados, que serão definidos como parte do desenho dos testes. Como temos a intenção de criarmos um documento reutilizável devemos criar padrões para estes desenhos. Somente então, depois que estes padrões forem seguidos, teremos um programa de automação eficiente. Abaixo seguem os procedimentos:

Passos Descrição
1 Teste de revisão da arquitetura. A equipe de teste revisa a arquitetura de testes a fim de identificar as técnicas de teste aplicáveis.
2 Definição do Procedimento de Teste (fase de desenvolvimento). Esta definição é construída na fase do desenvolvimento dos testes, que identifica a série dos procedimentos que se aplica para os diferentes componentes e técnicas de teste.
3 Definição do Procedimento de Teste (fase do sistema). Esta definição é construída na fase do desenvolvimento do sistema de teste, que identifica a série de procedimentos que se aplica para diferentes técnicas de teste.
4 Padrões do Procedimento de Desenhos dos Testes.
Padrões de desenho e uma conversão de nomenclatura são aprovados para identificar os procedimentos sobre projetos desenvolvidos no passado ou em outros projetos.
5 Teste Manual x Teste Automatizado. Um procedimento de teste é descrito como sendo realizado manualmente ou como parte de um teste automatizado.
6 Sinalização dos Procedimentos de Teste para o detalhamento do desenho. Os procedimentos que se destacam são sinalizados e definidos como parte do desenho detalhado dos testes.
7 Desenho Detalhado dos Testes. Os procedimentos descritos na etapa acima são concebidos de forma detalhado no documento de  Desenho Detalhado dos Testes.
8 Teste de Mapeamento de Dados. Uma Matriz de Procedimentos de Teste é modificada toda vez que alterarmos os requisitos de teste de dados de cada procedimento de teste.

O exercício de desenvolver o procedimento de definição dos testes ajuda a quantificar a necessidade de esforço necessário. O desenvolvimento das definições envolve a definição do conjunto de cenários que serão desenvolvidos e executados pela equipe de teste. O exercício de desenhar este procedimento ajuda a organizar estes em grupos, sendo que uma nomenclatura deve ser adotada para nomear este grupo de procedimentos.

Na arquitetura dos testes temos basicamente duas abordagens: os testes baseados na arquitetura e os testes baseados em componentes.
Nos testes baseados em arquitetura desenhamos como e em qual componente os scripts serão executados e como faremos para integrar os testes de diversos componentes. Todos os resultados gerados e comportamentos terão de ser coletado, a fim de assegurar o funcionamento de todo o sistema. Uma atenção deve ser dada para a massa de testes utilizada, que deverá ser bem elaborada.

Já nos testes baseados em componentes temos os testes na unidade/produto especifico, nos preocupando com a assertividade de casos específicos dentro do componente, mas este deve também ser mapeado no desenho da arquitetura, já que podemos ter mais de um script validando a mesma funcionalidade ou um script validando várias funcionalidades ao mesmo tempo.

Não deixe de ler os outros posts relacionados:

sexta-feira, 23 de abril de 2010

Automação de Teste - Planejamento, Design e Desenvolvimento dos Testes - parte 1

Esta é a primeira parte de 5 tópicos sobre Planejamento, Design e Desenvolvimento dos Testes automatizados


1. Planejando os testes automatizados

Esta fase representa a necessidade rever, ao longo do tempo de teste, as atividades de planejamento. Durante esta fase a equipe de teste identifica todo o procedimento para a criação de normas e diretrizes, necessidade de hardware, software e rede necessários para o apoio aos testes. Teste da massa de dados, cronograma preliminar dos testes, requisitos de performance, gerência de configuração e ambiente necessários para a execução dos testes e procedimentos de controle e acompanhamento de defeitos para o gerenciamento da execução dos testes.

O Plano de Teste deve conter todas estas informações e considerações ligadas ao CVTA, para que possa suportar todos estes procedimentos.

Para a configuração de ambiente, que é parte do planejamento, temos que planejar monitorar e gerenciar as atividades ligadas ao ambiente. Com isso a equipe de teste terá de agendar e acompanhar as instalações e configurações de ambiente, como hardware, software e recursos de rede, melhorar a massa de dados de teste a cada acompanhamento e execução e desenvolver scripts de teste para a validação do ambiente.

Não deixe de ler os outros posts relacionados:

quarta-feira, 21 de abril de 2010

Corrigindo o problema de Lost Password no Mantis 1.2.0

Demorou, mas agora estou fazendo um "pente fino" na versão 1.2.0 do Mantis que está estável  foi lançado dia 24/02/2010.

Porém, como toda ferramenta as open source também passam por alguma problemas, é o caso da funcionalidade "Lost Password" (Esqueci minha senha) na tela de entrada do Mantis.

 


Hoje se tu tentar utilizar essa funcionalidade, verás que o não acontecerá nada e também não chegará um email para a troca de senha.

Já existe um bug aberto para este problema: http://www.mantisbt.org/bugs/view.php?id=11394
O bug está apontado para entrar na próxima release estável no Mantis, mas é ruim ficar aguardando a versão estável para solucionar o problema.

Para resolver o problema abra o arquivo email_api.php localizado dentro da pasta core no diretório de instalação do Mantis. Abra o arquivo e localize o seguinte trecho do código: lang_push( user_pref_get_language( $p_user_id ) );
Comente este trecho de código, colocando um "//" no inicio da linha, ficando assim: //lang_push( user_pref_get_language( $p_user_id ) );


Pronto! Agora é só testar a funcionalidade. Abaixo segue a utilização dela:


Clicando no link "Lost Password"













Recebe retorno da ferramenta sobre o envio do email








Recebendo o email para o reset da senha.














Após clicar no link recebido no email, aparecerá a tela para inserir e confirmar a nova senha













É isso ai!
Qualquer dúvida deixe um comentário e não deixe de ver os outros post relacionados ao Mantis: http://sembugs.blogspot.com/search/label/mantis

terça-feira, 20 de abril de 2010

Automação de Teste - Processos de Introdução dos Testes Automatizados

Continuando com a série de posts, agora vou falar um pouco sobre o Processo de Introdução aos Testes Automatizados.

Não deixe de visualizar os outros posts:





Nesta fase começamos a introduzir os testes automatizados dentro da organização.
Temos que revisar o Processo de Teste atual e, se necessário efetuar melhorias e alterações neste processo, a fim de comportar os testes automatizados em todo o processo do teste. Todas as metas, objetivos, estratégias e métricas devem ser definidas, documentadas e enviadas a  equipe de teste.

Para obter um nível real de testes teremos que aplicar a execução da ferramenta em um ambiente de testes para validarmos o processo que esta sendo alterado ou definido e também como ensaio aos testes reais com a ferramenta. Com todas estas execuções conseguiremos definir as melhores práticas de utilização da ferramenta, bem como os dados que devem ser  coletados e analisados.

Após levantarmos todos os itens relatados acima teremos uma real visão da incorporação dos testes automatizados dentro do Ciclo de Vida dos Testes. Todas estas percepções que foram adquiridas nesta fase devem ser anotadas e revisadas no inicio dos testes que estiverem dentro do ciclo, ou seja, na aplicação real dos testes. Também teremos a estimativa de quanto tempo o teste automatizado irá tomar do cronograma de testes. Teste de comparações entre o teste automático e manual pode ser documentados como forma de benefícios que podem ser internalizados para as demais pessoas da equipe e os gerentes.

Toda a compatibilidade de aplicação, browser e ambiente deve ser verificada, validada e todos os ajustes na ferramenta ou scripts deve ser executados.

quarta-feira, 14 de abril de 2010

O que é um Arquiteto de Teste de Software

Update: não deixe de ler o post Como aprender a programar para teste de software que é um dos pontos que um Arquiteto de Teste deve conhecer.


Bom pessoal, faz tempo que eu estava querendo escrever este post. Acho ainda que ele está muito resumido, mas é bom compartilhar com vocês a minha visão desse profissional que está aparecendo timidamente no mercado de Teste de Software.

Se você tem qualquer coisa para complementar, por favor faça! Faço questão de atualizar o post e referenciar cada complemento.
Então, vamos lá!


O que é um Arquiteto de Teste de Software
Para ser um Arquiteto de Teste obviamente é mandatório ter sido um Testador. Para ocupar uma posição como esta o profissional de teste precisa ter um perfil sênior, conhecendo muitas linhas dentro do Teste de Software. Geralmente um Arquiteto de Teste tem que estar apto a executar quase que qualquer tarefa dentro do Teste de Software. Ele deve ser o líder técnico das soluções em teste e pode possuir uma linha de especialização específica dentro do Teste de Software: Automação, Performance, Segurança, etc..
Um Arquiteto deve trazer a inovação para a Área de Teste, sempre ligado nas tendências, tecnologias e abordagens dentro da área, internalizando todo esse conhecimento e analisando a aplicabilidade dentro da organização. Ele deve conhecer não somente da disciplina de Teste de Software dentro da Engenharia de Software, mas de outras disciplinas.

Eu, particularmente, acredito que a possível comparação de Engenheiro de Teste e Arquiteto de Teste é quase a mesma, mas com uma pequena diferença que pode ser entendida pela comparação abaixo:
"Um Arquiteto na Engenharia Civil é aquela capaz de criar toda uma estrutura/solução a partir de uma desejo do seu cliente. O Engenheiro, por sua vez, é aquele que irá colocar o plano de Arquiteto em prática, acompanhando todo o trabalho dos operários na obra."

Qual o dia-a-dia de um Arquiteto de Teste?
As atividades mais comuns são a de criação de ambientes de teste (hardware e software), criação de Casos de Teste mais complexos, aplicação das Técnicas de Teste corretas em todos os Casos de Teste.
Dentro da Automação de Teste, ele vai entender um problema de um cliente e criar uma solução de automação, utilizando alguma ferramenta existente no mercado ou até mesmo. Apóia e ensina a equipe a crescer tecnicamente na área e ajuda a melhorar todos os processos existentes na área de Teste de Software.

Quais os conhecimentos necessários para um Arquiteto de Teste?
Abaixo seguem alguns dos conhecimentos necessários do Arquiteto de Teste com um foco técnico voltado para a Automação de Teste:
  • Linguagem de programação (se puder mais que uma)
  • Sistemas Operacionais
  • Conhecimentos avançados sobre Técnicas de Teste
  • Ferramentas de Automação de Teste (em todos os níveis de teste)
  • Linguagem SQL intermediária
  • Arquitetura de Software e Design Patterns
  • Configuração de Ambientes
  • Execução de Testes Funcionais e Não Funcionais
  • Habilidade de Comunicação com pessoas técnicas

Podemos dar duas razões para que o Arquiteto precise conhecer uma linguagem de programação:
  • As ferramentas de automação de teste funcional será ou em uma linguagem padrão de mercado (VBScript ou Java) ou uma linguagem própria, o que necessita de conhecimento de programação
  • Quando não existe uma ferramenta de automação para determinada tarefa, o Arquiteto precisa criar uma, e isso é feito através de uma linguagem de programação
O conhecimento de Sistemas Operacionais é importante, pois além de utiliza-os para efetuar os testes também pode ser necessária a criação de máquinas virtuais para montar o ambiente de teste e, conseqüentemente conhecer sobre como configurar estes ambientes (no caso aqui, de hardware e software).
Conhecer a fundo as técnicas de teste também é obrigatório. Um Arquiteto que não conheça uma determinada técnica de teste pode não fazer o trabalho da melhor forma possível. Também é extremamente necessário que o arquiteto conheça as técnicas para a automação de teste funcional (data drive, keyword driven, decomposição funcional, baseado em modelos, etc...)

Saber como trabalhar com a linguagem SQL as vezes é básico para um testador, que precisa aplicar certas queries no banco para garantir que os resultados passados para o sistema estão contidos lá e estão íntegros. O conhecimento do Arquiteto deve ir mais além: ele deve ser capaz de conhecer mais a fundo o SQL e também aspectos específicos do SGDB utilizado (Oracle, MySQL, PostgreSQL, DB2, etc...)
Saber criar e executar testes não funcionais também é desejável, pois podemos nos deparar com alguma situação em que tenhamos que medir o tempo de resposta de uma aplicação, ou mesmo efetuar um teste de portabilidade ou recuperação da aplicação.

E falar 'grego' como o pessoal do desenvolvimento fala também é importante. Imaginem que tu vai conversar com um desenvolvedor ou Arquiteto Java e ele diz: "o problema ocorreu na ESB, onde um parâmetro da Inversão de Controle no Spring não foi colocado corretamente, o que fez o a camada DAO gerar uma NullPointerExepction dentro do Bean."

E é claro que o Arquiteto precisa conhecer de Ferramentas de Teste em todos os níveis: unitário, integração, sistema e aceitação. Conhecer uma Ferramenta de Automação de Teste Funcional é obrigatório, e também é muito desejável que ele conheça as diversas ferramentas para cada parte do Processo de Teste. Por exemplo: como fazer um teste de integração para validar e o pagamento por cartão de crédito está OK? E se eu disser que a aplicação se comunica com um WebServices para isso? O Arquiteto tem que ser capaz ou de criar ou de ajudar na criação de um driver para essa comunicação e depois efetuar o teste de integração com o WebService com o SoapUI, por exemplo.


Algumas empresas que tem um cargo definido para Arquiteto/Engenheiro de Teste:
Google Testing Engineer: http://www.google.com/intl/en/jobs/uslocations/mountain-view/swe/test-engineer-mountain-view/index.html

ThoughtWorks Test Architect: http://www.thoughtworker.com/jobs/test-architect

Microsoft Testing Engineer: https://careers.microsoft.com/Search.aspx#&&p4=all&p0=&p5=all&p1=20&p2=all&p3=all

Não deixem de colocar os seus comentários e visões sobre esse perfil...
Abraços!