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
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
Uma explicação muito bacana sobre a importância da aplicação dos testes.
ResponderExcluirMuito bom o post Jeremias, parabéns!
Ficamos no aguardo da segunda parte. :-D
Valeu pelas explanações. Uma boa introdução ao assunto que por vezes é tão negligenciado...
ResponderExcluirNão esqueça de dar continuidade.