Testes em ChatBots com NLP

No meio dessa onda de novidades sobre os chatbots, existem várias ferramentas de Inteligência Artificial para tentar aproximar a interação do usuário com o software de uma conversa.

Na Take usamos uma ferramenta própria de Processamento de Linguagem Natural que usa o Watson da IBM (conheça mais do Watson aqui), principalmente em Bots com estrutura de FAQ. Quando o usuário pergunta algo para o chatbot, é feito o processamento da pergunta e, após, o software retorna para o usuário uma resposta que acredita ser a correta.

Obviamente, a quantidade de coisas que o software conhece é bem limitada, então, se o usuário perguntar “arroz, feijão e batata, o que é que falta?”, receberá como resposta algo como “Desculpe, não entendi. Podemos tentar novamente?”.

O que é NLP?

Processamento de Linguagem Natural (ou NLP) é uma vertente da área de Inteligência Artificial, encarregada de entender o que o ser humano fala e da forma que fala.

Sabemos que, em praticamente todas as línguas, existe mais de uma maneira de dizer uma mesma coisa. “Como vai você?”, “Tudo bem com você?”, “Como você está?”, são maneiras de perguntar uma mesma coisa com um mesmo valor semântico. Mas são frases diferentes.

Para que a ferramenta de NLP saiba responder perguntas e frases dos usuários, deve-se fazer uma espécie de “treinamento”. Para tal, é feita uma tabela com várias perguntas e respostas que são passadas para a ferramenta. Usando algoritmos e ferramentas de estatística, o software entende a pergunta do usuário e lhe envia a resposta relacionada na planilha.

Claro que não queremos que um chatbot saiba responder todas as perguntas possíveis de um usuário. Um bot, com a temática de conserto de motocicletas, não deve conhecer nada sobre preparar um peru de natal. Portanto, nessa tabela de treinamento, existem várias perguntas e respostas sobre motocicletas e nenhuma sobre culinária.

Os testes

O papel de um Analista de QA é garantir que todas as funcionalidades propostas de uma aplicação estejam funcionando da melhor maneira possível. Para garantir isso, o Analista deve fazer o que é esperado (caminho feliz) e o inesperado (Tentar o Especial secreto do Akuma numa aplicação com 3 botões).

Akuma special moves

Para um analista de QA testar todas as respostas de um chatbot com NLP, gasta-se muito tempo. O analista deveria mandar TODAS as perguntas para o software, ler CADA resposta, comparar com o que está escrito na história no backlog e aprovar ou reportar Bugs.

Existem produtos na Take, usando nossa plataforma de NLP que tem 999 perguntas cadastradas ?. Imagina o trabalho de ler mil perguntas e respostas e comparar com a documentação.

O melhor é conseguir automatizar os testes de maneira que o “caminho feliz” seja garantido e que o analista possa gastar seu tempo valioso pensando em outras formas de fazer as mesmas perguntas para o chatbot e analisar os resultados, podendo abrir bugs, propor melhorias e ter dados relevantes.

Automatizando

Na Take, usamos o Blip com a configuração C# SDK para criar chatbots. Logo fomos capazes de criar um Client () que chama a ferramenta de NLP, enviando uma pergunta e um valor que identifica a tabela de treinamento (Contexto) e assim resgata a resposta. Para organizarmos os testes unitários, usamos:

  • NUnit.Framework: conseguimos montar vários casos de teste mandando a pergunta e o que deveria ser a resposta como parâmetros, usando a Tag [TestCase(“parametro1”,“parametro2”)]
  • Shoudly:  retorna mensagem de erro, com os valores comparativos do que deveria ser e o que foi recebido pelo método.

Trecho de Código usado com o Client, TestCase com pergunta e resposta, dados confidenciais marcados

 

Quando a mensagem retornada não é a ideal, o Shouldly dá o alarme e o NUnit Framework organiza cada teste separadamente na janela Test Explorer do Visual Studio. Assim, é simples descobrir quais perguntas não estão seguindo o caminho feliz e quais estão corretas.

Dificuldades encontradas

Cada canal de uso para o bot possui suas limitações. Por exemplo, o Facebook tem limitação de tamanho da resposta (640 caracteres). Logo, é possível que no teste, a resposta seja aceita mas não seja exibida no canal escolhido por outros motivos.

Essa é uma maneira simples para testar coisas simples. Conteúdos mais complexos, como o carrossel do Facebook ou a caixa de seleção do Telegram, não poderiam ser testados dessa maneira. Para esses conteúdos complexos criamos uma ferramenta que pode ser encontrada no Nuget, de nome Blip SDK Test helper. Mas isso é conteúdo para outro post ?.

Se alguns conteúdos são palavras-chaves (que iniciam comportamentos no seu bot), você receberá a palavra-chave e não o conteúdo em questão, podendo gerar confusão entre as pessoas que escrevem o teste.

Com os testes do caminho feliz automatizados, o analista de QA economiza tempo ao não precisar enviar 999 perguntas. Além disso, sabe quais perguntas e respostas não estarão alinhadas com precisão e pode se concentrar em fazer testes mais inteligentes, como trocar algumas palavras de ordem e elaborar novas perguntas para o mesmo tema.

 

Sobre o(a) Autor(a)          

Cristiano Guerra

Analista de sistemas e criador de chatbots na Take.