Testes
Automatizados
Reduzindo erros de manutenção no
código
Slide 7
Slide 7 text
Hoje iremos estudar
como o programador
faz seus testes
Slide 8
Slide 8 text
Na faculdade
Slide 9
Slide 9 text
Exercício bacana
Slide 10
Slide 10 text
Codificamos
Slide 11
Slide 11 text
As ferramentas nos
ajudam
Slide 12
Slide 12 text
Porém na hora de usar
o programa
Slide 13
Slide 13 text
No content
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
Minimizando
esse risco
Slide 16
Slide 16 text
Código modular
Slide 17
Slide 17 text
Nomes significativos
int a, b, fCont;
float mTeZ(float b)
Slide 18
Slide 18 text
Testar cedo e frequente
Slide 19
Slide 19 text
Sucesso na
entrega do
exercício!
Slide 20
Slide 20 text
Tá pronto! Valeu
professor até semana
que vem!
Slide 21
Slide 21 text
Semana seguinte:
novo exercício
Slide 22
Slide 22 text
Sem evolução e
manutenção do
código antigo.
Slide 23
Slide 23 text
Mas no dia-a-dia
Slide 24
Slide 24 text
É todo dia
Slide 25
Slide 25 text
Não trabalha sozinho
Slide 26
Slide 26 text
Requisitos novos
Slide 27
Slide 27 text
O código fica maior
Slide 28
Slide 28 text
Dúvidas surgem
Slide 29
Slide 29 text
Conflitos de requisitos
e interesses
Slide 30
Slide 30 text
Bugs novos e velhos
Slide 31
Slide 31 text
Difícil adicionar algo
novo
Slide 32
Slide 32 text
Software Engineering Economics, Barry Boehm
Só fica pior
Slide 33
Slide 33 text
A culpa é...
Slide 34
Slide 34 text
Software Engineering Economics, Barry Boehm
Melhorias!
Slide 35
Slide 35 text
Como o
desenvolvedor fez
os testes?
Slide 36
Slide 36 text
Manualmente!
Slide 37
Slide 37 text
Testes manuais
são apagados
Slide 38
Slide 38 text
Sujam o código
fonte
Slide 39
Slide 39 text
Não existe um
padrão
Slide 40
Slide 40 text
Trabalhoso de se
repetir
Slide 41
Slide 41 text
O desenvolvedor
precisa melhorar
seus testes!
Slide 42
Slide 42 text
Como melhorar?
• Automatizar os testes manuais
• Um espaço no código fonte para
escrever os testes
• Uma forma padrão de escrever
• Que seja simples de executar
Slide 43
Slide 43 text
Automatizar um
teste?
Escrever código que confirma os
resultados previstos do software.
Slide 44
Slide 44 text
Desenvolvimento
Ágil
Slide 45
Slide 45 text
Ferramentas para
todas linguagens
RSpec
Cucumber
JUnit
MSpec
unittest
PHPUnit
SimpleTest
Jasmine
Slide 46
Slide 46 text
Vamos aprender
escrever os testes
Slide 47
Slide 47 text
Passo a passo
Slide 48
Slide 48 text
Exemplo simples
Slide 49
Slide 49 text
Quero um sistema de
conta bancária
Slide 50
Slide 50 text
Ferramentas
Slide 51
Slide 51 text
Ruby
• Uma linguagem dinâmica, open
source com foco na simplicidade
e na produtividade. Tem uma
sintaxe elegante de leitura
natural e fácil escrita.
https://www.ruby-lang.org/pt/
Slide 52
Slide 52 text
puts 'Olá mundo'
Slide 53
Slide 53 text
TestUnit
• Uma ferramenta de testes para
ruby.
• Segue o design xUnit criado por
Kent Beck(XP e TDD)
The value returned by a Ruby
method is the value of the last
expression evaluated, so we
can get rid of the return
statement altogether.
http://ruby-doc.com/docs/ProgrammingRuby/
Slide 113
Slide 113 text
def saldo
return @saldo
end
def transfere(valor)
@conta_origem.saca(valor)
@conta_destino.deposita(valor)
rescue Exception
return false
end
Slide 114
Slide 114 text
Você teria
coragem de
remover?
Slide 115
Slide 115 text
Não mexa no que está
funcionando
Slide 116
Slide 116 text
Mas com testes
automatizados
Slide 117
Slide 117 text
É trivial checar se
o sistema continua
funcionando
Slide 118
Slide 118 text
def saldo
@saldo
end
def transfere(valor)
@conta_origem.saca(valor)
@conta_destino.deposita(valor)
rescue Exception
false
end
Here we've defined three accessor
methods to return the values of the
three instance attributes. Because
this is such a common idiom, Ruby
provides a convenient shortcut:
attr_reader creates these
accessor methods for you.
http://ruby-doc.com/docs/ProgrammingRuby/