Blog

Testes de software: para que servem e como são feitos na Nasajon

Compartilhe

A sociedade atual se tornou altamente dependente da tecnologia e, consequentemente, de software. Desde seu surgimento, os software se tornaram cada vez mais complexos e esta complexidade vai desde seu processo de produção, até sua arquitetura. Contudo, um problema que atormenta a todos os envolvidos na utilização e na produção de software ainda continua bem presente na atualidade: os defeitos (também chamados de bugs).

Em fevereiro de 2020, a revista internacional ComputerWorld fez um levantamento sobre os principais bugs ocorridos na história recente. Nele, é possível perceber que nem mesmo os grandes players como o Facebook estão livres de lançar versões de seus principais produtos com defeitos graves. Grandes bancos também não ficam de fora.

Pode-se citar alguns exemplos (COMPUTERWORLD, 2020):

  • Em agosto de 2019, um defeito afetou os sistemas de check-in online e de partida de voos da British Airways causando o cancelamento de mais de 100 voos e o atraso de mais de 200 outros voos;
  • Na primeira semana de julho de 2019, usuários em todo o mundo foram impossibilitados de carregar fotos no Feed de Notícias do Facebook, ver os stories no Instagram ou enviar mensagens pelo WhatsApp. Segundo a empresa, tal falha ocorreu devido a um problema em uma manutenção de rotina;
  • No início de 2016, milhões de clientes do banco HSBC foram impossibilitados de acessar suas contas online. O serviço ficou fora do ar por dois dias e, segundo a empresa, o problema ocorreu devido a uma complexa falha técnica em seus sistemas internos;
  • Em dezembro de 2015, um defeito causou a liberação antes do prazo de 3200 prisioneiros estadunidenses.

Como pode-se perceber, os defeitos de software podem causar enormes prejuízos tanto para seus usuários, quanto para as empresas que os desenvolvem. Isto quando não causam prejuízos para uma sociedade como um todo, como é o caso do exemplo em que prisioneiros são soltos antes de cumprir suas devidas penas. Mas, se os bugs são problemas tão grandes, por que ainda acontecem?

Defeitos em software e suas causas

Um defeito, segundo a Norma IEEE 1044-2009, é uma imperfeição ou deficiência em um produto de trabalho onde este produto de trabalho não satisfaz seus requisitos ou especificações e necessita ser reparado ou substituído.

Defeitos são introduzidos nos software através de erros, que são definidos pela mesma norma como uma ação humana que produz um resultado incorreto. Defeitos em um software podem ou não serem manifestados. Quando um trecho defeituoso de um software é executado, ele gera uma falha.

Uma falha é definida pela Norma IEEE 1044-2009 como:

  • A interrupção da habilidade de um produto de realizar uma função requerida ou sua incapacidade de executar dentro dos limites especificados anteriormente
  • Um evento no qual um sistema ou um componente do sistema não executa uma função requerida dentro dos limites especificados.

Para entender as definições da norma, pode-se imaginar o seguinte cenário:

Um analista de sistemas, ao especificar uma nova funcionalidade solicitada por um cliente, comete um erro.
O erro cometido pelo analista fez com que ele criasse um documento de especificação defeituoso. Este documento é transformado em código-fonte de software, ou seja, tem-se então uma funcionalidade defeituosa. Quando em fase de testes, o testador, ao executar tal funcionalidade, percebe que ela falhou ao realizar seu objetivo.

Deve-se ter em mente que um erro pode gerar um ou mais defeitos, enquanto um defeito pode dar origem a uma ou mais falhas. Contudo, pode-se também haver defeitos no software que nunca serão executados, ou seja, não gerarão falhas.

Existem uma série de atividades que podem ser realizadas para a identificação de defeitos de especificação, ou seja, anteriores à codificação do software. Dentre elas, pode-se citar (TRAVASSOS, 2014):

  • Inspeções
  • Revisão informal por pares
  • Verificação e Validação independentes
  • Análise estática (texto e código)
  • Programação em pares
  • Provas de correção
  • Revisões de garantia da qualidade de software
  • Edição de documentos técnicos
    Após a codificação, defeitos podem ser encontrados através da descoberta de falhas. Nesta etapa é onde são executados os testes de software.

O que são testes de software

Testes de software são atividades executadas em um software com os seguintes objetivos (MÜLLER & FRIEDENBERG, 2011):

  • Encontrar defeitos
  • Ganhar confiança sobre o nível de qualidade do software
  • Prover informações para a tomada de decisão
  • Prevenir defeitos

A contribuição que o teste promove para a qualidade de um software se dá quando os defeitos por ele encontrados são corrigidos previamente a entrada do software em produção. Adicionalmente, o teste pode também reduzir os riscos de problemas em ambiente operacional (MÜLLER & FRIEDENBERG, 2011):

O que são estratégias de teste

Uma organização pode lançar mão de diferentes estratégias de teste. A estratégia de teste é composta por três dimensões: nível do teste, tipo do teste e técnicas de teste. Os níveis de teste representam etapas do ciclo de desenvolvimento de um software. O tipo do teste define o alvo que será testado (funcionalidades e performance, por exemplo), enquanto as técnicas estabelecem os procedimentos que serão executados nos testes. Veja a figura:

Estratégia de teste (inspirado em: MÜLLER & FRIEDENBERG, 2011 )

Testes dos produtos Nasajon

O processo de produção de software da Nasajon Sistemas contempla um conjunto de estratégias de testes distintas. As estratégias de teste adotadas pela Nasajon buscam avaliar seus produtos em diferentes momentos do processo de produção com o intuito de mitigar ao máximo o risco de que defeitos ocorram em ambiente de produção.

Confira a tabela:

Tabela Estratégias de Testes de Software Nasajon

* Por técnicas caixa-branca entenda-se técnicas onde o testador possui acesso aos códigos-fonte do software testado.
** Por técnicas caixa-preta entenda-se técnicas onde o testador não possui acesso aos códigos-fonte do software testado.

Conclusão

Teste de software é apenas uma das diversas atividades que a Nasajon Sistemas executa com o intuito de entregar produtos e serviços cada vez melhores a seus clientes. A empresa tem investido na modernização de seu aparato de ferramentas para a confecção de testes, bem como em recursos humanos, além de estar modificando seus processos para estar em linha com as melhores práticas do mercado.

Por Irving Oliveira.

 

REFERÊNCIAS BIBLIOGRÁFICAS:

Computerworld (2020). Top software failures in recent history. Computerworld. Disponível em:<https://www.computerworld.com/article/3412197/top-software-failures-in-recent-history.html>

IEEE Std. 1044-2009 (2010). Classification for Software Anomalies. IEEE.

MÜLLER, T., & FRIEDENBERG, D. (2011). Foundation level syllabus. ISTQB, Certified Tester: Foundation Level Syllabus, BSTQB, versão 2011Br.

TRAVASSOS, G. H. (2014). Software defects: Stay Away from them. Do Inspections!. 2014 9th International Conference on the Quality of Information and Communications Technology. IEEE.


Compartilhe