Dúvidas sobre testes e ferramentas

Topic created · 7 Posts · 364 Visualizações
  • Olá pessoal, atualmente trabalho com automação de testes funcionais com Selenium e jUnit em aplicação web, porém vamos iniciar um trabalho de desenvolvimento de um Saas.

    Gostaria de saber quais tipos de testes e ferramentas para os mesmos que vocês sugerem para aplicações na nuvem? Pensei em pesquisar sobre testes de performance com JMeter e de integração, mas não possuo muito conhecimento nessa área.

    Desde já agradeço a atenção. 😉

  • Karina,

    Eu poderia te falar que JMeter e mt legal (free, tem reports out of the box, java roda everywhere), e que pra testes de integracao tem gente que usa SoapUI e Postman (e ficam presos nessas ferramentas). Isso responde tua pergunta mas nao te ajuda muito, entao eu vou levantar outras perguntas pra te ajudar a pensar o que fazer para ajudar no seu contexto - se quiser conversar e expandir isso, bora marcar um papo. Um outro material pra se inspirar, alem da minha opiniao nos itens abaixo, e a heuristica de Test Strategy [1]

    • Como vai ser o desenvolvimento? Quais as “caixinhas” sendo planejadas primeiro? Como o time vai testar essas caixas?

    – Unit tests podem ser OK, mas eu na sua posicao brigaria por montar APIs que te possibilitem interagir com cada caixa separadamente. Melhor ainda se voce puder fazer parte do time de desenvolvimento, pareando ou nao, e tirar o chapeu de QA, afim de participar mais ativamente do desenvolvimento e melhor influenciar decisoes tecnicas (sugerindo features tecnicas para aumentar a testabilidade do produto, revisando unit tests e a logica deles e sabendo o que nao esta sendo coberto).

    • O mesmo ambiente de “producao” vai ser utilizado para teste? Se nao, como/quando esse processo vai acontecer? Se performance/reliability precisar ser testada, quais maquinas da arquitetura podem ser “roubadas” e utilizadas como geradores de carga? Alguma maquina dessa infra na nuvem pode ser somente com objetivo de tooling de Teste (e rodar Jenkins ou qualquer outra tool) ?

    • O produto depende de dados externos?

    Mapeia de onde os dados virao e quais os padroes podem existir. Talvez ate definir personas ajude, tanto para esclarecer o produto quanto para te ajudar a definir massa de dados de teste representando personas particulares.

    • O produto tem que ser rodado “everywhere” (todos os browsers, incluindo mobiles)?

    Chega a ser estupido pensar que isso vem de graca, entao talvez ja valha alinhar com PO/Produto um conjunto restrito que vai ser suportado (leia-se, testado).

    • Quais languages sao suportadas? Como vai se testar UI sem depender de verificar texto? O quanto strings “diferentes” podem quebrar a UI visualmente? Como verificar se todas as “strings” estao traduzidas em todas as linguas sem usar a UI?

    Dependendo da linguagem-de-programacao/processo de deploy, um Unit test ja resolveria o problema das strings nao traduzidas. Verificar a UI fica visualmente em todas as linguas suportadas se precisa de um browser e screenshot - se for no celular, devices de teste talvez sejam necessarios comprar.

    • Se vai rodar “na nuvem”, como vai ser a preocupacao com seguranca e o controle de acesso? Qual seria o problema se alguem usar um Login/API-Token de um cliente, o que essa pessoa descobriria? Qual seria o problema de alguem fazer SSH para a maquina do DB, o que essa pessoa poderia descobrir? E olhando o codigo fonte?

    [1] - https://www.satisfice.com/download/heuristic-test-strategy-model

  • Olá Gabriel, mto obrigada por expandir os horizontes com as informações trazidas.
    Bem o que posso te dizer é que o projeto é novo e ainda não se iniciou o desenvolvimento.
    Eu não tenho uma experiencia grande na área, é a segunda empresa que trabalho e a primeira com testes automatizados.
    Particularmente acredito que não tenha skills técnico para auxiliar no desenvolvimento para propor soluções mas tentarei estar próxima deles.
    Vou dar uma pesquisada sobre as coisas q disse e deixo o meu mto obrigada pela contribuição.

  • Olá Karina!

    O @Gabriel-Oliveira iniciou uma boa linha de raciocínio com relação à sua dúvida! Eu também vou deixar por aqui meus dois centavos, e minha disponibilidade para conversar caso eu possa ajudar em mais algo nesta sua nova jornada 😃

    Realmente é complexo esse universo… Eu hoje trabalho como QA de um projeto focado em microserviços, já cometi muitos erros e ainda estou na caminhada para tentar junto com o meu time construir uma estratégia de testes que seja mais adequada ao nosso contexto.

    Uma das reflexões que eu faço atualmente é o foco dado à pirâmide de testes. Parece um pouco óbvio, mas as vezes nós nos perdemos pensando em um monte de coisa e não nos perguntamos ao longo do caminho se estamos trabalhando para manter uma pirâmide de testes equilibrada. Isso é muito importante para que você escolha quais testes vão ser realizados em quais camadas, gastando mais energia e recursos em testes mais baratos e que trazem feedbacks com maior antecedência.

    Sendo assim, eu pensaria como seriam feitos os testes unitários, de componente e de contrato e garantiria que eles concentrariam o maior volume de testes realizados.

    Já os testes de integração, eu pensaria em como manter um ambiente o mais próximo do desejável possível. Infelizmente, sabemos que este é um ponto que sofremos muito… É muito trabalhoso definir e manter um ambiente adequado para testes integrados, mas com ajuda do time é possível pensar em algo que funcione!

    Para os testes funcionais, eu investiria em smoke tests, já que muita coisa já foi coberta nas outras camadas de teste, aqui seria concentrar em desenvolver testes de caminhos felizes/críticos sem tanta profundidade.

    Para os testes não funcionais, eu buscaria definir junto aos stakeholders quais são os critérios não funcionais, para daí traçar uma estratégia de testes e definir as ferramentas mais adequadas a esta estratégia. Aqui os testes automatizados eu colocaria em uma suite separada das demais, para que seja executada em uma periodicidade específica, por que colocar este tipo de teste na pipeline eu me questiono muito se é uma idéia viável.

    São só alguns insides que me ajudaram a pensar em como trabalhar, não existe bala de prata e cada contexto é único, por isso o nosso trabalho é tão importante! 😉

    Para finalizar, gostaria de compartilhar este artigo que me ajudou a pensar em muita coisa durante a minha jornada: Testing Strategies in a Microservice Architecture

    Abraços!

  • @Karina-Ariga Katalon Studios, ferramenta alinhada DEvOps, a ferramenta permite teste remoto e cloud!

  • Acho que o pessoal já deu muitas visões e direcionamentos que são interessantes para a nossa área, e que são extremamente importantes de se levar em conta. Só acrescentaria que se o objetivo é testar a infraestrutura onde o sistema vai estar (já que vai estar na cloud), é importante pensar em testes de carga e testes de estress. E para isso, iria recomendar o Gatling (https://gatling.io). Estou utilizando faz alguns meses, e é realmente muito bom (e open source). Ele só tem uma curva, pois a implementação precisa ser escrita em Scala. Além também de ter uma interface que faz um “record and play” do script.

  • Muito obrigada pelos 2 centavos @Ana-Ludmila-de-Oliveira, para mim parecem bem mais valiosos rs… Agradeço tbm ao @Cleyton-Costa e @lucasalacerda pelas contribuições. Ainda estamos nos ajustando aqui e acabei nesses ultimos dias desempenhando mais o papel de Scrum master q de QA mas vou pesquisar tudo o q vcs falaram.