domingo, 7 de junho de 2015

Editorial #2

Tive um tempo e resolvi comentar mais dois problemas bem legais. Eles estão disponíveis no URI Online Judge, mas são da prova da maratona de programação ACM/ICPC South America Contest 2007:

URI 1365: Procurando Assentos / Finding Seats (link para o problema)
URI 1364: Emoticons :-) (link para o problema)


sexta-feira, 5 de junho de 2015

Testes unitários e JUnit


Um problema bem incoveniente ao codar muitas linhas de um programa é a grande chance de surgirem erros e bugs. Imagine então um projeto grande com vários métodos que desempenham pequenas funções, onde uma só falha impacta no produto final. Funcionar no primeiro teste é impossível!

Existem técnicas de desenvolvimento que buscam resolver isso. Uma delas é o desenvolvimento guiado por testes: dado os testes que o programa deve passar, a ideia é escrever um código que cumpra os requisitos e checar as falhas, corrigindo a cada etapa.

Para facilitar, tudo é dividido em módulos que cumprem funções determinadas. Sabendo o que cada coisa deve fazer, fica mais fácil elaborar uma bateria de testes e saber o que não funciona. (Se você quiser ter uma noção melhor, este blog aqui explica legal)

Este é um tópico muito extenso na engenharia de softwares, mas a ideia aqui é apresentar uma framework de testes em Java: JUnit.
Q: Ok, mas por que testar enquanto desenvolve? Não dá para escrever e debuggar depois?
A: NÃO! Desenvolver testes unitários que abordam erros específicos demora menos tempo do que tentar achar o erro em um código pronto que não funciona.