Негативное тестирование API – это процесс тестирования API, в ходе которого намеренно предоставляются неверные или неожиданные входные данные, чтобы проверить, как API обрабатывает такие сценарии. Этот тип тестирования имеет решающее значение для выявления и устранения потенциальных уязвимостей, проблем с обработкой ошибок и обеспечения общей надежности API.
Вот несколько методов проведения негативного тестирования API вместе с примерами кода:
-
Неверное тестирование входных данных:
- Отправлять недопустимые типы данных. Например, если API ожидает целое число, вместо этого отправьте строку.
- Отправлять пустые или нулевые значения: передавать пустые или нулевые значения там, где ожидаются данные.
- Отправка данных, превышающих максимальные ограничения: предоставление данных, длина или размер которых превышает допустимую.
Пример (с использованием Python и библиотеки запросов):
import requests # Invalid data type payload = {"age": "twenty"} response = requests.post("https://api.example.com/users", json=payload) print(response.status_code) # Check the response status code # Empty/null values payload = {"name": ""} response = requests.post("https://api.example.com/users", json=payload) print(response.status_code) # Exceeding maximum limit payload = {"description": "Lorem ipsum" * 1000} response = requests.post("https://api.example.com/posts", json=payload) print(response.status_code) -
Тестирование обработки ошибок:
- Проверка ответов на ошибки. Отправляйте запросы, которые, как известно, вызывают ошибки, и проверяйте возвращаемые коды ошибок и сообщения.
- Проверка обработки исключений: намеренно вызывайте исключения или ошибки в API и проверяйте механизм обработки ошибок.
Пример (с использованием Python и библиотеки запросов):
import requests # Test for error response response = requests.get("https://api.example.com/users/99999") print(response.status_code) # Check the response status code # Test for exception handling response = requests.get("https://api.example.com/invalid-endpoint") print(response.status_code) -
Тестирование безопасности:
- Атаки с внедрением: попытайтесь внедрить SQL, XML или другие формы атак с внедрением, чтобы обеспечить безопасность API.
- Тестирование межсайтового скриптинга (XSS): проверьте, уязвим ли API к XSS-атакам, путем внедрения вредоносных скриптов.
Пример (с использованием Python и библиотеки запросов):
import requests # SQL Injection payload = {"username": "' OR '1'='1'"} response = requests.post("https://api.example.com/login", data=payload) print(response.status_code) # Check the response status code # Cross-site scripting (XSS) payload = "<script>alert('XSS attack');</script>" response = requests.post("https://api.example.com/comments", data=payload) print(response.status_code)
Выполняя отрицательное тестирование с использованием этих методов, вы можете обнаружить потенциальные уязвимости, улучшить обработку ошибок и повысить общую безопасность и стабильность вашего API.