Onde há desenvolvedores, deve haver testadores por perto. E quanto mais complexo o sistema, mais importante é o papel deste último. Mas nem todos os testadores desempenham a mesma função da mesma maneira, e hoje queremos falar sobre o surgimento de uma unidade especial no M.Video-Eldorado, que lida com testes entre sistemas. Leia sobre por que decidimos criar uma casta separada de testadores, como isso ajudou os negócios e como chegamos a essa decisão durante o corte.
Se você não verificar se o sistema funcionará após a atualização ser lançada em produção, um pequeno bug pode "colocar" todo o serviço ao cliente ou, por exemplo, processos de back-office. Para evitar que isso aconteça, qualquer equipe ágil deve ter seu próprio testador, que verifica a execução dos cenários básicos e relata bugs aos desenvolvedores. Se um serviço interage com outros componentes do sistema, as equipes geralmente conduzem testes de integração - verificando a influência dos componentes mais próximos do ecossistema de serviço uns sobre os outros.
Porém, em nossa época, os processos de negócios costumam ser muito mais complicados e, para atingir o resultado desejado, é necessário o trabalho de cerca de uma dúzia de serviços. Nesse caso, é necessário testar a compatibilidade das mudanças não apenas em dois ou três sistemas vizinhos, mas em todo o fluxo.
Portanto, os testes de integração não garantem mais uma operação livre de erros. Aqui está um exemplo: quando os desenvolvedores de um aplicativo mobile lançam um release, então, no máximo, é verificada sua compatibilidade com o Bitrix (no qual está rodando o site Eldorado). Isso permite avaliar o trabalho apenas do serviço em si, mas não dá nenhuma garantia de que os pedidos serão atendidos, as mercadorias serão fornecidas aos clientes e os preços de emissão corresponderão aos preços do aplicativo, e assim por diante.
Na verdade, processos complexos são a norma moderna. Por exemplo, em M.Video e Eldorado, pedidos online requerem a participação de mais de 20 sistemas. Do lado do cliente, tudo parece simples: o comprador simplesmente entra no aplicativo mobile ou no site da loja online, seleciona o produto, coloca-o na cesta e atribui a entrega na próxima data conveniente para ele. O correio entrega a mercadoria no momento indicado pelo comprador para o endereço especificado.
Mas para que tudo isso seja possível por parte dos serviços de TI, há uma interação de sistemas de autorização, mecanismo de site, módulo de cálculo de preços, gateway de pagamento, sistema de CRM, contabilidade e assim por diante. E para avaliar se alguma alteração em um dos componentes levará a uma “quebra” do processo de compra, é necessário verificar a interação de todos os sistemas.
- ?
Por um lado, cada equipe já tem seu próprio testador. E, ao que parece, ele pode se envolver em testes de ponta a ponta. Mas vimos por experiência própria que essa abordagem não é a mais eficaz. Um teste entre sistemas é, por definição, difícil; para realizá-lo, é necessário pegar um testador de cada sistema, instruí-lo e colocá-lo em operação.
Após completar seu estágio, o testador N deve relatar ao testador N + 1 que seu estágio foi concluído. os caras geralmente estão ocupados com seus próprios negócios - testes funcionais e de integração, e o processo de teste entre sistemas é lento.
Um caso real: o testador foi almoçar, mas quando voltou, esqueceu que tinha que terminar a etapa - tem muitos outros trabalhos. Até que ele seja lembrado, o processo vale a pena.
Se encontrarmos um problema em algum estágio, surge imediatamente a pergunta: "De que lado ele está?" Por exemplo, o testador N + 1 retorna um erro para o especialista anterior. E o testador N fica indignado: “O que nosso sistema e eu temos a ver com isso?”. Até que os caras descubram de que lado surgiu o problema, que eles sinceramente não consideram “deles”, pode levar vários dias. O resultado são prazos perdidos e a necessidade de empurrar constantemente o processo.
Finalmente, para realizar tal teste, você precisa lançar um projeto, conectar um gerente de projeto, reunir periodicamente 20 pessoas em uma sala (uma para cada sistema) e descobrir de que lado o problema surge ao dar o próximo passo. Isso exige muita mão-de-obra, é ineficiente e desvia as pessoas do trabalho que elas consideram ser seu trabalho principal.
Decidimos que seria melhor criar um departamento de teste entre sistemas, que agora testa todos os processos de negócios antes do lançamento de todas as atualizações importantes para a produção.
Experiência própria - PROMO-ações
Quando decidimos fazer isso, uma grande vantagem foi a presença de experiência interna em testes entre sistemas. Em 2017, começamos a implementar uma nova prática de teste ponta a ponta para dar suporte a campanhas publicitárias federais para a marca M.Video. A empresa realiza constantemente várias promoções, como por exemplo, “O seu preço”, “Compre uma TV, vai receber um brinde” e assim por diante.
Tais promoções implicam em preços especiais, presença de brindes no kit e emissão de brindes. As promoções são realizadas simultaneamente, combinam ou excluem-se em uma compra específica.
Mas, no processo de retirada, por exemplo, a compra de produtos promocionais acontecia em um sistema, o trabalho do funcionário do call center - em outro, e o recebimento da mercadoria - no terceiro. Com isso, a TV poderia ficar sem um presente ou, quando outro item fosse adicionado ao recibo, o preço promocional da posição principal seria cancelado. Obviamente, qualquer atualização nos sistemas poderia quebrar alguma coisa, e criamos uma pequena equipe que estava especificamente envolvida no teste de ponta a ponta da promoção antes do lançamento das promoções federais.
Cerca de um ano depois, essa equipe construiu um processo de trabalho eficiente e passou a operar as promoções federais sem erros e sem problemas. E como bônus adicional, o negócio passou a receber feedbacks e relatórios sobre a viabilidade técnica e eficácia das campanhas publicitárias lançadas.
Quando percebemos que a empresa precisa de um processo completo de teste entre sistemas em outros projetos, essa experiência se revelou muito útil. A necessidade de um novo tipo de teste ficou especialmente clara na época da unificação de M.Video e Eldorado. Aumentamos o número de mudanças complexas e volumétricas, foi necessário realizar projetos para duas marcas ao mesmo tempo, o número de produtos e sistemas de back-office incluídos em uma mudança ultrapassou 20.
Benefícios da nova abordagem
Hoje, o departamento de teste de sistema cruzado emprega três gerentes de teste e seis testadores e, no futuro, planejamos empregar permanentemente cerca de 40 pessoas em teste de sistema cruzado para M.Video-Eldorado.
A tarefa do nosso departamento é realizar testes ponta a ponta, detectando os bugs que porventura não tenham sido percebidos durante os testes funcionais e de integração, antes do lançamento em produção das alterações lançadas nos processos e produtos da empresa. A divisão avalia o impacto da atualização de cada um dos componentes nos processos internos e externos. Para isso, foi desenvolvida uma metodologia unificada de preparação e execução de testes, bem como regras de interação com os testadores internos de cada equipe de desenvolvimento.
Em meados de 2021, a M.Video-Eldorado já oferece suporte a mais de 100 produtos e sistemas / serviços de back-office e, portanto, mais de 100 equipes estão engajadas em seu desenvolvimento. A cada semana surgem mais e mais componentes de software (afinal, vivemos na era dos microsserviços), e as mudanças são quase contínuas. A empresa executa constantemente de 5 a 6 projetos de grande escala que afetam dezenas de sistemas ao mesmo tempo.
Nessas condições, o processo de teste contínuo entre sistemas torna-se necessário, pois permite estabelecer uma verificação oportuna da interação dos serviços e evitar que atualizações incompatíveis entrem no produto.
Se falamos de indicadores específicos, conseguimos :
- , -, - end2end 2 ;
- 15%;
- 20%;
- end2end 10%;
- 50%;
- , -, Jira
A história de como conduzimos um projeto piloto e em quais processos de negócios elaboramos a metodologia de teste merece um texto separado. Portanto, no próximo post, falaremos sobre nosso caminho para os testes entre sistemas onipresentes, bem como compartilharemos a metodologia e os critérios existentes para a implementação bem-sucedida de testes end2end na empresa, que desenvolvemos com nossa própria experiência.
PS Existem várias vagas interessantes em nossa equipe . Receber!