Introdução – Parte 1

 Quando você compra uma Pêra, você pode instantaneamente avaliar sua qualidade: o tamanho e o formato, ponto de madures, a ausência de falhas e machucados. Mas apenas ao dar a primeira mordida é que você poderá constatar se a Pêra é realmente boa. Mesmo uma Pêra com boa aparência pode estar amarga ou ter um verme nela.

O Mesmo se aplica para qualquer produto, seja um objeto físico ou uma parte de um software.  Um website no qual você navega na internet pode parecer bom inicialmente, mas assim que você desce e vai para outra página, ou tenta mandar uma solicitação de contato, ele pode começar a mostrar algumas falhas de design e erros.  

Isto torna importante o controle de qualidade em todos os campos onde um produto para usuário final é criado. Entretanto, uma Pêra amarga não causará tanto estrago quanto um software de veículo autônomo com má qualidade no piloto automático. Um único erro num Sistema hospitalar pode colocar a vida de um paciente em risco, enquanto um erro em um site de e-commerce pode custar ao dono milhões de dólares em perdas.  

1. O Conceito de Qualidade de Software: Garantia da Qualidade (QA), Controle da Qualidade (QC) e Testes

Enquanto errar é humano, algumas vezes o custo de cometer um erro pode ser alto demais.

A história mostra muitos exemplos de situações quando falhas de software causaram bilhões de dólares em desperdício ou até levou a morte: Desde o Starbucks tendo que dar cafés grátis por conta de mal funcionamento de registros, até a aeronave f-35 sendo incapaz de detectar alvos corretamente por conta de falhas nos radares.  

 Para garantir que o software á ser lançado é Seguro e funciona como o esperado, o conceito de Qualidade de software foi introduzido. E este é frequentemente definido como “o grau de conformidade aos requisites explícitos ou implícitos e às expectativas”. Estas chamadas implícitas ou explícitas expectativas correspondem a dois níveis básicos de Qualidade de Software:

  • Funcional – a conformidade do produto com requisitos funcionais (explícitos) e especificações de design. Este aspecto foca no uso prático do software, do ponto de vista do usuário: Suas características, performance, facilidade de uso e ausência de defeitos.  
  • Não-Funcional – características inerentes do Sistema e arquitetura, i.e. requerimentos estruturais que incluem manutenibilidade do código, compreensibilidade eficiência e segurança.

A qualidade estrutural do software é geralmente difícil de gerir: se fia geralmente na experiencia do time de engenharia e pode ser garantida através de revisão de Código, análise e refatoração. Ao mesmo tempo, aspectos funcionais podem ser garantidos através de conjunto de dedicadas atividades de gestão da qualidade, que inclui garantia da qualidade, controle da qualidade e Testes.   

Frequentemente usadas intercambiavelmente, os três termos se referem à aspectos ligeiramente diferentes da gestão da qualidade do software. Apesar do objetivo comum de entregar produtos com a melhor qualidade possível, tanto estrutural quanto funcionalmente, diferentes abordagens são utilizadas para esta tarefa.  

Garantia da Quality é um termo amplo, explicado no blog de testes do google como “o melhoramento consistente e continua manutenção do processo que permite o trabalho de controle da qualidade (QC)”. Seguindo a definição, QA foca mais nos aspectos organizacionais da gestão da qualidade, monitorando a consistência do processo de produção.   

Através do Controle da Qualidade o time verifica a conformidade do produto com os requisitos funcionais. Como definido por Investopedia, é o “processo no qual um negócio busca assegurar que a qualidade do produto é mantida ou melhorada e erros de manufatura são reduzidos ou eliminados”. Esta atividade é aplicada ao produto final e performada antes do lançamento do produto. Em termos de indústria manufatureira, é similar à pegar um item aleatório da linha de produção e ver se o mesmo é conforme com as especificações técnicas.   

Teste é a atividade básica voltada á detector e resolver problemas técnicos na fonte do Código do software e conferir a usabilidade do produto de forma geral, sua performance, segurança e compatibilidade.  Tem um foco restrito e é performado por engenheiros de teste em paralelo com o processo de Desenvolvimento ou no estágio dedicado aos testes (dependendo da abordagem metodológica do ciclo de desenvolvimento do software). 

Os conceitos de Garantia da qualidade, controle da Qualidade, e testes comparados

Se aplicada ao processo de manufaturar um carro, ter um processo de Garantia da Qualidade significa que cada membro do time entende os requisitos e desempenha seu trabalho de acordo com as instruções e guias comumente aceitos. Nomeando, é usada para garantir que cada ação é desempenhada na ordem correta, que cada detalhe é implementado corretamente e que os processos como um todo são consistentes para que nada possa causar um impacto negativo no produto final.   

Controle da Qualidade pode ser comparado com ter um gestor senior andando no departamento de produção e pegando um carro aleatório para ser examinado e submetido a um test drive.  Atividades de teste, neste caso se referem ao processo de checar cada solda, cada mecanismo separadamente, assim como o produto como um todo, de forma manual ou automaticamente, conduzir crash testes, testes de performance, e testes drives reais e simulados.  

Devido a sua abordagem “Mãos na massa”, Atividades de Testes de Software permanecem assunto de acalorada discussão. Por isso focaremos primeiramente neste aspecto da gestão da qualidade do software neste paper. Mas antes de detalhar, definamos os princípios do teste de software.  Clique no botão de edição para alterar esse texto. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

Próximo artigo:
2. Os mais importantes Princípios do Teste de Software