Mostrando postagens com marcador execucao de testes. Mostrar todas as postagens

Como Amadurecer o Processo de Testes

Como Amadurecer o Processo de Testes
Por: Fernando Palma
Maio, 2007
_______________________________________________________


Apesar do crescimento da área de testes de software, ainda é difícil encontrar profissionais experientes e capacitados, justamente por ser uma cultura recente no país. Em muitas empresas, os conceitos de qualidade de software estão distantes de uma maturidade desejada. Existem omissões de etapas de testes e falta de comprometimento com a qualidade dos sistemas. Como conseqüência, encontramos produtos de baixa confiabilidade e gastos desnecessários em razão a descobertas de erros tardias. Este Artigo tem o objetivo de ajudar quem pretende melhorar o seu processo de desenvolvimento e produzir com maior qualidade através do estímulo ao crescimento de seus profissionais de testes.

É comum encontrarmos modelos de fabricas de software que adotem apenas um homologador, qual participa paralelamente ao desenvolvimento do sistema, testando tela por tela, e encaminhado os erros imediatamente aos programadores. A isso, acrescenta-se o fato de que ele inicia sua atividade sem o conhecimento do negócio e, em alguns casos, ausente de um plano de testes. Os prejuízos gerenciais causados por este método já foram abordados no artigo Execução de Testes e Gerencia de Testes. Agora, serão focadas algumas práticas no processo, divididas em alguns passos, que trazem uma boa evolução. Passando por isso, será atingido um patamar em que os testes sejam realizados em todo o ciclo de produção do sistema.

Uma vez que, seria inviável realizar uma quantidade grande de mudanças em um prazo curto, a proposta é que sejam feitas pequenas alterações, graduais, induzindo um processo natural de amadurecimento. Para isso, foram denominadas três fases:

Primeira Fase: plano de testes e homologador como peer-review
O primeiro objetivo é criar um plano de testes para ser usado pelo Homologador assim que inicie seu trabalho. Mas o avanço não para por ai. O homologador ganhará também a função de Peer-review deste artefato, que deve ser feito antes do desenvolvimento do sistema. Esta simples atribuição, além de exigir dele que estude toda regra de negócio, ainda irá incentivá-lo à imaginação e criação de cenários de testes, não vistos pelo analista do sistema. Assim, o plano produzido, alinhado ao trabalho dos dois, tenderá a trazer melhores resultados imediatos.
Ex: em uma tela de login de usuário, existem os campos login e senha. Os seguintes casos de testes foram construídos pelo analista:




(Para ampliar , basta clicar sob a imagem)
No momento em que analisou este plano, o homologador visualizou outros casos de testes:
(Para ampliar , basta clicar sob a imagem)

E assim por diante.


Segunda Fase: plano de testes produzido pelo profissional de testes
Com pouco tempo, o homologador amadurecerá e criará segurança para idealizar diversos casos de testes. O resultado disso serão planos com grande dimensão de mudanças sob a atividade de peer-review. Neste instante, o mais natural é o surgimento da Segunda Fase. A melhoria imediata será responsabilizar o artefato do plano de testes ao próprio homologador, que por essa atribuição começará a se comportar como analista de testes. Ele será acionado em algum momento da produção da especificação, para ir compondo seu documento. O analista do sistema servirá então de apoio para esclarecer quaisquer dúvidas referentes às regras, e se tornará o novo responsável pelo peer-review do plano. Esta é a passagem mais importante de toda a evolução e dependerá do bom desempenho do profissional de testes.
Ex: o analista de testes faz a leitura da seguinte passagem de especificação
.O usuário informa a data inicio e data fim que deseja procurar.
.O sistema retorna todos os registros cadastrados entre as datas informadas.
Neste momento, ele constrói os seguintes casos de teste:


(Para ampliar , basta clicar sob a imagem)

E quantos mais casos de testes forem necessários.

Terceira Fase: analista de testes no inicio da especificação e verificações de documentos
A ultima etapa será trazer os testes para a especificação. Isso deve acontecer quando o analista de testes começar a encontrar e criticar erros desde a construção do plano de testes. Como isso é possível? É simples: as falhas são previstas desde a leitura da especificação. É comum isso ocorrer á medida que ele for ganhando uma boa experiência. Justamente porque, existem erros que se repetem, exceções que deveriam ser levantadas e não foram escritas pelo analista, além de falhas nas regras de negócio, contradições, omissões. Finalmente, o profissional de testes estará desempenhando o seu verdadeiro papel, que é descobrir erros o mais cedo possível. A partir deste ponto, poderá participar desde a reunião inicial do projeto e produzir seus requisitos de testes baseados nos requisitos de análise. À medida que os artefatos de especificação forem sendo produzidos, atuará para cruzar todos os seus requisitos de testes com a especificação. O alinhamento entre as documentações trará como resultado sistemas com qualidade bastante superior.
Ex: O analista de testes tem conhecimento da existência de um campo de e-mail no cadastro de usuário. Imediatamente, ele cria um caso de teste que exija uma validação do campo de e-mail (aceitar apenas e-mails válidos). Quando finalmente consulta os fluxos de exceção do caso de uso, nota que não existe uma exceção levantada para o cadastro de e-mails inválidos. Então é adicionado um erro de especificação “Criar fluxo de exceção para cadastro de e-mails inválidos”.

Toda esta evolução está fortemente ligada à dedicação e talento do profissional de testes, até porque não existirão apenas regras de negócios simples como as que foram exemplificadas. Mas é impraticável chegar a sistemas com boa qualidade sem que o processo seja ampliado, permitindo a execução de testes antes, durante e depois do desenvolvimento. Enquanto não existir a participação de um especialista em testes desde o início do projeto, não é será possível ter um processo amadurecido.

A transformação profissional do testador e as mudanças de regras descritas são possíveis, simples de implementar e altamente lucrativas. O custo de um erro encontrado depois da construção de código é, em média, cem vezes maior que o custo do mesmo quando visualizado na especificação. Pular etapas de testes para cortar custos é contraditório. As fábricas de software que experimentam algumas mudanças chegam sempre às mesmas conclusões: optar por testar somente no fim é ineficaz, gera mais gastos, e ainda induz ao maior de todos os prejuízos: a insatisfação do usuário.

Execução de Testes e Gestão de Testes

Execução de Testes e Gestão de Testes
Por: Fernando Palma
Abril, 2007
______________________________________________________________

Todo Profissional da Área de Testes já passou ou passará por situações em que a forma como o projeto é gerenciado dificulta o seu trabalho. O Processo que não ajuda, o rompimento da etapa de testes, ausência de estrutura eficiente e principalmente a falta de tempo são alguns dos motivos que impedem seu desempenho. Na verdade, um dos maiores dilemas enfrentado por um gerente de projeto é decidir entre a qualidade do sistema e o cumprimento de prazos. Neste artigo, serão abordadas, em paralelo, a execução e gerência de testes (processo de execução), mostrando as diferenças e dependências entre essas duas atividades.


A Execução de testes torna-se eficaz à medida que o analista de testes é capaz de imaginar e escrever o máximo de cenários de testes possíveis, assim como o homologador é capaz de interpretá-los e executa-los de maneira ágil e correta. Um bom analista de testes é criativo, intuitivo, sabe organizar seus testes de forma que os mais importantes sejam focados no inicio, prever que tipos de testes são necessários; é perfeccionista. Não menos importante, o bom homologador deve ser persistente, atento e saber descrever e reportar os erros de forma clara aos programadores.


Já uma boa Gestão das atividades de testes está relacionada com o uso de processo e estrutura eficazes. Para isso, três pontos são fundamentais: congelamento de baselines, replicação do ambiente de produção e condição de parada. Para entender melhor, é preciso analisar cada um destes preliminares.


Congelamento de baselines: quando o sistema entra em homologação, é preciso que a versão que será testada seja “congelada” até que todo o trabalho de testes seja realizado. Em outros termos, nada deve ser alterado enquanto o testador esteja trabalhando. Sem isso, não é possível desenvolver uma bom trabalho. Imaginemos que um homologador esteja encontrando erros paralelamente aos desenvolvedores estarem os corrigindo. Este processo seria trágico, pois cada vez que o programador corrige o código, existe grande chance de novos erros estarem sendo implantados, o que impossibilita o controle do que já foi ou não testado. Por isso, é essencial que o período de correções inicie depois que o sistema seja testado por inteiro.


Replicação do ambiente de Produção: muitos erros encontrados no sistema instalado em uma determinada maquina/servidor não ocorrem quando o mesmo procedimento é replicado em uma outra maquina dentro do ambiente de desenvolvimento. Isso acontece porque o comportamento do sistema é influenciado por uma serie de configurações pertencentes ao ambiente em que está sendo executado. Antes que ocorra qualquer processo de testes, o gerente responsável pelo projeto deve solicitar um ambiente exclusivo de homologação que reflita o de produção (ambiente do cliente). Estas semelhanças envolvem desde configurações do sistema operacional e navegador, até configurações de banco, de rede, e tudo enfim que oferece suporte para o desempenho do sistema. Uma vez criada a equivalência entre ambientes, haverá menos chances de o cliente encontrar erros que não haviam sido gerados no ambiente de homologação interna.


Condição de Parada: este é sem dúvida, o ponto que mais sensível. A questão fundamental desta regra é que, independente da quantidade de erros, o fim dos testes deve ocorrer após um período de homologação, algo que muitas vezes é ignorado na prática. Buscando agilidade na entrega, alguns sistemas são implantados no fim do período de correções, o que pode ser fatal. Os gráficos a seguir exemplificam esta situação:


Gráfico 1 : Quantidade de Erros encontrados em um determinado sistema:



Acompanhando a imagem : na primeira Homologação foram encontrados 100 erros, dos quais - por critério do analista do sistema / gerente do projeto - foram corrigidos 90. Na segunda Homologação foram encontrados 60 erros e corrigidos 53. Na terceira, encontrados 20 e corrigidos 17. Na Quarta Homologação foram encontrados apenas 10 erros e, finalmente, foi definido que o sistema seria implantado por não se tratarem de erros graves Ou seja, não foi necessário um novo período de correção de erros (C4 = 0). O sistema encontra-se portanto em um nível confiável. Este é o processo correto dentro da fase de homologação. Mas, por falta de tempo, muitas vezes é quebrado.


Ainda sobre a imagem acima, é comum ocorrer uma situação em que o gerente do projeto decida entregar o sistema antes que a maioria dos erros seja corrigida. Pelo que vemos no gráfico, quanto mais adiante na linha do tempo isso acontecer, mais confiável estará o sistema, certo? Errado. Nem sempre a quantidade de erros encontrada em um tempo T maior será menor do que um T menor. Pode haver uma homologação em que a quantidade de erros encontrados seja maior do que na homologação anterior. Assim como, pode ocorrer uma homologação em que a quantidade de erros seja menor que a anterior, mas a gravidade desses erros seja maior. Esta situação é demonstrada na próxima imagem:


Gráfico 2 : Gravidade de Erros encontrados em um determinado sistema




Fluxo desenhado nesta imagem: no instante T1 foram encontrados erros com gravidade 80, em uma escala de 0 a 100. Este índice caiu na segunda homologação mas voltou a crescer na terceira. Caso o gerente do projeto tenha encerrado os testes no instante T = 4, mal sabia ele que o sistema estava com uma qualidade pior do que no instante T = 3. Na verdade, ninguém sabia porque não foi realizado uma nova homologação (testes de regressão). Nesse caso, era mais seguro ter entregue depois da segunda Homologação (T = 3), quando os erros do sistema eram conhecidos. O resultado deste tipo de decisão tomada é a ocorrência de diversos erros inesperados e conseqüente insegurança do usuário em relação à confiabilidade. Além disso, o gerente não poderá ter certeza se os erros que ocorreram no ambiente do usuário foram implantados em C2 (T = 4), ou se eles já existiam antes, o que indicaria uma falha de quem realizou os testes. Da mesma forma, ainda que o(s) profissional(ais) de testes esteja(m) fazendo um bom trabalho, isto não estará bem visível. Por esta razão, o fim do período de testes de sistema deve ocorrer com o término de uma homologação, nunca no fim de uma Correção.


Dentro de uma fabrica de testes, em um núcleo de testes, ou no trabalho executado por um único profissional de testes, deve existir a atenção ao processo gerencial dos testes que estão sendo executados. Ele é o suporte para que tudo ocorra bem. A intensidade e quantidade de testes aplicados é opcional, a boa gerencia não. Não adianta investir em Analistas de Testes e homologadores capacitados, se a estrutura que os acompanha não for melhorada. O testador deve cuidar para que um bom processo seja realizado. Isto é, exigir a maneira adequada de conduzir os testes. Isto é, buscar a valorização de seu trabalho. Sim, um profissional de testes que não tenha seu trabalho bem gerenciado nunca poderá demonstrar sua capacidade.