[OPINIÃO] Transformação Digital: Qual o Papel dos Testes Automáticos?

O desenvolvimento de software tem de andar hoje ao ritmo do marketing. Além disso, é cada vez mais exigente a capacidade de resposta e a flexibilidade dos departamentos de IT face ao negócio. É do consenso geral que o Mundo Digital abre portas a novos modelos de negócio, modelos esses que já estão na nossa rotina. Senão, vejamos:

  • A maior empresa de táxis do mundo não possui um único táxi (Uber)
  • A maior empresa de alojamentos não possui um único imóvel (Airbnb)
  • As maiores empresas de telecomunicações não possuem infraestrutura (Skype, WeChat)
  • A maior empresa de retalho não tem stocks (Alibaba)
  • A mais popular empresa de media não cria qualquer conteúdo (Facebook)
  • Os bancos com maior crescimento não possuem dinheiro (SocietyOne)
  • A maior empresa de exibição de filmes não possui qualquer cinema (NetFlix)
  • Os maiores vendedores de software não criam as suas Apps (Apple e Google)

Antes de falar em testes automáticos, importa perceber como se alcançam os desafios da transformação digital. Entra assim no nosso léxico a palavra «DevOps». DevOps é a nova Buzzword que vem dar corpo a este novo conceito, de Transformação Digital. Em termos mecânicos, aproxima o «Dev» (desenvolvimento) das «Ops» (operações). No fundo, é como se se deixássemos de experimentar o novo código em ambiente controlado e passasse a ser experimentado em produção (= acrobacia sem rede).

Os únicos entraves são que os utilizadores são cada vez mais exigentes, quer com a saída de novas releases, quer com a qualidade de cada release. E no mundo «mobile», o desafio é ainda maior. Os utilizadores não perdoam uma App que não evolua ou que, à primeira tentativa de utilização, defraude as expetativas. Estima-se que a evolução de novas releases, em média de 12 a 36 por ano, passe para 2 a 3 por dia!

Ora, este ritmo só é possível com processos otimizados, de integração, de teste e de entrega (deployment) contínuos. O teste contínuo, por sua vez, só é possível com automação, onde se cria uma bateria de testes significativa que avalia, em poucos minutos/horas, se o novo código não quebrou aquilo que estava a funcionar bem.

Mas a automação só é solução se o processo de desenvolvimento e teste de software estiver bem concebido… caso contrário, o que se ganha é uma máquina com capacidade de criar mais problemas por minuto.

Mas, o que faz mesmo um testador?

O testador analisa o comportamento esperado de um software, ainda antes de este estar construído, e concebe um conjunto de casos de teste, de forma a assegurar que não se esquece de testar aquilo que é mais importante. Por mais importante entendam-se «as funcionalidades que possuem maior impacto em termos de imagem de mercado ou de receita para a empresa/negócio que esse software suporta».

Quando o software fica pronto, mesmo que seja apenas um pequeno componente, deve testar-se para antecipar a deteção das anomalias. Os testes automáticos visam conseguir testar mais em menos tempo. Este aspeto é crucial em várias dimensões:

  • Conseguir reduzir a janela de tempo entre o fim do desenvolvimento e a colocação da release no mercado
  • Conseguir reduzir o esforço de teste (em especial quando é preciso testar em vários browsers e dispositivos mobile)
  • Conseguir fazer coisas que seriam impossíveis de fazer manualmente (ex: comparar milhares de linhas de um processamento de salários, ou simular 2.000 pessoas a usar o sistema ao mesmo tempo)

O teste automático funciona como um programa de computador:  analisa o comportamento da aplicação (após injetar os dados) e verifica se o resultado obtido é igual ao resultado esperado.

E como podem estes testes ajudar as empresas a lançar produtos no mercado?

Em primeiro lugar, ao assegurar que aquilo que estava a funcionar bem antes, continua a funcionar bem depois, prevenindo que o sistema tenha uma regressão em termos de qualidade… que quando acontece, mina a confiança do utilizador final e é extremamente negativa.

O teste automático também pode ser usado para testar as novas funcionalidades, mas onde ganha maior protagonismo é na garantia da não regressão. Com a Transformação Digital, o teste automático ganha uma maior expressão, porque não se pode abdicar do teste das novas funcionalidades. Assim, o teste automático terá que cobrir as novas funcionalidades, da mesma forma que cobre as funcionalidades anteriores.

As empresas estão cada vez mais dependentes da sua capacidade de resposta às necessidades do mercado. Mas para isso acontecer, é preciso que o software evolua várias vezes por semana, ou, quiçá, várias vezes por dia, pois é difícil pensar num negócio que não seja suportado por software. Logo, só se consegue responder ao mercado se o software evoluir muito rapidamente (e sem defeitos). Os testes permitem, precisamente, prevenir os defeitos em produção.

Como já vimos, o mundo digital está repleto de exemplos de empresas que o único ativo que possuem é o software. Os testes automáticos, só por isso, não permitem essa entrada… aquilo que permitem é a capacidade de resposta do software às necessidades do negócio. Mas, essa capacidade de resposta só é verdadeiramente rápida se a qualidade for percebida como uma tarefa de todos (Whole Team Approach) e não apenas da equipa de testes.

Em Portugal, assistimos a uma maior procura por parte dos grandes bancos, seguradoras, companhias de aviação e operadores de telecomunicações, tipicamente, mercados onde os sistemas de informação são muito críticos. Começamos também a assistir a uma procura maior no mercado da indústria e energia.

Mas, trata-se de um mercado em ebulição. O mercado dos testes automáticos está a evoluir, porque estamos a passar de um teste que era «Platform-Centric» para um teste «Application-Centric», onde a mesma aplicação é testada em diversas plataformas (Windows, Mac-iOS, Mobile-iOS, Android, browsers diferentes, etc).

A grande mais-valia destes testes é a capacidade de resposta ao negócio, permitindo que uma nova release chegue mais cedo às mãos dos utilizadores - quer internos, quer externos - sem comprometer a qualidade do software. Para as empresas portuguesas, com cariz exportador, é também um requisito crucial ter um processo de teste maduro e alinhado com o modelo de desenvolvimento de software, para que possa tirar partido da escala global sem ter prejuízos de imagem.

O conceito de Whole Team Approach

A qualidade do software e a aplicação do conceito DevOps não é uma tarefa da equipa de testes, mas de todos os intervenientes: analistas, programadores e testadores. A necessidade de termos os testadores envolvidos desde o início da release não é novidade. Mas os desafios da Transformação Digital eliminam qualquer espaço para equipas amadoras.

Por isso, está na ordem do dia o termo «Shift-Left», que passa por deslocar para a esquerda, num plano Gantt, o início das preocupações com o teste, nomeadamente assegurar que o código é criado de forma a facilitar o teste automático.

Em suma, a qualidade da entrega deixou de ter um controlador nos chamados testes de sistema/aceitação e passou a ser uma responsabilidade de toda a equipa, algo que o mundo Agile muito carinhosamente chamou de WTA = «Whole Team Approach». Se pretende responder aos desafios do Mundo Digital, assegure que tem ao seu lado uma equipa de testes preparada para o novo paradigma.

Filipe Nuno Carlos,
Managing Partner da WinTrust

Com o apoio: