Teste de API de tickets de suporte
Este guia fornece abordagens e exemplos de testes específicos para a API de Tickets de Problemas da Equinix, com base nos princípios gerais de Teste de API.
Visão geral da API de tickets de suporte
A API de Tickets de Suporte permite que os clientes interajam programaticamente com o suporte da Equinix, criando tickets de suporte para problemas que afetam o serviço em diversas categorias:
- Problemas de interconexão
- Problemas de conectividade de rede
- Incidentes relacionados à energia
- preocupações ambientais
- Falhas de hardware
- incidentes de segurança
- Suporte de Serviços Gerenciados
Tipos de problemas em chamados de suporte
A API de Tickets de Suporte oferece suporte a várias categorias de problemas, cada uma com códigos de problema específicos:
| Problem Category | Description | Example Codes |
|---|---|---|
| Cross Connect | Physical cable connection issues | cc01, cc02, cc03 |
| Network | Network connectivity problems | net01, net02 |
| Environment | HVAC, cooling, environmental issues | env01, env02, env03, env04 |
| Hardware | Equipment and hardware failures | hdw01 |
| Power | Power-related incidents | pwr01, pwr02 |
| Security | Security access and badge issues | sec01, sec02 |
| Managed Services | Managed service support requests | ms01-ms13 |
| SmartView | SmartView monitoring issues | sv01-sv05 |
Fluxo de trabalho de teste de chamados de suporte
Antes de testar a API de Tickets de Suporte, certifique-se de ter:
- Uma conta de desenvolvedor Equinix com permissões para abertura de chamados.
- Credenciais de API válidas (ID do cliente e segredo do cliente)
- Acesso a locais e gaiolas IBX adequados
- Compreendendo a Autenticação de API
Criando um Pedido de Suporte Técnico
import requests
import json
from datetime import datetime, timedelta
# Setup authentication
auth_url = "https://api.equinix.com/oauth2/v1/token"
auth_payload = {
"grant_type": "client_credentials",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}
auth_response = requests.post(auth_url, data=auth_payload)
token = auth_response.json()["access_token"]
# Test creating a trouble ticket order
base_url = "https://api.equinix.com"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
# Example: Create a network connectivity trouble ticket
request_payload = {
"customerReferenceNumber": "TT-TEST-001",
"ibxLocation": {
"ibx": "CH1",
"cages": [
{
"cage": "CH1:05:000750",
"accountNumber": "12345",
"cabinets": [
"CH1:05:000750:01"
]
}
]
},
"serviceDetails": {
"incidentDateTime": (datetime.utcnow() - timedelta(hours=1)).isoformat() + "Z",
"problemCode": "net01", # Network connectivity issue
"additionalDetails": "TEST: Network connectivity issue - API testing"
},
"contacts": [
{
"contactType": "ORDERING",
"userName": "test_ordering_user"
},
{
"contactType": "NOTIFICATION",
"userName": "test_notification_user"
},
{
"contactType": "TECHNICAL",
"userName": "test_technical_user",
"workPhone": "555-0123",
"workPhonePrefToCall": "ANYTIME"
}
]
}
create_response = requests.post(
f"{base_url}/v1/orders/troubleticket",
headers=headers,
data=json.dumps(request_payload)
)
# Verify response
assert create_response.status_code == 201, f"Failed to create trouble ticket: {create_response.text}"
order_number = create_response.json()["OrderNumber"]
print(f"Successfully created trouble ticket order: {order_number}")
Validação do local de teste e do tipo de problema
# Test retrieving available locations
locations_response = requests.get(
f"{base_url}/v1/orders/troubleticket/locations",
headers=headers
)
assert locations_response.status_code == 200, f"Failed to retrieve locations: {locations_response.text}"
locations = locations_response.json()["locations"]
print(f"Available locations: {len(locations)}")
# Test retrieving problem types
types_response = requests.get(
f"{base_url}/v1/orders/troubleticket/types",
headers=headers
)
assert types_response.status_code == 200, f"Failed to retrieve problem types: {types_response.text}"
problem_types = types_response.json()["troubleTicketTypes"]
print(f"Available problem types: {len(problem_types)}")
Testando cenários de erro
Sempre teste o tratamento de erros na implementação da sua API:
import requests
import json
from datetime import datetime, timedelta
# Setup authentication
auth_url = "https://api.equinix.com/oauth2/v1/token"
auth_payload = {
"grant_type": "client_credentials",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}
auth_response = requests.post(auth_url, data=auth_payload)
token = auth_response.json()["access_token"]
# Prepare request
base_url = "https://api.equinix.com"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
# Test with invalid problem code
invalid_payload = {
"customerReferenceNumber": "TT-ERROR-TEST-001",
"ibxLocation": {
"ibx": "CH1",
"cages": [{"cage": "CH1:05:000750", "accountNumber": "12345"}]
},
"serviceDetails": {
"incidentDateTime": (datetime.utcnow() - timedelta(hours=1)).isoformat() + "Z",
"problemCode": "INVALID_CODE", # Invalid problem code
"additionalDetails": "TEST: Invalid problem code test"
},
"contacts": [
{"contactType": "ORDERING", "userName": "test_user"},
{"contactType": "NOTIFICATION", "userName": "test_user"}
]
}
error_response = requests.post(
f"{base_url}/v1/orders/troubleticket",
headers=headers,
data=json.dumps(invalid_payload)
)
# Verify error response
assert error_response.status_code == 400, f"Expected error but got: {error_response.status_code}"
error_data = error_response.json()
assert "errors" in error_data, "Error response format not as expected"
print("Successfully validated error handling for invalid problem code")
print(json.dumps(error_data, indent=2))
Melhores práticas para testes de API de tickets de suporte
Nota importante: A API de Tickets de Suporte da Equinix é um sistema de produção que cria tickets de suporte reais. Siga sempre estas boas práticas de teste para garantir que você não crie trabalho operacional não planejado.
- Crie uma conta dedicada para testes: Solicite uma conta separada para testes, se possível.
- Utilize solicitações de teste claramente identificadas: Sempre prefixe as descrições com "TESTE:" para ajudar a equipe de suporte a identificar as solicitações de teste.
- Utilize horários de incidentes válidos: Certifique-se de que a data e a hora do incidente estejam formatadas corretamente e não sejam futuras.
- Validar acesso à localização: Use o endpoint de localizações para verificar os locais IBX acessíveis antes de criar chamados.
- Teste com códigos de problema válidos: Sempre valide os códigos de problema usando o endpoint de tipos.
- Inclua informações de contato completas: Certifique-se de que todos os contatos necessários (PEDIDOS, NOTIFICAÇÕES) sejam fornecidos.
- Limpar recursos de teste: Trabalhe com o suporte para fechar todos os chamados de teste imediatamente após a criação.
- Testar o tratamento de erros: Verificar o tratamento adequado de erros e os códigos de resposta.
Considerações sobre automação
Ao criar automações em torno da API de Tickets de Suporte:
- Implemente um tratamento de erros adequado e tentativas de repetição para falhas na API.
- Crie validação para campos obrigatórios e formatos de dados.
- Incluir registro de auditoria de todas as atividades de criação de tickets.
- Garantir que os horários dos incidentes sejam registrados e formatados com precisão.
- Valide as informações de localização e código do problema antes de enviar.
- Considere implementar fluxos de trabalho de aprovação para a criação de tickets de produção.
- Inclua informações de contato completas para uma resolução mais rápida.