| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/02/2010 13:53:07
|
magnomp
JavaBaby
Membro desde: 21/07/2009 12:43:00
Mensagens: 77
Offline
|
Qual a maneira mais apropriada de testar classes que utilizam equipamentos externos? Por exemplo, uma impressora fiscal.
Ex: Eu posso ter uma interface chamada ECF para abstrair as impressoras, e então usar injeção de dependencias para colocar implementações dessa interface (Ex: Classe ECFDaruma, ECFBematech, etc) nas classes que precisam lidar com ecf. Assim, posso facilmente testar tais classes no DUnit* sem precisar ter um ECF real, bastando usar um mock.
Contudo, alguma classe vai ter que implementar a comunicação real com o dispositivo, e eu gostaria de testa-la tambem. Como fazer?
* Nesse projeto estou utilizando Delphi, mas como não conheço um forum de alto nível sobre Delphi resolvi perguntar aqui no de Java, pois acho que esse problema é independente de linguagem. Espero que não tenha nenhum problema
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/02/2010 14:15:36
|
Tchello
GUJ Master
![[Avatar]](/images/avatar/901db33c84e81b1a30e59949bbcb112b.png)
Membro desde: 07/06/2008 14:41:04
Mensagens: 1693
Offline
|
Cara, conhece o discasbcb?
Na graduação ele foi de grande ajuda quando programava em c++ e eles também tem uma área só pra delphi.
Da uma olhada no site:
http://dicasbcb.com.br/
E no forum:
http://www.dicasbcb.com/Forum/index.php
O site é horroroso, eu sei, mas fazer o que uhahuahuauhahua.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2010 10:37:28
|
Jorge Diz
JavaChild
Membro desde: 13/03/2008 09:39:28
Mensagens: 104
Offline
|
magnomp wrote:Qual a maneira mais apropriada de testar classes que utilizam equipamentos externos? Por exemplo, uma impressora fiscal.
Ex: Eu posso ter uma interface chamada ECF para abstrair as impressoras, e então usar injeção de dependencias para colocar implementações dessa interface (Ex: Classe ECFDaruma, ECFBematech, etc) nas classes que precisam lidar com ecf. Assim, posso facilmente testar tais classes no DUnit* sem precisar ter um ECF real, bastando usar um mock.
Contudo, alguma classe vai ter que implementar a comunicação real com o dispositivo, e eu gostaria de testa-la tambem. Como fazer?
* Nesse projeto estou utilizando Delphi, mas como não conheço um forum de alto nível sobre Delphi resolvi perguntar aqui no de Java, pois acho que esse problema é independente de linguagem. Espero que não tenha nenhum problema
Sugiro que vc procure material sobre estratégias de teste de integração, em particular "backbone integration".
Esta é indicada particularmente quando vc tem dependências de dispositivos sem os quais não se consegue testar
adequadamente. Em poucas palavras, trata-se de criar uma camada de teste em cima das classes que acionam
cada dispositivo físico: o foco são as operações disponibilizadas pelo equipamento. O teste usa o equipamento real,
ou um emulador fornecido pelo fabricante.
Para testes mais funcionais, ou seja, que exercitam lógica de controle, utilize dublês de teste (mocks, stubs e outros).
Durante o desenvolvimento, estes permitem agilizar os testes. Fiquei curioso, no entanto, quando você falou
"facilmente testar". Testar direito usando estas técnicas tem seus desafios, e não vejo como algo trivial,
principalmente em linguagens imperativas como Delphi ou Java.
Lembrando que, quando se usam dispositivos proprietários, é necessário investir também em teste de sistema:
ou seja, teste funcional do aplicativo, sem dublês, assim que for viável. Mas usar a estratégia de backbone ajuda a
diminuir a carga de adrenalina dos testes de sistemas.
Referências:
http://www.slideshare.net/bfluri/seminar-on-software-testing (veja as seções sobre isolamento e integração)
http://xunitpatterns.com/ (dublês de teste)
Espero ter ajudado,
Jorge Diz
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2010 11:09:43
|
magnomp
JavaBaby
Membro desde: 21/07/2009 12:43:00
Mensagens: 77
Offline
|
Fiquei curioso, no entanto, quando você falou "facilmente testar"
Quando disse isso, estava me referindo a testar classes que dependem das interfaces que fazem a abstração dos dispositivos em questão. Isso eu já faço, e sinceramente não é nem um pouco dificil.
Eu não estava me referindo aos testes das classes concretas que implementam a comunicação com os equipamentos externos, me desculpe caso eu tenha me expressado mal.
Obrigado pelas informações, vou pesquisar a respeito.
Ao Tchello, obrigado pela indicação do site
|
|
|
 |
|
|
|
|