Jump to content

All Activity

This stream auto-updates

  1. Last week
  2. This is a unique place for fashionable women's clothing and accessories. We offer our clients women's clothing, jewelry, cosmetics and health products, shoes, bags and much more. https://fas.st/Ujfha
  3. Earlier
  4. Всем привет! делюсь находками... может конечно это уже не ново, но мне вот прям "зашло"... Тестирование. То самое, многострадальное, которое мы пока так и не затащим толком. А именно интеграционное тестирование. Postman наверное уже все юзают для отладки API. А вот что в постман есть тесты - узнал только сегодня. Вернее что то такое слышал. Но реально попробовал сегодня. И мне это очень понравилось. Делюсь. В общем, есть некий сервис, который умеет принимать API читая JSON, переданный в запросе. Что то типа такого: Отдаем содержимое в JSON, получаем в JSON. Так вот там в Postman есть вкладочка tests: В ней можно написать простенький скриптик, который будет выполнять анализ ответа и что то с этим делать: // Проверка ответа pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); // Проверка длительности открытия pm.test("Response time is less than 1.5s", function () { pm.expect(pm.response.responseTime).to.be.below(1500); }); // Проверка структуры var schema = { "type": "object", "properties": { "response": { "type": "object", "properties": { "text": {"type":"string"}, "tts": {"type":"string"}, "buttons": { "type":"array", "items": { "type":"object", "required":["title"], "properties": { "title": {"type":"string"} } } }, "end_session": {"type":"boolean"} }, "required":["text","tts","buttons","end_session"] }, "version": {"type": "string"} }, "required":["response","version"] }; pm.test('Schema is valid', function() { pm.response.to.have.jsonSchema(schema); }); // Проверка содержимого pm.test('Check answer content', function() { var jsonData = pm.response.json(); // Проверка кнопок pm.expect(jsonData.response.buttons.length).to.eql(4); pm.expect(jsonData.response.buttons[0].title).to.eql("Русский"); pm.expect(jsonData.response.buttons[1].title).to.eql("Помощь"); pm.expect(jsonData.response.buttons[2].title).to.eql("English"); pm.expect(jsonData.response.buttons[3].title).to.eql("Help"); // Проверка наличия текста pm.expect(jsonData.response.text).not.eql(null); pm.expect(jsonData.response.text).not.eql(""); pm.expect(jsonData.response.tts).not.eql(null); pm.expect(jsonData.response.tts).not.eql(""); // Проверка end_session pm.expect(jsonData.response.end_session).to.eql(false); // Проверка version pm.expect(jsonData.version).to.eql("1.0"); }); Данный скрипт обрабатывает именно текущий запрос. Можно к каждому запросу написать по тестовому скрипту, который будет проверять код ответа сервера, время, за которое выполнился скрипт, валидировать схему JSON-ответа, определять, чтобы в ответе были или наоборот не были те или иные значения. В общем по полной управлять тем, что отдает сервер, и что бы вы хотели проверить в этом ответе. Под тестирование сервиса я создал новую коллекцию. Всю коллекцию можно запустить на тестирование. Тогда все папки последовательно и все запросы в папках последовательно запустятся и запустятся тесты, если они написаны. Запускаем тест всей коллекции из меню коллекции нажав пункт "Run collection": Можно почекать какие то отдельные запросы, или оставить как есть, чтобы проверило все запросы. Нажимаем кнопку и понеслась ... Через несколько секунд результаты: 75 тестов успешно и 1 не успешный. Можно глянуть на неуспешные: В частности здесь ошибка в тестировании времени отклика в запросе "Неизвестный интент [intents: hello]": я поставил, что должно выполняться не более полутора секунд (1500мс), а по факту сервер отвечал 5 секунд. Вот и среагировало... В общем то тестов получается достаточно много. Нужно немного вспомогательных функций на backend, чтобы формировало и подтирало тестовые данные. Чтобы прям без заглушек "по живому" можно было проверять. Но результатами я очень доволен! Если нужно, чтобы ваш сервис имел низкий уровень забагованности, то вот пожалуйста бесплатный классный иснтруемент, как можно одной кнопкой проверять самые разные ситуации. Один раз написали, потом всю жизнь пользуемся. Сразу видим где что мы починили, что поломало нам в другом месте. P.S. Ну и небольшой "минус" - судя по всему эта штука работает в ручном режиме. Как ее запускать автоматически при поставке кода на прод и как включить в цикл проверок в CI/CD - я пока не понял. Возможно как то можно, но надо разбираться еще с этим. Так что данная возможность пока наверное для именно разработки. А не для полноценной стадии при поставке кода на прод-сервера. Но мне сейчас, на данном этапе жизни проекта, этого более чем "за глаза".
  5. Рспользование самых современных логистических методов позволяет нам максимально выгодным СЃРїРѕСЃРѕР±РѕРј осуществлять жд перевозки ваших РіСЂСѓР·РѕРІ крытыми вагонами, полувагонами, специальными вагонами (хопперами), рефрижераторными вагонами; использование универсальных контейнеров всех типов. Грузоперевозки железнодорожным транспортом сопровождаются выполнением погрузочных работ, обеспечивается сохранность РіСЂСѓР·Р°, таможенное оформление, оформление транспортных документов (включая РґРѕРіРѕРІРѕСЂ страхования). [url=http://railwayukr.com/osobennosti-zheleznodorozhnyx-perevozok.htm]Железнодорожные перевозки РіСЂСѓР·РѕРІ РїРѕ СЂРѕСЃСЃРёРё[/url] @nerty
  1. Load more activity
×
×
  • Create New...