Testes de unidade automatizados-porquê? Que é? qual?
sou um desenvolvedor C# winforms com uma experiência de cerca de um ano. O único teste de unidade que tenho feito até agora foi manual. Tenho pensado em seguir por algum tempo:
-
Porque precisamos de uma unidade automatizada?
teste? Quão eficaz é?
Se eu quiser começar a fazer
teste de unidade. Por onde devo começar?
de onde? (ouvi falar de nunit)
Preciso de ter alguma coisa em mente?
ao desenhar as minhas aulas para
facilitar a unidade automatizada teste?
- O C# tem um suporte incorporado para testes de unidade automatizados? Também podemos testar GUI com GUI automatizado? testes unitários ou são apenas negócios lógica? Já ouvi falar de esquemas de troça. Também são para testes unitários?
6 answers
Por que precisamos de testes automáticos? Quão eficaz é?
O teste de unidade automatizado é muito valioso em primeiro lugar porque é automatável (normalmente, só o consideramos um 'teste de unidade' quando é automatável). À medida que o tamanho de uma aplicação cresce, testar manualmente toda a aplicação pode levar horas ou mesmo semanas. Mesmo testando apenas uma pequena parte de uma aplicação leva tempo e é propenso a erros. A menos que você seja autista, você não será capaz para se concentrar em executar cada teste manual 100% corretamente se você tem que fazer isso várias e várias dezenas de vezes.
Em Desenvolvimento Ágil, operamos com o conceito de Feedback rápido: quanto mais cedo você pode obter feedback sobre o que você fez foi certo ou errado, mais eficaz você pode ser. Todos cometemos erros, mas é muito menos caro descobrir e corrigir um erro trinta segundos depois de ter sido cometido, do que vários dias ou semanas depois. É por isso que os testes automatizados são tão importante.
Enquanto você pode fazer testes automáticos em muitos níveis, o teste de unidade é o tipo mais eficiente de implementar. Pode ser a disciplina de teste mais difícil de entender e dominar, mas é muito mais robusta do que qualquer outro tipo de teste.
Se eu quiser começar a fazer testes de unidade automatizados. Por onde devo começar? ouvi falar de nunit)
Em primeiro lugar, precisa de aprender algumas noções básicas de teste de unidade. O livro de Roy Osherove a arte da unidade O teste é uma boa introdução. No que diz respeito aos quadros, NUnit já existe há muito tempo, mas tem algumas questões inerentes. Se já tem um Visual Studio profissional ou um sistema de Equipa, há um sistema integrado de testes de unidade conhecido como MSTest. A maioria das pessoas não gosta deste quadro, mas, pessoalmente, acho-o bastante adequado. A integração IDE funciona bem, mas a API poderia ser melhor.Se está à procura de um teste de unidade livre e de código aberto framework, I would recommend xUnit.net , que é um quadro muito mais moderno.
Preciso de ter alguma coisa em mente ao desenhar as minhas aulas para facilitar os testes automáticos?
SIM, cada classe deve poder ser utilizada isoladamente. Isto pode ser muito difícil de fazer com o design frontal, ou se você está tentando retrofitar testes de unidade para o código existente, mas deve vir mais ou menos naturalmente se você adotar Desenvolvimento Orientado por teste (TDD).
C# tem um suporte incorporado para testes de unidade automatizados?
Não, C# é apenas uma língua, mas como mencionei acima, certas versões do Visual Studio tem MSTest.
Podemos também Testar GUI com testes de unidade automatizados ou é apenas lógica de negócios?
A interface de teste da unidade tende a ser muito frágil (isto é, a manutenção do teste é muito alta), por isso geralmente não é uma boa ideia.
No entanto, existem muitos padrões de design que podem ajudá - lo a extrair toda a lógica da interface em classes testáveis: Modev-View-Controller, Model-View-Presenter, Application Controller, Model-View-View, etc.Você pode realizar testes automáticos de uma aplicação inteira através dessas interfaces, contornando apenas a parte de renderização GUI. Esses testes são chamados testes subcutâneos, mas são considerados testes de Integração, Não testes unitários.
Ouvi falar de escárnio. Também são para testes unitários?
As bibliotecas dinâmicas mock são apenas para a unidade teste.
Alguns bons e populares são ...- Porque precisamos de uma unidade automatizada?
teste? Quão eficaz é?
- Se eu quiser começar a fazer
teste de unidade. Por onde devo começar?
de onde? (ouvi falar de nunit)
Nunit é bom, MbUnit é bom. Para começar, ler e fazer os exercícios nas leituras. Websites e blogues sobre testes unitários, ensaios desenvolvimento (TDD) e Refactoring. O Object Mentor tem uma bela série sobre o TDD. Depois, a dada altura, escolhe um código que tenhas e tenta.
Livros eu sugiro - Test Driven Development by example, Test Driven Development, A practical guide, The Art of Unit Testing, Refactoring (Martin Fowler), Refactoring Workbook, Refactoring to patterns, Clean Code, and I am sure there are others. Tenho livros de refactoração na lista porque encontrei as técnicas para refactorar a mão. mão com teste de unidade.- Preciso de ter alguma coisa em mente?
ao desenhar as minhas aulas para
facilitar os testes automáticos das unidades?
- O C# tem um suporte incorporado para testes de unidade automatizados?
Se você tem VS 2008 Pro, sim, ou sistema de equipe, mas naturalmente eu assumo que você não.
- Também podemos testar GUI com GUI automatizado?
teste de unidade ou é apenas negocio
lógica?
- Já ouvi falar de esquemas de troça.
Também são para testes unitários?
O ponto 4) C# é uma linguagem de programação, não um quadro de testes. .Net tem pelo menos um atributo que pode ajudar durante os testes unitários, este é o atributo Internalvisibleto para tornar públicas suas classes e métodos internos para um tipo spezific.
Ponto 5) Se tem uma aplicação bem concebida, não tem de testar a sua interface gráfica. Pensa nisto: a tua gui não tem código. Cada botão que um usuário pode pressionar é mapeado para controlador. Cada entrada que um usuário pode fornecer é entregue ao controlador. Então, o que tens para testar na tua gui? Tudo que você tem que fazer é fazer o seu controle testado e trabalhar bem. E com este MVVM / MVC / Whatelsearch tem, por um lado, uma aplicação bem projetada e, por outro lado, uma aplicação que é simples de testar.
- Porque precisamos de uma unidade automatizada?
teste? Quão eficaz é?
Se eu quiser começar a fazer automatizado teste de unidade. Por onde devo começar? de onde? (ter ouvido sobre nunit) Comece com nunit-é muito fácil
Preciso de ter alguma coisa em mente ao desenhar as minhas aulas para facilitar os testes automáticos das unidades? Se fores bom no teste de unidade, vais querer fazê-lo.
O C# tem um suporte incorporado para testes de unidade automatizados? Não, mas o Visual studio Sim, mas não recomendo usá-lo.
Também podemos testar GUI com testes unitários ou são apenas negócios lógica? Qualquer coisa pode ser automatizada, é apenas uma questão de como é difícil de fazer.
Ouvi falar de escárnio. Também são para testes unitários? Sim.
O porquê para testes de unidade automatizados é simples: porque à medida que o seu código cresce, vai levar cada vez mais tempo a fazer testes manuais, o que significa que é cada vez menos provável que o faça.
Automatizando os testes, torna-se conveniente executá-los, para que sejam executados.Why do we need to have automated unit testing? How effective is it?
Cabe-te a ti decidir se queres ou não. Só será tão eficaz como tu. Você deve ir para a automação apenas se você vai repetir o ciclo de testes para um pedaço de código mais de 3 vezes!!! Se eu quiser começar a fazer testes de unidade automatizados. Por onde devo começar? ouvi falar de nunit)
O que quer que se sinta confortável, faça-o o seu ponto de partida e, em seguida, explorá-lo e usá-lo para sua vantagem. Também podemos testar GUI com testes de unidade automatizados ou é apenas lógica de negócios?
Podes, mas não deves. A interface gráfica é melhor testada manualmente. Os olhos vão pegar mais erros na interface do que uma máquina vai. Ouvi falar de escárnio. Também são para testes unitários?
Sim a maioria dos frameworks como TestNG, Junit etc são para testes unitários.