Eu não sei você, mas eu repeti inúmeras vezes a frase “na minha máquina funciona” no inicio da minha carreira como desenvolvedor…
Mas quem nunca, né? rs
Desenvolver software não é uma tarefa simples, lidamos com pressão, cobranças e prazos apertados a todo instante, seja do gerente, cliente ou equipe. Você me entende! E ainda temos que garantir que aquele IFzinho que colocamos na última correção de bug funcione:
public void sacar(Conta conta, double valor) {
if (!conta.temSaldoPara(valor)) { // esqueci dessa regra :-X
throw new SaldoInsuficienteException();
}
// restante do codigo: efetua o saque
}
Mas como garantir essa nova lógica de negócio? Temos que testar! Mas como? Talvez você faça assim:
- alterando o saldo no banco;
- levantando o Tomcat;
- abrindo o Chrome;
- fazendo login na aplicação;
- preenchendo e submetendo formulários;
- verificando se houve o erro na tela;
Tudo isso é enfadonho e pior, é TESTE MANUAL. Um hora você vai esquecer ou errar algum passo e aí já viu né…
Fazer testes manuais NÃO É SUSTENTÁVEL: é CARO e LENTO. Nem todas as empresas podem arcar com isso. Por isso é recomendado escrever TESTES AUTOMATIZADOS. Por exemplo, com Java teríamos algo como:
@Test(expected=SaldoInsuficienteException.class)
public void deveNaoPermitirSacarQuandoEstiverNaLiseira() {
Conta conta = new Conta("Rafael", 24.99); // titular e saldo atual
double valorASacar = 90.0; // pra curtir uma Orbita na quinta ❤
CaixaEletronico caixa = new CaixaEletronico();
caixa.sacar(conta, valorASacar);
}
Com esse simples teste de unidade garantimos que se não houver saldo na conta a exceção SaldoInsuficienteException é lançada. Se nossa lógica mudar futuramente e esse teste quebrar saberemos que alguém fez caca no código! GENIAL, não?!
A verdade é que TODO desenvolvedor DEVERIA escrever testes. Ele deve garantir minimamente a qualidade do código que ele escreve. Concorda comigo?
Para entender do que estou falando, recomendo a leitura desse novo post no blog. Nele discutimos várias práticas para garantir a qualidade do seu código:
>> Na minha máquina funciona, e na sua? Testes, TDD e build automatizado
O que discuto no post é somente a pontinha do iceberg do que estamos preparando para nosso novo curso de testes com Java. Testes, TDD e práticas de refatoração é obrigatório para qualquer profissional que busca qualidade no software que entrega!
E aí, o que achou do post? Deixa teu comentário lá! Eu leio e respondo todos os comentários!