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

Тестирование REST API
онлайн, начало 2 ноября
Тестирование безопасности
онлайн, начало 28 октября
Практикум по тест-дизайну 2.0
онлайн, начало 30 октября
Автоматизатор мобильных приложений
онлайн, начало 28 октября
Фотография

Ошибка при симуляции ввода данных пользователем


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

#1 Julia_Sh

Julia_Sh

    Новый участник

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Юлия
  • Город:Новосибирск

Отправлено 28 февраля 2013 - 12:41

Помогите разобраться. Вообще слабо пока понимаю jmeter. Не могу передать данные. Краткое описание: происходит заполнение полей формы (полей около десятка). Делаю это методом PUT. Когда использовала метод POST, в ответ получала 403 (что тоже, кстати, оказалось для меня непонятным. Если кто-то знает причину - буду благодарна). В итоге: при методе PUT в ответах получаю следующее:

java.net.SocketException: Unexpected end of file from server
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
	at java.net.HttpURLConnection.getResponseCode(Unknown Source)
	at org.apache.jmeter.protocol.http.sampler.HTTPJavaImpl.readResponse(HTTPJavaImpl.java:264)
	at org.apache.jmeter.protocol.http.sampler.HTTPJavaImpl.sample(HTTPJavaImpl.java:520)
	at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:62)
	at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1088)
	at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1077)
	at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:428)
	at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Unexpected end of file from server
	at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
	at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
	at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
	at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(Unknown Source)
	at java.net.URLConnection.getHeaderFieldInt(Unknown Source)
	at java.net.URLConnection.getContentLength(Unknown Source)
	at org.apache.jmeter.protocol.http.sampler.HTTPJavaImpl.readResponse(HTTPJavaImpl.java:230)
	... 7 more

Заранее спасибо.

P.S.: план для "залогинивания" в системе написала, и это работает. В ответе получаю то, что нужно: данный пользователь вошел в систему. Но вот при работе с самой системой уже возникает такой затык.
  • 0

#2 fesd

fesd

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

  • Members
  • PipPipPipPip
  • 262 сообщений

Отправлено 28 февраля 2013 - 13:00

При составлении сценария использовали http proxy server http://jmeter.apache...TP_Proxy_Server ?
Если нет, то попробуйте.
  • 0

#3 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 850 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 28 февраля 2013 - 14:20

А почему именно метод PUT? Этот метод в основном используется для передачи файлов.
  • 0

http://starbugss.blogspot.ru - "Звездные баги", мой блог.


#4 schizophrenia

schizophrenia

    Новый участник

  • Members
  • Pip
  • 58 сообщений
  • ФИО:Mikhail Epikhin
  • Город:Moscow

Отправлено 28 февраля 2013 - 16:34

А вы не могли бы показать Request / Response при такой ошибке? Попробуйте записать с помощью tcpdump.

Следующий вопрос. А вы случайно Jetty не используете? Обычно девелоперы используют её по странному, и часто, когда акцепторы (Acceptor) заканчиваются, а у диспатчера есть новый HttpConnection, которого не на кого вешать, то Dispatcher отвечает пустым ответом. Вы мониторите машинку которую тестируете? Мониторите потоки/акцепторы, если это все же Jetty? Похоже что у вас просто сервер не отдает корректно ответ и поэтому Jmeter не может распарсить пустой ответ.
  • 0

July 2015 — Present / Service Reliability Engineer at Yandex 

Sep 2012 — July 2015 / Performance Test Engineer at Yandex 
Feb 2012 — Aug 2012 / Performance Test Engineer at Performance Lab 


#5 Julia_Sh

Julia_Sh

    Новый участник

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Юлия
  • Город:Новосибирск

Отправлено 01 марта 2013 - 05:40

При составлении сценария использовали http proxy server http://jmeter.apache...TP_Proxy_Server ?
Если нет, то попробуйте.

Конечно я использую прокси-сервер. Я сама понятия не имею, какие запросы нужно передавать серверу, чтобы исполнялся нужный мне сценарий. Поэтому я использую план, записанный в рекодере.
  • 0

#6 Julia_Sh

Julia_Sh

    Новый участник

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Юлия
  • Город:Новосибирск

Отправлено 01 марта 2013 - 05:41

А почему именно метод PUT? Этот метод в основном используется для передачи файлов.

Потому что при POST я получаю 403. А при PUT я получаю что-то отличное от этого. Я пробую все подряд.
  • 0

#7 Julia_Sh

Julia_Sh

    Новый участник

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Юлия
  • Город:Новосибирск

Отправлено 01 марта 2013 - 05:47

А вы не могли бы показать Request / Response при такой ошибке? Попробуйте записать с помощью tcpdump.

Следующий вопрос. А вы случайно Jetty не используете? Обычно девелоперы используют её по странному, и часто, когда акцепторы (Acceptor) заканчиваются, а у диспатчера есть новый HttpConnection, которого не на кого вешать, то Dispatcher отвечает пустым ответом. Вы мониторите машинку которую тестируете? Мониторите потоки/акцепторы, если это все же Jetty? Похоже что у вас просто сервер не отдает корректно ответ и поэтому Jmeter не может распарсить пустой ответ.

Честно - не могу ответить ни на один ваш вопрос. Понятия не имею, о чем вы.
  • 0

#8 schizophrenia

schizophrenia

    Новый участник

  • Members
  • Pip
  • 58 сообщений
  • ФИО:Mikhail Epikhin
  • Город:Moscow

Отправлено 01 марта 2013 - 06:23


А вы не могли бы показать Request / Response при такой ошибке? Попробуйте записать с помощью tcpdump.

Следующий вопрос. А вы случайно Jetty не используете? Обычно девелоперы используют её по странному, и часто, когда акцепторы (Acceptor) заканчиваются, а у диспатчера есть новый HttpConnection, которого не на кого вешать, то Dispatcher отвечает пустым ответом. Вы мониторите машинку которую тестируете? Мониторите потоки/акцепторы, если это все же Jetty? Похоже что у вас просто сервер не отдает корректно ответ и поэтому Jmeter не может распарсить пустой ответ.

Честно - не могу ответить ни на один ваш вопрос. Понятия не имею, о чем вы.



Какой сервис вы тестируете? Какой сайт? На каком языке он написан? С использованием каких фреймворков?
  • 0

July 2015 — Present / Service Reliability Engineer at Yandex 

Sep 2012 — July 2015 / Performance Test Engineer at Yandex 
Feb 2012 — Aug 2012 / Performance Test Engineer at Performance Lab 


#9 Julia_Sh

Julia_Sh

    Новый участник

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Юлия
  • Город:Новосибирск

Отправлено 01 марта 2013 - 06:59



А вы не могли бы показать Request / Response при такой ошибке? Попробуйте записать с помощью tcpdump.

Следующий вопрос. А вы случайно Jetty не используете? Обычно девелоперы используют её по странному, и часто, когда акцепторы (Acceptor) заканчиваются, а у диспатчера есть новый HttpConnection, которого не на кого вешать, то Dispatcher отвечает пустым ответом. Вы мониторите машинку которую тестируете? Мониторите потоки/акцепторы, если это все же Jetty? Похоже что у вас просто сервер не отдает корректно ответ и поэтому Jmeter не может распарсить пустой ответ.

Честно - не могу ответить ни на один ваш вопрос. Понятия не имею, о чем вы.



Какой сервис вы тестируете? Какой сайт? На каком языке он написан? С использованием каких фреймворков?

Это все - строго конфиденциальная информация) Написано на java. По идее, при вводе данных в форму и нажатии на кнопочку "сохранить" формируется soap - запрос и отсылается серверу, ответ - soap-request, в котором содержится уникальный id, который подтверждает, что запрос прошел успешно.
  • 0

#10 schizophrenia

schizophrenia

    Новый участник

  • Members
  • Pip
  • 58 сообщений
  • ФИО:Mikhail Epikhin
  • Город:Moscow

Отправлено 01 марта 2013 - 07:29




А вы не могли бы показать Request / Response при такой ошибке? Попробуйте записать с помощью tcpdump.

Следующий вопрос. А вы случайно Jetty не используете? Обычно девелоперы используют её по странному, и часто, когда акцепторы (Acceptor) заканчиваются, а у диспатчера есть новый HttpConnection, которого не на кого вешать, то Dispatcher отвечает пустым ответом. Вы мониторите машинку которую тестируете? Мониторите потоки/акцепторы, если это все же Jetty? Похоже что у вас просто сервер не отдает корректно ответ и поэтому Jmeter не может распарсить пустой ответ.

Честно - не могу ответить ни на один ваш вопрос. Понятия не имею, о чем вы.



Какой сервис вы тестируете? Какой сайт? На каком языке он написан? С использованием каких фреймворков?

Это все - строго конфиденциальная информация) Написано на java. По идее, при вводе данных в форму и нажатии на кнопочку "сохранить" формируется soap - запрос и отсылается серверу, ответ - soap-request, в котором содержится уникальный id, который подтверждает, что запрос прошел успешно.


Попробуйте тестировать используя не WebSoap/HTTP семплеры, а простой TCP Sampler. Записывайте все ответы. И поставьте Assert на длину ответа. Как видно, используете java, и подозреваю на 95% что там выше описанная проблема. Если простым языком объяснить то ситуация следующая. Вы пускаете нагрузку, но у сервера на всегда хватает потоков чтобы обрабатывать ваши запросы. Диспетчер, которые принимает задачи и раскидывает их по работающим потокам (workers) может отвечать пустым ответом, в случае если все потоки-workers уже заняты.
  • 0

July 2015 — Present / Service Reliability Engineer at Yandex 

Sep 2012 — July 2015 / Performance Test Engineer at Yandex 
Feb 2012 — Aug 2012 / Performance Test Engineer at Performance Lab 


#11 schizophrenia

schizophrenia

    Новый участник

  • Members
  • Pip
  • 58 сообщений
  • ФИО:Mikhail Epikhin
  • Город:Moscow

Отправлено 01 марта 2013 - 08:04

Exception как раз и говорит про подобную ошибку:

Caused by: java.net.SocketException: Unexpected end of file from server

Исключение сокета, вызыванное неожиданным концом сообщения от сервера. Т.е. ответ либо передался не полностью, либо передается невалидный ответ изначально (например пустой ответ).

at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(Unknown Source)
at java.net.URLConnection.getHeaderFieldInt(Unknown Source)
at java.net.URLConnection.getContentLength(Unknown Source)
at org.apache.jmeter.protocol.http.sampler.HTTPJavaImpl.readResponse(HTTPJavaImpl.java:230)
... 7 more


Ну а тут ясно написано на каком этапе возникает ошибка. На этапе парсинга ответа от сервера. И JMeter не смог распарсить ответ потому что он невалидный. Например из-за того что он не полностью передался или изначально пустой.
  • 0

July 2015 — Present / Service Reliability Engineer at Yandex 

Sep 2012 — July 2015 / Performance Test Engineer at Yandex 
Feb 2012 — Aug 2012 / Performance Test Engineer at Performance Lab 


#12 Куатор

Куатор

    Постоянный участник

  • Members
  • PipPipPip
  • 247 сообщений
  • ФИО:Комендантов Илья
  • Город:Украина, Одесса

Отправлено 01 марта 2013 - 08:19

Ну, во-первых правильно было бы изначально узнать у разработчиков, как именно происходит общение клиента с сервисом (какой вид запроса, скорей всего это POST, хоть и не обязательно, какие параметры, какие заголовки.. ), гадать , подставляя подряд доступные виды запроса - себе дороже.
Либо попробовать самой это определить, если, например, есть тестовая страничка, на которой заполняются данные и потом отправляются на сервис, тогда можно воспользоваться Fiddler чтобы отследить в каком виде это происходит.
Либо, если странички нет (а скорей всего её нет), тогда поищи вспомогательные тулзовины для отправки soap-requests, поэкспериметнтируй там (если почему-то нельзя узнать всю необходимую инфу у девелоперов) и когда добьёшься нужного тебе ответа, только после этого , пытайся реализовать необходимый запрос с помощью JMeter :friends:
  • 0
Идеальный тестировщик - человек с золотыми руками, растущими из ж...

#13 schizophrenia

schizophrenia

    Новый участник

  • Members
  • Pip
  • 58 сообщений
  • ФИО:Mikhail Epikhin
  • Город:Moscow

Отправлено 01 марта 2013 - 09:09

Ну, во-первых правильно было бы изначально узнать у разработчиков, как именно происходит общение клиента с сервисом (какой вид запроса, скорей всего это POST, хоть и не обязательно, какие параметры, какие заголовки.. ), гадать , подставляя подряд доступные виды запроса - себе дороже.
Либо попробовать самой это определить, если, например, есть тестовая страничка, на которой заполняются данные и потом отправляются на сервис, тогда можно воспользоваться Fiddler чтобы отследить в каком виде это происходит.
Либо, если странички нет (а скорей всего её нет), тогда поищи вспомогательные тулзовины для отправки soap-requests, поэкспериметнтируй там (если почему-то нельзя узнать всю необходимую инфу у девелоперов) и когда добьёшься нужного тебе ответа, только после этого , пытайся реализовать необходимый запрос с помощью JMeter :friends:/>


Вы читали последниий абзац ТС?
  • 0

July 2015 — Present / Service Reliability Engineer at Yandex 

Sep 2012 — July 2015 / Performance Test Engineer at Yandex 
Feb 2012 — Aug 2012 / Performance Test Engineer at Performance Lab 


#14 Julia_Sh

Julia_Sh

    Новый участник

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Юлия
  • Город:Новосибирск

Отправлено 01 марта 2013 - 10:12

Ну, во-первых правильно было бы изначально узнать у разработчиков, как именно происходит общение клиента с сервисом (какой вид запроса, скорей всего это POST, хоть и не обязательно, какие параметры, какие заголовки.. ), гадать , подставляя подряд доступные виды запроса - себе дороже.
Либо попробовать самой это определить, если, например, есть тестовая страничка, на которой заполняются данные и потом отправляются на сервис, тогда можно воспользоваться Fiddler чтобы отследить в каком виде это происходит.
Либо, если странички нет (а скорей всего её нет), тогда поищи вспомогательные тулзовины для отправки soap-requests, поэкспериметнтируй там (если почему-то нельзя узнать всю необходимую инфу у девелоперов) и когда добьёшься нужного тебе ответа, только после этого , пытайся реализовать необходимый запрос с помощью JMeter :friends:/>

Окай, а тогда при POST я получаю 403 Forbidden - что мне с этим делать?
  • 0

#15 Куатор

Куатор

    Постоянный участник

  • Members
  • PipPipPip
  • 247 сообщений
  • ФИО:Комендантов Илья
  • Город:Украина, Одесса

Отправлено 01 марта 2013 - 17:26

Окай, а тогда при POST я получаю 403 Forbidden - что мне с этим делать?

Ну, тогда может поможет Линк 1 :

When you run the test plan in any machine, pls remove that machine from out of proxy server then run the test plan it works.

Ну или Линк 2
:friends:

Хотя первая ссылка, скорей для информации, там походу другой случай :)
  • 0
Идеальный тестировщик - человек с золотыми руками, растущими из ж...


Тестирование производительности (JMeter)
онлайн
Тестирование удобства использования
онлайн
Тестирование REST API
онлайн
Тестирование веб-приложений 2.0
онлайн



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

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

Яндекс.Метрика
Реклама на портале