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

lokofc

Регистрация: 10 июн 2013
Offline Активность: 16 мая 2014 14:03
-----

Мои темы

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

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"; и тест успешно пройдет. 

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


Проблемы с кодировкой при сборке на TeamCity

07 февраля 2014 - 09:11

Добавил в настройках build step шаг build, и кириллица перестала работать. Ранее я собирал локально через eclipse, а черех TC только прогонял тесты - поэтому было все хорошо.

 

Кто - нибудь знает как правильно задать кодировку шагу build ?

 

пишу на java, соответственно собираю при помощи ant


Java robot на удаленном сервере

27 января 2014 - 09:31

Всем доброго времени суток !

 

Запускаю тесты через TeamCity, проект с тестами находится на удаленном сервере. Проблема в том, что Java Robot работает очень не стабильно и падает по непонятным причинам. Гуглил это вопрос, решение казалось бы нашел - нужно запускать билд агент не как сервис, а как приложение, но и это не помогло, все равно этот робот иногда не работает. Замечаю, что число падений, когда подключение неактивно стремится к 100%, при активном падений меньше, но все равно присутствуют.

 

Как возможное решение - использовать аналог класса Java Robot, но ничего толкового найти не могу, класс Actions мне не поможет, т к в сценариях нужно прикреплять файлы (работать с окнами винды)


Запуск одного теста более 1 раза

16 декабря 2013 - 16:29

Всем доброго времени суток.
Использую WebDriver + Junit + Java
Сталкивался ли кто-либо со следующей задачей:
Мне необходимо понять присутствует ли вероятность рандомного падения тестов. А для этого нужно запускать мои тесты (пусть их 10 штук) по 100 раз каждый и считать число падений.

На данный момент реализовал очень колхозно(нужно сделать срочно, а лучше я не придумал) :

1) переписал листеннера, который логгирует общее число тестов и число упавших.

2) Создал класс, в него напихал все свои тесты по 20 раз каждый (да это очень убого, но лучше не умею)
Выгляти это примерно так
@RunWith(SeleniumRunner.class)
public class test {

@Test    
    public void test1(){
        DocumentRegistration ww = new DocumentRegistration(driver);
        ww.NewSimpleTask(); 
}
@Test    
    public void test1(){

        DocumentRegistration ww = new DocumentRegistration(driver);
        ww.NewSimpleTask();
}
@Test    
    public void test1(){

        DocumentRegistration ww = new DocumentRegistration(driver);
        ww.NewSimpleTask();
}
.
.
.
.
 и тд


}

Это работает, но может кто-нибудь знает как по-нормальному можно решить эту задачу ? Пытался также привлечь Junit reporter, но он, зараза, каждый раз переписывает результаты теста и в итоге статистики мне не получить.

Как поймать исключение?

01 ноября 2013 - 15:48

Хочу поймать исключение, которое вылетает, если объект не найден, шлепнуть скрин и просто продолжить дальше, например:

try { //do smht}
catch(e) {Log.Picture(obj)}

но почемуто блок catch не выполняется, когда вылетает ошибка "Не найден объект"