Testes de integracao entre mobile e servidor ?

Topic created · 14 Posts · 3423 Visualizações
  • @Rafaela-Azevedo
    Opa, beleza em tem ter ajudado. Sobre precisar de atualização/usar no meio de um teste de UI, não existe problema. Mas rodar tudo antes para ter certeza de nada estar quebrando ou o servidor tratando algo errado ajuda muito. Pois se no meio do teste isso ocorrer (e for devido a um problema na chamada) já tem alguns “pontos a ligar” sobre o problema.

    Se precisar , só comentar por aqui.

  • @Ramses-Saccol-de-Almeida Opa brigadao pela ajuda 🙂

  • Oi Rafaela,
    Eu não entendi muito bem o problema de manutenção dos json que tu teria, uma vez que com qualquer ferramenta para automação de API tu vais ter que gerenciar os dados da mesma forma. A manutenção, na minha visão, é a mesma.

    Só acrescentando, para tu não acabar perdendo tempo nas execuções da automação na API tu podes criar duas suites para o RestAssured (ou qualquer outra ferramenta do gênero:

    Abraço!

  • @Elias-Nogueira Oi Elias, entao o que eu preciso implementar aqui eh um teste de integracao entre o mobile app e o servidor. Meu lider tecnico gostaria de nao duplicar os testes, porque a manutencao sera maior (Concordo com ele, mas nao tem para onde fugir na minha opiniao). Vou detalhar aqui. Porque iria duplicar ?

    • Porque eu teria os mesmos cenarios na automacao do servidor e depois na automacao de integracao entre o mobile e o servidor.

    Cenario atual: Nos testes de integracao do mobile estamos mockeando o servidor, porem nao foi a melhor ideia, porque agora toda regressao eu preciso testar manualmente esses cenarios de integracao entre o mobile e o servidor. Ja que o servidor eh soh uma simulacao e nao esta o atualizado com as features novas, porque nao ficamos fazendo manutencao nele tambem.

    Estrutura: O mobile app recebe e envia configuracoes do/para o servidor, por exemplo:

    • Eu mando para o servidor um request para instalar uma aplicacao em um mobile
    • O servidor manda esse request de instacao para o mobile
    • O mobile recebe e mostra na UI que esta atualizando
    • Quando acaba ele marca a aplicacao como instalada e manda o status pro servidor

    O que eu preciso fazer/verificar eh simples:

    • Mandar um json request para o servidor instalando esse app
    • Verificar na UI do app se a aplicacao esta com o status de instalada
    • Verificar se o app esta enviando o status de instalado para o servidor

    Solucao ate agora:

    Criar a automacao para criar e enviar os jsons que eu vou instalar/desinstalar/atualizar as aplicacoes e rodar antes de todos os cenarios que verificam a UI. Ou mesmo criar/enviar esses jsons no meio dos cenarios de automacao da UI e no Then verificar se esta ok.

    Mas meu lider tecnico nao quer duplicar os cenarios de automacao do servidor e da automacao de integracao, por causa da manutencao que teremos que dar. Ele gostaria de testar tudo servidor + app sem duplicar os cenarios. Como por exemplo ter o projeto separado soh pra UI do app e outro soh pra testar esses jsons e dai o mobile chama o projeto de automacao do servidor roda aquele cenario e dai volta pra o projeto de automacao de UI do app. Assim evitaria fazer manutencao desses requests no projeto de integracao e no projeto do servidor.

    Enfim, pelo que estou vendo nao da pra fazer isso, chamar uma automacao dentro da outra e apontar pra um cenario especifico. O melhor jeito eh testar cada ponta, por exemplo testar esses cenarios de integracao do servidor com o app e assim na autoamcao do servidor nao preciso testar esses mesmos cenarios, pois ja estaria testando eles no projeto de integracao.

  • Oi Rafaela,
    Agora eu entendi… Na verdade a duplicação de cenários que tu estás falando é referente aos mocks, correto?

    Bom, tu pudes ter um único projeto de teste com mais de uma ferramenta, nada te impede de fazer isso e separar os testes em dois pacotes diferentes…
    Ou misturar os scripts: em um único script mandar o json request para o server e abrir a app para verificar o retorno da UI.

    Se é isso que gera a maior duplicação não há problema nenhum em implementar desta maneira. O mais importante do que padrões que temos na automação é ter a automação atendendo nossas necessidades de negócio.
    Várias vezes eu já “misturei” ferramentas diferentes no mesmo script para ter um resultado que agregasse valor 😉

    Abraço!

  • Não sei se ajuda, mas é legal mencionar:

    Ao invés de chamar algum arquivo pronto de JSON, tu pode usar o GSON para criar uma classe que cria os JSon’s e pode usar sem ter tanta coisa para refazer.

    Eu já usei criando uma (ou duas) classes com vários exemplos (listas simples encadeadas, duplamente encadeadas, bla bla bla) e na hora de chamar no RestAssured, eu pegava esse objeto e usava. Vale a leitura.

  • @Elias-Nogueira Oi Elias, sim ! Eu iria ter o mesmo cenario no projeto que o mobile app mockeia o servidor e no projeto que mockeia o mobile app por exemplo.

    Porque assim eu testo os dois lados: A saida do app para o servidor mockeado e a entrada do app mockeada no servidor.

    O que meu chefe gostaria era de mandar o request direto pro servidor sem mockear ele, assim so testariamos uma vez o mesmo cenario e dariamos manutencao so no teste de integracao.

    OBrigada Elias, ja me ajudou bastante 🙂

  • @Ramses-Saccol-de-Almeida Voce ja me ajudou bastante com a dica do RestAssured, obrigadao Ramses !!

  • Gente so pra atualizar vcs !! Meu chefe encontrou outra maneira aqui que eh inclusive o que o Google usa, vamos tentar implementar:

    http://googletesting.blogspot.co.uk/2012/10/hermetic-servers.html

    http://googletesting.blogspot.co.uk/2013/08/how-google-team-tests-mobile-apps.html

    http://googletesting.blogspot.co.uk/2015/03/android-ui-automated-testing.html

    Achei bem interessante, mas so serve para quem tem acesso ao codigo fonte do app. Bom, so para atualizar aqui caso alguem tambem tenha a mesma duvida que eu, mais uma opcao para fazer esse tipo de teste.

  • @Rafaela-Azevedo disse:

    Gente so pra atualizar vcs !! Meu chefe encontrou outra maneira aqui que eh inclusive o que o Google usa, vamos tentar implementar:

    http://googletesting.blogspot.co.uk/2012/10/hermetic-servers.html

    http://googletesting.blogspot.co.uk/2013/08/how-google-team-tests-mobile-apps.html

    http://googletesting.blogspot.co.uk/2015/03/android-ui-automated-testing.html

    Achei bem interessante, mas so serve para quem tem acesso ao codigo fonte do app. Bom, so para atualizar aqui caso alguem tambem tenha a mesma duvida que eu, mais uma opcao para fazer esse tipo de teste.

    @Ramses-Saccol-de-Almeida e @Elias-Nogueira

  • @Rafaela-Azevedo disse:

    Gente so pra atualizar vcs !! Meu chefe encontrou outra maneira aqui que eh inclusive o que o Google usa, vamos tentar implementar:

    Não é bem uma outra maneira. São outras ferramentas para fazer , basicamente, o que já está fazendo com robotium. Tu poderia usar appium, espresso, até a infame IBM RTW. A questão é que os pilares que os links falaram são os mesmo que muita gente já faz com testes. Divisão de unitários, integração e UI. Até o Elias andou falando sobre isso no TDC de 2015 [TDC-2015] Trilha Android

    Como o tópico aqui foi mais uma pergunta de como fazer os testes de integração, achei que estava só preocupada com a parte do meio da piramide
    Mas bons links. Valem como aprendizado.
    Bons testes!