Testes de aplicações Rails - API e Client

23 views
Skip to first unread message

Luiz Sanches

unread,
Jun 25, 2015, 9:46:14 AM6/25/15
to guru-pa
Pessoal,

Estou utilizando essa estratégia para testar a API
http://apionrails.icalialabs.com/book/chapter_three

E essa https://github.com/bblimke/webmock para a aplicação Client.

Mas conversando com algumas pessoas, me deixaram na dúvida que se mudar alguma coisa na API, também terei que mudar nos mocks do Client e seria melhor testar levantando o serviço da API para rodar os testes na vera. Mas ontem achei essa mesma dúvida cruel aqui

http://stackoverflow.com/questions/7145407/testing-rails-application-api-client

Mas e com vocês. Qual a estratégia de testes que vocês utilizam para testar a parte Client em Rails que consome uma API?

--
Luiz Sanches

Fábio Miranda

unread,
Jun 25, 2015, 3:04:43 PM6/25/15
to gur...@googlegroups.com
Sanches,

Prefiro pensar que se tratam de duas aplicações distintas, e que não faz sentido vc fazer um teste integrado entre elas, devido ao setup necessário, e às dívidas técnicas que este arranjo pode originar. O Webmock neste caso te ajuda a manter a coisa em ordem. Vc sabe que num determinado ponto o teste foi feito com um determinado contrato de API. 

Se o contrato da API mudar, meu entendimento é que vc precisa revisar os setups do webmock. Se a mudança for muito significativa, é o caso inclusive de pensar em versionamento dos endpoints (manter o endpoint /v1 com o contrato antigo e disponibilizar /v2 com o contrato novo).

Tem uma ferramenta que gosto muito de usar com o Webmock chamada VCR. Ela grava os requests automaticamente, na primeira vez que o teste roda, e guarda num arquivo yml, que o webmock usa pra fazer replay dos requests.

***SE*** API e Client forem desenvolvidos por times distintos, ***talvez*** faça o teste integrado, pois a comunicação pode falhar e mudanças podem não ser comunicadas. ***Pode*** valer o esforço extra, mesmo assim ***não*** eh uma garantia.

No final das contas, ***nenhum*** teste automatizado ***nunca*** substitui perfeitamente uma etapa final de QA. 

extra: não conhecia a ferramenta Sabisu mostrada no livro. Apesar de interessante, nada substitui o curl. além disso, há extensões de browsers que se propõe a fazer o mesmo serviço.


Fábio Luiz Nery de Miranda
Software Engineer
@fabiolnm

--
You received this message because you are subscribed to the Google Groups "guru-pa" group.
To unsubscribe from this group and stop receiving emails from it, send an email to guru-pa+u...@googlegroups.com.
To post to this group, send email to gur...@googlegroups.com.
Visit this group at http://groups.google.com/group/guru-pa.
For more options, visit https://groups.google.com/d/optout.

Luiz Sanches

unread,
Jun 25, 2015, 3:54:55 PM6/25/15
to guru-pa

Égua Fábio, valeu! Vou dar uma olhada no VCR

Jairo Junior

unread,
Jun 26, 2015, 8:11:36 AM6/26/15
to guru-pa
Em resumo é o que o Fábio falou, quanto maior a separação entre provider e consumer, mais faz sentido realizar estes testes.

Você atingirá esse nível máximo de separação em integrações (internas ou externas), quando falhas nos testes serão um indicativo de "breaking changes".

Luiz Sanches

unread,
Jun 26, 2015, 9:45:58 AM6/26/15
to guru-pa
Beleza, Jairo. Vou dar uma olhada nessas propostas.
Luiz Sanches
Reply all
Reply to author
Forward
0 new messages