Ferramentas de testes de BDD usando ia
Project description
Test.AI - Guia de Uso
✅ Como Rodar o Test.AI
🔧 Pré-requisitos
Antes de começar, verifique se você tem os seguintes softwares instalados:
- Python (incluindo o gerenciador de pacotes
pip) - Visual Studio Code
- Node.js (recomendado)
📦 PASSO 1: Instalar a Biblioteca Python
- Abra um terminal.
- Execute o comando:
pip install test-ai-leds
- Certifique-se de que o diretório
Scriptsdo Python está adicionado à variável de ambientePATH.
🔹 Windows
- Execute:
pip show test-ai-leds
- Será exibido um caminho semelhante a:
C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages
- Substitua
site-packagesporScripts, por exemplo:
C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\Scripts
- Adicione esse caminho nas variáveis de ambiente do sistema.
💡 Você também pode usar virtual environments para evitar instalação global.
🔹 Linux
- Crie um ambiente virtual:
python -m venv <nome-da-venv>
- Ative a venv:
source <caminho-da-venv>/bin/activate
- Instale a biblioteca:
pip install test-ai-leds
- Adicione o caminho dos scripts ao
.bashrc:
nano ~/.bashrc
Adicione ao final do arquivo:
export PATH=$PATH:/<caminho-da-venv>/bin
- Depois, execute:
source ~/.bashrc
🧩 PASSO 2: Instalar a Extensão Test.AI no VS Code
- Abra o Visual Studio Code.
- Acesse a aba de extensões (ícone de quadrado ou atalho
Ctrl + Shift + X). - Busque por
Test.AI. - Instale a extensão.
⚙️ PASSO 3: Configurar o Arquivo .env
Na pasta raiz do repositório (leds-tools-testai), crie um arquivo chamado .env com o seguinte conteúdo:
LLM_MODEL=gemini/gemini-1.5-flash
GEMINI_API_KEY=<Sua Chave>
SWAGGER_PATH=<Caminho para o Swagger>
DTO_SOURCE=<Caminho para a pasta DTO>
Exemplo:
LLM_MODEL=gemini/gemini-1.5-flash
GEMINI_API_KEY=asduf24385HDSuyad43trfjedsig
SWAGGER_PATH=C:/Users/usuario/OneDrive/Documentos/PS2/leds-tools-testai/dtos/swagger.json
DTO_SOURCE=C:/Users/usuario/OneDrive/Documentos/PS2/leds-tools-testai/dtos
⚡ Funcionalidades
✅ Funcionalidade 1: Gerar Arquivos de Código Gherkin (Features, BDD)
📌 Pré-requisitos
- Um arquivo
.andesdentro da pastaandesque está dentro da pasta (leds-tools-testai).
▶️ Como executar
No terminal, dentro do repositório (leds-tools-testai), rode:
python src/application/use_cases/crew_gherkin.py
- Digite o nome do arquivo
.andes(sem a extensão). - O arquivo
.featureserá gerado automaticamente na pastafeaturescom o nomeresposta.feature.
✅ Funcionalidade 2: Gerar Steps das Features (C# com xUnit)
📌 Pré-requisitos
- Um arquivo
.featuredentro da pastafeaturesque está dentro da pasta (leds-tools-testai).
▶️ Como executar
No terminal, dentro do repositório (leds-tools-testai), rode:
python src/application/use_cases/crew_xUnit.py
- Digite o nome do arquivo
.feature(sem a extensão). - O arquivo
resposta.csserá gerado na pastarespostaque está dentro da pasta (leds-tools-testai).
🏛️ Arquitetura Adotada
Estilo Arquitetural: Clean Architecture
Clean Architecture é uma estrutura de design de software com várias camadas, promovendo uma estrutura organizada e de fácil compreensão, o que é benéfico para o desenvolvimento.
Sua principal característica é a separação e independência das camadas, como o desacoplamento da lógica de negócios do sistema de influências externas como o sistema de interface do usuário (UI), frameworks, bancos de dados e assim por diante. Isso é alcançado definindo uma camada de domínio independente e isolada.
🧠 Princípios Fundamentais da Clean Architecture:
-
Independência de tecnologia: O núcleo do sistema (regras de negócio) não conhece detalhes de frameworks, bibliotecas ou I/O.
-
Ordem de dependência: O fluxo de dependência sempre aponta para o centro — interfaces externas dependem do domínio, e nunca o contrário.
-
Regras de negócio isoladas: Permite reaproveitamento em outros contextos (ex: CLI, APIs, interfaces gráficas).
A principal ideia da Clean Architecture é separar o código em camadas concêntricas, onde:
🔄 As dependências sempre apontam para dentro:
+------------------------+
| External Layer | <- Interface com o usuário, web, banco, etc.
+------------------------+
| Interface Adapters | <- Controllers, Gateways, Presenters
+------------------------+
| Use Cases Layer | <- Regras de negócio da aplicação
+------------------------+
| Entities (Core) | <- Regras de negócio mais genéricas
+------------------------+
🧱 As camadas:
-
Frameworks & Drivers (camada externa): Onde ficam os frameworks, banco de dados, UI, serviços externos, etc.
-
Interface Adapters: Camada que adapta os dados para entrada/saída (ex: controllers, presenters, repositórios).
-
Use Cases: Casos de uso da aplicação, orquestram as regras para resolver problemas específicos do domínio.
-
Entities: Contém as regras de negócio mais genéricas e independentes de tecnologia.
🧩 Aplicação no contexto do Test.AI:
| Camada | Descrição | Exemplos |
|---|---|---|
| Interface | Camada de interação com o usuário. Usa a API do VS Code para capturar ações como clique direito. | Comandos como "Generate BDD", "Generate Steps" |
| Aplicação | Camada que define os fluxos principais e regras de orquestração dos dados. | Script que decide como gerar arquivos a partir dos dados fornecidos. |
| Domínio | Contém as regras de negócio puras, como interpretação do .andes e geração dos testes. | Classes e funções Python que fazem parsing e estruturam os dados. |
| Infraestrutura | Responsável por interagir com o sistema operacional, arquivos, APIs externas, .env. | Integração com Gemini, leitura de .env, gravação de arquivos. |
🖥️ Interface no Test.AI
📌 Descrição
A camada de Interface é responsável por interagir diretamente com o usuário final. No projeto Test.AI, essa interação é realizada por meio de uma aplicação em Streamlit, que serve como a camada de apresentação visual, exibindo os dados gerados pelas APIs e capturando comandos do usuário.
Essa camada não processa lógica de negócio, mas atua como ponte entre o usuário e a aplicação.
🔍 Trechos do Código Relacionados à Interface
Arquivo: src/scripts/comparacao.py
| Trecho de Código | Descrição | Função na Interface |
|---|---|---|
import streamlit as st |
Importa a biblioteca de interface gráfica. | Inicializa a camada de interface web. |
user_input = data_json['payload'] |
Carrega a entrada do usuário a partir de um JSON. | Captura o dado a ser enviado para as APIs. |
if st.button("Enviar"): |
Cria o botão de envio. | Dispara o processamento ao clicar. |
col1, col2 = st.columns([1, 1]) |
Cria duas colunas visuais na interface. | Divide as respostas do modelo "Debate" e "Sequencial". |
st.session_state['messages'].append(...) |
Armazena as mensagens da sessão. | Controla o histórico da interação. |
st.write(...) |
Exibe as respostas e entrada do usuário. | Mostra os dados na tela para o usuário. |
if st.button("Limpar Conversa"): |
Cria botão de limpeza da sessão. | Reseta a interface e o histórico da conversa. |
✅ Resumo
A camada de Interface no Test.AI atua como um painel de controle visual da aplicação. Ela é responsável por:
- Receber dados de entrada do usuário
- Enviar esses dados para APIs externas (Debate e Sequencial)
- Exibir os resultados recebidos de forma clara e organizada
- Manter o histórico da sessão de forma interativa
- Resetar a interface sob demanda
🖥️ Aplicação no Test.AI
📌 Descrição
A camada de Aplicação A camada de aplicação pode ser considerada o epicentro do projeto. Como o seu nome sugere, é nesse estado onde o aplicativo é desenvolvido, onde trazemos o funcionamento à lógica definida anteriormente na camada de domínio. Nessa camada se encontra a materealização e a execução dos casos de uso, desta forma, definindo o comportamento do aplicativo.
✅ Portanto..
A camada de Aplicação no Test.AI atua como um o cerne da aplicação. Ela é responsável por:
- Executar os casos de uso de geração de BDD
- Controla a interação entre os agentes e os fluxos de ação
- Isola a lógica de negócio da interface
- Guarda a definição dos agentes
- Guarda os arquivos referentes a definição das tarefas
🖥️ Domínio no Test.AI
📌 Descrição
A camada de Domínio da Lógica no Test.AI é responsável por conter as regras de negócio para o funcionamento de um sistema. Fundamental para garantir que todas as ações de interpretação de dados e geração de arquivos de testes sejam feitas de forma correta e eficiente.
Essa camada é independente de frameworks e tecnologias externas, isolando a lógica de negócio central do resto do sistema, o que facilita testes, manutenção e modificações sem impactar outras partes do projeto.
🔍 Como funciona
-
Inicialização de Modelos LLM:
- Usa duas configurações de LLM (temperaturas diferentes): uma mais criativa (
temp=0.6) e outra mais precisa (default,temp=0.0). - As funções
init_llm,init_agenteinit_tasksão importadas demodule.py.
- Usa duas configurações de LLM (temperaturas diferentes): uma mais criativa (
-
Ciclo de Geração em Rodadas:
- Roda três iterações para gerar e revisar arquivos
.feature. - Em cada rodada:
- Um agente “gherkin_writer” escreve o código Gherkin.
- Um agente “gherkin_reviewer” revisa o código gerado.
- Ambos são configurados dinamicamente com base no turno (ex:
rodada_1,rodada_2, etc.).
- Roda três iterações para gerar e revisar arquivos
-
Definição de Tarefas:
- Tarefas são criadas a partir de descrições dinâmicas (
tasks_dict), onde ouser_caseé inserido no texto da tarefa para contextualização.
- Tarefas são criadas a partir de descrições dinâmicas (
-
Uso de uma Estrutura de "Crew":
- Ao que tudo indica (com base no nome das classes
Agent,Task,Crew), está utilizando a bibliotecacrewai, que estrutura o uso de múltiplos agentes colaborativos.
- Ao que tudo indica (com base no nome das classes
🧠 Inteligência Artificial
A integração com LLM permite que esses agentes gerem conteúdo mais natural, completo e alinhado com os padrões do Gherkin, mesmo com uma entrada simples como um caso de uso (user_case).
✅ Resumo
Esse script representa um componente da Camada de Domínio que automatiza a criação colaborativa de testes BDD com uso de inteligência artificial e múltiplos agentes especializados. É aqui que reside a lógica principal para converter requisitos textuais em testes executáveis com validação automatizada.
🖥️ Infraestrutura no Test.AI
📌 Descrição
Este módulo define a infraestrutura backend do Test.AI utilizando o FastAPI como framework principal, com suporte a CORS, tratamento de requisições REST e integração com modelos de linguagem (LLMs) através da biblioteca crewai. O foco principal é o recebimento de eventos via POST, que são processados por agentes inteligentes para gerar arquivos de especificação de testes em formato Gherkin (BDD). Os resultados são orquestrados, revisados e consolidados por múltiplos agentes para produzir um artefato final de teste.
CORS é um mecanismo usado para adicionar cabeçalhos HTTP que informam aos navegadores para permitir que uma aplicação Web seja executada em uma origem e acesse recursos de outra origem diferente.
🔍 Trechos do Código Relacionados à Interface
Arquivo: src/app/main.py
crew = Crew(
agents=agents + [manager],
tasks=tasks + [final_task],
max_rpm=10,
output_log_file="crew_log.txt",
manager_llm=llm_low_temp,
process=Process.sequential,
verbose=True
)
- Este trecho define a Crew com múltiplos agentes (writers, reviewers e manager) e suas respectivas tarefas. O processo é executado de forma sequencial, e os logs são salvos em crew_log.txt. A CrewAI orquestra toda a execução das tarefas com uso de LLMs configurados dinamicamente.
load_dotenv()
- Carrega as variáveis de ambiente a partir de um arquivo .env. Isso é essencial para o funcionamento correto da aplicação, especialmente para o uso de chaves de API como a GOOGLE_API_KEY necessária para configurar os LLMs utilizados pelos agentes da CrewAI.
@app.get("/")
async def home():
return "Rodando"
- Este endpoint básico verifica se a aplicação está no ar.
@app.post("/gherkin")
async def generate_gherkin_file(evento: Evento):
feature = generate_gherkin_feature(evento.evento)
body = {
"feature": feature
}
return JSONResponse(body)
-
O endpoint /gherkin é o principal ponto de entrada para a geração de arquivos de teste. Ele recebe um JSON com um campo evento, que será transformado em uma feature Gherkin através da função generate_gherkin_feature.
-
A função generate_gherkin_feature cria múltiplos agentes (writers e revisores), cada um com funções específicas na construção e verificação de cenários de teste. Um agente gerente sintetiza os melhores resultados em um único arquivo .feature.
✅ Resumo
-
Backend criado com FastAPI, com suporte a CORS.
-
Utilização da biblioteca CrewAI para orquestrar agentes inteligentes baseados em LLMs (modelo Gemini via GOOGLE_API_KEY).
-
Entrada via POST em /gherkin recebe eventos e os transforma em cenários BDD (Gherkin).
-
O processo de geração envolve múltiplos agentes:
-
Escritores e revisores de cenários Gherkin.
-
Um gerente que unifica as versões geradas.
-
Resultado final é salvo em arquivo .feature e registrado em log (crew_log.txt).
🌐 Tecnologias no Front-end vs Back-end
| Camada | Tecnologia | Descrição |
|---|---|---|
| Front-end | VS Code Extension (TypeScript) | Responsável pela interação com o usuário e acionamento dos comandos. |
| Back-end | Python (test-ai-leds) | Responsável por processar os dados, interpretar arquivos e gerar os códigos. |
| Back-end | Crew.ai | Plataforma de multi-agentes, os quais fazem a automação dos fluxos de testes. |
| Back-end | LLM-model | Utiliza o modelo Gemini 1.5 flash como backend da LLM |
📚 Referências Bibliográficas
⚠️ Observação
Pasta scripts contém código para testar as entidades task e agent que foram refatoradas
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file leds_tools_testai-0.1.1.tar.gz.
File metadata
- Download URL: leds_tools_testai-0.1.1.tar.gz
- Upload date:
- Size: 19.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1656760b06221589a93f9a390eb750178673b0117bbe12db05dd0afe9b85ea8
|
|
| MD5 |
c3f9de9f692d8d1eb229a16e52bc17c5
|
|
| BLAKE2b-256 |
1c1e19afebee1620c1c2d17cb2024d92b31738b8cb6f7238a8886323bed49d52
|
File details
Details for the file leds_tools_testai-0.1.1-py3-none-any.whl.
File metadata
- Download URL: leds_tools_testai-0.1.1-py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
416ccb62127a8a897ebe2615618025c635add42d2c8145864088690f115e810a
|
|
| MD5 |
8054dc9fc95e34073cd34e4b45fedb9a
|
|
| BLAKE2b-256 |
d955cae727084348259d11a1e3192138af23bb1025477481e60a8dc64ba3b7a9
|