По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Прямо сейчас, пока ты читаешь эту статью, в серверной комнате организации А под толстым слоем пыли, окруженная множеством переплетенных проводов мигает разноцветными лампочками офисная АТС. Но давайте будем тише - дежурный IT - специалист, скорее всего спит, поставив переадресацию на мобильный телефон - а вдруг что - то сломается? Вообще, облака, на своем старте - наделали шума. Все начали задаваться вопросом - а зачем нам сервер в офисе, когда можно арендовать VPS/VDS/SaaS в облаке и “не париться”? В статье мы ответим на вопрос - почему одни компании выносят свою телефонию в облако или покупают услугу виртуальной АТС, тем самым создавая возможность поставить вендинговую машину или настольный теннис в серверной комнате, а другие, продолжают перебирать провода, протирать пыль с серверов и наслаждаться мерцанием цветовых серверных индикаторов от офисной АТС. Бюджет: сравниваем облако и размещение в офисе Первое, что стоит спросить себя - а как мы будем платить за АТС? Что для нас важно, а что нет? Мы, как интегратор, все чаще сталкиваемся с тем, что в компаниях (SMB) идет сокращение бюджета на IT и соответствующие отделы находят выходы из этой ситуации. С точки зрения локальной (офисной) АТС - далее мы будем называть ее порой “on-premise” решение (говоря так, мы чувствуем себя немного круче), IT - отдел экономит деньги ежемесячной оплате хосту (SaaS платформе, которая дает вам услугу виртуальной АТС). Но эта экономия реальна только в том случае, если вы не меняете аппаратные компоненты сервера с АТС. В таком случае модель вы платите только за услуги провайдера, электричество и заработную плату IT’шнику. Модель “купил - запитал - работает, не трожь” работает, более чем. Однако, в случае выхода из строя того или иного компонента, компания несет определенного рода дополнительные расходы. Отметим, опять же, на нашем опыте - случается это редко. Современные сервера имеют высокое качество комплектующих, и если вы не планируете поливать сервера водой, обдавать из огнемета или выставлять на улице - скорее всего, данная неприятность вам не грозит. Не менее важный фактор - обновление ПО. Проблема в том, что если вы обновляете программное обеспечение офисной “on-premise” (да - да, мы же предупреждали) АТС, есть риск выхода из строя. Опять же, данная проблема решается простым резервированием, так называемой отказоустойчивостью, по принципу Active - Standby (один сервер активен, а второй в резерве и всегда готов выйти в активную роль). Этот нюанс требует дополнительной проработки, а следовательно, дополнительных денежных затрат. Теперь про масштабируемость. В случае, если проснувшись в один прекрасный день вы осознаете, что ваш бизнес вырос в разы (вы сходили на бизнес - тренинг, к шаману или проделали магический обряд), то офисные локально размещенные станции масштабируются несколько сложнее и затратнее, чем виртуальные. Это отражается на деньгах и стоимости масштабирования. Тут есть важный пункт - офисная АТС гораздо более гибка, чем виртуальная. Дело в том, что виртуальная АТС дается вам в неком готовом контейнере предустановок, где SaaS платформа редко дает возможность доработки станции. Да, признаем, некоторые облачные АТС имеют API, но когда вопрос заходит о масштабном изменении логики работы АТС (кастомизация скриптами, например) - тут происходит коллапс. В этом плане офисные АТС явно выигрывают перед облачными, несмотря на стоимость затрат на эту самую кастомизацию. Просто сам факт ее возможность при быстром росте бизнеса - это преимущество (поверьте, знаем о чем говорим на опыте разных проектов). Редкие, но некоторые IT - отделы предпочитают облачную телефонию. Это более предсказуемо и снимает с них часть ответственности. Например, когда директор компании задает вопрос ITшнику почему не работает телефония, тот может смело спихнуть ответственность на виртуального хостера. Модернизация и апгрейд: витаем в облаках или в офисе? Тут пальму первенства заслуженно забирают облака. Дело в том, что если у вас в офисе живет on-premise АТС, так или иначе, рано или поздно вам придётся обновлять аппаратные компоненты сервера (процессор, оперативная память, наращивать мощность RAID массивов, тем самым увеличивая пространство для хранения данных). Это происходит по двум причинам: растёт нагрузка на сервер и текущие мощности уже не справляются, или обновление программного обеспечения требует более производительных комплектующих. При облачном размещении таких проблем нет - ваш хост автоматически наращивает мощности виртуальной машины, внутри которой живет ваша АТС. Это, безусловно, сказывается на мощности, но выходит дешевле покупки комплектующих под локальных сервак. Кстати про обновление - в случае решения, размещённого в вашем офисе, обновление ПО производят ваши ITшники, тогда как при размещении в облаке, хост сам обновляет ПО и раскатывает их на боевую среду. Интеграция телефонии с внешними системами Любителям on-premise решений посвящается. Откиньтесь на диване поудобнее - в этой главе уже есть победитель. И это не облако. Дело в том, что с ростом компании, уровень технологичности неизбежно повышается. Новые направления деятельности и увеличение потока клиентов обязывают связать ИТ - узлы в единую экосистему: интеграция телефонии и CRM, справочниками, базами данных, звонки по нажатию, триггерный автоматический обзвон, предиктивный дайлер и прочие. Все эти “хотелки” так или иначе требуют доработки вашей станции, так как интеграцию со всем на свете разработчики облачный виртуальных АТС предусмотреть не могут, а открыть исходный код и раздвинув горизонт кастомизации до бесконечности, рискуют получить уязвимости в безопасности. Именно по этой причине, офисная коробка дает больше. Например: вы хотите сделать маршрутизацию на базе гороскопа клиента. В вашей CRM есть номер телефона клиента, имя и его дата рождения. При входящем звонке, телефония “смотрит” в вашу CRM и видит месяц рождения клиента (по номеру, с которого он звонит). Кастомная прослойка понимает - он рыба, а рыбам, сегодня не рекомендуется иметь деловых отношений. И на базе этого решения офисная телефонная станция терминирует вызов. Как вам? Пожалуй, надо признать, пример весьма спорный. Но посыл понятен - коробка в офисе даст больший пул возможностей, а облако, максимум, обрезанный API. Катастрофы: коробки или облако? В офисе над вами прорвало трубу и залило серверную (мы реально встречали такие кейсы). Сервера вышли из строя, не работает ничего. Есть две новости, начнем с хорошей: Сервер был на гарантии и имеется контракт на горячую замену от интегратора; Сервера больше нет. Несмотря на контракт горячей замены, просто в минимум 24 часа вам гарантирован (если не реализована схема отказоустойчивости с географически распределенными серверами по ЦОДам). В облаке, как правило, SaaS дает вам гарантию работоспособности от 90%. Облачная вычислительная мощность живет в разных ЦОДах, при отказе аппаратного сервера, виртуальная машина с вашей ВАТС переедет на другой аппаратный сервер за сотые доли секунды. Что неплохо. Тут, пожалуй, для SMB компании первенство мы отдадим облаку. Итоги Как облака, так и размещенные в офисе решения имеют свои преимущества. Если курс вашей компании на безграничную кастомизацию, интеграцию всех ИТ - систем между собой для создания экосистемы и амбициозные бизнес - процессы, у вас есть грамотный IT - специалист, то выбирайте коробку, которую вы разместите в офисе. Если вы не хотите проблем с сервером, обслуживанием, вы малый бизнес, у вас нет своего IT’шника в штате и хотите рабочую телефонию с минимумом головной боли - облако подойдет под ваши требования.
img
Перед началом, советуем почитать материал про плоскость управления. Топология - это набор связей (или ребер) и узлов, которые описывают всю сеть. Обычно топология описывается и рисуется как граф, но она также может быть представлена в структуре данных, предназначенной для использования машинами, или в дереве, которое обычно предназначено для использования людьми. Топологическую информацию можно обобщить, просто сделав так, чтобы пункты назначения, которые физически (или виртуально) соединены на расстоянии нескольких прыжков, казались непосредственно присоединенными к локальному узлу, а затем удалив информацию о связях и узлах в любой маршрутной информации, переносимой в плоскости управления, с точки суммирования. Рисунок 4 иллюстрирует эту концепцию. Изучение топологии Казалось бы, достаточно просто узнать о топологии сети: изучить подключенные каналы передачи данных. Однако то, что кажется простым в сетях, часто оказывается сложным. Изучение локального интерфейса может рассказать вам о канале, но не о других сетевых устройствах, подключенных к этому каналу. Кроме того, даже если вы можете обнаружить другое сетевое устройство, работающее с той же плоскостью управления по определенному каналу, это не означает, что другое устройство может вас обнаружить. Таким образом, необходимо изучить несколько вопросов. Обнаружение других сетевых устройств Если маршрутизаторы A, B и C подключены к одному каналу, как показано на рисунке 5, какие механизмы они могут использовать для обнаружения друг друга, а также для обмена информацией о своих возможностях? Первое, что следует отметить в отношении сети, показанной в левой части рисунка 5, - это то, что интерфейсы не соответствуют соседям. Фактические отношения соседей показаны в правой части рисунка 5. У каждого маршрутизатора в этой сети есть два соседа, но только один интерфейс. Это показывает, что плоскость управления не может использовать информацию об интерфейсе для обнаружения соседей. Должен быть какой-то другой механизм, который плоскость управления может использовать для поиска соседей. Ручная настройка - одно из широко распространенных решений этой проблемы. В частности, в плоскостях управления, предназначенных для перекрытия другой плоскости управления, или плоскостях управления, предназначенных для построения отношений соседства через несколько маршрутизируемых переходов по сети, ручная настройка часто является самым простым доступным механизмом. С точки зрения сложности, ручная настройка очень мало добавляет к самому протоколу. Например, нет необходимости в какой-либо форме многоадресного объявления соседей. С другой стороны, ручная настройка соседей требует настройки информации о соседях, что увеличивает сложность с точки зрения конфигурации. В сети, показанной на рисунке 5, маршрутизатор A должен иметь отношения соседства, настроенные с помощью B и C, маршрутизатор B должен иметь отношения соседства, настроенные с помощью A и C, а маршрутизатор C должен иметь отношения соседства, настроенные с помощью A и B. Даже если настройка соседей автоматизирована, ручная настройка углубляет и расширяет поверхности взаимодействия между плоскостями управления и контроля. Определение соседей из маршрутных объявлений - это решение, которое когда-то было широко распространено, но стало менее распространенным. В этой схеме каждое устройство периодически объявляет информацию о доступности и / или топологии. Когда маршрутизатор впервые получает информацию о маршрутизации от другого устройства, он добавляет удаленное устройство в локальную таблицу соседей. Пока соседнее устройство продолжает отправлять информацию о маршрутизации на регулярной основе, отношения между соседями будут считаться активными или активными. При выводе соседей из объявлений о маршрутизации важно иметь возможность определить, когда сосед вышел из строя (чтобы информация о достижимости и топологии, полученная от соседа, могла быть удалена из любых локальных таблиц). Наиболее распространенный способ решения этой проблемы - использование пары таймеров: таймера задержки или отключения и таймера обновления или объявления. Пока сосед отправляет обновление или объявление в пределах таймера отключения или задержки, он считается включенным или активным. Если весь "мертвый" период проходит без получения каких-либо обновлений, сосед считается "мертвым", и предпринимаются некоторые действия, чтобы либо проверить информацию о топологии и доступности, полученную от соседа, либо он просто удаляется из таблицы. Нормальная взаимосвязь между таймером отключения и таймером обновления составляет 3× - таймер отключения установлен на трехкратное значение таймера обновления. Следовательно, если сосед не отправляет три подряд обновления или объявления, таймер бездействия активируется и начинает обработку неработающего соседа. Явные приветствия являются наиболее распространенным механизмом обнаружения соседей. Пакеты приветствия передаются на основе таймера приветствия, и сосед считается "мертвым", если приветствие не получено в течение интервала таймера ожидания или объявления. Это похоже на таймеры dead и update, используемые для вывода соседей из объявлений маршрутизации. Приветствия обычно содержат информацию о соседней системе, такую как поддерживаемые возможности, идентификаторы уровня устройства и т. д. Централизованная регистрация - это еще один механизм, который иногда используется для обнаружения и распространения информации о соседних устройствах. Каждое устройство, подключенное к сети, будет отправлять информацию о себе в какую-либо службу и, в свою очередь, узнавать о других устройствах, подключенных к сети, из этой централизованной службы. Конечно, эту централизованную службу нужно каким-то образом обнаружить, что обычно осуществляется с помощью одного из других упомянутых механизмов. Обнаружение двусторонней связи В плоскостях управления с более сложными процессами формирования смежности - особенно протоколами, которые полагаются на приветствия для формирования отношений соседства - важно определить, могут ли два маршрутизатора видеть друг друга (осуществлять двустороннюю связь), прежде чем формировать отношения. Обеспечение двусторонней связи не только предотвращает проникновение однонаправленных каналов в таблицу пересылки, но также предотвращает постоянный цикл формирования соседей - обнаружение нового соседа, построение правильных локальных таблиц, объявление о доступности новому соседу, тайм-аут ожидания hello или другую информацию, удаление соседа или поиск нового соседа. Существует три основных варианта управления двусторонним подключением между сетевыми устройствами. Не утруждайте себя проверкой двусторонней связи. Некоторые протоколы не пытаются определить, существует ли двусторонняя связь между сетевыми устройствами в плоскости управления, а скорее предполагают, что сосед, от которого принимаются пакеты, также должен быть доступен. Перенос списка доступных соседей, услышанных на линии связи. Для протоколов, которые используют приветствия для обнаружения соседей и поддержания работоспособности, перенос списка доступных соседей по одному и тому же каналу является распространенным методом обеспечения двусторонней связи. Рисунок 6 иллюстрирует это. На рисунке 6 предположим, что маршрутизатор A включен раньше B. В этом случае: A отправит приветствия с пустым списком соседей, поскольку он не получил приветствия от любого другого сетевого устройства по каналу. Когда B включен, он получит приветствие A и, следовательно, включит A в список соседей, которые он слышал в своих hello пакетах. Когда A получает приветствие B, он, в свою очередь, включает B в свой список "услышанных" соседей в своих пакетах приветствия. Когда и A, и B сообщают друг о друге в своих списках соседей, которые "слышно от", оба маршрутизатора могут быть уверены, что двустороннее соединение установлено. Этот процесс часто называют трехсторонним рукопожатием, состоящим из трех шагов: A должен послать привет B, чтобы B мог включить A в свой список соседей. B должен получить приветствие A и включить A в свой список соседей. A должен получить приветствие B с самим собой (A) в списке соседей B. Положитесь на базовый транспортный протокол. Наконец, плоскости управления могут полагаться на базовый транспортный механизм для обеспечения двусторонней связи. Это необычное решение, но есть некоторые широко распространенные решения. Например, протокол Border Gateway Protocol (BGP), опирается на протокол управления передачей (TCP), чтобы обеспечить двустороннюю связь между спикерами BGP. Определение максимального размера передаваемого блока (MTU) Для плоскости управления часто бывает полезно выйти за рамки простой проверки двусторонней связи. Многие плоскости управления также проверяют, чтобы максимальный размер передаваемого блока (MTU) на обоих интерфейсах канала был настроен с одинаковым значением MTU. На рисунке 7 показана проблема, решаемая с помощью проверки MTU на уровне канала в плоскости управления. В ситуации, когда MTU не совпадает между двумя интерфейсами на одном канале, возможно, что соседние отношения сформируются, но маршрутизация и другая информация не будут передаваться между сетевыми устройствами. Хотя многие протоколы имеют некоторый механизм для предотвращения использования информации о результирующих однонаправленных каналах при вычислении путей без петель в сети, все же полезно обнаруживать эту ситуацию, чтобы о ней можно было явным образом сообщить и исправить. Протоколы плоскости управления обычно используют несколько методов, чтобы либо явно обнаружить это условие, либо, по крайней мере, предотвратить начальные этапы формирования соседей. Протокол плоскости управления может включать локально настроенный MTU в поле в пакетах приветствия. Вместо того чтобы просто проверять наличие соседа во время трехстороннего рукопожатия, каждый маршрутизатор может также проверить, чтобы убедиться, что MTU на обоих концах линии связи совпадает, прежде чем добавлять новое обнаруженное сетевое устройство в качестве соседа. Другой вариант - добавить пакеты приветствия к MTU локального интерфейса. Если дополненный пакет приветствия максимального размера не получен каким-либо другим устройством в канале связи, начальные этапы отношений соседства не будут завершены. Трехстороннее рукопожатие не может быть выполнено, если оба устройства не получают пакеты приветствия друг друга. Наконец, протокол плоскости управления может полагаться на базовый транспорт для регулирования размеров пакетов, чтобы коммуникационные устройства могли их принимать. Этот механизм в основном используется в плоскостях управления, предназначенных для наложения какой-либо другой плоскости управления, особенно в случае междоменной маршрутизации и виртуализации сети. Плоскости управления наложением часто полагаются на обнаружение MTU пути (Path MTU) для обеспечения точного MTU между двумя устройствами, подключенными через несколько переходов. Сам размер MTU может оказать большое влияние на производительность плоскости управления с точки зрения ее скорости сходимости. Например, предположим, что протокол должен передавать информацию, описывающую 500 000 пунктов назначения по многопоточному каналу с задержкой 500 мс, и для описания каждого пункта назначения требуется 512 бит: Если MTU меньше 1000 бит, для плоскости управления потребуется 500 000 циклов туда и обратно для обмена всей базой данных доступных пунктов назначения, или около 500 000 × 500 мс, что составляет 250 000 секунд или около 70 часов. Если MTU составляет 1500 октетов или 12000 битов, плоскости управления потребуется около 21000 циклов туда и обратно для описания всей базы данных доступных пунктов назначения, или около 21000 × 500 мс, что составляет около 175 минут. Важность сжатия такой базы данных с использованием какого-либо оконного механизма для сокращения числа полных обходов, необходимых для обмена информацией о достижимости, и увеличения MTU вполне очевидна. Далее почитайте материал о том, как происходит обнаружение соседей в сетях.
img
Любое крупное приложение должно сопровождаться несколькими наборами тестов, с помощью которых можно проверить его стабильность и производительность.  Существует большое количество различных тестов, каждый из которых имеет свое назначение и охватывает определенные аспекты приложения. Именно поэтому, когда вы тестируете свое приложение, вы должны убедиться, что ваш набор тестов сбалансирован и охватывает все аспекты.  Однако есть один тип тестов, который разработчики часто предпочитают другим, и поэтому им часто злоупотребляют. Этот «сквозное тестирование» (E2E - end-to-end testing).  Что такое сквозное тестирование? Для тех, кто только начал штурмовать мир тестирования программного обеспечения, E2E-тестирование - это проверка вашего приложения от начала до конца вместе со всеми его зависимостями. При проведении E2E-тестировании вы создаете среду, которая будет идентична той, которую будут использовать реальные пользователи приложения. А затем вы тестируете все действия, которые могут выполнять пользователи в вашем приложении. С помощью сквозного тестирования вы проверяете весь рабочий поток целиком, например, вход на веб-сайт или покупку товара в интернет-магазине.   Если вы будете злоупотреблять E2Е-тестирование, то вы перевернете пирамиду тестирования. Я в такой ситуации был. В одном из своих проектов я планировал охватить большую часть приложения Е2Е-тестами или, что еще хуже, воспользоваться лишь один Е2Е-тест. К счастью, я передумал. Так вот, теперь я хочу поделиться с вами тем, что заставило меня передумать.  Почему не нужно пренебрегать пирамидой тестирования? Хаотично написанные тесты сначала могут показаться вполне пригодными, но в конце концов они таковыми не окажутся.  Мы пишем тесты для того, чтобы выиграть больше времени, и мы делаем это с помощью методы и средства автоматизации тестирования. Конечно, можно было бы самостоятельно открывать приложения и тестировать их вручную. Если бы это нужно было сделать однократно, то проблем не было бы. Но так бывает крайне редко.  Программное обеспечение постоянно обновляется. Поэтому необходимо проводить регулярные тестирования для того, чтобы оставаться в курсе последних событий. Вы, конечно, можете ежедневно запускать все тесты вручную при каждом обновлении приложения. Но если вы один раз напишите набор тестов, а затем будете его запускать каждый раз, когда нужно будет протестировать какой-то из аспектов приложения, то вы сэкономите много времени.  У каждого теста есть свое назначение. Если вы будете использовать их не по назначению, то они могут вам больше навредить, чем помочь. Это связано с тем, что в итоге вы потратите больше времени на то, чтобы написать эти тесты, и на их сопровождение, чем на разработку самого приложения. Иными словами, вы останетесь без одного из самых больших преимуществ автоматизированного тестирования.  Хорошее начало – придерживаться пирамиды тестирования. Она поможет вам определить правильный баланс в тестированиях. Эта пирамида является отраслевым стандартом и используется с середины 2000-х годов по сей день, так как все еще считается эффективной.  Значит ли это, что разработчики никогда не пренебрегают этой пирамидой? Не совсем. Иногда пирамида бывает перевернутой, где большую часть тестов составляют Е2Е, а иногда она бывает похожа на песочные часы, где очень много юнит- и Е2Е-тестов, но с очень мало интеграционных тестов.  Три уровня пирамиды тестирования Как правило, пирамида тестирования имеет три уровня: юнит-тесты, интеграционные тесты и сквозные тесты.  Юнит-тесты Юнит-тесты, или модульные тесты, делают акцент на самых маленьких единицах кода, таких как функции и классы.  Они короткие и не зависят ни от каких-либо внешних пакетов, библиотек и классов. В противном случае, в ход идет имитированная реализация.  Если юнит-тест дает сбой, то найти причину проблемы не так сложно. Они также имеют небольшой диапазон тестирования, что делает их простыми в написании, быстрыми в работе и легкими в сопровождении.  Интеграционные тесты Интеграционные тесты делают акцент на взаимодействии между двумя отдельными объектами. Как правило, они работают медленнее, потому что они требуют более серьезной настройки.  Если интеграционные тесты проваливаются, то найти проблему немного сложнее, так как диапазон ошибок больше. Они также более сложные в написании и сопровождении, в основном потому, что они требуют более продвинутое имитирование и расширенную область тестирования.  Сквозные тесты И наконец, сквозные тесты, или E2E-тесты. Они делают акцент на рабочих потоках, от самых простых до самых сложных. Эти тесты можно рассматривать как многоэтапные интеграционные тесты.  Они самые медленные, потому что они подразумевают сборку, развертывание, запуск браузера и выполнение действий внутри приложения.  Если сквозные тесты проваливаются, то найти проблему часто бывает очень сложно, потому что диапазон ошибок увеличивается до всего приложения. В принципе, по пути могло сломаться все что угодно. Это, безоговорочно, самый сложный тип тестов для написания и сопровождения (из трех типов, которые рассмотрели здесь) из-за огромного диапазона тестирования и из-за того, что они охватывают все приложение.  Надеюсь, теперь вы понимаете, почему пирамида тестирования была спроектирована именно таким образом. Снизу-вверх каждый уровень тестирования говорит о снижении скорости и увеличении диапазона и сложности и усложнении сопровождения.  Именно поэтому важно не забывать о том, что E2E-тестирование не может полностью заменить другие методы – оно лишь предназначено для расширения их возможностей. Назначение Е2Е-тестирования четко определено, и тесты не должны выходить за его границы.  В идеале тесты должны выявлять ошибки настолько близко к корню пирамиды, насколько возможно. Е2Е-тест предназначен для проверки кнопок, форм, изменений, ссылок, внешних процессов и вообще всех функций рабочего потока. Тестирование с кодом VS codeless-тестирование В целом, существует два типа тестирования: ручное и автоматизированное тестирование. Это значит, что мы можем проводить тестирования либо вручную, либо с помощью сценариев.  Чаще используют именно второй метод. Но и автоматизированное тестирование можно разделить на две части: тестирование с кодом и codeless-тестирование.  Тестирование с кодом Когда вы проводите тестирование с кодом, вы используете фреймворки, которые могут автоматизировать браузеры. Один из самых популярных инструментов – это Selenium, но я больше предпочитаю использовать в своих проектах Cypress (только для JavaScript). И тем не менее, работают они практически одинаково.  По сути, с помощью таких инструментов вы моделируете веб-браузеры и даете им указания для выполнения различные действия в вашем целевом приложении. После чего вы проверяете, отреагировало ли ваше приложение на соответствующие действия. Это простой пример имитации, взятый из документации Cypress. Я привел его, чтобы вы могли лучше понять, как работает этот инструмент: Давайте посмотрим, что тут происходит: Допустим, пользователь посещает сайт  https://example.cypress.io   Когда она нажимает на ссылку с пометкой type, URL-адрес должен добавить /commands/actions Если он вводит «fake@email.com» в поле ввода .action-email, тогда ввод .action-email принимает значение «fake@email.com». Codeless-тестирование В ситуации с codeless-тестированием вы используете фреймворки на базе искусственного интеллекта, которые запоминают ваши действия. И основываясь на некоторой дополнительной информации, они проверяют, отвечает ли ваше целевое приложение на действия должным образом.  Эти инструменты часто выглядят как малокодовые платформы для разработки, где вы перемещаете различные панели. Один из таких инструментов – TestCraft, codeless-решение, разработанное на платформе Selenium. Как правило, эти инструменты стоят дороже из-за того, то такие функции, как создание, сопровождение и запуск тестов выполняются с помощью простого перемещения панелей, а также из-за того, что для проведения тесто не нужно уметь писать программный код. Но я упомянул здесь про TestCraft, потому что у них есть бесплатная версия, которая включает в себя практически все.  Конечно, если речь идет о скорости и деньгах, то codeless-решение может оказаться вам больше по душе, но они все еще достаточно новые. Поэтому они пока не могут иметь ту сложность наборов тестов, которой можно достичь, написав код самостоятельно.  Если в целевом приложении есть очень сложные рабочие потоки, которые включают в себя несколько подвижных частей, то вам больше подойдет классический вариант тестирования. Но если сложных потоков нет, то вы можете воспользоваться codeless-решением.  Подведение итогов Написание тестов – обязательное требование для любого приложения. Если вы будете следовать всем правилам и писать наборы тестов исходя из их типов, то они только улучшат ваше приложение, а также их будет довольно просто написать и сопровождать.  Использовать сквозные тесты, как и любые другие, следует только для того, для чего они предназначены. Они предназначены для тестирования рабочего потока приложения от начала и до конца путем воспроизведения реальных пользовательских сценариев. Но помните, что большинство ошибок следует выявлять как можно ближе к корню.   
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59