Testes de Software

Boa noite pessoal,
Quero abordar uma dúvida aqui, e extremamente importante tão quanto o desenvolvimento propriamente dito.
Gostaria de entender melhor como funciona um teste de software:

  • Como é a tecnologia?
  • É uma ferramenta?
  • É um framework?, já ouvi falar muito referente ao jUnit, mas como funciona? para Java só existe esse cara?
  • Caso exista algum outro, qual o mais utilizado além deste?
    esta idéia ainda é bastante vaga pra mim.

Caso alguém esteja com paciência para me responder essas questões, ficarei muito grato.

se puderem me passar algum material tbm fico muito agradecido.

Obrigado e boa noite a todos.

  1. A tecnolgia tem que simular (pelo menos tenta) todos casos possíveis para um determinado método.
  2. Digamos que existe teoria e prática. A teria seria algo parecido com TDD ou DDD que são metodologias de testes. Na prática vai do seu levantamento de quantas casos podem existir para aquele método. (Não entendi muito bem oq vc quer com “é uma ferramenta?”).
  3. Eu sempre usei o JUnit e ele é bom pra caramba. Existem outras ferramentas como selenium, etc. Mas são conceitos diferentes como teste unitário, teste de integração e assim vai. Existe para outras linguagens também, mas até onde eu sei, o JUnit é só para java.

Aqui tem um tutorial que pode te ajudar: TDD Primeiros Passos.

jakefrog, muito obrigado pelo retorno mais uma vez.
foi como havia dito, como esta ideia é vaga pra mim, achei q poderia existir alguma ferramenta onde o testador rodasse o projeto e o mesmo apontasse algum tipo de falha rsrs…

vou estudar este tópico que me passou, para abranger mais essa ideia de testes.

Vlw man…

Obs:. vou deixar o tópico por enquanto em aberto para mais algumas dúvidas ou sugestões

Cara, teste de software é um assunto bastante abrangente. Teoricamente, você poderia modelar um sistema com algum formalismo, como redes de Petri e provar matematicamente o seu funcionamento. Alguns sistemas críticos são construidos assim. Porém, para a maioria dos sistemas comerciais isso não é possível, e para isso existem as atividades de teste, que tem como finalidade verificar se o sistema contruído não possui erros e se o mesmo atende aos requisitos.

A técnica de teste mais básica que existe é simplesmente usar o sistema depois de pronto. Acho que na maioria das empresas ainda é isso o que acontece. Existe um setor de desenvolvimento e um setor de testes, que fica “usando” o software para verificar o seu funcionamento. Infelizmente ainda predomina a visão de que basta contratar alguns estagiários para ficar clicando no sistema e tentar encontrar erros.

As abordagens para testar um software são várias. Os testes mais básicos que existem são os testes unitários. Um teste unitário é um programa como qualquer outro, mas que tem a finalidade de verificar o funcionamento de uma classe ou método isoladamente. Existem também os chamados testes de integração, que verificam como as partes do sistema interagem. Em sua maioria, os testes verificam se o sistema atende aos requisitos funcionais, mas as equipes de QA também podem desenvolver teste para requisitos não-funcionais, como o tempo de resposta de uma requisição, a quantidade de usuários simultâneos que o sistema suporta, etc.

As ferramentas também são muitas:

:arrow: para testes unitários, existem o JUnit e o TestNG. O JUnit também é conhecido como xUnit, pois ele existe para várias linguagens. Nos teste unitários, também podem ser usados frameworks para criação de mock objects, como o EasyMock, JMock e Mockito.

:arrow: o DBUnit é uma extensão específica do JUnit para testes que envolvem bancos de dados,

:arrow: o Selenium permite gravar as interações do usuário com o browser e executar estas interações como se fosse um script

:arrow: o JMeter permite fazer testes de carga e performance

e existem ainda muitas outras. Sinceramente, é uma área que eu recomendo muito para especialização, se existe carência de bons programadores, a carência de bons testers é maior ainda. Particularmente, eu considero o profissional de QA mais importante ainda que os chamados “analistas de sistemas”. Mas é uma pena que o mercado brasileiro ainda não acordou para o real valor deste especialista.