quarta-feira, 26 de setembro de 2012

A qualidade de software como base competitiva



Nos dias atuais, com um mercado altamente competitivo, que reúne vários fabricantes e fornecedores de diversos tipos de produtos e serviços, a qualidade deixa de ser um diferencial competitivo e passa a ser um item básico de sobrevivência das organizações, uma necessidade permanente. Desta forma, uma empresa que forneça bens e/ou serviços com baixa qualidade corre um sério risco de ser descartada pelo mercado consumidor.

Devido a esse mercado altamente competitivo, as empresas passaram a se preocupar em adotar as técnicas mais modernas de qualidade e produtividade para combinar os recursos disponíveis de maneira a aumentar o seu volume de negócios, garantindo a satisfação dos seus clientes e suas margens de lucro.

Em contrapartida, se as empresas não entregam novos produtos ou funcionalidades aos clientes, rapidamente se tornam obsoletas. Assim, o grande desafio é equilibrar as ações para entregar constantemente novos produtos com qualidade e custos adequados. 

Esta teoria é facilmente compreendida através da triângulo da qualidade (TRIPLE CONSTRAINT). Uma estrutura para a avaliação de demandas conflitantes, um triângulo em que um dos lados ou um dos cantos representa um dos parâmetros que está sendo gerenciado pela equipe do projeto. (PMI, 2004:375) 


O triângulo trata do gerenciamento de necessidades conflitantes do projeto, como o escopo, o tempo e o custo. No que tange a qualidade do projeto é necessário encontrar o balanceamento desses três fatores.

Para encontrar esse equilíbrio existem diversas ferramentas como, por exemplo, o PDCA (Plan, Do, Check, Action), o KAMBAN e o 05 Porquês, que têm a função de ajudar as empresas a atingir a excelência nos seus projetos, melhorando continuamente e aplicando valor ao seu produto.

Existem inúmeras vantagens para se efetuar testes de qualidade nos softwares desenvolvidos. A principal delas é a satisfação dos clientes, pois reduzindo o número de reclamações deles, o produto passa a ser indicado e a imagem da empresa melhora a cada dia. Com isso, surge a fidelização em relação aos produtos, a maturidade e estabilidade dos softwares passam a ser atingidas rapidamente e os custos com desenvolvimento e manutenção são reduzidos, gerando maior receita à empresa.

Com base na pesquisa e na observação das empresas estudadas, seguem as recomendações sobre a estrutura organizacional que melhor se adéquam ao departamento de testes de software:

- Não é recomendado que o Departamento de Qualidade e Testes de Software seja coordenado pela mesma gerência da Equipe de Desenvolvimento, pois pode haver conflitos de interesse;

- O departamento de Testes de Software deve estar preferencialmente abaixo de uma diretoria específica de qualidade da empresa;

- A estrutura interna do Departamento de Teste de Software deve seguir os padrões de certificações existentes, citadas anteriormente, que são:

Líder do Projeto de Testes: responsável pela liderança de um projeto de teste específico, normalmente relacionado a um sistema de desenvolvimento, seja um projeto novo ou em manutenção (RIOS e MOREIRA, 2006);

Engenheiro/Arquiteto de Teste: responsável pela montagem da infraestrutura de teste, montando o ambiente de teste, escolhendo as ferramentas de teste e preparando a equipe para executar o seu trabalho neste ambiente de teste;

Analista de Teste: responsável por modelar, especificar e documentar os casos de testes que devem ser realizados, em resumo esta função cria os Planos de Testes que o testador irá executar;

Testador: responsável por executar os testes e analisar os resultados obtidos, seguindo parâmetros previamente definidos no Plano de Testes.

Para o profissional, temos algumas certificações no mercado. São elas:



Para as empresas desenvolvedoras temos:





segunda-feira, 27 de agosto de 2012

CRIANDO A INFRA-ESTRUTURA PARA OS TESTES



Neste capítulo são sugeridas ferramentas, procedimentos e workflow para realização dos diversos tipos de testes e a montagem de laboratórios de testes, simulando os ambientes reais de forma mais completa possível.


Ferramentas

Sistemas de máquinas virtuais

A virtualização é uma tecnologia que oferece uma camada de abstração dos verdadeiros recursos de uma máquina física, provendo recursos (hardware) virtuais para cada sistema operacional.

Com isso temos a vantagem de executar vários sistemas operacionais em um mesmo sistema computacional simultaneamente, entre outras vantagens como:
·         Redes virtuais: cria “switchs” virtuais entre as máquinas virtuais podendo também incluir interfaces de rede reis;
·         Compartilhamento de memória RAM e disco: cada máquina virtual pode utilizar uma quantidade de memória diferente, definida pelo usuário;
·         Snapshot: possibilidade de criar registros instantâneos de uma máquina virtual num dado momento. Assim, é possível testar configurações, e se elas derem erradas pode-se reverter.
Alguns produtos que implementam estas funcionalidades e muitas outras:
·         VM-ware (http://www.vmware.com/);
·         Oracle Virtual Box (http://www.virtualbox.org);
·         GNU XEN (http://www.xen.org/).

Em um ambiente de teste os sistemas de virtualização é uma arma poderosa, permite que se simulem vários tipos de clientes, sistemas e a economia em espaço físico para a montagem dos laboratórios.

domingo, 19 de agosto de 2012

Desculpem a ausência... seguem as postagens!!!

Missão, Visão e Valores da equipe


A missão deve responder o que a empresa ou a organização se propõe a fazer, e para quem (FARIA, 2004).

O enunciado da visão é a descrição do futuro desejado para a empresa. Esse enunciado reflete o alvo a ser procurado (FARIA, 2004):
Pelos esforços individuais;
Pelos esforços das equipes e
Pela alocação dos recursos.

Valores são princípios, ou crenças, que servem de guia, ou critério, para os comportamentos, atitudes e decisões de todas e quaisquer pessoas, que no exercício das suas responsabilidades, e na busca dos seus objetivos, estejam executando a Missão, na direção da Visão (FARIA, 2004).

É recomendado que toda empresa tenha sua missão, visão e valores, desta forma o departamento de testes de softwares também deve ter sua missão, exemplo:
“Disponibilizar produtos com excelência buscando melhorar continuamente a eficácia do Sistema de Gestão da Qualidade.”

Desafio: “Realizar testes com a maior abrangência de ambientes possíveis.“

quinta-feira, 17 de maio de 2012

ESTRUTURA ORGANIZACIONAL


Da empresa

 Com base na pesquisa e na observação das empresas estudadas, seguem as recomendações sobre a estrutura organizacional que o departamento de testes de software melhor se adéqua:
·         Não é recomendado o departamento de qualidade e testes de softwares ser gerenciados pela mesma gerência de desenvolvimento, pois, pode gerar conflitos de interesses;
·         De preferência o departamento de testes de software estar abaixo de uma diretoria específica de qualidade da empresa;

Da equipe de testes


A estrutura interna do departamento de teste de software é recomendável seguir os padrões de certificações existentes citadas anteriormente que são:
  • ·         Líder do projeto de testes: responsável pela liderança de um projeto de teste específico, normalmente relacionado a um sistema de desenvolvimento, seja um projeto novo ou em manutenção (RIOS e MOREIRA, 2006);
  • ·         Engenheiro/Arquiteto de teste: responsável pela montagem da infra estrutura de teste, montando o ambiente de teste, escolhendo as ferramentas de teste e preparando a equipe para executar o seu trabalho neste ambiente de teste;
  • ·         Analista de teste: responsável por modelar, especificar e documentar os casos de testes que devem ser realizados, em resumo esta função cria os Planos de testes que o testador irá executar;
  • ·         Testador: responsável por executar os testes e analisar os resultados obtidos, seguindo parâmetros previamente definidos no Plano de testes;

  • Logo abaixo iremos definir o que é um Plano de teste, ficando mais claro as funções de cada integrante da equipe.

quinta-feira, 3 de maio de 2012

CMMI (Capability Maturity Model Integration for Development)


O gerenciamento de projetos ou processos de software se refere à aplicação de conhecimentos, habilidades.
O gerenciamento de projetos ou processos de software se refere à aplicação de conhecimentos, habilidades, ferramentas e técnicas às atividades do projeto a fim de satisfazer seus requisitos, e é realizado com o uso de processos tais como: especificação, implementação, testes, manutenção e evolução (CITS - CENTRO INTERNACIONAL DE TECNOLOGIA DE SOFTWARE, 2008).
Para auxiliar neste gerenciamento temos como opção seguir o padrão  CMMI (Capability Maturity Model Integration for Development) foi criado pelo SEI - Software Engineering Institute, sendo reconhecido mundialmente por atestar a maturidade dos processos de desenvolvimento da organização. Reúne diretrizes e boas práticas, tanto acadêmicas quanto de mercado, as quais devem ser incorporadas pelas empresas em seus processos (CITS - CENTRO INTERNACIONAL DE TECNOLOGIA DE SOFTWARE, 2008).
Ele possui cinco níveis de maturidade que especificam o desenvolvimento dos seus processos de desenvolvimento de softwares:
  • ·         Inicial;
  • ·         Gerenciado;
  • ·         Definido;
  • ·         Quantitativamente Gerenciado;
  • ·         Otimizado.



O CMMI abrange 25 áreas de processo divididas em 4 categorias:
·         Gerenciamento de projetos:
·         Definição do processo organizacional;
·         Foco no processo organizacional;
·         Treinamento organizacional;
·         Desempenho do processo organizacional.
·         Gerenciamento de processos:
·         Gerenciamento quantitativo de projeto;
·         Gerenciamento de risco;
·         Gerenciamento integrado de projeto;
·         Gerenciamento de acordo com fornecedor;
·         Monitoramento e controle de projetos;
·         Planejamento de projetos;
·         Gerenciamento integrado de fornecedores.
·         Engenharia:
·         Validação;
·         Verificação;
·         Integração de produtos;
·         Solução técnica;
·         Desenvolvimento de requisitos;
·         Gerenciamento de requisitos.
·         Suporte:
·         Gerenciamento de configuração;
·         Garantia de qualidade de processo e produto;
·         Medição e analise;
·         Análise e tomada de decisão;
·         Análise de causas e resolução;
·         Ambiente organizacional para integração.

ISO/IEC 14598 - Engenharia de Software - Avaliação da Qualidade de Produto de Software



A Norma ISO/IEC 14598-5 define um processo de avaliação da qualidade de produto de software, onde se define as principais características de um processo de avaliação (repetibilidade, reproducibilidade, imparcialidade e objetividade) (GOMES, 2000).
As etapas são:
·         Estabelecer os requisitos de avaliação: analisar os requerimentos para identificar o propósito da avaliação;
·         Especificar a avaliação: define o escopo e métricas da avaliação e as medições a que o produto será submetido.
·         Projetar a avaliação: com base nas especificações do produto elaborar um plano de avaliação no qual estejam relacionados os componentes do produto de software a serem avaliados e os métodos de avaliação;
·         Executar a avaliação: consiste na inspeção, medição e teste dos produtos e seus componentes de acordo com o plano de avaliação;
·         Conclusão da avaliação: consiste no relatório de avaliação e liberação dos dados obtidos na fase anterior.
Outra visão da norma:



Figura 4. Visão Geral do processo – ISO 14598-1 (COLOMBO, 2007).

sábado, 24 de março de 2012

NBR ISO/IEC 12119 (atual ISO/IEC 25051)


Norma que estabelece os requisitos de qualidade para pacotes de software e instruções de como testar um pacote de software com relação aos requisitos estabelecidos (GOMES, 2000).
Estes requisitos são:
·         Descrição do produto – informações sobre o produto e suas principais funcionalidades têm como finalidade ajudar o usuário ou o comprador a avaliar se o produto atende suas necessidades;
·         Documentação do usuário – documentação de fácil compreensão identificando o conhecimento necessário para a utilização da aplicação;
·         Documentação do produto e dados – são os requisitos de programas e dados necessários para seu funcionamento.
Os testes definidos nesta norma são para validar os itens citados acima e seguem a seguinte estrutura:

Figura 3. Estrutura da Norma ISO/IEC 12119.