Получил задачу - разработать комплекс автоматизированных тестов для тестирования API веб приложения. Проблема в том, что я не программист и четкого понимания ЧТО тестировать нет, т к не встречался еще с вопросами поломки того или инного веб сервиса и отсюда не могу продумать план тестирования.
Объект тестирования: набор веб сервисов, каждый из которых отвечает на запрос объектом JSON.
Что уже сделал: пока нагугил валидацию через JSON schema https://code.google....p/rest-assured/. Вроде реализовал и это работает.
Суть такая:
1) Кидаю запрос сервису
2) Получаю ответ в виде JsonObject
3) Генерирую схему через http://www.jsonschema.net/#
4) Далее в среде(я использую java+junit) подгружаю эту схему и делаю проверку соответствия этой схеме.
import static com.jayway.restassured.module.jsv.JsonSchemaValidator.matchesJsonSchemaInClasspath; import static org.hamcrest.MatcherAssert.assertThat; import org.junit.Test; public class testClass { @Test public void validates_schema_in_classpath() { String json = "{\"isSuccess\":false}";// Эта строка с ответом от сервиса assertThat(json, matchesJsonSchemaInClasspath("greeter-schema.json")); } }
greeter-schema.json: { "type":"object", "$schema": "http://json-schema.org/draft-03/schema", "id": "http://jsonschema.net", "required":true, "properties":{ "isSuccess": { "type":"string", "id": "http://jsonschema.net/isSuccess", "required":true } } }
Но с помощью этого я могу осуществлять только проверку типов атрибутов объекта JSON, конкретно в этой схеме я проверяю boolean ли у атрибута isSuccess. Здесь не решается вопрос проверки структуры ответа. Например, я могу поменять строку с ответом на такую String json = "{\"isSuccess\":false},testestestest"; и тест успешно пройдет.
Достаточно ли этой валидации ? Нужно ли как-то проверять содержимое объекта, например на количество атрибутов ?