Перейти к содержимому

Фотография

Тестирование Web Api

#java #json #validation #api

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 lokofc

lokofc

    Активный участник

  • Members
  • PipPip
  • 78 сообщений
  • ФИО:Pavel

Отправлено 21 апреля 2014 - 16:49

Получил задачу - разработать комплекс автоматизированных тестов для тестирования 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"; и тест успешно пройдет. 

Достаточно ли этой валидации ? Нужно ли как-то проверять содержимое объекта, например на количество атрибутов ?


  • 0

#2 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 22 апреля 2014 - 08:57

Достаточно ли этой валидации ? Нужно ли как-то проверять содержимое объекта, например на количество атрибутов ?

 

 

Тестировать надо согласно требованиям. Если у вас нет требований, то и тестировать не надо.


  • 0

#3 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 22 апреля 2014 - 09:58

 

Достаточно ли этой валидации ? Нужно ли как-то проверять содержимое объекта, например на количество атрибутов ?

 

 

Тестировать надо согласно требованиям. Если у вас нет требований, то и тестировать не надо.

 

Как сказал один из докладчиков на SQA days 15: "Опытный тестировщик знает, что требования есть всегда. Неважно, зафиксированы они, или не зафиксированы".

Кажется, это был Сергей Мартыненко (могу ошибаться).

Банально: требование, чтобы сервис возвращал ответ (не важно, какой), - это тоже требование.

 

Отсебятину тестировать не нужно, потому что инициатива, как известно, наказуема (отсебятина может быть неверной). Но соответствие простейшей логике должно быть.


  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#4 AxelM

AxelM

    Активный участник

  • Members
  • PipPip
  • 118 сообщений
  • ФИО:Зверев Дмитрий
  • Город:Санкт-Петербург


Отправлено 22 апреля 2014 - 19:46

1. Вы пишете "Но с помощью этого я могу осуществлять только проверку типов атрибутов объекта JSON, конкретно в этой схеме я проверяю boolean ли у атрибута isSuccess.", при этом в json schema проверяете ""type":"string"". Тип у Ваc boolean.

 

2. Вы можете проверять кол-во элементов и при помощи json schema. Более того, можно проверять и конкретные значения атрибутов.

Примеры тут: http://json-schema.org/example2.html

 

3. IMHO, тестирование api только через схему не достаточно, необходимо убедиться действительно ли сервер проделал ту работу, на которую ответил данным json. Тем не менее json schema весьма полезна не столько тестировщикам, сколько другим разработчикам при реализации данного api в своих приложениях. Думаю, они Вам за это еще не раз скажут спасибо.


  • 0



Темы с аналогичным тегами #java, #json, #validation, #api

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных