Teste de Software no Contexto da Melhoria

Olá leitores, após algumas semanas de estudos sobre  uma área importantíssima de T.I.  que é Testes de Softwares, consegui reunir algumas idéias principais de muitos artigos que li para postar aqui.

Atualmente, empresas desenvolvedora de software estão constantemente sendo cobradas por qualidade, mas para cumprir com esta cobrança, é necessário enfrentar os rivais, tais quais, os curtos prazos para desenvolvimento, integração entre sistemas já existentes ou em desenvolvimento, além de acompanhar a evolução das tecnologias utilizadas.

Com o crescimento da utilização dos sistemas pela sociedade, cresce-se também a importância de contar com a qualidade destes softwares.  Para que o eles tenham boa qualidade é fundamental a melhoria de processos de engenharia de software que conta com modelos para identificar processos fundamentais. Todos os modelos identificam que o teste é essencial para a avaliação do software, mas que isso exige conhecimento, habilidades além de infra-estrutura especifica.

Muitas empresas encontram dificuldades com as atividades de teste, isso pode ser justificado pela falta de profissionais especializados na área, ou mesmo uma dificuldade de implantar os processos de teste. Para estes casos, o CenPRA – Centro de Pesquisar Renato Archer- desenvolveu a metodologia para auxiliar as empresas nestes processos. Está é uma importante metodologia para a melhoria dos processos de teste em empresas desenvolvedoras de softwares e foi desenvolvida pelo CenPRA, para difundir as práticas de teste pelas empresas.

Teste e Qualidade de Software

A grande idéia a respeito do teste é o processo de executar o software de uma maneira controlada com o objetivo de avaliar se o mesmo se comporta conforme o especificado. Mesmo parecendo algo simples, há muitas dificuldades neste processo, como alto custo para empresa pela necessidade de profissionais especializados, ou mesmo o desconhecimento tanto para realizar os procedimentos, técnicos ou mesmo de planejamento. Existem vários níveis de teste, e são aplicados conforme a fase do desenvolvimento do software que, geralmente, é definido conforme a política de teste da empresa.  São eles:

  • Teste de Unidades (compreendendo a codificação dos módulos do sistema)
  • Teste de integração (a integração dos módulos do sistema)
  • Teste de Sistema (atendimento aos requisitos funcionais e não funcionais do sistema)
  • Teste de Aceitação (aceitação do sistema pelo usuário)
  • Teste de regressão (aplicado na fase de manutenção do sistema)

Outro item importante é a escolha da técnica de teste, que pode ser:

  •  Teste Estrutural (procura identificar defeitos nas estruturas internas do software)
  •  Teste Funcional (gera casos de teste que garantem que os requisitos do software que foi construído sejam plenamente atendidos).

Esses critérios servem para orientar o testador na geração dos casos de teste.

Metodologia de Teste

A metodologia para introdução ou melhoria do processo de teste de software busca englobar técnicas para a capacitação das empresas que querem desenvolver produtos de melhor qualidade. Para isso é necessário um conjunto de atividades que vai desde o levantamento dos requisitos da empresa, passa pela realização de treinamento da equipe técnica e vai até ao acompanhamento dos trabalhos realizado, fazendo assim um ciclo de implantação da atividade de teste dentro da empresa.

É fundamental a adoção de um processo de teste além do desenvolvimento de documentos na atividade de gerência do teste de software que pode ser aplicada a qualquer tipo de software, seja sistema de informação ou software cientifico.

A realização de testes sistemáticos esta dividida em 3 componentes:

  • Treinamentos: é a capacitação em conceitos básicos sobre teste de software, isso pode ser adaptado as necessidades de cada empresa.
  • Processo de teste: esta é a atividade que prevê a realização das atividades de planejamento, projeto, execução e acompanhamento dos testes além da integração e aceitação do sistema.
  • Suporte para gestão de documentos: consiste na técnica para a criação de documentos que serão utilizados para a gerencia do processo de teste, em todas as fases do sistema.

No processo de teste as estratégias empregadas são planejados e executados por uma equipe, estas atividades são realizadas de forma iterativa, havendo uma avaliação rápida do produto. Uma premissa básica da metodologia é que o processo de teste, quando adequadamente definido, pode ter um impacto positivo nos resultados de diversas outras atividades de desenvolvimento. O que prova que o enfoque das atividades de teste não é apenas identificar problemas, mas principalmente prevenir problemas.

Visão geral da norma IEEE 829

Esta Norma descreve um conjunto de 8 documentos definidos, que cobrem as tarefas de planejamento, especificação e relado de testes. São eles:

  • Plano de Teste  que apresenta o planejamento para a execução do teste identifica os itens  e as funcionalidades a serem testados, as tarefas além dos riscos associados com a atividade de teste.
  • Há também a tarefa de especificação de testes que é composta por 3 documentos ( Especificação de Projeto de teste, Especificação de caso de Teste, Especificação de Procedimento de teste) que principalmente identifica os casos e os procedimento de teste, critérios de aprovação, define dados de estrada e resultados esperado, além de especificar os passos para a execução dos testes.
  • Já os relatórios são cobertos por 4 documentos (Diário de teste, Relatório de Incidente de Teste, Relatório-Resumo de teste, Relatório de Encaminhamento de Item de Teste) que visam registrar detalhes relevantes, eventos que ocorrem durante os testes e resultados das atividades.

Um detalhe importante é que esta norma separa as atividades de teste em três etapas: preparação do teste, execução do teste e registro do teste. Mais do que apresentar um conjunto de documentos, esta norma apresenta um conjunto de informações necessárias para teste de produtos, independentemente do tamanho ou complexibilidade do software. Se bem utilizado, servirá de auxilio para gerencia.

Suporte à Interpretação do Processo de Teste de Software 

Como normalmente as normas de engenharia de software são genéricas, a metodologia de teste da norma IEEE-829 propões um método para implantação do processo de teste de software, para isso possui alguns documentos descrevendo isso. São eles:

  • Guia para Elaboração de Documentos de Teste de Software: tem o propósito de servir como referencia para criação de documentos de teste.
  • Processos para a Elaboração de Documentos de Teste de Software: apresenta os processo que abrangem a preparação, a execução e o registro dos resultado do teste para estabelecerem uma orientação geral. 

Independente da forma em que os documentos serão adaptados para os testes, é importante que incluam o planejamento, projeto, os casos de teste e os procedimentos de teste. Além disso, os resultados/incidentes ocorridos durante o teste devem ser adequadamente registrados e condensados num relatório final.

 

Aplicação da Metodologia de Teste

Como experimentação e validação da metodologia de teste, foi realizado um projeto de melhoria de processo em uma micro empresa desenvolvedora de software. 

Contexto 

A empresa na qual a metodologia foi aplicada é pequena e tem suas atividades focadas principalmente no desenvolvimento de projetos de softwares, e isso representa cerca de 90% de seu faturamento mensal. Os seus clientes são, em sua maioria, grandes empresas e multinacionais. O projeto tem entre 2 e 6 meses de duração e envolvem entre 2 e 4 profissionais. 

A principal melhoria foi à inclusão de processos de teste, foi seguido a Abordagem de Melhoria de Processo do CenPRA e utilizado o modelo de processo da ISO/IEC TR 15504-5 como referencia além de outras duas metodologias para dois processos específicos (processo de gerencia de projetos e o processo de teste). 

O projeto foi executado em seis fases seqüenciais:

  1. Início dos trabalhos e Definição de Metas
  2. Avaliação das Práticas Correntes
  3. Planejamento das Ações de Melhoria
  4. Implantação das Ações de Melhoria
  5. Verificação dos Resultados e Aprendizado
  6. Institucionalização da Melhoria.               

Em março de 2004 já estava implantada uma prática institucionalista de planejamento e execução sistemática de teste como parte do processo de desenvolvimento de software da empresa. 

Os novos produtos da empresa já estavam contendo melhorias, passaram da equipe de programação para a equipe de teste, que executou os casos de teste previsto, retornando relatórios de incidentes e problemas. A nova versão do sistema que foi gerada a partir do relatório de incidentes de testes, retornou para os testadores, assim ficaram neste ciclo até que o produto foi considerado adequado para a instalação, conforme a decisão do líder do projeto.

Durante a execução do teste a equipe de testadora gerou um documento detalhado sobre a execução, este documento permite a geração de análises bem fundamentais na criação do resumo do teste, gerado normalmente após a instalação do software no cliente. 

Na entrega para o cliente, dispara-se um processo de aceitação do produto gerado, isso é feito através de um relatório de aceitação preenchido pelos usuários, isso irá validar os testes do software, a qualidade do produto e as necessidades específicas de uso. 

Resultados da melhoria

A melhoria do processo de teste, associada à melhoria do processo de desenvolvimento de software como um todo, permitiu observar os seguintes aspectos, dentre os outros: 

  • Maior controle durante a execução do projeto, devido principalmente ao planejamento prévio e aos pontos de medição.
  • Estudos e analises, realizadas após o encerramento do projeto e entrega do produto gerado, reforçando os pontos positivos e criando ações corretivas para os pontos negativos detectados no processo como um todo.
  • Qualidade do produto gerado, tanto no sentido do atendimento dos requisitos quanto no sentido da aceitação e adequação as necessidades do usuário.
  • A documentação gerada permitiu perceber as falhas relacionadas a detalhamentos incorretos ou incompletos de requisitos.
  • Os clientes passaram a compreender as dificuldades à produção de software e com isso aumentando o respeito pelas informações transmitidas, documentação apresentadas, necessidades explicitadas, e com isso aceitando maiores prazos de entrega nos produtos com maior qualidade.
  • Houve aumento nos custos gerais de produção de softwares, mas que poderão ser diluídos apenas no longo prazo. 

A empresa conseguiu aprimorar os processos com o aprendizado e após a implantação do processo de teste na empresa, as seguintes melhorias foram observadas: 

  • Menor número de defeitos descobertos após instalação do software
  • Maior atenção da equipe de programação, que com tarefas de verificação antes da liberação do produto conseguiu além de reduções de custos e problemas, a redução do desgaste da equipe.
  • Os clientes, após verificarem os resultados iniciais, demonstram que estão mais tolerantes nas questões de prazos, mesmo não aceitando o aumento nos custos, posteriormente passaram a não querer mais versões do software não devidamente testadas. 

Avaliação do processo de teste

Após a implantação do processo, foi realizada uma avaliação superficial das atividades de teste, o resultado desta avaliação foi comparado com a avaliação feita antes deste ciclo de melhoria. O resultado da primeira avaliação mostrou que a empresa executa o processo de teste no nível 1 de capacidade, já na avaliação feita após a implantação, constou-se que existe um atendimento de nível 2 de capacidade, com alguns elementos de nível 3. 

O processo de teste de software da ISO/IEC TR 15504 tem como objetivo “garantir que a implementação de cada requisito do sistema seja testada em conformidade com o requisito e que o sistema esteja pronto para ser liberado” e requer que evidências dos seguintes quatro elementos sejam identificadas durante uma avaliação: 

  • Desenvolvimento de um critério para o sistema que demonstre a conformidade com os requisitos;
  • verificação do sistema utilizando o critério definido;
  • registro dos resultados do teste; e
  • criação de uma estratégia de regressão para re-testar o sistema quando mudanças forem feitas em elementos do sistema. 

Para que o processo de teste da organização esteja no nível 1 de capacidade, o objetivo do processo e os quatro resultados estejam atingidos. Para que este processo evolua ao nível 2, a  execução do teste tem que ser planejada e acompanhada, exigindo uma boa gerência do teste, e os principais produtos de trabalho do teste tenham que ser identificados, definidos, produzidos e verificados. Para um processo chegar ao nível 3 ele deve estar bem definido e ser seguido em cada uma de suas execuções. 

Conclusão 

Com a aplicação da metodologia em uma micro empresa de desenvolvimento de software, resultando em um processo de teste que foi utilizado com bons resultados em sete projetos e atingiu o nível 2 de capacidade de processo segundo a Norma ISO/IEC 15504, pode ser concluído que: 

  • A metodologia é viável de ser aplicada em uma micro empresa, como parte de um programa de melhoria de processo; e
  • O processo de teste implantado pela metodologia gera melhorias visíveis aos clientes e aos desenvolvedores, melhorando a qualidade do software e o relacionamento entre a empresa e os clientes. 

A metodologia do CenPRA ajuda a estruturar as atividades de teste desde o início de um projeto de desenvolvimento de software, tornando claro para todas as partes envolvidas o relacionamento entre o processo de desenvolvimento de software e as atividades de teste. A definição pela metodologia dos principais artefatos do processo de teste, baseado na Norma IEEE STD 829, é o principal orientador das atividades de teste.

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 155 other followers