Testes envolvendo dispositivos externos  XML
Índice dos Fóruns » Metodologias de Desenvolvimento e Testes de Software
Autor Mensagem
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
Tchello
GUJ Master
[Avatar]

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.
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
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
 
Índice dos Fóruns » Metodologias de Desenvolvimento e Testes de Software
Ir para:   
Powered by JForum 2.1.8 © JForum Team