По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Развитие компьютерных сетей проходит ошеломляющими темпами. Обилие устройств в компьютерных сетях порождает ряд проблем, таких, например, как необходимость объединять в отдельные изолированные подсети машины, которые подключены к различным коммутаторам. Иными словами, развитие сетей породило необходимость создания так называемых виртуальных локальных сетей, или VLAN. Что же такое виртуальная компьютерная сеть? VLAN дословно расшифровывается как Virtual Local Area Network, или виртуальная локальная сеть. По факту – это функция устройств связи, например, коммутаторов или маршрутизаторов, которая позволяет объединять устройства в одну или несколько виртуальных локальных подсетей в рамках одного физического сетевого интерфейса, такого как Wi-fi или Ethernet. Стоит отметить, что виртуальная логическая топология сети никак не пересекается с физической топологией и, соответственно, не зависит от нее. Несколько примеров использования виртуальной локальной сети Создание отдельных подсетей для групп устройств, подключенных к одному и тому же коммутатору: Если к одному коммутатору или маршрутизатору подключены несколько компьютеров в рамках одного офиса, то их можно разделить на отдельные подсети. Это актуально для малых предприятий, таких как, например, небольшая компания по разработке компьютерных игр. В этом случае будет рациональным объединить в отдельные подсети рабочие станции художников и программистов, поскольку обмен данными между сотрудниками одного отдела в рамках работы будет более эффективным. Специалисты каждого отдела будут видеть компьютеры только своей подгруппы, а руководители отделов, в свою очередь, будут объединены в свою сеть или подсеть, стоящую выше по сетевой иерархии. Создание виртуальной сети для устройств, подключенных к разным коммутаторам: Допустим, во взятой нами за пример компании по разработке компьютерных игр произошло расширение штата – наняли нескольких новых работников – программистов и художников. Их разместили в соседнем кабинете, и, соответственно, выделили им для работы свой коммутатор. В данном случае можно также создать виртуальные сети для отделов организации, в которых появились новые рабочие станции, даже если они физически подключены к другому коммутатору. В этом случае работники разных отделов не будут видеть в сети компьютеры сторонней группы, даже если они физически находятся в одном кабинете. Распределение Wi-fi сети для различных групп пользователей: Пусть в нашей организации стоит роутер, который физически имеет одну точку доступа Wi-fi. VLAN позволяет создать несколько виртуальных точек Wi-fi для разных отделов, в том числе отдельную гостевую точку доступа. Это удобно для руководства предприятия, так как позволяет проконтролировать расход трафика и выяснить, например, что программист Вася, вместо того чтобы писать код, смотрит в соцсетях фото с котиками. Да и для безопасности это также полезно – например, устройства подключаемые через гостевую точку доступа, не будут видеть рабочие компьютеры организации. Заключение Таким образом, к достоинствам VLAN можно отнести: Меньшее количество используемых для создания внутренней сети организации проводов (и меньше головной боли для сетевого администратора); Более безопасную и контролируемую связь между устройствами – рабочие станции в рамках одной подсети не будут «видеть» устройства из других подсетей; Более эффективное использование трафика в различных подсетях общей сети, за счет возможности управления трафиком в различных подгруппах; Повышение эффективности работы отделов через создание новых подгрупп устройств, для чего VLAN предоставляет широчайшие возможности;
img
Это первая статья цикла. Продолжение: 2 часть Плоскость данных Начнем с того, что основная задача сети-перенос данных с одного подключенного хоста на другой. Это может показаться простым на первый взгляд, но на самом деле это чревато проблемами. Здесь может быть полезна иллюстрация; рисунок № 1 используется для иллюстрации сложности проблемы. Начиная с верхнего левого угла иллюстрации: Приложение генерирует некоторые данные. Эти данные должны быть отформатированы таким образом, чтобы принимающее приложение могло понять, что было передано, - данные должны быть упорядочены. Механизм, используемый для упорядочения данных, должен быть эффективным во многих отношениях, включая быстрое и простое кодирование, быстрое и простое декодирование, достаточно гибкий, чтобы можно было вносить изменения в кодирование, не нарушая слишком много вещей, и добавлять наименьшее количество накладных расходов, возможных во время передача данных. Сетевое программное обеспечение должно инкапсулировать данные и подготовить их к фактической передаче. Каким-то образом сетевое программное обеспечение должно знать адрес хоста назначения. Сеть, которая соединяет источник и пункт назначения, является общим ресурсом, и, следовательно, должна быть доступна некоторая форма мультиплексирования, чтобы источник мог направлять информацию в правильный пункт назначения. Как правило, это будет связано с определенной формой адресации. Данные должны быть перемещены из памяти в источнике и непосредственно в сеть - фактический провод (или оптический кабель, или беспроводное соединение), который будет передавать информацию между устройствами, подключенными к сети. Сетевые устройства должны иметь какой-то способ обнаружить конечный пункт назначения информации - вторую форму проблемы мультиплексирования - и определить, требуется ли какая-либо другая обработка информации, когда она находится в пути между источником и пунктом назначения. Информация, прошедшая через сетевое устройство, должна быть снова закодирована и перенесена из памяти в провод. В любой точке, где информация перемещается из памяти в какую-либо форму физического носителя, информация должна быть поставлена в очередь; часто бывает больше данных для передачи, чем может быть помещено на любой конкретный физический носитель в любой момент времени. Здесь в игру вступает качество услуг. Информация, передаваемая по сети, теперь должна быть скопирована с физического носителя и обратно в память. Он должен быть проверен на наличие ошибок - это контроль ошибок - и у приемника должен быть какой-то способ сообщить передатчику, что ему не хватает памяти для хранения входящей информации - это контроль потока. Особый интерес представляет сетевое устройство в середине диаграммы. Сетевое устройство-например, маршрутизатор, коммутатор или middle box—соединяет два физических носителя вместе для построения реальной сети. Возможно, самый простой вопрос для начала заключается в следующем: зачем вообще нужны эти устройства? Маршрутизаторы и коммутаторы — это, очевидно, сложные устройства со своей собственной внутренней архитектурой и зачем добавлять эту сложность в сеть? Есть две фундаментальные причины. Первоначальная причина создания этих устройств заключалась в соединении различных видов физических носителей вместе. Например, внутри здания может быть практично работать ARCnet или thicknet Ethernet (приведены примеры из времени, когда были впервые изобретены сетевые устройства). Расстояние, которое эти носители могли преодолеть, однако, очень мало-порядка сотни метров. Каким-то образом эти сети должны быть расширены между зданиями, между кампусами, между городами и, в конечном счете, между континентами, используя своего рода мультиплексированную (или обратную мультиплексированную) телефонную сеть, такую как T1 или DS3. Эти два различных типа носителей используют различные виды сигналов; должно быть какое-то устройство, которое переводит один вид сигналов в другой. Вторая причина заключается в следующем — это масштаб и это стало проблемой. Природа физического мира такова, что у вас есть два варианта, когда дело доходит до передачи данных по проводу: Провод может соединять напрямую два компьютера; в этом случае каждая пара компьютеров должна быть физически соединена с каждым другим компьютером, с которым она должна взаимодействовать. Провод может быть общим для многих компьютеров (провод может быть общим носителем информации). Чтобы решить проблему первым способом, нужно много проводов. Решение проблемы вторым способом кажется очевидным решением, но оно представляет другой набор проблем - в частности, как пропускная способность, доступная по проводам, распределяется между всеми устройствами? В какой-то момент, если на одном общем носителе достаточно устройств, любая схема, используемая для обеспечения совместного использования ресурсов, сама по себе будет потреблять столько же или больше пропускной способности, как любое отдельное устройство, подключенное к проводу. В какой-то момент даже 100-гигабайтное соединение, разделенное между достаточным количеством хостов, оставляет каждому отдельному хосту очень мало доступных ресурсов. Решением этой ситуации является сетевое устройство - маршрутизатор или коммутатор, который разделяет два общих носителя, передавая трафик между ними только по мере необходимости. При некотором логическом планировании устройства, которые должны чаще общаться друг с другом, можно размещать ближе друг к другу (с точки зрения топологии сети), сохраняя пропускную способность в других местах. Конечно, маршрутизация и коммутация вышли далеко за рамки этих скромных начинаний, но это основные проблемы, которые системные администраторы решают, внедряя сетевые устройства в сети. Есть и другие сложные проблемы, которые необходимо решить в этом пространстве, помимо простого переноса информации из источника в пункт назначения; Во многих случаях полезно иметь возможность виртуализировать сеть, что обычно означает создание туннеля между двумя устройствами в сети. Сети всегда создавались для одной цели: передачи информации от одной подключенной системы к другой. Дискуссия (или, возможно, спор) о наилучшем способе выполнения этой, казалось бы, простой задачи длилась долго. Эту дискуссию можно грубо разбить на несколько, часто пересекающихся, этапов, каждый из которых задавал свой вопрос: Должны ли сети быть с коммутацией каналов или с коммутацией пакетов? Должны ли сети с коммутацией пакетов использовать кадры фиксированного или переменного размера? Как лучше всего рассчитать набор кратчайших путей через сеть? Как сети с коммутацией пакетов должны взаимодействовать с качеством обслуживания (QoS)? Должна ли плоскость управления быть централизованной или децентрализованной? На некоторые из этих вопросов давным-давно был дан ответ. С другой стороны, некоторые из этих вопросов все еще актуальны, особенно последний. Коммутация каналов Первое большое обсуждение в мире компьютерных сетей было то, должны ли сети быть с коммутацией каналов или с коммутацией пакетов. Основное различие между этими двумя понятиями заключается в концепции схемы: нужно ли передатчику и приемнику «видеть» сеть как один провод или соединение, предварительно сконфигурированное (или настроенное) с определенным набором свойств прежде чем они начнут общаться? Или они «видят» сеть как общий ресурс, где информация просто генерируется и передается «по желанию»? Первый считается с коммутацией каналов, а второй считается с коммутацией пакетов. Коммутация каналов имеет тенденцию обеспечивать больший поток трафика и гарантии доставки, в то время как коммутация пакетов обеспечивает доставку данных при гораздо меньших затратах - первый из многих компромиссов, с которыми вы столкнетесь при проектировании сетей. Рисунок 2 будет использован для иллюстрации коммутации каналов с использованием мультиплексирования с временным разделением (TDM) в качестве примера. На рисунке 2 общая пропускная способность каналов между любыми двумя устройствами разделена на восемь равных частей; A отправляет данные E, используя временной интервал A1 и F, используя временной интервал A2; B отправляет данные в E с использованием временных интервалов B1 и F с использованием временных интервалов B2. Каждый фрагмент информации имеет фиксированную длину, поэтому каждый из них может быть помещен в один временной интервал в текущем потоке данных (следовательно, каждый блок данных представляет фиксированное количество времени или интервала в проводе). Предположим, что где-то есть контроллер, назначающий слот в каждом из сегментов, через которые будет проходить трафик: Для трафика [A, E]: На C: слот 1 от A переключен на слот 1 в направлении D На D: слот 1 от C переключен на слот 1 в направлении E Для трафика [A, F]: На C: слот 4 от A переключен на слот 4 в направлении D На D: слот 4 от C переключен на слот 3 в направлении F Для трафика [B, E]: На C: слот 4 от B переключен на слот 7 в направлении D На D: слот 7 от C переключен на слот 4 в направлении E Для трафика [B, F]: На C: слот 2 от B переключен на слот 2 в направлении D На D: слот 2 от C переключен на слот 1 в направлении F Ни одно из устройств обработки пакетов в сети не должно знать, какой бит данных идет куда; до тех пор, пока C берет все, что находится в слоте 1 в потоке данных A в каждом временном интервале, и копирует его в слот 1 в своем исходящем потоке в направлении D, А D копирует его из слота 1 входящего из C в слот 1 исходящего в E, трафик, передаваемый A, будет доставляться в E. Есть интересный момент, который следует отметить об этом виде обработки трафика—для пересылки трафика ни одно из устройств в сети на самом деле не должно знать, что является источником или назначением. Блоки данных, передаваемые по сети, не обязательно должны содержать адреса источника или назначения; куда они направляются и откуда поступают, все решения основываются на знании контроллерами открытых слотов в каждом канале. Набор слотов, назначенных для любой конкретной связи между устройствами, называется схемой, потому что это пропускная способность и сетевые ресурсы, выделенные для связи между одной парой устройств. Основные преимущества сетей с коммутацией каналов включают в себя: Для коммутации пакетов устройствам не нужно читать заголовок или выполнять какую-либо сложную обработку. Это было чрезвычайно важно в первые дни работы сети, когда аппаратное обеспечение имело гораздо меньшее количество транзисторов и переключателей, скорость линии была ниже, а время обработки пакета в устройстве составляло большую часть общей задержки пакета через сеть. Контроллер знает доступную полосу пропускания и трафик, направляемый к периферийным устройствам по всей сети. Это делает его несколько простым, учитывая, что на самом деле имеется достаточная пропускная способность, для организации трафика для создания наиболее оптимальных путей через сеть. Есть и недостатки, в том числе: Сложность контроллера значительно возрастает по мере того, как сеть и услуги, которые она предлагает, растут в масштабе. Нагрузка на контроллер может стать подавляющей, фактически вызывая перебои в работе сети. Пропускная способность на каждом канале используется не оптимально. На рис. 1-3 блоки времени (или ячейки), содержащие*, по существу являются потерянной полосой пропускания. Слоты назначаются определенной схеме заранее: слоты, используемые для трафика [A, E], не могут быть «заимствованы» для трафика [A, F], даже если A ничего не передает в сторону E. Время, необходимое для реагирования на изменения в топологии, может быть довольно длительным с точки зрения сети; локальное устройство должно обнаружить изменение, сообщить о нем контроллеру, и контроллер должен перенастроить каждое сетевое устройство вдоль пути каждого затронутого потока трафика. Системы TDM внесли ряд идей в развитие сетей, используемых сегодня. В частности, системы TDM сформировали большую часть ранних дискуссий о разбиении данных на пакеты для передачи по сети и заложили основу для гораздо более поздней работы в области QoS и управления потоком. Одна довольно важная идея, которую эти ранние системы TDM завещали большему сетевому миру, - это network planes. В частности, системы TDM делятся на три плоскости: Плоскость управления - это набор протоколов и процессов, которые формируют информацию, необходимую сетевым устройствам для пересылки трафика через сеть. В сетях с коммутацией каналов плоскость управления является полностью отдельной плоскостью; обычно существует отдельная сеть между контроллером и отдельными устройствами (хотя и не всегда, особенно в новых системах с коммутацией каналов). Плоскость данных (также известная как плоскость пересылки) - это путь информации через сеть. Это включает в себя декодирование сигнала, полученного в проводе, в кадры, обработку их и передачу их обратно в провод, закодированный в соответствии с физической транспортной системой. Плоскость управления ориентирована на управление сетевыми устройствами, включая мониторинг доступной памяти, мониторинг глубины очереди, а также мониторинг, когда устройство отбрасывает информацию, передаваемую по сети, и т. д. Часто бывает трудно различить уровни управления и плоскости управления в сети. Например, если устройство вручную сконфигурировано для пересылки трафика определенным образом, является ли это функцией плоскости управления (потому что устройство настраивается) или функцией плоскости управления (потому что это информация о том, как пересылать информацию)? Коммутация пакетов В начале-середине 1960-х годов коммутация пакетов находилась в состоянии «in the air». Много людей переосмысливали то, как сети были построены, и рассматривали альтернативы парадигме коммутации каналов. Paul Baran, работавший в RAND Corporation, предложил сеть с коммутацией пакетов в качестве решения для обеспечения живучести; примерно в то же время Donald Davies в Великобритании предложил такой же тип системы. Эти идеи попали в Lawrence Livermore Laboratory, что привело к созданию первой сети с коммутацией пакетов (названной Octopus), введенной в эксплуатацию в 1968 году. ARPANET, экспериментальная сеть с коммутацией пакетов, начала функционировать вскоре после этого, в 1970 году. Существенное различие между коммутацией каналов и коммутацией пакетов заключается в роли отдельных сетевых устройств в передаче трафика, как показано на рис.3. На рисунке 3, A создает два блока данных. Каждый из них включает в себя заголовок, описывающий, как минимум, пункт назначения (представлен H в каждом блоке данных). Этот полный пакет информации - исходный блок данных и заголовок - называется пакетом. Заголовок также может описывать, что находится внутри пакета, и может включать любые специальные инструкции по обработке, которые устройства пересылки должны принимать при обработке пакета - их иногда называют метаданными или «данными о данных в пакете». Есть два пакета, произведенных A: A1, предназначенный для E; и A2, предназначенный для F. B также отправляет два пакета: B1, предназначенный для F, и B2, предназначенный для E. Когда C получает эти пакеты, он считывает небольшую часть заголовка пакета, часто называемого полем, чтобы определить место назначения. Затем C обращается к локальной таблице, чтобы определить, по какому исходящему интерфейсу должен быть передан пакет. D делает то же самое, перенаправляя пакет из правильного интерфейса к месту назначения. Этот способ пересылки трафика называется переадресацией по частям, поскольку каждое устройство в сети принимает совершенно независимое решение о том, куда пересылать каждый отдельный пакет. Локальная таблица, к которой обращается каждое устройство, называется таблицей пересылки; обычно это не одна таблица, а множество таблиц, потенциально включающих в себя базу информации маршрутизации (RIB) и базу информации пересылки (FIB). В оригинальных системах с коммутацией каналов плоскость управления полностью отделена от пересылки пакетов по сети. С переходом от коммутации каналов к коммутации пакетов произошел соответствующий переход от решений централизованного контроллера к распределенному протоколу, работающему в самой сети. В последнем случае каждый узел способен принимать свои собственные решения о пересылке локально. Каждое устройство в сети запускает распределенный протокол, чтобы получить информацию, необходимую для построения этих локальных таблиц. Эта модель называется распределенной плоскостью управления; таким образом, идея плоскости управления была просто перенесена из одной модели в другую, хотя на самом деле они не означают одно и то же. Сети с коммутацией пакетов могут использовать централизованную плоскость управления, а сети с коммутацией каналов могут использовать распределенные плоскости управления. В то время, когда сети с коммутацией пакетов были впервые спроектированы и развернуты, однако они обычно использовали распределенные плоскости управления. Software-Defined Networks (SDN) вернули концепцию централизованных плоскостей управления в мир сетей с коммутацией пакетов. Первым преимуществом сети с коммутацией пакетов над сетью с коммутацией каналов является парадигма пересылки hop-by-hop. Поскольку каждое устройство может принимать полностью независимое решение о пересылке, пакеты могут динамически пересылаться в зависимости от изменений в топологии сети, что устраняет необходимость связываться с контроллером и ждать решения. Пока существует как минимум два пути между источником и пунктом назначения (сеть имеет два подключения), пакеты, переданные в сеть источником, в конечном итоге будут переданы в пункт назначения. Вторым преимуществом сети с коммутацией пакетов по сравнению с сетью с коммутацией каналов является то, как сеть с коммутацией пакетов использует пропускную способность. В сети с коммутацией каналов, если конкретная схема (действительно временной интервал в приведенном примере TDM) не используется, то слот просто тратится впустую. При переадресации hop-by-hop каждое устройство может наилучшим образом использовать пропускную способность, доступную на каждом исходящем канале, чтобы нести необходимую нагрузку трафика. Хотя это локально сложнее, это проще глобально, и это позволяет лучше использовать сетевые ресурсы. Основным недостатком сетей с коммутацией пакетов является дополнительная сложность, особенно в процессе пересылки. Каждое устройство должно быть в состоянии прочитать заголовок пакета, найти пункт назначения в таблице, а затем переслать информацию на основе результатов поиска в таблице. В раннем аппаратном обеспечении это были сложные, трудоемкие задачи; коммутация каналов была обычно быстрее, чем коммутация пакетов. Поскольку со временем аппаратное обеспечение усовершенствовалось, то скорость переключения пакета переменной длины, как правило, достаточно близка к скорости переключения пакета фиксированной длины, так что между пакетной коммутацией и коммутацией каналов небольшая разница. Управление потоками в сетях с коммутацией пакетов В сети с коммутацией каналов контроллер выделяет определенную полосу пропускания для каждого канала, назначая временные интервалы от источника до назначения. Что происходит, если передатчик хочет отправить больше трафика, чем выделенные временные интервалы будут поддерживать? Ответ — прост-это невозможно. В некотором смысле, таким образом, возможность управлять потоком пакетов через сеть встроена в сеть с коммутацией каналов; и нет способа отправить больше трафика, чем может передать сеть, потому что «пространство», которое имеет передатчик в своем распоряжении для отправки информации, предварительно выделяется. А как насчет сетей с коммутацией пакетов? Если все звенья сети, показанные на рис. 3, имеют одинаковую скорость соединения, что произойдет, если и А, и В захотят использовать всю пропускную способность соединения в направлении С? Как C решит, как отправить все это в D по каналу связи, который пропускает вдвое меньше трафика, необходимого для обработки? Здесь можно использовать методы управления транспортными потоками. Как правило, они реализованы в виде отдельного набора протоколов / правил, «движущихся поверх» базовой сети, помогая «организовать» передачу пакетов путем создания виртуального канала между двумя взаимодействующими устройствами. Протокол управления передачей (TCP) обеспечивает управление потоком для сетей с коммутацией пакетов на основе Интернет-протокола (IP). Этот протокол был впервые указан в 1973 году Vint Cerf и Bob Kahn. онтроллер выделяет определенную полосу пропускания для каждого канала, назначая временные интервалы от источника до назначения. Что происходит, если передатчик хочет отправить больше трафика, чем выделенные временные интервалы будут поддерживать? Ответ — прост-это невозможно. В некотором смысле, таким образом, возможность управлять потоком пакетов через сеть встроена в сеть с коммутацией каналов; и нет способа отправить больше трафика, чем может передать сеть, потому что «пространство», которое имеет передатчик в своем распоряжении для отправки информации, предварительно выделяется. А как насчет сетей с коммутацией пакетов? Если все звенья сети, показанные на рис. 3, имеют одинаковую скорость соединения, что произойдет, если и А, и В захотят использовать всю пропускную способность соединения в направлении С? Как C решит, как отправить все это в D по каналу связи, который пропускает вдвое меньше трафика, необходимого для обработки? Здесь можно использовать методы управления транспортными потоками. Как правило, они реализованы в виде отдельного набора протоколов / правил, «движущихся поверх» базовой сети, помогая «организовать» передачу пакетов путем создания виртуального канала между двумя взаимодействующими устройствами. Протокол управления передачей (TCP) обеспечивает управление потоком для сетей с коммутацией пакетов на основе Интернет-протокола (IP). Этот протокол был впервые указан в 1973 году Vint Cerf и Bob Kahn.
img
Вы готовы к тому, чтобы узнать больше о различных видах тестирования программного обеспечения? Как тестировщики, мы знаем о самых разных видах тестирования программного обеспечения. К ним относятся: функциональное тестирование, нефункциональное тестирование, автоматизированное тестирование, гибкое тестирование и их подвиды и другие.  Каждый из нас, изучая процесс тестирования, так или иначе сталкивался в несколькими видами тестирования. Вы могли слышать о некоторых из них или даже могли с ними работать, но маловероятно, что вы знаете обо всех видах тестирования, как и многие другие.  Каждый вид тестирования имеет свои характерные особенности, свои преимущества и недостатки. Тем не менее, в этой статье мы рассмотрели по большей части все виды тестирования программного обеспечения, которые мы используем на регулярной основе. Давайте взглянем на них!! Различные виды тестирования программного обеспечения  Ниже представлена общая классификация видов тестирования программного обеспечения.  Мы рассмотрим каждый вид во всех подробностях и приведем примеры.  Функциональное тестирование Существует четыре основных вида функционального тестирования.  #1) Модульное тестирование Модульное тестирование – это вид тестирования программного обеспечения, которое проводится на отдельно взятом модуле или компоненте, чтобы проверить внесенные правки. В большинстве случаев разработчики проводят модульное тестирование на этапе разработки приложения. В качестве модуля может выступать метод, функция, процедура или объект. Часто разработчики используют инструменты для автоматизации модульного тестирования, такие как NUnit, Xunit, JUnit.  Модульное тестирование – это важный этап разработки, поскольку на этапе модульного тестирования можно обнаружить большую часть ошибок.  Например, пусть у нас есть самое простое приложение-калькулятор. Разработчик может написать модульный тест для того, чтобы проверить правильность выполнения функций. Например, если пользователь введет два числа, будет ли верно посчитана сумма.   а) Тестирование методом «белого ящика» Тестирование методом «белого ящика» – это методика тестирования, при которой тестировщику доступны внутренняя структура или код приложения. При таком подходе достаточно легко найти уязвимость в архитектуре приложения или недочеты в логике его функционирования. Примерами такой методики являются покрытие операторов и покрытие альтернатив/покрытие ветвей. б) Gorilla Testing (Gorilla-тестирование) Gorilla Testing – это методика тестирование, при которой тестировщик совместно с разработчиком (или отдельно от разработчика) досконально тестирует какой-либо конкретный модуль приложения со всех сторон. Gorilla Testing проводится для того, чтобы узнать, насколько ваше приложение устойчиво к сбоям.  Например, тестировщик тестирует сайт некой компании по страхованию домашних животных, которая предоставляет услугу покупки страхового полиса, жетона для питомца и пожизненного права членства. Тестировщик выбирает какой-то один модуль и концентрирует на нем свое внимание. Допустим, это модуль покупки страхового полиса. И он досконально тестирует его с помощью положительных и негативных сценариев тестирования.  #2) Интеграционное тестирование Интеграционное тестирование – это разновидность тестирования программного обеспечения, при котором тестируются два и более сгруппированных модулей (как одно целое). При этом виде тестирования основной фокус внимания направлен на поиск неисправностей в интерфейсе, передаче данных и потоке данных между модулями. При интеграции модулей в систему используется либо нисходящий подход, либо восходящий.  Такой вид тестирования проводится при интеграции модулей системы или между системами. Например, пользователь приобретает билет на самолет на сайте любой авиакомпании. При покупке билета пользователи могут видеть информацию о рейсе и о платеже, но системы, которые предоставляют информацию о рейсе и обрабатывают платежи, - это две разные системы. Именно поэтому при интеграции веб-сайта авиакомпании и системы обработки платежей нужно проводить интеграционное тестирование.  а) Тестирование методом «серого ящика» Из названия уже можно понять, что данная методика тестирования – это комбинация двух методик: тестирования методом «белого ящика» и тестирования методом «черного ящика». При таком подходе тестировщики видят внутреннюю структуру или код приложения только частично.  #3) Системное тестирование Системное тестирование – это разновидность тестирования программного обеспечения, при котором тестировщику нужно проанализировать всю систему на соответствие определенным требованиям.  а) Сквозное тестирование Методика сквозного тестирования подразумевает тестирование всей среды приложения в ситуации, близкой к реальной. Это может быть взаимодействие с базой данных, передач данных по сети или взаимодействие с другим оборудованием, приложениями или системами.  Например, тестировщику необходимо протестировать веб-сайт для страхования домашних животных. Сквозное тестирование подразумевает тестирование следующих аспектов: процесса покупки страхового полиса, жетона, функции добавления другого домашнего животного, обновления информации о кредитной карте в учетной записи пользователя, обновления информации об адресе пользователя, получения электронных писем с подтверждением заказа и условий договора страхования.  б) Тестирование методом «черного ящика» Тестирование методом «черного ящика» – это методика тестирования программного обеспечения, при которой тестировщик не видит внутренней структуры, архитектуры или код тестируемой системы. Их задача – сосредоточиться лишь на вводе и выводе объектов тестирования.  в) Smoke-тестирование Smoke-тестирование предназначено для проверки основных и критически важных функций тестируемой системы на предмет высокоэффективной работы.  Всякий раз, когда команда разработчиков предоставляет новую сборку, команда тестировщиков программного обеспечения должна проверить сборку и гарантировать, что в ней нет никаких серьезных проблем. Когда команда тестировщиков подтвердит стабильность сборки, будет проведено более детальное тестирование.  Например, тестировщику необходимо протестировать веб-сайт для страхования домашних животных. Основные функции данного сайта – покупка страхового полиса, добавление еще одного домашнего животного и предоставление расценок. С помощью smoke-тестирования можно проверить, все ли эти функции работают полноценно, прежде чем переходить к более детальному тестированию.  г) Санитарное тестирование Санитарное тестирование проводится для того, чтобы убедиться, что все новодобавленные функции и правки в систему работают отлично. Санитарное тестирование проводится только на стабильной сборке. Этот вид тестирования является разновидностью регрессионного тестирования. Например, тестировщику необходимо протестировать веб-сайт для страхования домашних животных. Были внесены изменения касательно скидки на покупку полиса на второго домашнего животного. Тогда санитарное тестирование проводится лишь для модуля покупки страхового полиса.  д) Happy-path-тестирование Happy-path-тестирование сосредоточено на тестировании потоков «положительной логики» приложения. При таком тестировании не ищутся условия возникновения негативных последствий или ошибок. Основное внимание уделяется только корректным входным данных, которые влекут за собой положительные сценарии и, получая которые, приложение выдает ожидаемый результат.  е) Бездумное тестирование (Monkey Testing) Тестировщик проводит бездумное тестирование, предполагая, что приложение будет использовать обезьяна, то есть вводить данные будет именно обезьяна, не знающая ничего и не понимая принцип работы приложения.  Цель бездумного тестирования – проверить, произойдет ли сбой приложения или системы при случайных входных данных. Бездумное тестирование выполняется случайным образом, тестовые случаи нигде не фиксируются, а также для проведения такого тестирования не нужно знать о том, как функционирует система. #4) Приёмочное тестирование Приёмочное тестирование – это разновидность тестирования программного обеспечения, при котором клиент/предприятие/заказчик тестируют программное обеспечения с помощью реальных бизнес-сценариев.  Клиент принимает программное обеспечение только в том случае, если все функции работают так, как надо. Приёмочное тестирование – это последний этап, после которого программное обеспечение отправляется в производство. Его еще называют пользовательское приёмочное тестирование (UAT - User Acceptance Testing).  а) Альфа-тестирование Альфа-тестирование – это разновидность приёмочного тестирования. Оно проводится командой от организации для того, чтобы выявить как можно больше неполадок перед тем, как программное обеспечение будет выпущено.  Например, сайт страхования домашних животных проверяется с помощью UAT. Команда UAT будет прогонять реальные сценарии, такие как покупка страхового полиса, покупка годового права на членство, изменение адреса пользователя, передача права собственности на домашнее животное. Все будет происходить так, как если бы реальный пользователь использовал настоящий веб-сайт. Для прогона сценариев, связанных с платежами, команда может использовать данные тестовой кредитной карты.  б) Бета-тестирование Бета-тестирование – это разновидность тестирования программного обеспечения. Его проводят клиент/заказчики. Бета-тестирование проводится в реальной среде перед выпуском продукта на рынок, где его смогут приобрести реальные конечные пользователи.  Бета-тестирование необходимо для того, чтобы убедиться, что в программном обеспечении или продукте не происходят какие-то серьезные сбои и что оно удовлетворяет всем требованиям с позиции конечного пользователя со стороны заказчика. Считается, что бета-тестирование прошло успешно, если клиент принял программное обеспечение.  Как правило, бета-тестирование проводится непосредственно конечными пользователями. Это тестирование является последним перед выпуском приложения для коммерческого использования. В большинстве случаев бета-версия программного обеспечения используется ограниченным числом пользователей и в конкретной области.  Выходит, что конечный пользователь использует программное обеспечение, составляет отчет об ошибках и отправляет его компании. И затем, прежде чем выпустить программное обеспечение в общемировых масштабах, компания должна решить эти проблемы.  в) Эксплуатационное приёмочное тестирование (OAT - Operational acceptance testing) Эксплуатационное приёмочное тестирование системы выполняется либо группой эксплуатации, либо системными администраторами в среде промышленной эксплуатации. Цель такого тестирования – убедиться в том, что системные администраторы в состоянии обеспечить корректную работу системы для пользователей в реальных условиях.  OAT сосредоточено на следующих моментах: тестирование резервного копирования и восстановления; установка, удаление и обновление программного обеспечения; процесс восстановления в случае катастрофы природного характера; пользовательское управление; сопровождение программного обеспечения. Нефункциональное тестирование Существует четыре основных вида нефункционального тестирования. #1) Тестирование безопасности Тестирование безопасности проводится специальной командой. Любые несанкционированные действия хакеров могут преодолеть защиту системы.  Тестирование безопасности необходимо для проверки программного обеспечения, приложения или веб-сайта на предмет хорошей защиты от внутренних и/или внешних угроз. Это тестирование включает в себя проверку того, насколько программное обеспечение защищено от различного рода вредоносных программ, вирусов, а также насколько безопасны и надежны процессы авторизации и аутентификации.  Помимо всего прочего, тестирование безопасности позволяет узнать, как программное обеспечение ведет себя при различных хакерских атаках и при внедрении вредоносных программ, а также как обеспечивается безопасность данных после такой хакерской атаки.  а) Тестирование на возможность проникновения в систему Тестирование на возможность проникновения в систему – это разновидность тестирования безопасности. Оно проводится путем санкционированной кибератаки на систему. Его цель – выявить слабые места системы с точки зрения безопасности.  Тестирование выполняется привлеченными третьими лицами (исполнителями), которые также известны как «белые хакеры». Соответственно, данный вид тестирования еще можно назвать «этичным взломом». Исполнители выполняют различные операции, такие как SQL-инъекции, подтасовки URL-адресов, повышение привилегий, завершение сеанса, после чего предоставляют организации отчет.  Примечание: Никогда не проводите тестирование на возможность проникновения в систему на своем ноутбуке/компьютере. Для проведения тестирования на возможность проникновения в систему у вас обязательно должно быть письменное согласие.   #2) Тестирование рабочих характеристик Тестирование рабочих характеристик – это проверка стабильности приложения и времени отклика системы при прикладывании нагрузки. «Стабильность» - это способность приложения выдерживать ту или иную нагрузку. «Время отклика» - то, как быстро пользователи могут начать пользоваться приложением. Тестирование рабочих характеристик проводится с помощью специальных инструментов, например, Loader.IO, JMeter, LoadRunner и т.д. а) Нагрузочное тестирование Нагрузочное тестирование – это проверка стабильности приложения и времени отклика системы при прикладывании нагрузки, эквивалентной тому, что приложение будут использовать такое количество пользователей, которое было предусмотрено или меньшее.  Например, ваше приложение может обслуживать 100 пользователей одновременно с временем отклика 3 секунды. Тогда мы можем провести нагрузочное тестирование с применением нагрузки, эквивалентной 100 и менее пользователям. Целью такого тестирования является гарантия того, что приложение отвечает всем пользователям в течение 3 секунд.   б) Стресс-тестирование Стресс-тестирование – это проверка стабильности приложения и времени отклика системы при прикладывании нагрузки, эквивалентной тому, что приложение будут использовать количество пользователей, превышающее предусмотренное. Например, ваше приложение может обслуживать 1000 пользователей одновременно с временем отклика 4 секунды. Тогда мы можем провести стресс-тестирование с применением нагрузки, эквивалентной более чем 1000 пользователям. Протестируйте приложения, приложив нагрузку в 1100, 1200, 1300 пользователей, и посмотрите на время отклика. Цель данного тестирования заключается в проверке стабильности приложения при стрессовой нагрузке.  в) Тестирование масштабируемости Тестирование масштабируемости – это проверка стабильности приложения и времени отклика системы при прикладывании нагрузки, эквивалентной тому, что приложение будут использовать количество пользователей, превышающее предусмотренное. Например, ваше приложение может обслуживать 1000 пользователей одновременно с временем отклика 2 секунды. Тогда мы можем провести тестирование масштабируемости с применением нагрузки, эквивалентной более чем 1000 пользователям. Постепенно увеличивая нагрузку, можно выяснить, когда приложение даст сбой.  Допустим время отклика для моего приложения для различной нагрузки следующее: 1000 пользователей – 2 секунды 1400 пользователей – 2 секунды 4000 пользователей – 3 секунды 5000 пользователей – 45 секунд 5150 пользователей – сбой – Именно этот момент мы определяем при проведении тестирования масштабируемости г) Объемное тестирование (тестирование большим количеством запросов) Объемное тестирование - это проверка стабильности приложения и времени отклика системы с помощью отправки большого количества данных в базу данных. Фактически, с помощью этого тестирования можно проверить способность базы данных обрабатывать данные.  д) Тестирование износостойкости (продолжительное тестирование) Тестирование износостойкости - это проверка стабильности приложения и времени отклика системы при непрерывном прикладывании нагрузки в течение длительного периода времени. Цель этого тестирования – убедиться, что приложение работает хорошо. Например, аналогичные тесты проводят автомобильные компании с целью убедиться, что водитель сможет управлять автомобилем в течение нескольких часов без остановок, и это не повлечет никаких проблем.  #3) Тестирование практичности Тестирование практичности – это тестирование приложения с позиции пользователя. Его цель – определить впечатления и ощущения от использования приложения, а также проверить, удобно ли взаимодействовать пользователю с приложением.  Например, есть какое-то мобильное приложение для торговли на бирже. Тестировщик проводит тестирование практичности для данного приложения. Он может проверить самые различные сценарии, например, удобно ли пользоваться мобильным приложением, используя лишь одну руку или нет, удобно ли, что полоса прокрутки вертикальная, не отталкивает ли тот факт, что цвет фона черный, а цены и названия акций отображаются красным или зеленым цветом.  Основная идея тестирования практичности таких приложений состоит в том, чтобы, когда пользователь открывал приложение, он видел все, что необходимо.  а) Исследовательское тестирование Исследовательское тестирование – это обычное тестирование, которое проводит команда тестировщиков. Цель этого тестирования – анализ приложения и поиск неисправностей. Для того, чтобы проводить такие тестирования, тестировщикам нужны знания предметной области. Для руководства исследовательским тестированием используются концепции тестирования.  б) Кросс-браузерное тестирование Кросс-браузерное тестирование – это тестирование приложения в различных браузерах, на разных операционных системах и мобильных устройствах с целью оценить впечатление и ощущение от использования приложения и его производительность.  Для чего нужно кросс-браузерное тестирование? Ответ прост: разные пользователи используют разные операционные системы, разные браузеры и разные мобильные устройства. Целью любой компании является обеспечить приятное впечатление от использования приложения независимо от того, на каком устройстве оно установлено.  Такой инструмент, как Browser Stack, позволяет протестировать приложение на всех версиях различных браузеров и всех мобильных устройствах. В ознакомительных целях можно воспользоваться бесплатной пробной версией Browser Stack (она предоставляется на несколько дней).  в) Тестирование доступности использования Цель тестирования доступности использования – определить, могут ли люди с ограниченными возможностями использовать программное обеспечение или приложение.  Здесь под понятием «ограниченные возможности» понимается следующее: нарушение слуха, неспособность различать цвета (дальтонизм), умственные недостатки, слепота, пожилой возраст и другие инвалидные группы. Данный вид тестирования подразумевает проверку размера шрифта (подходит ли он для слабовидящих), проверку цвета и контрастности картинки (для людей с нарушением восприятия цвета) и т.д. #4) Тестирование совместимости Когда проводится тестирование совместимости, проверяется то, как программное обеспечение ведет себя и как оно работает в другой среде, на других веб-серверах, на другом оборудовании и в другой сетевой среде. Тестирование совместимости гарантирует, что программное обеспечение может работать в различных конфигурациях, с разными базами данных, в разных браузерах и их версиях. Тестирование совместимости должна проводить группа тестировщиков.  Другие виды тестирования   Свободное тестирование Название само по себе подразумевает, что данное тестирование выполняется бессистемно, то есть без какого-либо набора тестовых данных, а также без какого-либо плана или документации.  Цель свободного тестирования – выявить изъяны и «сломать» приложение путем выполнения любых действий в приложении.  Свободное тестирование – это способ поиска неисправностей без каких-либо формальностей. Это тестирование может провести любой участник проекта. Конечно, непросто выявить какие-то ошибки без тестовых данных, но иногда ошибки, которые были обнаружены с помощью свободного тестирования, могли быть не найдены с помощью существующий тестовых наборов.  Backend-тестирование Каждый раз, когда данные вводятся в клиентской части приложения, они сохраняются в базе данных, и ее тестирование так и называется – тестирование базы данных, или backend-тестирование. Существует много разных баз данных, таких как SQL Server, MySQL, Oracle и т.д. Тестирование базы данных подразумевает тестирование структуры таблиц, схемы, хранимой процедуры, структуры данных и т.д. При backend-тестировании тестировщики не используют графический интерфейс, они подключаются к базе данных напрямую с надлежащим доступом. Тем самым они могут с легкостью проверять данные с помощью всего нескольких запросов к базе.  В процессе backend-тестирования могут быть выявлены такие проблемы, как потеря данных, зависание программы, повреждение данных и т.д. Все эти проблемы обязательно должны быть устранены до того, как система будет запущена в производство.  Тестирование совместимости браузера Это разновидность тестирования совместимости (которое описано ниже). Тестирование совместимости браузера проводится командой тестировщиков.  Тестирование совместимости браузера необходимо для веб-приложений. Оно гарантирует, что программное обеспечение сможет работать с любыми браузерами и операционными системами. С помощью этого тестирования также можно проверить, будет ли работать приложение во всех версиях различных браузеров.  Тестирование обратной совместимости Тестирование обратной совместимости позволяет убедиться, что недавно разработанное или обновленное программное обеспечение будет хорошо работать в старой версии среды.  Тестирование обратной совместимости позволяет проверить, правильно ли работает новая версия программного обеспечения с файлами, которые были созданы более старой его версией. К проверяемым файлам относятся таблицы данных, файлы данных и структуры данных, которые были созданы более старой версией программного обеспечения. Если программное обеспечение было обновлено, то оно должно хорошо работать со своими предыдущими версиями.  Тестирование методом «черного ящика» При таком тестировании внутренняя структура системы не учитывается. Все тесты основываются только на требованиях и функциональных характеристиках.  Тестирование граничных значений Это тестирование проверяет, как ведет себя приложение на пограничном уровне.  Тестирование граничных значений необходимо для того, чтобы выявить изъяны на граничных значениях. Оно используется для тестирования различных диапазонов чисел. Для каждого такого диапазона есть верхняя и нижняя границы, и тестирование проводится именно на этих граничных значениях.  Если тестовый диапазон от 1 до 500, то тестирование граничных значений выполняется для значений 0, 1, 2, 499, 500 и 501.  Тестирование ветвей Тестирование ветвей также известно, как «покрытие ветвей» или «покрытие альтернатив». Это разновидность тестирования методом «белого ящика» – одно из модульных тестирований. Он необходим для того, чтобы каждый возможный путь от точки принятия решений выполнился хотя бы один раз для 100% тестового покрытия.  Пример: Read number A, B If (A>B) then Print(“A is greater”) Else Print(“B is greater”) Здесь есть две ветки – if и else. Для 100% покрытия нам нужно провести 2 теста с разными значениями А и В.  Тест №1: А=10, В=5. Этот тест охватит ветвь if. Тест№2: А=7, В=15. Этот тест охватит ветвь else. Сравнительное тестирование Сравнительное тестирование – это сравнение сильных и слабых сторон продукта с его предыдущими версиями или другими подобными продуктами.  Эквивалентное разбиение Это разновидность тестирования методом «черного ящика». Для проведения этого тестирования выбирается набор групп и несколько значений или чисел. При этом вполне понятно, что все значения из этой группы генерируют один и тот же результат.  Цель данного тестирования – исключение тестовых наборов данных из определенных групп, которые генерируют один и тот же результат, но при этом не выявляют никаких неисправностей.  Допустим, что приложение принимает значения от -10 до +10. Затем для эквивалентного разбиения выбираются значения: ноль, одно положительное значение и одно отрицательное значение. И таким образом, эквивалентное разбиение для данного теста будет таким: от -10 до -1, 0 и от 1 до 10.  Типовое тестирование Типовое тестирование – это тестирование в реальных условиях. Оно подразумевает использование реальных сценариев и сценариев, основанных на опыте тестировщиков.  Такой вид тестирования также известен, как «тестирование на основе опыта», поскольку здесь требуются определенный опыт тестироващика, например, он должен знать о том, как приложение работало раньше, как можно «сломать» приложение и какие ошибки могут быть в приложении такого типа.  Тестирование графического пользовательского интерфейса (GUI - Graphical User Interface) Цель тестирования GUI – убедиться, что графический интерфейс соответствует всем бизнес-требованиям. Графический интерфейс приложения, который хочет видеть заказчик, описан в рабочей документации и изображен на макете.  Тестирование GUI включает в себя следующее: проверка размера кнопок и полей ввода, размещенных на экране, выравнивание текста, таблиц и содержимого в таблицах.  С помощью данного тестирования также можно проверить меню приложения. Меню необходимо проверять для того, чтобы убедиться, что при выборе меню или подменю страница не съезжает, а при наведении курсора мыши на меню или подменю выравнивание не исчезает.  Тестирование поэлементной компоновки Тестирование поэлементной компоновки – это тестирование с восходящим подходом, то есть это непрерывное тестирование приложения с добавлением новых функций.  При этом функции и модули должны быть достаточно независимы, чтобы их можно было тестировать и отдельно друг от друга. Это тестирование проводят либо программисты, либо тестировщики.  Тестирование настройки/удаления приложения  Тестирование настройки приложения выполняется для того, чтобы убедиться, что приложение может быть установлено и настроено и работает так, как должно. Это тестирование – это этап тестирования, который предшествует первому взаимодействию пользователей с реальным приложением. Тестирование настройки приложения еще называют «предэксплуатационным тестированием». Тестирование удаления приложения выполняется для того, чтобы убедиться, что после удаления все компоненты программного обеспечения будут удалены из системы.  Данные виды тестирования выполняются для полных, частичных или обновленных процессов настройки/удаления приложения в разных операционных системах и в разных аппаратных или программных средах.  Мутационное тестирование Мутационное тестирование – это разновидность тестирования методом «белого ящика», при котором меняется исходный код программы, а затем проверяется, способны ли существующие тестовые примеры выявить ошибки в системе.  Изменения в исходном коде не столь значительны, поэтому они не влияют на все приложение, только на его отдельную часть, и тестовые примеры должны уметь выявлять эти ошибки в системе.  Негативное тестирование Установка тестировщика очень проста: «Необходимо сломать систему/приложение». Это можно сделать с помощью негативного тестирования. Методика негативного тестирования заключается в том, что тестировщик вводит неверные или недопустимые данные и проверяет, выдает ли система ошибку неверного ввода. Загрузка любой страницы или системы не должна занимать много времени и должна поддерживаться даже при пиковой нагрузке. Для этого тестирования используются различные средства оценки производительности и нагрузки.  Тестирование восстановления Это разновидность тестирования, которое проводят для того, чтобы проверить, как хорошо приложение или система восстанавливаются после сбоев или аварий.  Тестирование восстановления определяет, способна ли будет система продолжить свою работу после аварийной ситуации. Допустим, что приложение получает данные через сетевой кабель, и вдруг этот сетевой кабель был отключен. Через какое-то время сетевой кабель подключают обратно; система должна снова начать получать данные оттуда, откуда получала ранее до потери связи. Регрессионное тестирование Регрессионное тестирование – это тестирование неизменяемых функций приложения. Оно необходимо для того, чтобы убедиться, что любые правки, добавление любых новых функций, удаление или обновление уже существующих функций не повлияет на работу приложения. Важная часть регрессионного тестирования - определение границ регрессии. Для того, чтобы выделить эти границы регрессии, тестировщик должен определить границы приложения, в которых произошли те или иные изменения, и то, как эти изменения повлияли на приложение.  Тестирование на базе рисков При данном виде тестирования тестируются функциональные характеристики или требования, исходя из их приоритета. Тестирование на базе рисков включает в себя тестирование критически важных функциональных характеристик, от которых в большей степени зависит коммерческая деятельность и вероятность сбоя которых достаточно велика.   Решения о приоритете основываются на потребностях компании-заказчика. Как только приоритет будет установлен для всех функций, начинается тестирование функций сначала с высоким приоритетом, затем – со средний, а после – с низким.  Функции с низким приоритетом могут и не тестироваться вовсе (все зависит от времени, которым располагает тестировщик). Тестирование на базе рисков проводится тогда, когда на тестирование всего программного обеспечения не так много времени, но при этом его необходимо выпустить вовремя. Этот подход должен быть утвержден клиентом и высшим руководством организации.  Статическое тестирование Статическое тестирование – это разновидность тестирования, которое не требует выполнения кода. Критический просмотр, пошаговый разбор и инспектирование – вот методы проведения статического тестирования. Статическое тестирование должны пройти такие вещи, как просмотр рабочей документации, спецификации требований заказчика, архитектура высокого и низкого уровня, синтаксис кода, стандарты присвоения имен переменным и т.д. Статическое тестирование также применяется к тестовым примерам, планам и сценариям. Оно проводится для того, чтобы предотвратить появление ошибки, а не выявлять ее на более позднем этапе. Именно поэтому статическое тестирование оправдывает затраты на него. Например, тестировщик тестирует веб-сайт для страхования домашних животных. Логика расчета стоимости услуг описана в документации. В рамках статического тестирования тестировщик может просмотреть код разработчика, который предназначен для расчета стоимости, и сравнить его с документацией, чтобы предотвратить ошибку в расчете.  Тестирование чувствительности к воздействие внешних факторов Тестирование чувствительности к воздействию внешних факторов – это тестирование, которые подразумевает выявление слабых мест в программном обеспечении, оборудовании и сети. С помощью вредоносны программ хакер может получить контроль над системой, если она уязвима для такого рода атак, вирусов и «червей».  Перед выпуском приложения, необходимо убедиться, что оно прошло это тестирование, поскольку оно может обнаружить опасные для системы бреши в безопасности.  Заключение Все вышеупомянутые разновидности тестирования программного обеспечения – лишь часть всего процесса тестирования.  Все-таки есть еще более 100 видов тестирований, но они используются не для всех типов проектов. Здесь мы рассмотрели самые распространенные виды тестирования программного обеспечения; именно их в основном используют в процессе тестирования. Помимо всего прочего, существуют альтернативные понятия и процессы, которые используются в различных организациях, но основная идея везде одинакова. Все эти виды тестирования, процессы и методы их реализации постоянно меняются по мере того, как меняется проект, требования и область. 
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59