MTC — Um evento de fortes emoções
O Minas Testing Conference é um evento voltado para teste de software que acontece anualmente em BH. Neste ano, eu e Bruna, QAs na Resultados Digitais, tivemos o privilégio de participar da quarta edição do evento e queremos contar para você como foi a nossa experiência. ❤
Este post foi escrito, editado e revisado por mim e Bruna Cavalcanti.
Na última sexta-feira(dia 20 de Julho), saímos de Floripa com destino à Belo Horizonte para participar de um evento de teste de software que aconteceria no sábado, o MTC.
Havíamos nos planejados com meses de antecedência e estávamos ansiosas para conhecer a capital do pão de queijo. Foi então que por alguns instantes vimos nossa viagem ir por água abaixo quando recebemos a notícia que não poderíamos voar, pois o radar de São Paulo, cidade a qual faríamos conexão, estava com problema.
Chegamos a pensar que não seria possível aterrizar no nosso destino, mas após um atraso de 5 horas e um Uber que nos deixou no meio do caminho, pois a sua esposa estava entrando em trabalho de parto, lá estávamos nós no hotel, cansadas, mas feliz por ter finalmente um lugar para deixar as malas e repousar.
Mas calma, está tudo bem, esse post não é sobre a nossa saga para chegar sãs e salvas em BH, mas sim, sobre um dos melhores eventos de teste de software que já participamos.
Quando nos perguntaram quais as palestras que mais gostamos, de verdade não sabíamos responder. Podemos afirmar que não havia nenhuma palestra que não fosse interessante. Todas foram de alto nível, e deixamos aqui os nossos parabéns a organização do evento, as intérpretes de libra e aos palestrantes.
Contudo, quando vamos a um evento, sempre temos em mente o contexto da RD:
Como podemos transformar todo o conteúdo que nos foi passado em melhorias reais na qualidade dos nossos produtos e processos?
Pensando sobre essa ótica, escolhemos três palestras que nos chamaram a atenção:)
Flaky tests: O flakiness que há em você!
André Mendes, QA na Concrete Soluction, trouxe uma palestra sobre um problema bastante conhecido pelo time de desenvolvimento, os famosos testes intermitentes ou flaky tests.
Um teste automatizado, seja ele em nível unitário, integração ou UI (interface do usuário) deve passar ou falhar constantemente se nenhuma alteração de código for realizada.
No entanto, não é esse cenário que vivenciamos dentro e fora da RD. Dia após dia vemos nossa suíte de testes falhar sem motivo e aos poucos vamos perdendo a confiança nos testes. As vezes, eles já não nos trazem segurança para decidir se um código está pronto para ser lançado e perdemos tempo fazendo rebuild até que tudo fique verdinho.
“In my conversations with our delivery teams, one recurring problem that we’ve run into is test which have become unreliable, so unreliable that people don’t pay much attention to whether they pass or fail.” Martin Fowler (2011)
Nas minhas conversas com nossas equipes de entrega, um problema recorrente que enfrentamos é o teste que se tornou pouco confiável, tão pouco confiável que as pessoas não prestam muita atenção se passam ou falham. (Traduzido por nós)
Pensando em como mitigar esse problema, André nos mostrou uma abordagem chamada SACRED, onde cada letra representa uma boa prática:
- State: a aplicação deve estar em um determinado estado para que a automação seja eficiente.
- Algorithm: devemos entender o funcionamento das coisas e ter atenção com os steps, decisões, validações e ferramentas.
- Codified Oracles: como definimos o que é um problema. Atentar-se as validações, fluxos e mudanças no produto para não gerar manutenções excessivas, validações desnecessárias e problemas não identificados.
- Reporting: O que o projeto quer da suíte de testes? Quem quer saber o quê? É necessário saber responder esses questionamentos para que possamos gerar valor para o produto.
- Execution: Onde nós devemos executar os nossos testes? Ambiente, quando, hardware, rede, etc.
- Deterministic: precisamos entender o objetivo do teste, garantir que ele seja confiável e deixar claro os resultados para evitarmos problemas como: itens importantes não são testados e muitos testes desnecessários.
Metralhando sua API
Edlaine Zamora e Thalita Pinheiro, devas na ThoughtWorks, trouxeram uma palestra sobre testes de performance em API utilizando a ferramenta Gatling.
O Gatling é relativamente novo e vem ganhando popularidade, uma vez que é open source, permite desenvolver códigos humanamente legíveis e possibilita asserções de validação do retorno.
As girls nos mostraram 3 scripts que testavam uma API sob as perspectivas de carga, desempenho e stress. Você pode encontrar o código fonte aqui.
Além da demo, elas compartilharam 7 dicas e sugestões de boas práticas:
- Mantenha seu banco de dados controlado.
- Mantenha a infra-estrutura de testes o mais próximo possível do ambiente de produção.
- Envolva outros papeis para montar os testes de performance.
- Execute o mesmo conjunto de testes várias vezes durante alguns dias para garantir que os resultados são consistentes.
- Randomize o comportamento, uma vez que usuários reais não pensam igual.
- Mantenha seus scripts o mais legível possível, código de teste também é código de produção!
- Stakeholders não querem relatórios com gráficos e tabelas confusas, eles querem conclusões e sugestões.
Performance web: Como deixar sua aplicação rápida, fazendo seus usuários felizes (e os chefes também!)
Renata Andrade, QA na Avenue Code, trouxe uma palestra sobre ferramentas para avaliar a performance das aplicações web principalmente na perspectiva de um usuário.
PageSpeed: é uma ferramenta do Google que possibilita que você faça uma análises completas do seu site. Ele sugere melhorias para a navegabilidade e experiência do usuário tanto para desktop quando para mobile.
GTMetrix: nesta ferramenta a categorização dos resultados é feita através de letras. É possível gerar vídeos, configurar banda de rede e realizar monitoramento com configuração de alertas.
Yellow Lab Tools: a ferramenta tem um layout amigável e a categorização dos resultados também é feita através de letras.
Pingdom: é uma ferramenta paga que permite um monitoramento mais robusto, possui configuração de alertas, contas de acesso e API que pode ser integrada a projetos como o CI.
Lighthouse: é um plugin do navegador que permite configurar a banda de rede e mostra resultados sobre acessibilidade e SEO.
Sitespeed.io: é um conjunto de ferramentas open source que facilita o monitoramento e a avaliação de desempenho. Utiliza um contêiner do Docker para ter ambientes com o Firefox e o Chrome.
Legal, mas qual ferramenta devo usar? Segundo a Renatinha, não tem ferramenta melhor ou pior, na maioria dos casos o que funciona para um time, não faz sentido para o contexto do outro.
Faça uma POC, escolha a opção que mais se adéqua a sua realidade e use sempre a mesma ferramenta para avaliar o progresso da performance da sua aplicação web.
Para fechar a tarde com chave de ouro, tivemos um momento de Mesa Redonda, na qual os participantes puderam fazer perguntas para os palestrantes e os organizadores do evento. Além disso, tivemos uma homenagem ao Fred Moreira e a Samanta Cicilia pelas suas contribuições com o evento e a comunidade de teste de software. E assim chegamos ao fim de mais uma edição do MTC.
Voltamos para casa com energia renovada e vontade de fazer acontecer! Nos vemos no próximo MTC. ❤
Enquanto esperamos pelas gravações das palestras de 2018, aproveite para assistir como foram as outras edições do evento!