Desenvolvimento em .Net - Testes Unitários
-
Upload
vitor-silva -
Category
Documents
-
view
5.470 -
download
1
Transcript of Desenvolvimento em .Net - Testes Unitários
![Page 1: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/1.jpg)
Desenvolvimento em .Net
Testes
![Page 2: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/2.jpg)
Objectivos● identificar diferentes tipos de testes● descrever conceito de teste unitário● perceber vantagens de utilização de testes
unitários● conhecer estrutura de testes (test-fixtures ou
test-suites)● conhecer ferramentas disponiveis para .net e
progress
![Page 3: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/3.jpg)
Objectivos● saber criar testes em .net● saber criar testes em progress
![Page 4: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/4.jpg)
Tipos de testes● Teste de Caixa Branca (qualidade do código)● Teste de Caixa Preta (entradas e saídas)● Teste de Interface (funcional e usabilidade)● Teste de Integração (inter-componentes)● Teste de Sistema (inter-sistemas)
![Page 5: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/5.jpg)
A Abordagem Clássica● A forma mais tradicional de teste consiste em
adoptar um revisor (par ou especialista em teste) após cada atividade => Auditoria
RevisorRevisorDesenvolvedorDesenvolvedor
Nono nonono nonoNo nonono nono noNo nono nono no
Nono nono noNono nonono nono
Artefato
Nono nonono nonoNo nonono nono noNo nono nono no
Nono nono noNono nonono nono
Artefato
Nono nonono nonoNo nonono nono noNo nono nono no
Nono nono noNono nonono nono
Log Erros
Nono nonono nonoNo nonono nono noNo nono nono no
Nono nono noNono nonono nono
Log Erros
![Page 6: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/6.jpg)
A Abordagem Clássica● O Revisor normalmente é alguém com maior
experiência e conhecimento do produto, capaz de identificar erros mais complexos
● O Revisor é, normalmente, mais caro para a empresa
● Desenvolvedores menos experientes geram mais erros
● Mais erros exigem mais horas de revisão e setup (além do custo do retrabalho)
● Desenvolvedores Inexperientes => $$$$$$$$$
![Page 7: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/7.jpg)
Nova perspectiva● Testes Unitários
– servem para validar um pedaço de código (tipicamente um modulo caixa preta).
– devem ser possiveis de correr automaticamente– devem ser executados muito rapidamente
● (centenas ou milhares de testes em poucos segundos)– são sempre preparados pelo programador.– garantem que um bocado de codigo criado é válido.
Exemplo: teste que verifica se a execução de um procedimento que soma dois números funciona
![Page 8: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/8.jpg)
Comparação● Testes funcionais / de aceitação / integação /
homologação– preparados por alguém fora da equipa de
desenvolvimento. – garantem que a execução do código produzido
para resolver a tarefa faz sentido, ou seja traduz completamente para software o requisito que foi definido pelo cliente.
Exemplo: na aplicação é necessário existir alguma função que some dois números?
![Page 9: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/9.jpg)
Quando é a fase de testes?● Durante o desenvolvimento e não após o
desenvolvimento!– algumas metodologias advogam até a criação dos
testes antes do desenvolvimento (Test-Driven Development)
![Page 10: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/10.jpg)
● reduz o tempo que se irá gastar com ferramentas de debug
● esforço de correcção de um defeito cresce exponencialmente ao longo do tempo
● cria confiança– sabemos que estamos a construir pedaços de
código em que podemos confiar
Porquê Testar durante o Desenvolvimento?
![Page 11: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/11.jpg)
Desculpas habituais para não criar testes
● Demora muito tempo– é evidente que fazer um teste, ou seja ter mais uma
tarefa, vai gastar mais tempo do que só fizesse o programa
– no entanto se essa tarefa for sendo feita durante o periodo de desenvolvimento a produtividade global será superior
![Page 12: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/12.jpg)
Desculpas habituais para não criar testes
● Não é trabalho do programador criar testes, ou,● o programador é pago para programar e não
para escrever testes– concordamos que:
● o programador deve criar código● mas código que funcione● se não o testou como sabe que funciona?
– será que é mais rentável passar n horas à caça de bugs do que n horas a criar os testes que os evitem?
![Page 13: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/13.jpg)
Desculpas habituais para não criar testes
● Não posso testar porque ainda não tenho os requisitos todos– então também não pode criar o código
correspondente a esse pedido...
![Page 14: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/14.jpg)
Testes Unitários● formalizam os testes● numa linguagem que o programador domina
– porque são feitos na mesma linguagem de programação que o programa a testar
● e auto documentam o código– mostram programaticamente exemplos concretos
da utilização dos módulos a testar
![Page 15: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/15.jpg)
Testes Unitários com .Net● http://www.nunit.org/
– \\vitorsilva\downloads\programas\NUnit-2.2.0.msi ● http://www.testdriven.net/
– \\vitorsilva\downloads\programas\TestDriven.NET-1.0.915d
![Page 16: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/16.jpg)
Testes Unitários com .Net● criar nova solução● criar projecto do tipo class library chamado
testes unitarios● acrescentar classe chamada Helper
![Page 17: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/17.jpg)
Testes Unitários com .Net● criar projecto do tipo class library chamado
testeprojecto● adicionar referencia a nunit.framework.dll● adicionar referencia ao projecto testesunitarios
![Page 18: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/18.jpg)
Testes Unitários com .Net● acrescentar nova classe
![Page 19: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/19.jpg)
Testes Unitários com .Net● correr esse teste
![Page 20: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/20.jpg)
Testes Unitários com .Net● erro na inicialização da variável max
– vamos mudar para max as integer = 0
![Page 21: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/21.jpg)
Testes Unitários com .Net● voltar a correr teste
![Page 22: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/22.jpg)
Testes Unitários com .Net● vamos acrescentar mais uma condição que
sabemos que é verdadeira e testar essa condição
![Page 23: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/23.jpg)
Testes Unitários com .Net● depois de olhar atentamente para o código...
![Page 24: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/24.jpg)
Revisão – Testes Unitários● formalizam os testes● numa linguagem que o
programador domina– porque são feitos na mesma
linguagem de programação que o programa a testar
● e auto documentam o código– mostram programaticamente
exemplos concretos da utilização dos módulos a testar
![Page 25: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/25.jpg)
Testes Unitários com .Net● já agora experimentem inicializar o array com
-1, -2 e -3 e vejam se continua a funcionar...
![Page 26: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/26.jpg)
Testes Unitários em Progress● ProUnit
– \\vitorsilva\downloads\libs\prounit ● Punit
– \\vitorsilva\downloads\libs\punit
![Page 27: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/27.jpg)
Testes Unitários em Progress● desenvolver o mesmo teste com uma das
frameworks indicada
![Page 28: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/28.jpg)
Objectivos● identificar diferentes tipos de testes● descrever conceito de teste unitário● perceber vantagens de utilização de testes
unitários● conhecer estrutura de testes (test-fixtures ou
test-suites)● conhecer ferramentas disponiveis para .net e
progress
![Page 29: Desenvolvimento em .Net - Testes Unitários](https://reader034.fdocuments.net/reader034/viewer/2022052412/559581de1a28ab1d548b45cd/html5/thumbnails/29.jpg)
Objectivos● saber criar testes em .net● saber criar testes em progress