A importância do teste de softwares/sistemas

Analise de VulnerabilidadesEste artigo visa mostrar os benefícios e a melhoria contínua na produção de software a partir dos testes em sistemas desenvolvidos, evitando o retrabalho e garantindo assim excelência e qualidade no desenvolvimento de sistemas ou propriamente na qualidade do software das empresas, utilizando o controle de qualidade e o modelo de referência para melhoria do processo de software bem como testes para garantia da boa funcionalidade visando a satisfação e evitando o trabalho dobrado por parte dos desenvolvedores.

Neste artigo procuro mostrar a importância do teste de sistemas no desenvolvimento de softwares, também técnicas que possam favorecer as empresas tanto na qualidade do produto oferecido como na melhoria dos processos de desenvolvimento. Como hoje não há um processo bem definido em diversas empresas para o desenvolvimento de sistemas, fica difícil aplicar a garantia da qualidade, por isso sugiro neste artigo uma aplicação de controle de qualidade mais direcionada a verificação dos artefatos produzidos durante o processo de desenvolvimento.

Analisando pelo lado do cliente que irá utilizar a ferramenta e que tenha pago as horas de trabalho do setor de desenvolvimento, seria um problema adquirir a ferramenta e ao iniciar a utilização ocorrerem erros devido não terem sido feitos testes na aplicação, tanto no ambiente de produção como em testes com possíveis casos.

Para a empresa isso será retrabalho pois se constar no escopo do projeto o funcionamento da ferramenta não será cobrado do cliente ou seja, irá se tornar um retrabalho, onde irá envolver novo tempo do desenvolvedor, pela parte da imagem da empresa há um descrédito pois o cliente irá entrar na questão da dúvida quanto a qualidade do sistema desenvolvido.

Uma vez que a qualidade do processo interfere significativamente na qualidade do sistema desenvolvido, torna-se necessário adicionar ao processo de obtenção do produto, meios de se avaliar as características da qualidade dos produtos gerados ao longo do desenvolvimento, em pontos selecionados do processo.

A maciça utilização de sistemas informatizados complexos, para os mais diversos fins, faz com que a indústria de software atual seja cada vez mais competitiva e exigente. Desta maneira, independentemente do contexto, seja no software, produto ou serviço, a qualidade não é mais um diferencial competitivo, mas sim uma obrigação, um requisito básico e a melhor garantia de fidelidade do cliente.

Segundo Pressman (1995), o termo “qualidade”, inserido no contexto da Engenharia de Software, pode ser entendido como “conformidade a requisitos funcionais e de desempenho explicitamente declarados, a padrões de desenvolvimento claramente documentados e a características implícitas que são esperadas de todo software profissionalmente desenvolvido”, isto é, o grau no qual um sistema, componente ou processo satisfaz os requisitos especificados e as necessidades e expectativas do cliente.

A qualidade engloba tanto a conformidade com os requisitos e necessidades do cliente (qualidade do produto) quanto o grau em que o processo garante a qualidade do produto (qualidade do projeto do sistema), ou seja, a qualidade do produto final está diretamente relacionada à qualidade do processo de desenvolvimento do mesmo.

Um dos maiores problemas encontrados ao longo do processo de desenvolvimento que comprometem não só a qualidade do produto, mas também seu custo e prazo de entrega é o retrabalho, motivado pelos defeitos introduzidos ao longo das atividades, como requisitos incompletos ou inexistentes, documentação incompleta ou inconsistente, pela identificação tardia de falhas. Portanto, a qualidade do produto de software é um objetivo do processo de desenvolvimento, sendo de suma importância que o processo esteja corretamente e claramente definido e se tenham estabelecidas as características da qualidade que o produto deve possuir. O conhecimento de onde o esforço deve ser concentrado é essencial.

Devido a dificuldade de se definir e gerenciar os processos, alguns modelos de apoio a melhoria da qualidade do processo de software foram desenvolvidos. Como neste caso o Modelo MPS.Br.

Modelo MPS.BR

Segundo [GUERRA, COLOMBO, 2009], o MPS.BR ou Melhoria de Processos do Software Brasileiro é um modelo de qualidade de processo (Modelo MPS) e um movimento para a melhoria da qualidade (Programa MPS.BR) voltado para a realidade do mercado de pequenas e médias empresas de desenvolvimento de software no Brasil.

O projeto iniciou no final de 2003 e a primeira versão ficou pronta no final de 2004. É coordenado pela SOFTEX – Associação para Promoção da Excelência do Software Brasileiro. Tem o apoio do Ministério da Ciência e Tecnologia (MCT), Financiadora de Estudos e Projetos (FINEP), Banco Interamericano de Desenvolvimento (BID) e SEBRAE Nacional.

O programa MPS.BR possui duas metas a serem atingidas: a primeira meta, técnica, visa a criação e o aprimoramento do modelo MPS; já a segunda, de mercado, visa disseminar a adoção do modelo MPS a todas as regiões do país, em um intervalo de tempo justo a um custo razoável.

O modelo MPS é baseado nas normas ISO/IEC 12207 e ISO/IEC 15504, sendo composto de três componentes, descrito por quatro guias e definido em sete níveis de maturidade. Os componentes do modelo são os seguintes:

  • Modelo de Referência para Melhoria do Processo de Software (MR-MPS): fornece uma visão geral sobre o modelo MPS;
  • Método de Avaliação para Melhoria do Processo de Software (MA-MPS): verifica a maturidade da organização na execução dos seus processos de software
  • Modelo de Negócio para Melhoria do Processo de Software (MN-MPS): estabelece as regras de negócio e relacionamentos jurídicos dos envolvidos [GUERRA, COLOMBO, 2009].

A descrição do modelo MPS é feita a partir de quatro guias:

  • Guia Geral: contém a descrição geral do modelo MPS e detalha o MR-MPS e as definições comuns necessárias para seu entendimento e aplicação;
  • Guia de Aquisição: baseado na ISO/IEC 12207:2008, descreve um processo de aquisição de software e serviços correlatos e aborda os relacionamentos desse processo com o modelo MR-MPS;
  • Guia de Implementação: contém orientações para a implementação dos sete níveis de maturidade do MR-MPS;
  • Guia de Avaliação: baseado na norma ISO/IEC 15504, descreve o processo e o MA-MPS.

 A importância do teste de sistemas

Como visto nos tópicos anteriores a obtenção de qualidade não é uma tarefa fácil, onde necessita de uma série de cuidados. Deve-se considerar o que é qualidade no software que está sendo desenvolvido, seja na garantia do bom funcionamento, na não parada inesperada do mesmo, nos testes de produção, nos testes de inclusão e demais funcionalidades que possam estar agregadas ao software. Torna-se necessário priorizar aquelas características que irão determinar a qualidade do sistema, para garantir a qualidade planejada do software deve-se avaliar não apenas o produto final, mas acompanhar todo o processo utilizado em seu desenvolvimento. Cada fase do projeto pode trazer junto erros vindos de outras etapas, gerando assim no final de um projeto um sistema defeituoso simplesmente pelo fato de pequenos problemas ou testes não terem sidos realizados na etapa correta de seu desenvolvimento.

Conforme (MAGALHÃES, 2008). Se nada for feito, a ocorrência sucessiva desta situação nas diversas fases de desenvolvimento do produto pode acabar comprometendo em muito a qualidade do produto resultante. É necessário, portanto, seguir processos que possibilitem melhorar a qualidade dentro das restrições de imperfeição impostas. Neste contexto, a realização em cada fase de revisões e/ou testes – atividades relacionadas ao controle da qualidade – e de auditorias que verifiquem objetivamente a aderência de produtos e atividades a padrões e processos definidos – atividades relacionadas à garantia da qualidade – constituem um meio efetivo de se aperfeiçoar a qualidade do produto resultante.

Concluindo, o controle de qualidade visa assegurar que o sistema representa o que está no escopo do projeto e desta forma atende as necessidades do cliente, Caso hajam problemas com os testes estes devem ser identificados, registrados e tratados, isto deve ser realizado durante todo o processo de criação do sistema, desta forma a qualidade e a garantia do bom funcionamento do software estará garantido. O controle de qualidade não é simples, uma vez que engloba várias atividades do projeto, deve-se empregar técnicas e ferramentas especificas e deve estar integrado ao projeto o mesmo deve ser requisito para sequência correta da continuidade do desenvolvimento.
Com isso os benefícios obtidos com a realização efetiva podem ser vistos desde a melhoria do processo até a satisfação de contar com um produto confiável e com qualidade, sem contar na baixa manutenção que será necessária gerando menos demanda a equipe de desenvolvedores.

Autor: Anderson de Godoy