Afinal, o que é Shift Left Testing? É de comer?
A prática “Shift Left Testing” (ou “deslocar as atividades de teste para a esquerda”) significa que os testes iniciam mais cedo e duram todo o ciclo de vida do desenvolvimento de um software.
Ou seja, ao invés de todo processo ocorrer no fim do desenvolvimento “à direita” do fluxo, as atividades são antecipadas percorrendo um fluxo sequencial, favorecendo a qualidade nas fases mais iniciais do processo.

Abaixo, explicamos mais sobre a prática e como ela pode ser útil no seu contexto.
Por que adotar essa prática?
Você provavelmente já participou de projetos de software em que o tempo ficou escasso, o orçamento caiu por terra, o entendimento do negócio estava incompleto e um alto índice de defeitos foi encontrado em ambiente de produção. Isso pode ter gerado falhas de alto custo, manutenção difícil, retrabalho para sua equipe ou até mesmo a necessidade de redesenhar a aplicação para atender às rápidas mudanças do mercado atual de tecnologia.
É de conhecimento de todos que todas as aplicações possuem defeitos e que quanto mais tarde esses defeitos são encontrados dentro do ciclo de vida de desenvolvimento do software, tornam-se mais caros e difíceis de corrigir.
Segundo a imagem abaixo, o custo de um defeito na “mão” do cliente (em ambiente de produção) pode chegar a US$ 7.600,00.
Também sabemos, através da experiência em teste, que a maioria dos defeitos são encontrados nas fases primordiais do desenvolvimento de software: na especificação, no design e na codificação. E grande parte das causas ocorrem pelo motivo: requisitos mal entendidos.
E quais os benefícios ao aplicar no meu projeto?
Todos os membros da equipe de desenvolvimento precisam entender as necessidades do cliente e falar a mesma língua para garantir o sucesso de um novo projeto. Para que isso aconteça é necessária a participação de todos nas fases mais iniciais do ciclo de vida do desenvolvimento.
Ao adotar essa prática o time trabalha de forma sincronizada, ou seja, levantam os requisitos e ampliam o conhecimento das regras de negócio, opinam no design do software, auxiliam na arquitetura e desenvolvem de forma que desenvolvedores e testadores tornam-se aliados.
Isso tudo ajuda a:
- Prevenir bugs;
- Antecipar melhorias;
- Gerar previsibilidade e agilidade;
- Garantir qualidade na entrega;
- Aumento da confiança no time e no negócio.

Dessa forma todos os membros do time podem realizar as atividades de qualidade, diversificando o processo. E a cobertura dos testes também fica mais fácil de ser mapeada, através do conhecimento, dos requisitos, protótipos e aspectos funcionais do sistema.
Mas atenção: a empresa precisa se preparar e adaptar para poder adotar essa nova prática, pois alguns fatores, como os listados abaixo, podem interferir no processo:
- A falta de comunicação entre os desenvolvedores e analista de testes;
- Pouco investimento da empresa em ferramentas e softwares;
- Projetos pequenos;
- Cultura resistente à mudanças.
Qual a contribuição do Shift Left para a agilidade?
Com equipes pequenas, na qual os QA’s trabalham juntamente com os desenvolvedores, o Shift Left facilita a comunicação entre os membros do time, levando todos a darem uma atenção maior para as histórias antes do início do desenvolvimento.
Além disso, auxilia na construção de feedbacks rápidos e frequentes, trazendo o cliente mais próximo do desenvolvimento e validando os entregáveis. Essa proximidade ajuda o time a entender as reais necessidades do usuário final e também auxilia na redução do retrabalho do time, uma vez que ajuda a introduzir rotinas como realização de kickoffs, uma cerimônia rápida de 5 a 15 minutos, para entender e esclarecer o que deve ser feito.
Para nós, Analista de testes, a implantação do Shift Left ajuda a entender o projeto como um todo, tendo uma concepção maior do produto a ser desenvolvido, participando de todos os processos, realizando testes em todas as etapas do ciclo de vida do desenvolvimento, com cenários mapeados e discutidos de forma antecipada e proporcionando as entregas ao cliente final no tempo hábil e com qualidade.

Como implementar o Shift Left?
Existem várias maneiras para implementar a prática do Shift Left Testing. Para começar precisamos contar com o engajamento da equipe e a abertura da empresa em implantar uma nova cultura, fazendo uso de algumas prática como as listadas abaixo:
Inserir os QAs no “Refinamento”
Contar com a participação ativa de todos integrantes do time, inclusive do QA, para detalhar, discutir e entender a tarefa proposta antes da atividade de desenvolvimento, levantando dúvidas sobre regras de negócio e impactos nos sistemas para melhor tomada de decisão técnica, divisão de itens maiores em menores para melhor planejamento e execução, assim como alinhar as expectativas sobre o fluxo de solução ou implementação. E iniciar o mapeamento dos cenários de teste e compartilhá-los com a equipe.
Utilizar a técnica “Reunião dos 3 amigos”, vinda do BDD, para refinamento
Essa etapa tem como propósito discutir e definir as regras de negócios, critérios de aceite e o que será desenvolvido através de opiniões de diversos papéis, geralmente do PO (Product Owner), dos desenvolvedores e dos analistas de teste. O que se espera é melhorar o entendimento das features que serão desenvolvidas, estabelecendo os critérios de aceite indispensáveis para colocar a tarefa em posição de conclusão (feito e pronto).
Leia mais sobre a Reunião dos 3 amigos nesse post.
Definição de DOD (Done) e DOR (Ready)
As definições de “pronto” ajudam o time a entender a expectativa da entrega. O conceito “DOR” (Definition Of Ready) faz parte da etapa do planejamento e informa que a tarefa está refinada/ preparada o suficiente para entrar no backlog e começar a ser desenvolvida, geralmente passando pelas práticas listadas acima.
Já o conceito “DOD” (Definition of Done) ajuda o time a entender quando uma tarefa está concluída de acordo com seus requisitos – após a execução bem sucedida de um teste regressivo, por exemplo – e pronta para o cliente final (em ambiente de produção).
Cenários de testes mapeados antes do desenvolvimento
Quando criados no início do projeto, os cenários de testes orientam o time de desenvolvimento, fornecendo uma visão mais clara sobre o fluxo que será testado. Também previnem futuros bugs e abrem espaço para melhorias serem implementadas. Observa-se que os bugs complexos são reduzidos e o impacto na entrega final é menor.
Teste contínuo
O teste contínuo é um tipo de teste de software no qual o produto é avaliado antes, durante e depois de todo o processo de Entrega Contínua. Com isso os desenvolvedores realizam os testes de codificação e unitários e os QA’s ficam responsáveis pelos testes de integração, de sistemas e aceitação em todo o processo. O objetivo desse tipo de teste é dar um feedback rápido e contínuo de todo o fluxo desenvolvido na tarefa.
Testes regressivos
Também é um tipo de teste de software no qual o produto é avaliado após melhorias e alterações realizadas no código (correções) durante o desenvolvimento, cujo objetivo é detectar efeitos colaterais indesejados, garantindo que nenhum defeito foi acrescentado no sistema após modificações e trazer segurança quanto a publicação e/ou entrega final.
Conclusão
Implantar o Shift Left em times de tecnologia pode ser trabalhoso, mas gera benefícios que agregam tanto na eficiência da sua operação quanto na experiência do usuário final com seu produto.
Se você está começando essa jornada agora, utilize seus profissionais de qualidade como guardiões desse processo. A ideia é que eles, pouco a pouco, introduzam práticas pequenas no dia a dia do time, atuando para mudar a mentalidade das pessoas envolvidas ao longo.
Vale ressaltar também que um bom aliado desse movimento são os testes automatizados, pois eles podem gerar uma confiança extra no que está sendo desenvolvido pelo seu time, validando de forma automática novas versões antes que elas entrem em ambiente de produção, liberando tempo para que as pessoas olhem para atividades mais estratégicas no processo.
Agora que você já sabe mais sobre o Shift Left Testing, que tal se aprofundar na prática de testes automatizados e descobrir como e quando aplicá-la? Leia mais sobre o assunto no nesse artigo do nosso blog!