Escolar Documentos
Profissional Documentos
Cultura Documentos
●
Sobre a ThoughtWorks
●
Modelos tradicionais de desenvolvimento
●
Agile manifesto
●
Descendo o nível...
Sobre a ThoughtWorks
●
Pioneira e totalmente focada em Agile
●
Referência em práticas ágeis
●
8 países, 21 cidades
●
Open Source: Cruise Control, Selenium, outros
Martin Fowler
Agile funciona!
Mas o que é Agile mesmo?
Modelos tradicionais de desenvolvimento
Características
- Previsibilidade
- BDUF (engenharia)
- Documentação abrangente
- Orientado a processo e a ferramentas
Quais os problemas desses modelos?
Baixo índice de interação
Dificuldade de mudança
Baixa motivação
fazerem o mesmo.
Agile Manifesto
fazerem o mesmo.
fazerem o mesmo.
fazerem o mesmo.
fazerem o mesmo.
fazerem o mesmo.
fazerem o mesmo.
fazerem o mesmo.
Confiança
Descendo o nível....
O que é mais difícil em
programação?
●
Entender o problema
●
Estruturar suas ideias
●
Elaborar uma solução
●
Conhecer a plataforma de programação
●
Digitar o código
●
Testar o resultado
Programação em pares
Vantagens de programação em
pares
●
Eficiência (duas cabeças pensam melhor que uma)
●
Feedback instantâneo
●
Propriedade coletiva
●
Menor “fator caminhão”
Zaphod Beeblebrox
Testes?
Testes unitários
package calculator;
// other methods....
}
package calculator;
import org.junit.Test;
@Test
public void divideShouldReturnTheDivisionQuotient() {
float result = new Calculator().divide(56, 8);
assertEquals(7, result, 0.0);
}
@Test
public void divideShouldReturnDecimalPartsOfNonExactDivisions() throws Exception {
float result = new Calculator().divide(5, 2);
assertEquals(2.5, result, 0.0);
}
@Test(expected = CalculatorException.class)
public void divideShouldThrowACalculatorExceptionWhenDividingByZero() throws Exception {
new Calculator().divide(5, 0);
}
}
Test-driven development (TDD)
package calculator;
import org.junit.Test;
@Test
public void divideShouldReturnTheDivisionQuotient() {
int result = new Calculator().divide(56, 8);
assertEquals(7, result);
}
}
package calculator;
import org.junit.Test;
@Test
public void divideShouldReturnTheDivisionQuotient() {
float result = new Calculator().divide(56, 8);
assertEquals(7, result, 0.0);
}
@Test
public void divideShouldReturnDecimalPartsOfNonExactDivisions() throws Exception {
float result = new Calculator().divide(5, 2);
assertEquals(2.5, result, 0.0);
}
}
Benefícios de TDD
●
Simplicidade
●
Modularização
●
Extensibilidade
●
Produtividade
Testes como documentação
def "project can't be deleted if it has expenses"() {
given:
currentUserIsProjectOwner()
projectHasExpenses()
projectHasNoActivities()
when:
tryToDeleteProject()
then:
projectIsNotDeleted()
}
Mentalidade
Mais perguntas?
Obrigado!!!!!
luizfar@gmail.com
lribeiro@thoughtworks.com
(51) 8105-1520