Contudo, a necessidade de reestruturações e adaptações constantes e a complexidade crescente dos sistemas de TI potenciam o risco de ocorrência de falhas ao longo dos processos organizacionais. Assim, há a necessidade de assegurar a qualidade dos processos de negócio como um todo e de forma transversal aos vários sistemas de suporte.
Neste contexto, o campo de atuação das equipas de Quality Assurance (QA) alarga-se para a qualidade global dos processos de negócio em detrimento da preocupação isolada com a qualidade de um projeto ou sistema. No entanto, esta abrangência de atuação traz grandes desafios que é preciso ultrapassar.
A execução de testes automáticos tem vindo gradualmente a assumir um papel cada vez mais importante nas equipas de QA das organizações, possibilitando:
▪ A repetição da execução dos casos de teste agilizando, por exemplo, os testes de regressão a cada nova versão ou release do sistema em teste;
▪ A redução do tempo de execução de testes complexos, eliminando o tempo como fator de restrição ao universo dos testes executados;
▪ A eliminação de tarefas humanas repetitivas de preparação, prévias à execução dos testes, sujeitas a falhas;
▪ O aumento da cobertura dos testes aos sistemas;
Atendendo a estes benefícios, a automação de testes deverá claramente ser sempre tida em consideração em qualquer iniciativa de QA. No entanto, as iniciativas de automação têm algumas dificuldades intrínsecas que fazem com que muitas destas iniciativas não avancem ou não cheguem a bom porto.
1 Limitação das ferramentas de automação disponíveis no mercado
As ferramentas de automação de testes existentes atualmente no mercado estão tendencialmente vocacionadas para um único tipo de tecnologia (Ex: Aplicações Web, Mobile, Web services, mainframe, SAP), limitando a automação de testes que abranjam sistemas baseados em diferentes tipos de tecnologias.
Muitas vezes isto obriga a recorrer a mais do que uma ferramenta para automatizar os diversos passos de um teste o que leva a uma gestão dos testes automatizados complexa, não dando resposta cabal e completa às necessidades das empresas e impossibilitando uma gestão de testes transversal aos processos de negócio.
Desta insuficiência (ausência de uma plataforma que possibilite automatizar e gerir os testes de todo um processo de negócio) advêm uma série de problemas graves para as organizações a que é urgente dar resposta, como a falta de confiança na entrada em produção das aplicações/sistemas, incumprimento do prazo de time to market, insatisfação do cliente final e até mesmo prejuízos financeiros.
2 Necessidade de recursos especializados
A necessidade de recursos com valências técnicas avançadas é outra das dificuldades recorrentes que afetam e, por vezes, inviabilizam as iniciativas de automação de testes funcionais. A elevada maioria das ferramentas de automação de testes existentes implicam, da parte do utilizador, conhecimentos de programação e o domínio da sintaxe de uma linguagem. Isto leva a que diversos colaboradores da área de negócio (que tipicamente não possuem este tipo de conhecimentos) não possam utilizar de forma autónoma estas ferramentas.
Esta dependência requer coordenação entre os colaboradores da área de negócio (que sabem o que deve ser testado) e os colaboradores técnicos (que dominam as ferramentas), o que nem sempre é possível viabilizar.
3 Nível de manutenção elevado
Por fim, outro dos problemas que frequentemente surgem nas iniciativas de automação é a dificuldade em manter atualizadas as baterias de testes automatizados.
A constante dinâmica do negócio das organizações implica alterações frequentes aos sistemas que as sustentam. Como consequência destas alterações, muitos dos testes automatizados deixam de funcionar ou até mesmo de fazer sentido, e necessitam de ser corrigidos ou (re)automatizados.
Este problema torna-se ainda mais agudo quando:
▪ Não existe uma noção clara do que foi alterado ao nível dos sistemas e dos impactos que essas alterações têm ao nível dos testes automatizados.
▪ Os testes são automatizados com recurso a scripts lineares, que simulam fluxos funcionais extensos e, assim, mais sujeitos a ficarem desatualizados sempre que surge uma alteração funcional.
▪ Não existe um processo fluido de comunicação entre o negócio (fruto das alterações e dos novos requisitos funcionais) e os técnicos (que têm a capacidade de alterar os requisitos).
A utilização de plataformas que:
▪ Facilitem a automação de testes ponta-a-ponta aos diversos fluxos de um processo de negócio, disponibilizando mecanismos que permitam automatizar testes de forma agnóstica às aplicações e sistemas em que assenta o processo e respetivas tecnologias.
▪ Possibilitem uma gestão integral dos testes automatizados permitindo registar na plataforma os diversos testes do processo, sistematizando todos os seus passos e resultados expectáveis. Deverá ser também possível guardar o resultado das execuções (e gravar o historial das execuções).
▪ Permitam a automação de testes por parte de colaboradores de negócio (não técnicos e sem conhecimentos de programação) através da criação na plataforma de uma metalinguagem com uma sintaxe simples (próxima da linguagem natural). Esta metalinguagem permitirá criar uma abstração entre os testes automatizados e os componentes de automação (que possibilitam a execução dos testes nas diversas aplicações) dando autonomia ao negócio para criar os seus próprios testes automáticos.
▪ Possibilitem uma manutenção mais ágil dos testes automatizados através de uma visão de 360o das relações de cada teste automatizado com o processo (e respetivas atividades), aplicações, sistemas e serviços a que o teste diz respeito, permitindo assim conhecer o impacto que eventuais alterações a cada um destes elementos poderá ter na bateria de teste automatizada. Está visão 360o poderá ser suportada por um repositório (uma base conhecimento) que será automaticamente atualizada sempre que um teste a um processo for criado (ou executado) ou o próprio processo for alterado e importado na plataforma.
▪ Garantam a independência dos testes automatizados face aos motores de automação (software que permite a execução dos testes automatizados nos diferentes tipos de sistemas). A metalinguagem desenvolvida na plataforma e utilizada na automação dos testes irá permitir criar uma abstração relativamente aos motores de automação utilizados que possibilitará alterar estes motores, sem que isso implique que o teste tenha de ser totalmente (re)automatizado.
▪ Assegurem uma maior resiliência dos testes automatizados face a eventuais alterações funcionais através da decomposição funcional dos testes (em componentes de automação atómicas), evitando a construção de scripts lineares. Desta forma, os testes automatizados ficarão menos sujeitos a desatualizações aquando de uma alteração funcional, sendo apenas necessário proceder-se à reconstrução do componente de automação.
Já existem plataformas que dão resposta a algumas destas questões, nomeadamente, Smartesting CertifyIt e ETAP-Pro, mas a sua divulgação e utilização é ainda incipiente. No entanto, acreditamos que a utilização de plataformas deste tipo, poderá tornar mais fácil a adaptação das organizações ao contexto atual de mudanças frequentes onde elas operam.