Get your 6-month No-Cost Opt-Out offer for Unlimited Software Automation?

O ChatGPT, o Bard e outros modelos de linguagem de grande dimensão (LLM) dominaram os nossos feeds de notícias no último ano. E com razão. Estas tecnologias empolgantes oferecem-nos um vislumbre do futuro, do poder e das possibilidades da IA.

Embora grande parte do entusiasmo do público se tenha centrado na criação de texto, imagens e vídeo, estas ferramentas podem ser utilizadas para muitas outras disciplinas, como a automatização de software.

Este artigo vai ser um mergulho profundo na forma como a engenharia de prontidão pode ajudar-nos com a automação de software. No entanto, o nosso primeiro ponto de contacto deve ser uma análise da própria engenharia rápida.

 

O que é a engenharia rápida?

 

Os grandes modelos linguísticos, como o ChatGPT, produzem resultados com base nas instruções ou frases que lhes fornecemos. No entanto, os resultados variam muito consoante as palavras ou instruções que utilizamos. Quando introduzimos instruções vagas e imprecisas, o resultado pode não ser o desejado.

A engenharia de prontidão refere-se à conceção ponderada de contributos que ajudam a obter conteúdos mais precisos, exactos e, em última análise, utilizáveis por parte destes interessantes sistemas de IA.

Os sistemas de modelos de linguagem de grande dimensão (LLM) utilizam o processamento de linguagem natural (PNL) para interpretar as declarações que lhes damos. As máquinas transformam estas perguntas ou instruções (ou seja, prompts) em código e executam-nas através dos seus vastos repositórios de dados para produzir conteúdos no formato que especificarmos (ou seja, texto, imagens, código).

O ChatGPT foi treinado em mais de
570 GB de dados
. O material de formação é constituído por livros, artigos, textos da Internet, etc. Por outras palavras, estes conjuntos de dados contêm uma quantidade inimaginável de conhecimentos.

Embora possamos compreender o processo, muito do que acontece por baixo do capô destes sistemas está fora da nossa vista. É certo que controlamos as entradas e saídas e treinamos o sistema, mas a forma exacta como estes algoritmos funcionam e tomam as decisões continua a ser um mistério. Nas palavras de Sam Bowman, professor de IA na Universidade de Nova Iorque, “Construímo-lo, treinámo-lo, mas não sabemos o que está a fazer.”

A engenharia rápida ajuda-nos a gerir esse caos, utilizando produtos que produzem resultados previsíveis e utilizáveis. Oferecem-nos uma via para desbloquear as vastas quantidades de conhecimento existentes nestas aplicações.
A disciplina está a emergir como uma nova carreira
com cursos a surgirem por todo o lado, à medida que as empresas tentam perceber como podem tirar partido desta poderosa tecnologia.

Como é que a engenharia rápida pode ajudar

com a automatização de software?

utilização do chatcpg para várias tarefas de automatização de software e rpa

A automatização do software e os LLM têm muito em comum. Ambos oferecem um vislumbre de um futuro em que as máquinas aumentarão a criatividade humana para criar locais de trabalho mais rápidos e mais produtivos.

Há vários domínios interessantes em que estas duas tecnologias podem convergir. Eis três formas de utilizar a engenharia rápida na automatização do software.

 

#1. Geração de código

gerar código com engenharia rápida na automatização de testes

A escrita de código é uma das aplicações mais promissoras dos modelos de linguagem de grande dimensão. Os LLM de IA estão a dar os primeiros passos. Nos próximos anos, esta tecnologia deverá melhorar à medida que forem adicionados mais recursos à informática e à formação.

A longo prazo, estes avanços poderão levar a IA a escrever programas inteiros com pouca ou nenhuma intervenção humana. No entanto, por enquanto, os LLM têm algumas limitações. A qualidade da saída da codificação LLM depende principalmente da qualidade da entrada. Lixo dentro, lixo fora, como se costuma dizer.

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

É claro que não é apenas a engenharia rápida e eficaz que actua como um obstáculo. Como sugerido em ChatGPT e modelos linguísticos de grande dimensão no meio académico: Oportunidades e desafios (Meyer, 2023), “Atualmente, é mais provável que o ChatGPT seja bem sucedido na escrita precisa de blocos de código mais pequenos, enquanto a sua fiabilidade na escrita de programas maiores/mais complexos (por exemplo, um pacote de software) é questionável.”

Além disso, num artigo recente da revista Nature, alguns cientistas informáticos alertaram para o facto de devermos abordar a geração de código com LLMs com alguma cautela. Outro jornal contemporâneo,
Modelos de Linguagem Grandes e Bugs Simples e Estúpidos
(Jesse, 2023), demonstrou como um LLM popular, o Codex, que é utilizado pelo fornecedor Copilot, produz “SStuBs conhecidos e textuais com uma probabilidade duas vezes superior à do código conhecido e literalmente correto”.

Embora estes problemas não possam ser ignorados, existe ainda um grande entusiasmo justificável sobre a forma como estes programas podem ajudar a democratizar o desenvolvimento de software, apoiando tanto as equipas técnicas como as não técnicas.

Talvez o mais impressionante a considerar seja o facto de ferramentas como o ChatGPT poderem produzir código funcional muito rapidamente. Com o prompt certo, os engenheiros podem reduzir o tempo necessário para programar determinados tipos de código, garantindo um ciclo de vida de desenvolvimento de software mais rápido.

No final de 2022, o popular centro de programação
Stack Overflow proibiu as mensagens geradas por IA
respostas no seu fórum. Citaram a elevada taxa de erro e as imprecisões associadas à aplicação. No entanto, a tecnologia está numa fase incipiente; além disso, a insatisfação com os resultados gerados pela IA deve-se tanto a uma engenharia deficiente como à própria tecnologia.

Apesar das dúvidas sobre a tecnologia, um
artigo recente da McKinsey
destaca o impacto que a engenharia rápida já está a ter no mundo da programação. A empresa de consultoria O estado da IA em 2023: O ano de arranque da IA generativa partilharam duas tendências interessantes. Em primeiro lugar, 7% das organizações que investiram em IA estão a contratar engenheiros de prontidão. Em segundo lugar, as empresas que estão a utilizar a IA reduziram as funções de engenharia de software relacionadas com a IA de 38% para 28%.

Uma forma de interpretar estas tendências é que as empresas estão confortáveis com esta configuração e prontas para entregar a automatização do software às suas máquinas. Embora estes números possam assustar os actuais engenheiros, o inquérito da McKinsey sugere que “apenas 8% afirmam que a dimensão das suas forças de trabalho irá diminuir em mais de um quinto”. De um modo geral, os engenheiros terão provavelmente de se requalificar para tirar partido da tendência para a automatização de software gerada por IA.

Uma aplicação óbvia para a automatização de software gerada por IA inclui a criação de bots de automatização. No entanto, embora o prompt engineering seja uma interface aparentemente fácil de utilizar graças ao seu foco na conversação, resta saber se pode suplantar as soluções existentes.

Em muitos aspectos, softwares como o ZAPTEST já democratizaram o mercado de automação de software. Já existem ferramentas sem código que permitem às equipas não técnicas criar bots RPA de alta qualidade. Embora um software como o ChatGPT possa criar bots, a implementação e a manutenção podem revelar-se complicadas para quem não é engenheiro de software e mesmo para quem o é.

Gravar as interacções homem-computador a partir da sua GUI e converter esses movimentos em código é muito mais fácil de utilizar do que usar prompts. Juntamente com o potencial do LLM para produzir código instável e repleto de erros, é justo dizer que o software RPA não vai a lado nenhum num futuro próximo.

 

#2. Conversão de dados não estruturados

lista de verificação uat, ferramentas de teste de aplicações web, automatização e mais

Os dados não estruturados não são o ponto forte da automatização robótica de processos. A tecnologia não foi concebida para lidar com coisas como correio eletrónico, imagens, áudio e muito mais. As ferramentas RPA necessitam de modelos de dados predefinidos com estruturas organizadas.

Uma grande parte dos dados não estruturados envolve texto em linguagem natural. São criados grandes modelos linguísticos para “compreender” estas informações e extrair-lhes o significado semântico. Assim, esta situação cria uma oportunidade considerável para as equipas que pretendem interpretar estes textos e convertê-los num formato aceitável para as ferramentas RPA.

Há anos que muitas equipas utilizam o processamento de linguagem natural (PNL) para as ajudar na análise de sentimentos. Este processo, também conhecido como pesquisa de opinião, ajuda as organizações a manterem-se a par dos sentimentos e atitudes dos consumidores em relação às marcas. Na maioria dos casos, estas ferramentas são utilizadas para detetar sentimentos positivos, negativos e neutros no texto. No entanto, a tecnologia também é capaz de uma deteção emocional muito mais granular.

Embora existam várias ferramentas no mercado que oferecem esta funcionalidade, o LLM oferece um caminho para uma utilização mais versátil, para além da compreensão da opinião das pessoas sobre um produto ou serviço. Por exemplo, a análise de dados explodiu em popularidade nos últimos anos. O Big Data dá às empresas uma vantagem ao permitir-lhes obter conhecimentos e compreensões que ajudam na tomada de decisões baseadas em dados.

As ferramentas de automatização de processos robóticos podem ajudar na recolha de dados. No entanto, como já referimos, têm dificuldade em lidar com determinados tipos de informação. No entanto, quando associada a ferramentas de IA que utilizam modelos de linguagem de grande dimensão, a RPA pode recolher grandes quantidades de dados e utilizá-los para gerar as informações necessárias para as ferramentas de Business Intelligence (BI).

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

Um dos aspectos mais interessantes da IA generativa é a sua capacidade de dar sentido aos dados introduzidos. Com a engenharia de prontidão correcta, as equipas podem transformar estes dados num formato que funcione para as suas ferramentas RPA.

A RPA pode ajudar a tornar os fluxos de trabalho de megadados mais eficientes. Para começar, pode utilizá-lo para ajudar na introdução e extração de dados. No entanto, talvez os casos de utilização mais valiosos e intrigantes envolvam a utilização de ferramentas RPA para transformar, limpar e carregar dados ou garantir que a migração de dados é efectuada de forma rápida, eficiente e precisa.

Outro ponto importante a salientar é a governação dos dados. A automatização dos pedidos de dados ajuda as organizações a manter a conformidade e mantém os dados fora da vista dos trabalhadores manuais.

 

#3. Automatização de testes

A automatização dos testes tem vindo a ganhar terreno nos círculos de desenvolvimento de software porque proporciona uma forma mais rápida de verificar o software. Tradicionalmente, os testes e a garantia de qualidade têm sido processos dispendiosos e morosos; a automatização dos testes oferece uma solução para estes dois desafios.

Uma das primeiras coisas que a engenharia rápida pode fazer é melhorar a qualidade dos casos de teste. Com as instruções correctas, estas máquinas podem analisar casos de teste e identificar problemas e soluções. Este processo pode melhorar o âmbito dos casos de teste e conduzir a testes mais abrangentes.

Por exemplo, pode alimentar um código de modelo de linguagem grande da mesma forma que um revisor humano. Estas máquinas podem analisar rapidamente o código e detetar erros, bugs e até identificar problemas de desempenho. Talvez mais intrigante, os LLMs também oferecem a possibilidade de completar o código do caso de teste a partir de meros trechos, acelerando a criação de casos de teste.

O objetivo da engenharia imediata é resolver muitas das questões que levaram ao aparecimento da abordagem Agile/DevOps ao desenvolvimento de software. Os engenheiros querem testes eficientes e fáceis de repetir que possam detetar problemas antes de as aplicações serem implementadas. A ideia aqui é que, ao libertar tempo, os programadores de software podem concentrar-se em tarefas mais criativas e orientadas para o valor.

Conforme descrito num artigo clássico,
Dívida técnica na automação de testes
(K. Wiklund, 2012), as equipas de desenvolvimento de software podem ter problemas se despenderem demasiado tempo em testes manuais e na verificação do seu software. Os custos iniciais das soluções de automatização de testes, a falta de experiência em automatização e até a preferência por métodos mais antigos podem contribuir para estes atrasos.

Um dos aspectos mais interessantes do desenvolvimento ágil de software envolve
Desenvolvimento orientado para o comportamento (BDD).
O conceito refere-se ao desenvolvimento de software com os comportamentos esperados do utilizador. Embora a implementação desta abordagem possa claramente poupar tempo, muitas equipas têm dificuldade em dar vida a esta automatização. No entanto, os LLM podem fornecer uma solução.

Alguns dos sintomas mais comuns de dívida técnica incluem documentação deficiente e falta de testes robustos. Estes são problemas que os LLM de hoje podem ajudar a resolver. No entanto, outros sintomas notáveis, como a refacção, são demasiado complexos para a IA generativa atual e podem não resultar em poupanças de tempo.

 

Considerações finais

testes alfa vs testes beta

As aplicações de IA generativa têm um potencial imenso. No entanto, a interface de fácil utilização e de conversação pode ser enganadora. Muitas pessoas acreditam que é fácil obter resultados de qualidade com estas máquinas. No entanto, uma excelente engenharia de prontidão é mais complicada do que se poderia esperar.

Uma engenharia rápida eficaz requer muitas tentativas e erros. Além disso, é necessária uma grande dose de antecipação por parte do engenheiro para garantir que as respostas sejam úteis. Por último, é importante verificar e voltar a verificar o trabalho, devido ao potencial de erros bem divulgado.

Embora os empregos de engenharia rápida possam estar a aumentar, nem todos estão convencidos. Num artigo publicado na Harvard Business Review, Oguz A. Acar apresenta um argumento fascinante segundo o qual “as futuras gerações de sistemas de IA tornar-se-ão mais intuitivas e hábeis na compreensão da linguagem natural, reduzindo a necessidade de instruções meticulosamente concebidas”.

Independentemente do que o futuro nos reserva, a IA generativa estará presente. Embora a engenharia rápida seja muito promissora, é difícil dizer com certeza qual o papel exato que irá desempenhar.

Curiosamente, o software de automatização dos testes de software já está repleto de casos de utilização e de histórias de sucesso que demonstram a sua adequação para acelerar o desenvolvimento de software sem comprometer a exatidão ou a verificação exaustiva das aplicações.

Ferramentas como o ZAPTEST já permitem que os programadores resolvam problemas como tempo e recursos inadequados, dívida técnica, documentação, testes abrangentes e RPA. Além disso, estas ferramentas são mais fáceis de utilizar do que a engenharia rápida, o que as torna opções muito mais adequadas para equipas não técnicas. Como sempre, o verdadeiro potencial reside na intersecção destas excitantes tecnologias de automatização.

Download post as PDF

Alex Zap Chernyak

Alex Zap Chernyak

Founder and CEO of ZAPTEST, with 20 years of experience in Software Automation for Testing + RPA processes, and application development. Read Alex Zap Chernyak's full executive profile on Forbes.

Get PDF-file of this post