18.05.2013 Views

A Relação Entre Desenvolvimento Orientado a Testes e Qualidade ...

A Relação Entre Desenvolvimento Orientado a Testes e Qualidade ...

A Relação Entre Desenvolvimento Orientado a Testes e Qualidade ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

sistema atende os requisitos do cliente ao final do ciclo de vida. Tradicionalmente, teste<br />

de software tem sido considerado um processo de validação, isto é, uma fase do ciclo de<br />

vida [Lewis 2004].<br />

2.1.2. <strong>Qualidade</strong> Externa e Interna<br />

<strong>Qualidade</strong> externa é a qualidade medida pelo cliente, e qualidade interna é a qualidade<br />

medida pelas pessoas que possuem acesso ao código, como é o caso dos programadores<br />

e arquitetos.<br />

As metodologias ágeis pregam que a qualidade interna de um software não é negociável,<br />

ela deve ser fixada como ótima durante todo o ciclo de vida do software. Algumas<br />

equipes, na esperança de reduzir o prazo de entrega, sacrificam temporariamente<br />

a qualidade interna na esperança de que a qualidade externa não sofrerá um grande impacto.<br />

Esta estratégia é muito tentadora em um cenário em curto prazo. Porém, eventualmente<br />

problemas de qualidade interna o alcançarão e tornarão aquele software proibitivamente<br />

caro de manter ou mesmo incapaz de alcançar um nível competitível de qualidade<br />

externa [Beck 1999]. Este fenômeno é conhecido como débito tecnológico. Segundo<br />

[Friedman 2009], tentar trocar a qualidade por velocidade é uma das estratégias mais errôneas<br />

existentes.<br />

2.2. <strong>Testes</strong> Unitários<br />

De acordo com [Lewis 2004], teste unitário é a escala mais “micro” de testes para testar<br />

funções particulares ou módulos de códigos. Tipicamente são feitos pelo programador e<br />

não por testadores, já que requerem um conhecimento detalhado do código e do design<br />

interno do software. Nem sempre são fáceis de se implementar a não ser que a aplicação<br />

tenha uma arquitetura muito bem desenhada com código organizado.<br />

[Bellware 2009] acredita que quando testes são escritos após o código de produção<br />

já estar pronto, na realidade o que se está fazendo é um tipo de engenharia reversa, que é<br />

uma forma de engenharia de que exige uma grande quantidade de esforço. Exige muito<br />

esforço porque ao se escrever os testes neste momento, o programador precisará ler todo<br />

o código, entender o que ele faz e adivinhar como escrever um teste para este código.<br />

Os testes produzidos desta maneira acabarão, provavelmente, não servindo para cobrir o<br />

mínimo necessário dos caminhos alternativos de execução do código.<br />

2.3. <strong>Desenvolvimento</strong> <strong>Orientado</strong> a <strong>Testes</strong><br />

As metodologias ágeis já se tornaram populares na área de desenvolvimento de software.<br />

A cada dia, mais empresas as adotam para amenizar problemas de qualidade e de entrega<br />

de produtos que agreguem o valor real aos seus clientes.<br />

Algumas metodologias ágeis como Scrum tem foco em práticas gerenciais e organizacionais,<br />

enquanto XP tem foco maior em práticas de programação. O TDD é uma<br />

das práticas que fazem parte do núcleo do XP [Beck 1999] que entra em cena durante as<br />

fases de desenho e codificação de um software.<br />

XP é uma metodologia ágil e leve para equipes de desenvolvimento de software<br />

de tamanho pequeno à médio que lidam com requisitos vagos ou que mudam rapidamente

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!