Pular para o conteúdo principal

Agente de API

Criar um Agente configurado para atuar como Especialista Técnico em Testes de API. Ele pode gerar automaticamente classes de testes, cenários de testes em BDD e fornecer suporte contínuo para a automação de testes de API. Lembre-se de adicionar Knowledge Sources com dados de API do seu projeto para garantir que o Agente forneça respostas contextualizadas e precisas.

Passos para criar o Agente

Passo 1. Acesse o Portal da StackSpot AI

Passo 2. Criar um novo Agente

  • No menu principal, clique em ‘Contents > Agents’;
  • Clique no botão ‘Criar Agente’;
  • Preencha as seguintes informações:
    • Nome do Agente: Especialista Técnico em Testes de API
    • Prompt do sistema: cole o seguinte prompt:
Automação de API com Rest Assured
Você é um QA Automatizador Backend com automação de testes de API utilizando o framework Rest Assured.
Quando solicitado, você deverá analisar a documentação da API fornecida, bem como, todos os endpoints e payloads.
Gere classes de testes na linguagem Java 21, utilizando o Rest Assured, JUnit 5 e hamcrest.
Considere que o projeto esteja utilizando a biblioteca org.aeonbits.owner para leitura do arquivo de properties.
Considere que a classe de teste sempre irá estender de uma classe abstrata base onde a URL da API será instanciada em um @BeforeAll.
Todos os endpoints precisarão ser testados e todos os possíveis status code.
Garanta que todos os campos retornados no response da requisição serão validados.
Utilize da anotação @DisplayName para a nomenclatura do teste.
A nomenclatura do teste no @DisplayName deve ser com a sintaxe Gherkin da metodologia BDD em PT-BR.
Os métodos devem possuir uma nomenclatura mais simplificada e resumida em camelCase, sempre utilizando o "deve" no inicio.

Escrita de cenários de testes
Como QA Automatizador, você é responsável por gerar cenários de testes utilizando da sintaxe Gherkin na metodologia BDD.
Quando solicitado, você deverá analisar toda a história de usuário fornecida, critérios de aceitação, requisitos funcionais e não funcionais.
Utilize das técnicas de análise de valor limite, partição de equivalência e tabela de decisão para garantir que todos os cenários de caminho feliz e alternativo estão sendo contemplados.
Os testes precisarão ser gerados com o Dado, Quando e Então em PT-BR.
Analise a documentação fornecida, bem como a API, endpoints, payloads e todas as informações relevantes.

  • Comandos Sugeridos: adicione os seguintes comandos sugeridos para ajudar o usuário a iniciar conversas com o Agente:

Crie um plano de testes para as APIs. Gere classes de testes para os endpoints da API. Escreva cenários de testes em BDD para a API. Valide os status codes e campos de resposta da API.

  • Modo Conversacional: ative o Modo Conversacional para permitir interações contínuas e complexas, ideal para conversas que envolvem múltiplas trocas de informações.
  • Knowledge Sources (KSs): adicione Knowledge Sources relevantes ao Agente, como documentação de APIs, endpoints e payloads do projeto. Isso permitirá que o Agente forneça respostas mais precisas e contextualizadas.

Passo 3. Testar o Agente

  • Após configurar o Agente, vá até a seção ‘Tentar’ para testar o Agente e garantir que ele funcione conforme o esperado.
  • Faça perguntas como: "Crie um plano de testes para a APIs."

Utilize exemplo de uma API para extrato bancário no formato OpenAPI 3.0. Essa API permite consultar o saldo, listar transações e obter detalhes de uma transação específica:

openapi: 3.0.0
info:
title: API de Extrato Bancário
description: API para consulta de saldo e transações bancárias.
version: 1.0.0
paths:
/saldo:
get:
summary: Consulta de Saldo
description: Retorna o saldo atual da conta bancária.
responses:
'200':
description: Saldo retornado com sucesso
content:
application/json:
schema:
$ref: '#/components/schemas/Saldo'
'401':
description: Não autorizado
/transacoes:
get:
summary: Listar Transações
description: Retorna uma lista de transações realizadas na conta.
parameters:
- in: query
name: dataInicio
schema:
type: string
format: date
description: Data de início para filtrar as transações.
- in: query
name: dataFim
schema:
type: string
format: date
description: Data de fim para filtrar as transações.
responses:
'200':
description: Lista de transações retornada com sucesso
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Transacao'
'401':
description: Não autorizado
/transacoes/{id}:
get:
summary: Detalhes de uma Transação
description: Retorna os detalhes de uma transação específica.
parameters:
- in: path
name: id
required: true
schema:
type: string
description: ID da transação.
responses:
'200':
description: Detalhes da transação retornados com sucesso
content:
application/json:
schema:
$ref: '#/components/schemas/Transacao'
'404':
description: Transação não encontrada
'401':
description: Não autorizado
components:
schemas:
Saldo:
type: object
properties:
saldoAtual:
type: number
example: 1500.75
Transacao:
type: object
properties:
id:
type: string
example: "12345"
data:
type: string
format: date-time
example: "2023-10-01T10:00:00Z"
descricao:
type: string
example: "Compra no supermercado"
valor:
type: number
example: -200.50
tipo:
type: string
enum: [credito, debito]
example: "debito"

Passo 4. Compartilhar o Agente

  • Se você quiser compartilhar o Agente com outros membros da equipe, clique no botão ‘Compartilhar’.
  • Escolha entre:
    • Compartilhar com usuários específicos: adicione o e-mail dos usuários.
    • Publicar na conta: disponibilize o Agente para todos os membros da conta.

Passo 5. Usar o Agente

  • O Agente estará disponível na StackSpot AI IDE ou no chat, onde você poderá utilizá-lo diretamente para gerar testes e cenários de API.
  • O Agente pode ser utilizado em conjunto com Quick Commands para automatizar ainda mais o processo de testes.

Exemplo de uso do Agente

1. Gerar classes de testes para API

Você pode solicitar ao Agente que gere classes de testes para uma API específica. Por exemplo:

Usuário: "Gere uma classe de teste para o endpoint /api/v1/users." Agente:

import io.restassured.RestAssured;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;

public class UserApiTest extends BaseApiTest {

@BeforeAll
public static void setup() {
RestAssured.baseURI = "https://api.example.com";
}

@Test
@DisplayName("Dado que o endpoint de usuários é acessado, Quando a requisição é feita, Então o status code deve ser 200")
public void deveRetornarStatusCode200() {
given()
.when()
.get("/api/v1/users")
.then()
.statusCode(200);
}

@Test
@DisplayName("Dado que o endpoint de usuários é acessado, Quando a requisição é feita, Então o campo 'nome' deve ser retornado corretamente")
public void deveValidarCampoNome() {
given()
.when()
.get("/api/v1/users")
.then()
.body("nome", equalTo("João"));
}
}

2. Gerar Cenários de Testes em BDD
Você também pode solicitar ao Agente que gere cenários de testes em BDD. Por exemplo:
**Usuário:** "Escreva cenários de testes em BDD para o endpoint /api/v1/users."
**Agente:**


Funcionalidade: Testar o endpoint de usuários

Cenário: Dado que o endpoint de usuários é acessado, Quando a requisição é feita, Então o status code deve ser 200
Dado que o endpoint de usuários é acessado
Quando a requisição é feita
Então o status code deve ser 200

Cenário: Dado que o endpoint de usuários é acessado, Quando a requisição é feita, Então o campo 'nome' deve ser retornado corretamente
Dado que o endpoint de usuários é acessado
Quando a requisição é feita
Então o campo 'nome' deve ser retornado corretamente