Desenvolvimento

Ξ Deixe um comentário

Qualidade + Testes de Softwares = Qualidade de Software

publicado por Walter Melo

Qualidade + Testes de Softwares = Qualidade de Software

Gostaria de externar uma constatação obtida por meio de experiência profissional adquirida em empresas específicas de “Testes / Certificações de Softwares” e “Meios de Pagamentos”, além das que possuem áreas inseridas em seus próprios organogramas, destinadas a testes.

A simples inclusão da palavra “Qualidade” em descrições de missões de áreas técnicas e das próprias empresas, não garante a eficiência desejada, ainda que com processos eficazes.

Considerando-se então os sentidos da palavra Qualidade ao pé da letra e aliando-se um bom processo de Testes de Softwares, é possível o alcance da desejada “Qualidade de Software”.

Qualidade:

O termo Qualidade vem do latim “Qualitas”, e é utilizado em diversas situações, mas o seu significado nem sempre é de definição clara e objetiva. Há várias definições para qualidade, do ponto de vista de diferentes pessoas, como: “Produto(s) e/ou serviço(s) com constatada efetividade”; “Valor que produtos similares não possuem”; “Fazer correto da primeira vez”; “Maior relação custo versus benefício”; “Em conformidade com as exigências do(s) cliente(s)”; “Adequação ao uso”. Enfim, o referido termo é geralmente empregado para significar excelência de um produto e/ou serviço.

A qualidade de um produto pode ser vista por duas ópticas: a do produtor e a do cliente. Do ponto de vista do produtor, a qualidade associa-se à concepção e produção de um produto que vá ao encontro das necessidades do cliente. Do ponto de vista do cliente, a qualidade está associada ao valor e à utilidade reconhecida ao produto, estando nalguns casos ligados ao preço.

Quando acompanhamos a atual realidade dos textos relacionados à informática em geral, não é difícil nos deparamos com termos como: “Controle da Qualidade”, “Garantia da Qualidade” e “Gerência da Qualidade” e isso porque hoje são considerados conceitos quase que básicos, seja na indústria, comércio e ou serviços. Os conceitos são usados em várias áreas, inclusive e mais fortemente em “Qualidade de Software”. Gerência da qualidade é o processo de controlar e gerenciar o processo da qualidade na fabricação ou manutenção de um produto ou serviço. Garantia da qualidade são as ações tomadas para redução de defeitos. Controle da qualidade são as ações relacionadas à medição da qualidade, para diagnosticar se o resultado está sendo atingido.

Testes de Softwares:

O teste do software é uma das fases do processo de Engenharia de Software que visa atingir um nível de qualidade de produto superior. O objetivo, por paradoxal que pareça, é mesmo o de encontrar defeitos no produto, para que estes possam ser corrigidos pela equipe de analistas/programadores, antes da entrega final. A maioria das pessoas pensa que o teste de software serve para demonstrar o correto funcionamento de um programa, quando na verdade ele é utilizado como um processo da engenharia de software para encontrar defeitos.

O conceito de teste de software pode ser compreendido através de uma visão intuitiva ou mesmo de uma maneira formal. Existem atualmente várias definições para esse conceito. De uma forma simples, testar um software significa verificar através de uma execução controlada se o seu comportamento corre de acordo com o especificado. O objetivo principal desta tarefa é encontrar o número máximo de erros dispondo do mínimo de esforço, ou seja, mostrar aos que desenvolvem se os resultados estão ou não de acordo com os padrões estabelecidos.

Qualidade de Software:

Um desenvolvimento organizado de software tem como premissa uma metodologia de trabalho. Esta deve ter como base conceitos que visem a construção de um produto de software de forma eficaz. Dentro desta metodologia estão definidos os passos necessários para chegar ao produto final esperado.

Assim, quando se segue uma metodologia para o desenvolvimento de um produto de software espera-se um produto final que melhor agrade tanto aos clientes quanto ao próprio fornecedor, ou seja, a empresa de desenvolvimento.

Observando este aspecto, não faz sentido iniciar a construção de um produto de software sem ter uma metodologia de trabalho bem solidificada e que seja do conhecimento de todos os envolvidos no processo.

Porém, além de uma crescente demanda por softwares de qualidade, as empresas de desenvolvimento de software sofrem cada vez mais pressão por parte dos clientes para que o produto seja entregue num curto período de tempo. Este fato pode fazer com que uma sólida metodologia de trabalho acabe por se desequilibrar.

Independente da metodologia de trabalho que empregue para o desenvolvimento de um software, para que se obtenha um produto final com um certo nível de qualidade é imprescindível a melhoria dos processos de engenharia de software.

Uma maneira viável para se assegurar a melhoria de tais processos seria tomar como base modelos sugerido por entidades internacionais respeitadas no assunto. Dentro de uma gama de modelos, sejam eles para situações e ambientes específicos ou para soluções genéricas, existem alguns que são mais utilizados e tidos como eficientes, como por exemplo, os ”SW-CMM”, ”SE-CMM”, ”ISO 15504” e o mais conhecido ”CMMI”.

Outro fator com grande influência sobre a qualidade do software a ser produzido é o que diz respeito aos testes que serão executados sobre tal produto. Todas as metodologias de desenvolvimento de software têm uma disciplina dedicada aos testes. Atualmente esta é uma tarefa indispensável, porém muitas vezes efetuada de maneira ineficiente, seja pelo subestimar dos que desenvolvem, pela falta de tempo ou mesmo pela falta de recursos humanos e/ou financeiros.

Técnicas de Testes:
Atualmente existem muitas maneiras de se testar um software. Mesmo assim, existem as técnicas que sempre foram muito utilizadas em sistemas desenvolvidos sobre linguagens estruturadas que ainda hoje tem grande valia para os sistemas orientados à objeto. Apesar de os paradigmas de desenvolvimento serem completamente diferentes, o objetivo principal destas técnicas continua a ser o mesmo: encontrar falhas no software. Abaixo estão descritas as três técnicas mais conhecidas.

Caixa-Branca:

Dentro desta categoria de teste de software o desenvolvedor tem acesso ao código fonte da aplicação e pode construir códigos para efetuar a ligação de bibliotecas e componentes. Este tipo de teste é desenvolvido analisando-se o código fonte e elaborando-se casos de teste que cubram todas as possibilidades do programa. Dessa maneira, todas as variações originadas por estruturas de condições são testadas.

Caixa-Preta:

Neste tipo de teste de software o desenvolvedor dos testes não possui acesso algum ao código fonte do programa. O objetivo é efetuar operações sobre as diversas funcionalidades e verificar se o resultado gerado por estas está de acordo com o esperado. Para esta categoria podem ser levados em consideração todos os eventos que podem ser disparados pelo usuário, como por exemplo, cada clique de mouse a ser realizado em uma interface.

Caixa-Cinza(Ainda não tão comum quanto os de caixa Branca ou Preta):

Esta categoria de teste de software passou a ser considerada mais recentemente. Uma definição deste tipo de teste seria um ponto de equilíbrio virtual entre o teste de caixa-branca e o caixa-preta. De uma maneira mais clara, o desenvolvedor dos testes não tem acesso ao código fonte da aplicação, porém tem conhecimento dos algoritmos que foram implementados, como também pode efetuar manipulações em arquivos de entrada e saída do tipo XML ou mesmo acessos ao banco de dados da aplicação para simples conferência de dados ou alteração de parâmetros considerados nos casos de teste.

Testes Alpha, Beta e Gama:

No processo de desenvolvimento, os testes preferencialmente devem ser executados antes do produto ser disponibilizado aos usuários. Essa período entre o término do desenvolvimento e da entrega é conhecido como fase alpha(aplicados após ou em paralelo com os chamados unitários) e os testes executados nesse período como testes alpha. No início dos testes da fase alpha são utilizadas técnicas e caixa-branca. Posteriormente, os desenvolvedores dos testes aplicam técnicas de caixa-preta como complemento da primeira parte de testes. Completada a fase alpha de testes, são lançadas a grupos restritos de usuários versões de teste do sistema, denominadas versões beta.

Consequentemente este período fica denominado como fase beta. Através deste tipo de teste os usuários finais do produto podem encontrar defeitos peculiares de tarefas costumeiramente executadas por eles. Visando um maior retorno de informações sobre o mau funcionamento do sistema algumas empresas distribuem as versões betas para todo o universo de utilizadores.
Paralelamente podem ser executados testes de caixa-preta durante essa fase, dando assim maior eficiência no processo.

Algumas das “Categorias de Testes” mais importantes para se obter Software Q.A.:

Tipos de Testes de Software:

v-model-artigo

Teste de Unidade (ou Unitário):

Também conhecido como testes unitários. É um tipo de atividade que visa testar pequenas partes ou unidades do sistema. O universo alvo desse tipo de teste são os métodos dos objetos ou mesmo pequenos trechos de código. Assim, o objetivo é o de encontrar falhas de funcionamento dentro de uma pequena parte do sistema funcionando independentemente do todo.

Teste de Componente:

Este tipo de teste possui um universo um pouco maior ao teste unitário. Seu propósito é testar o componente como um todo e não apenas as suas funções ou métodos. Mesmo assim, o teste continua a ser executado sem considerar a iteração com outras partes do sistema, ou seja, leva-se apenas em consideração o componente a ser testado e nenhuma outra entidade do sistema.

Teste de Integração:

O teste de integração, como o próprio nome já diz, visa encontrar falhas provenientes da integração dos componentes do sistema. Geralmente os tipos de falhas encontradas são de envio e recebimento de dados. Por exemplo, um objeto A pode estar esperando o retorno de um vlr “x” ao executar um método do objeto B, porém este objeto B pode retornar um vlr “y”.

Teste de Sistema:

Este é um teste de grande importância. Sua principal filosofia é varrer o sistema em busca de falhas através da utilização do mesmo, como se fosse um usuário final. Dessa maneira, os testes são executados nos mesmos ambientes, com as mesmas condições e com os mesmos dados de entrada que um usuário utilizaria no seu dia-a-dia de manipulação do sistema.

Teste de Aceitação:

São realizados geralmente por um restrito grupo de usuários finais do sistema. Esses simulam operações de rotina do sistema de modo a verificar se seu comportamento está de acordo com o solicitado.

Gestão da qualidade:

Atualmente a gestão da qualidade está sendo uma das maiores preocupações das empresas, sejam elas voltadas para a qualidade de produtos ou de serviços. A conscientização para a qualidade e o reconhecimento de sua importância, tornou a certificação de sistemas de gestão da qualidade indispensável para as micro e pequenas empresa de todo o mundo.

A certificação da qualidade além de aumentar a satisfação e a confiança dos clientes, reduzir custos internos, aumentar a produtividade, melhorar a imagem e os processos continuamente, possibilita ainda fácil acesso a novos mercados. Esta certificação permite avaliar as conformidades determinadas pela organização através de processos internos, garantindo ao cliente um produto ou serviço concebido conforme padrões, procedimentos e normas.

Entre modelos existentes de sistema da qualidade, destacam-se as normas da série ISO 9000(já comentadas em artigo anterior). Estas se aplicam a qualquer negócio, independentemente do seu tipo ou dimensão. As normas desta série possuem requisitos fundamentais para a obtenção da qualidade dos processos empresariais. A verificação dos mesmos através de auditorias externas garante a continuidade e a melhoria do sistema de gestão da qualidade.
As pessoas e as empresas que buscam qualidade devem criar uma mentalidade positiva de mudança. Qualquer melhoria, pequena ou grande é bem vinda. Toda inovação deve ser conhecida, testada e se possível aplicada.

Uma organização que se propõe a uma gestão voltada para a “qualidade”, tem consciência de que a sua trajetória deve ser reavaliada. As mesmas precisam por em prática as atividades que visam estabelecer e manter um ambiente no qual as pessoas, trabalhando em equipe, consigam um desempenho eficaz na busca das metas e missões da organização.

Lista de instituições internacionais ligadas à Qualidade:

• American Society of Quality Control – ASQC Estados Unidos
• Asociación Española para la Calidad – AEC Espanha
• Associação Brasileira de Controle da Qualidade Brasil
• Associação Portuguesa para a Qualidade Portugal
• Austrian Association for Quality (ÖVQ) Áustria
• Dutch Foundation for Quality (KDI) Holanda
• European Foundation for Quality Management (EFQM)
• European Organization for Quality (EOQ)
• Euroqual – European Quality
• Excellance Ireland Irlanda
• Finnish Society for Quality Finlândia
• German Society for Quality (DGQ) Alemanha
• Icelandic Association for Quality Islândia
• Institute of Quality Assurance (IQA)
• Instituto Português da Qualidade Portugal
• Mouvement Français pour la Qualité (MFQ) França
• Norwegian Society for Quality and Leadership (NFKL) Noruega
• Swiss Association for the Promotion of Quality (SAQ) Suíça

Até o próximo pessoal, até o “ Segundo “ Segundo então . . . ! ! !

[Crédito da Imagem: Testes de Software – ShutterStock]

Autor

Por Walter Melo – Estrategista em Testes - Especialista em Técnicas de Testes de Software e Q.A.(Quality Assurance) – Especialista em homologações e Certificações por meio de Testes de Sofware para Cartões e meios de pagamento. Autoridade por conhecimento e experiência em ferramentas de Testes de Software dos principais vendors, free´s e open source. Certificado em Testes de Software por I.B.Q.T.S. e A.T.Q. Atuando há 18 anos como profissional especialista da área de Testes, Além de atuações em Homologações e Certificações de Softwares e meios de pagamentos em empresas específicas de Testes de Softwares e grandes empresas com áreas/equipes próprias de Testes definidas, sempre voltado a unir as áreas de Testes(Técnica) e de Projetos(Negócios). Membro oficial no Brasil de IEEE e TMMI e atualmente atuando como Test Manager/Test Strategist em grupo Multinacional e como Diretor de QA em empresa brasileira.

Walter Melo

Comentários

You must be logged in to post a comment.

Busca

Patrocínio

Publicidade



Siga-nos!

Newsletter: Inscreva-se

Para se inscrever em nossa newsletter preencha o formulário.

Artigos Recentes