Middle
Como vai verificar o serviço web?
sobes.tech IA
Resposta da IA
A verificação do serviço web inclui várias etapas-chave e tipos de testes:
-
Compreensão dos requisitos e especificações:
- Estudo da documentação (Swagger/OpenAPI, WSDL, especificações funcionais).
- Esclarecimento de pontos pouco claros com a equipa de desenvolvimento ou analistas de negócio.
-
Planeamento de testes:
- Definição da estratégia de teste.
- Seleção de métodos e ferramentas de teste.
- Planeamento do volume de dados de teste.
-
Testes de funcionalidade:
- Cenários positivos: Verificação do comportamento esperado com dados de entrada corretos.
- Cenários negativos: Verificação do tratamento de dados incorretos, erros, valores limite.
- Teste de todas as operações (GET, POST, PUT, DELETE, etc.).
- Validação da estrutura de pedidos e respostas (JSON, XML).
- Verificação dos estados de resposta HTTP (2xx - sucesso, 4xx - erro do cliente, 5xx - erro do servidor).
- Reinício do servidor durante a operação (para cenário negativo).
-
Testes de integração:
- Verificação da interação do serviço web com outros serviços ou sistemas.
- Uso de ferramentas que possam emular respostas de serviços dependentes (servidores simulados).
-
Testes de desempenho:
- Testes de carga: Verificação do comportamento do serviço sob carga esperada.
- Testes de stress: Verificação do funcionamento sob carga superior à esperada para determinar o ponto de falha.
- Testes de estabilidade (Testes de resistência): Verificação do funcionamento do serviço sob carga durante um período prolongado.
- Medição do tempo de resposta e da largura de banda.
-
Testes de segurança:
- Verificação de autenticação e autorização.
- Validação de entrada para prevenir injeções SQL, XSS e outras vulnerabilidades.
- Verificação da presença de HTTPS.
-
Testes de dados:
- Verificação da correção dos dados devolvidos pelo serviço.
- Verificação da integridade dos dados em operações de criação, atualização e eliminação.
- Testes com grandes volumes de dados.
-
Automatização de testes:
- Automatização de testes funcionais rotineiros.
- Uso de bibliotecas e frameworks para automatizar testes de API (Rest Assured, JUnit/TestNG, Pytest, Postman Newman).
- Configuração de CI/CD para a execução automática de testes.
-
Ferramentas:
- Postman, Insomnia (testes manuais e automatizados).
- Apache JMeter, LoadRunner, Gatling (testes de desempenho).
- OWASP ZAP, Burp Suite (testes de segurança).
- Bibliotecas para linguagens de programação (Rest Assured para Java, Requests para Python, etc.).
-
Relatórios:
- Registo dos defeitos encontrados com descrição detalhada dos passos, resultados esperados e reais, dados de requisição/resposta, estado HTTP e logs.
- Elaboração de relatórios de progresso dos testes.
Exemplo de teste automatizado em Java usando Rest Assured:
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;
class UserServiceTest {
@Test
void testGetUserById() {
int userId = 1;
given()
.baseUri("http://api.example.com") // URL base do serviço
.when()
.get("/users/" + userId) // Método e endpoint
.then()
.statusCode(200) // Verificação do código de estado
.body("id", equalTo(userId)) // Verificação do campo na resposta
.body("name", equalTo("John Doe")); // Verificação de outro campo
}
@Test
void testCreateUser() {
String requestBody = "{\n" +
" \"name\": \"Jane Smith\",\n" +
" \"email\": \"jane.smith@example.com\"\n" +
"}";
given()
.baseUri("http://api.example.com")
.contentType("application/json") // Definir tipo de conteúdo
.body(requestBody) // Corpo da requisição
.when()
.post("/users") // Método e endpoint para criar
.then()
.statusCode(201) // Verificação do código "Criado"
.body("name", equalTo("Jane Smith"))
.body("id", org.hamcrest.Matchers.notNullValue()); // Verificação de que o ID foi criado
}
}