,

quarta-feira, 27 de fevereiro de 2013

Introdução a Teste de Software - Parte 01

Estou iniciando um bateria de publicações, falando sobre Teste de Software, onde iremos  introduzir o conceito de Teste de Software, suas metodologias, estratégias, técnicas, tipos e muito mais, espero que gostem.

Atualmente os sistemas de software estão se tornando mais presente, e até mesmo alguns sendo indispensáveis em nossas vidas, sejam em celulares, internet, televisões, bancos, aviões, hospitais, entre outros. Contudo, nos deparamos cada vez mais com sistemas mais complexos, ou sistemas que tenham funções críticas (como sistemas de controlador de voos, sistemas cirúrgico, sistemas bancários, entre outros), sistemas esses que não podem ocorrer erros. A maioria das pessoas já teve alguma experiência com software que não funcionou como esperado [1], ou não expressara confiança, ou qualidade suficiente ao usuário. Há vários exemplos de problemas em sistemas que geraram transtornos há várias pessoas, onde esses sistemas já estavam em produção, trazendo danos materiais, gerando altos custos financeiros, causando má reputação a esses serviços. Um exemplo foi a falha no site do SISU, em janeiro deste ano, onde o site estava permitindo aos usuários obter dados pessoais de outros candidatos, uma falha gravíssima de segurança do sistema [3]. Um outro exemplo, foi uma falha no sistema de processamento de um Banco que descontou valores das contas dos usuários, o Banco logo de retratou reconhecendo a falha, e prometendo a solução do problema. Mas é uma situação muito desagradável, que para os clientes do Banco, o InternetBank se torna menos confiável.

Uma forma de tentar evitar esses problemas é investindo em testes, pois a implantação de um processo de testes no sistema reduz, consideravelmente, a possibilidade de ocorrência de novos defeitos, em ambiente de produção (sistema à disposição do cliente final). Com essa redução cresce a qualidade do sistema e satisfação do cliente. Vale salientar que não existe um sistema 100% livre de bugs, mas quanto mais cedo forem implantados os testes nos sistemas, menor o custo para corrigi-los, e menos a possibilidade de ocorrer defeitos em ambiente de produção.

Como implementar, planejar, arquitetar esses testes são os desafios que devemos encarar, para que o nosso software seja produzido com qualidade em um curto espaço de tempo, baixo custo e com extrema satisfação do cliente.

A implementação de um projeto de teste a partir de um projeto de desenvolvimento é importante para se obter um nível de cobertura mais aceitável dos testes. Nessa cobertura é que vamos definir quais os pontos mais importantes para o negócio, quais os pontos mais críticos a serem mais explorados, quais os objetivos do teste. Muito preciosismo ou uma falta de controle de cobertura pode tornar os testes muito onerosos, tornando-os inviáveis para a empresa, podendo até desconsiderá-los, chegando à sua para interrupção.

Mas o que é testar afinal? Testar não é somente executar um roteiro pré-definido, com intuito de encontrar defeitos nos sistemas. Testar é um processo realizado pelo testador de software, que engloba outros processos da engenharia de software, e que envolve ações que vão do levantamento de requisitos até a execução do teste propriamente dito [5]. 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.

Algumas pessoas confundem a atividade de depuração (debbuging) com a atividade de teste, mas elas diferem. Atividade de teste pode demonstrar falhas que são causadas por defeitos, enquanto a depuração é uma atividade de desenvolvimento que repara o código e checa se os defeitos foram corrigidos corretamente, para então ser feito um teste de confirmação por um testador com a intenção de certificar-se se o mesmo foi eliminado. [1]

Outros conceitos chaves utilizados em testes são listados a seguir:

  • Defeito: É o resultado de um erro encontrado em um código ou em um documento.
  • Erro: É um engano cometido por seres humanos.
  • Falha: É o resultado ou manifestação de um ou mais defeitos.
  • Bug: É um erro de lógica na programação de um determinado software.
  • Testware: Define toda a documentação de teste.
  • Caso de Teste: É uma descrição de um teste a ser executado. Um ou mais casos de teste costumam estar relacionados a um caso de uso.
  • Suíte de Testes: Pacote de casos de teste relacionados. Por exemplo: Suíte de cadastro, suíte de consulta.
  • Plano de Teste: É o documento de planejamento do projeto de teste é equivalente ao Plano de Projeto definido pelo PMI (Project Management Institute).
  • Script de Teste: É uma automação da execução de um caso de teste.

No Próximo post iremos nos aprofundar mais nesses conceitos e nas técnicas de testes de software...


Referências:

[1] BSTQB – Brazilian Software Testing Qualifications Board. http://www.bstqb.org.br/uploads/docs/syllabus_2007br.pdf.

[2] Carla Almeida. Introdução a  Testes de Software

[3] G1. Falha no site do Sisu permite acesso a dados de outros candidatos”. http://g1.globo.com/educacao/noticia/2013/01/falha-no-site-do-sisu-permite-acesso-dados-de-outros-candidatos.html. Publicado em 07/01/2013.

[4] Paulo Tozelli. Teste de Software

[5] Wikipédia. “Teste de Software”. http://pt.wikipedia.org/wiki/Teste_de_software.



Referências:

[1] BSTQB – Brazilian Software Testing Qualifications Board. http://www.bstqb.org.br/uploads/docs/syllabus_2007br.pdf.

[2] Carla Almeida. Introdução a  Testes de Software

[3] G1. Falha no site do Sisu permite acesso a dados de outros candidatos”. http://g1.globo.com/educacao/noticia/2013/01/falha-no-site-do-sisu-permite-acesso-dados-de-outros-candidatos.html. Publicado em 07/01/2013.

[4] Paulo Tozelli. Teste de Software

[5] Wikipédia. “Teste de Software”. http://pt.wikipedia.org/wiki/Teste_de_software.




Post enviado por: Jeremias Araujo, Analista de Teste Sr. da Indra/Politec

2 comentários:

  1. Uma explicação muito bacana sobre a importância da aplicação dos testes.
    Muito bom o post Jeremias, parabéns!
    Ficamos no aguardo da segunda parte. :-D

    ResponderExcluir
  2. Valeu pelas explanações. Uma boa introdução ao assunto que por vezes é tão negligenciado...
    Não esqueça de dar continuidade.

    ResponderExcluir