Logo E-Commerce Brasil

ChatGPT: o que a qualidade de software pode aprender com a inteligência artificial?

Por: Bruno Abreu

CEO e cofundador da Sofist, empresa especializada em redução e prevenção de problemas em produtos digitais por meio de testes profissionais de software. Graduado em Ciência da Computação pela UFMG e pós-graduado na mesma área pela UNICAMP, tem mais de 14 anos de experiência e atuação na área de qualidade de software, já tendo participado da entrega de projetos nacionais e internacionais para mais de 150 empresas.

A cada nova revolução tecnológica que surge no mundo, a mesma pergunta volta à tona: o homem será substituído pela máquina? Desde o temor com a invenção do computador aos dias de hoje, o medo de perder nossos empregos permeia as discussões sobre as tecnologias que prometem virar do avesso as relações de trabalho. A maior novidade desse debate é a tão falada inteligência artificial (IA), cuja face mais polêmica vem sendo mostrada desde os últimos meses de 2022 e atende pelo nome de ChatGPT.

Estamos prontos para usufruir da IA no sentido de melhorar as práticas de qualidade ou ela irá consumir os profissionais a ponto de prejudicar sua produtividade?

Em segmentos intensivamente tecnológicos, logo surgem os promotores e os detratores de qualquer nova ferramenta. É o caso do mundo da qualidade de software, que, pela própria natureza da atividade, lida com tecnologia a todo momento, além de abrigar um perfil de profissionais que, por via de regra, estão em constante aprendizado sobre novas ferramentas de trabalho.

No entanto, antes de pontuar as oportunidades e os desafios, é preciso resolver uma questão central e atualizar a pergunta de milhões sobre o homem em comparação à máquina para uma reflexão mais corporativa: será que os times de tecnologia da informação (TI) estão realmente preparados para extrair o melhor do ChatGPT? Estamos prontos para usufruir da IA no sentido de melhorar as práticas de qualidade ou ela irá consumir os profissionais a ponto de prejudicar sua produtividade?

Impacto do uso de IA em diferentes áreas

Um artigo publicado pela consultoria norte-americana McKinsey prevê impacto do uso de IA em diferentes áreas, como marketing e vendas, operações e pesquisa & desenvolvimento. Além desses segmentos, em tecnologia da informação, a McKinsey aponta escrita, documentação e revisão de código como benefícios da inteligência artificial.

Nesse contexto, podemos nos perguntar: como essas aplicações se relacionam com as práticas de qualidade de software de maneira a serem consideradas relevantes para um projeto ou não?

O ChatGPT, queridinho da vez, é uma ferramenta treinada por humanos com uma quantidade incrível de dados para poder correlacionar o que aprendeu com a pergunta recebida. Feito isso, ele exibe uma resposta que, por muitas vezes, é surpreendentemente fascinante. No entanto, apenas essa lógica de pergunta e resposta não basta para agregar valor ao terreno da qualidade. Para ser aplicável nessa área, é preciso adicionar uma camada de contextualização aos questionamentos e interpretação às devolutivas do ChatGPT.

Por mais que a IA esteja sendo considerada uma revolução, há um risco de desinformação considerável. O ChatGPT, como o próprio site da plataforma diz, possui um formato de diálogo por perguntas de acompanhamento, ou seja, a conversa pode ser aprofundada, do mais básico para o mais avançado. Trazendo para o universo corporativo, um profissional que não consiga contextualizar sua dúvida e questionar a ferramenta para obter a melhor solução para seu problema, corre o risco de se contentar com uma resposta incompleta ou, até mesmo, inadequada. É aí que mora o perigo.

Além disso, é plausível vislumbrar outro desafio. Um buscador como o Google exibe diferentes resultados para um questionamento, ao passo que o ChatGPT exibe uma resposta única. Temos aqui mais um risco: uma diminuição gradual da capacidade cognitiva das pessoas, que, teoricamente, não teriam mais que analisar diferentes fontes de informações, podendo se dar ao luxo de aceitar uma assertiva pronta. Essa ameaça tem uma estreita relação com a possível aplicabilidade do ChatGPT às atividades de qualidade de software, uma vez que, como já mencionamos, é preciso saber pensar no que perguntar à IA para obter uma contribuição útil da ferramenta.

Como você pode usar a IA para aumentar a produtividade?

Vejamos um exemplo prático de uma pergunta que fizemos diretamente ao ChatGPT, que simula uma consulta realizada por um desenvolvedor inexperiente à ferramenta: “Como criar testes automatizados para um app?” Veja a resposta:

“Existem várias ferramentas e técnicas que você pode usar para criar testes automatizados para um aplicativo. Aqui estão os passos gerais que você pode seguir:

1. Escolha a ferramenta de teste automatizado adequada para o seu aplicativo, por exemplo: Appium, Espresso etc.

2. Escreva casos de teste que cubram todos os cenários de uso importantes do seu aplicativo.

3. Configure seu ambiente de teste, incluindo o dispositivo ou emulador em que o teste será executado.

4. Execute seus casos de teste e verifique se todos eles passam.

5. Analise os resultados dos testes e corrija quaisquer erros encontrados.

6. Integre seus testes automatizados ao seu pipeline de CI/CD para que eles possam ser executados automaticamente cada vez que houver mudanças no código.

Observe que esses passos são gerais e podem variar dependendo da ferramenta que você escolher. Além disso, a criação de testes automatizados pode ser uma tarefa complexa e é importante ter conhecimento em programação e testes de software antes de iniciar.”

E agora, uma pergunta mais contextualizada, tipicamente escrita por pessoas de maior senioridade: “Como criar testes automatizados para um app usando a linguagem de programação C-Sharp com o framework Selenium?”

Para criar testes automatizados para um aplicativo usando C# e Selenium, você precisará seguir os seguintes passos:

1. Instale o Selenium WebDriver para C# através do NuGet Package Manager ou baixando o pacote de seu site oficial.

2. Importe as referências necessárias em seu projeto:

3. Inicialize o WebDriver:

4. Escreva seus casos de teste usando as classes e métodos fornecidos pelo Selenium, como driver.Navigate().GoToUrl() para navegar para uma página específica e driver.FindElement() para localizar elementos na página.

5. Execute seus testes usando um framework de teste, como o NUnit ou o MSTest, marcando seus métodos de teste com atributos apropriados, como [Test].

Aqui está um exemplo básico de como isso pode ser feito:

Percebem a diferença de aplicabilidade da eventual resposta para cada um dos questionamentos? Independentemente do conhecimento em programação, fica claro notar o quanto a pergunta contextualizada trouxe uma resposta mais útil e aprofundada, inclusive com exemplos práticos.

Criar testes automatizados exige capacidade cognitiva e pensar em contextos, o que é fundamental para realmente entregar software com mais qualidade. Uma empresa madura em QA estimula os seus profissionais a desenvolverem cada dia mais essas competências. Geralmente, as pessoas que estão à frente de times de tecnologia entendem bem a relevância de considerar os desafios técnicos e de negócio. É possível desenvolver, por exemplo, uma API mais simples se ela for acessada por apenas 200 usuários. Já em uma escala de rede social, o “mesmo” desafio de criar uma API é mais caro e complexo. Pode parecer óbvio, porém, para chegar a esse nível de análise, é preciso entender objetivos e perguntas-chave que mudam o contexto de uma API.

Esse caso específico ilustra como os gestores de tecnologia precisam estar atentos à forma como suas equipes encaram os desafios que se apresentam: será que os seus times sabem pensar em qualidade de software com estratégia ou apenas escrevem códigos e criam testes repetitivamente sem planejamento?

Por isso, podemos dizer que o desafio está justamente no uso que se irá fazer da IA. Enquanto há o deslumbramento das pessoas ao ver o ChatGPT escrever um poema com a tinta de Drummond ou compor uma música com o estilo da Anitta, um outro lado fica na penumbra.

Exemplos de aplicações práticas da IA

Facilidade demais pode gerar acomodação. Vamos exemplificar algumas aplicações da inteligência artificial na área de programação.

– Em testes unitários, é preciso isolar um código para testá-lo. O ChatGPT pode ajudar na orientação à criação de mocks, que são objetos utilizados em desenvolvimento de software para simular comportamentos de forma controlada.

– A IA pode ajudar a montar provas de conceito (PoC, Proof of Concept) mais rápido e até comparar diferentes linguagens de programação;

– O ChatGPT pode sugerir diferentes formas de desenvolver e implementar um código, além de comparar diferentes bibliotecas (libs).

Todas as atividades mencionadas podem economizar algumas horas de uma pessoa programadora, seja ela júnior ou mais experiente. Porém, ela irá funcionar corretamente, dentro do objetivo do projeto, ou precisará ser corrigida inúmeras vezes? Nessa questão reside o dilema da facilidade que uma IA proporciona diante da falsa produtividade.

E então, você está pronto para usar a inteligência artificial de forma estratégica? Não vale perguntar para o ChatGPT.