ExpressVPN инструменти за тестване на течове
ExpressVPN тестовете за тестване са разтегателен набор от инструменти на Python, проектирани както за ръчно, така и за автоматизирано тестване на VPN приложения.
Разработени от лабораторията за изследване на поверителността на ExpressVPN, инструментите първоначално са били изградени за две цели:
- Предоставяне на стабилни, автоматизирани регресионни тестове на ExpressVPN приложения
- Улесняване на разследванията за тестване на течове за по-нататъшно укрепване на тези приложения
Скоро разбрахме, че тези инструменти всъщност могат да бъдат полезни за по-широката VPN индустрия. По този начин решихме да ги направим напълно достъпни с отворен код под лиценза на MIT.
Надяваме се, че по този начин ще помогнем да осигурим по-частно и сигурно онлайн изживяване за всички VPN потребители чрез:
- предоставяне на потребителите и трети страни независим начин да проверят качеството на VPN и да оценят собствените си рискове за поверителност и сигурност;
- създаване на по-висок показател за защита срещу течове за цялата индустрия на VPN; и
- обединяване на опит от цялата индустрия около тестовете за течове
Първи стъпки с инструментите
Инструментите могат да бъдат намерени в GitHub на: https://github.com/expressvpn/expressvpn_leak_testing.
За да започнете, следвайте инструкциите във файла README.md. Въпреки че предоставяме преглед на инструментите по-долу, хранилището на GitHub винаги трябва да се счита за единствения източник на истина за документация, свързана с инструментите.
Обърнете внимание, че за да следвате инструкциите за тестване, включени в нашите казуси за изследване на поверителността на личните данни, ще трябва да инсталирате инструментите за течове съгласно документацията в GitHub. Предполага се, че когато стартирате някое от казусите, коренова директория с инструменти се отнася до мястото, където сте клонирали горното хранилище на git.
Преглед на инструментите
Използваме Python
Инструментите са написани предимно на Python, като при необходимост има няколко помощни инструмента на други езици. Избрахме Python поради няколко причини:
- Тя е кросплатформена и поддържана извън кутията в повечето случаи
- Той е добре известен на голям процент разработчици и по този начин е лесно достъпен
- Бързо се развива в – нямаме изисквания за производителност за рамка за тестване
- Това е експресивен език, който ни позволява да пишем лесно четим код
Обърнете внимание, че използваме Python 3, тъй като това бързо се превръща в стандарт фактически.
Това е като тестване на единица
Инструментите са проектирани да работят като комплект за тестване на единица. За стартиране на пакета се използва единичен скрипт, който след това провежда серия от тестове. Всеки тест проверява за определен тип теч при специфични условия, например при определени мрежови условия, след което отчита или пропуск, грешка или грешка.
Тест – или тестов случай – приблизително съответства на един файл Python. Тестовият пакет е проектиран така, че да бъде познат на разработчиците, използвани за работа с единици за тестване на единици, така че всеки тест следва познатия модел на настройка (), тест () и терен ().
Тестовите каси са проектирани да бъдат възможно най-общи. Тестовите случаи могат да се изпълняват с различни VPN конфигурации, различни мрежови конфигурации и т.н. Когато те се стартират, им се предоставя конфигурация, която уточнява как ще се изпълняват в този конкретен кръг от тестване. Конфигурационен файл се предава на тестовия пакет, който изброява всички тестове, които трябва да се изпълняват, и техните конфигурации.
Пример за това как да стартирате тестовете би било да изпълните следната команда от главната директория на инструментите:
./run_tests.sh -c configs / case_studies / vanilla_leaks.py
Конфигурации на устройства и мрежи
Комплектът е проектиран така, че да може да изпълнява тестове на произволни конфигурации на устройства и мрежи. Ние бяхме наясно от самото начало, че за някои аспекти на VPN поведението ще е необходимо повече от едно устройство, за да тестваме, затова създадохме тест пакета, който да даде възможност за това от самото начало.
Устройството, от което се провеждат тестовете, се нарича „ тестов оркестратор. Всички други устройства са просто посочени като тестови устройства.
Най-простият тип тест работи на едно устройство (тестове с едно устройство) и тест за течове директно на това устройство. Например, човек може да изпълнява широк клас тестове за течове на Windows директно на устройство с Windows. В този случай тестовият оркестратор всъщност също е тестово устройство. По-сложните тестове (тестове за много устройства) може да включват тестово устройство, работещо с VPN, рутер и устройство за улавяне на пакети.
Автоматизация
Тестовият пакет е проектиран да поддържа изцяло автоматизацията на тестовете. Извън полето, тестовете винаги ще изискват ръчно взаимодействие. Всеки път, когато се изисква ръчно взаимодействие, тестовият пакет ясно ще подкани потребителя и ще им каже какво да правят.
Една от най-трудните части на тестовете за автоматизация е контролът върху VPN приложенията. Всъщност за много тестове това е единственото парче от пъзела, което не е автоматизирано. В момента нямаме планове да предлагаме поддръжка за автоматизиране на контрола върху VPN приложенията в хранилището. Добавянето на такава поддръжка обаче се поддържа от архитектурата на пакета.
Имайте предвид, че вътрешно сме внедрили пълна автоматизация на собственото си приложение, за да улесним непрекъснатото тестване на интеграцията. Не планираме да предоставяме тези инструменти за автоматизация като част от хранилището с отворен код.
Настройка на инструментите
Подробни инструкции как да настроите тестовите устройства са дадени в репото на GitHub. Просто даваме преглед тук какво да очакваме при настройка на устройства.
Тестовият пакет се поддържа на устройства с Linux, macOS и Windows (т.е. пакетът Python може да бъде инсталиран и директно да се изпълнява на тези устройства). Мобилните устройства също се поддържат от инструментите, но самият пакет никога няма да се изпълнява директно на тези устройства.
Препоръчваме да използвате виртуални машини (VM) възможно най-много, особено за тестове за единични устройства. VM предлагат няколко предимства:
- Лесно за създаване и конфигуриране на нови мрежови интерфейси
- Позволява ви да запазите хост машината си от много инсталации на софтуер на трети страни, които изискват тестовете
- Заснемането на трафик, оставящ VM, е по-просто от заснемането на трафик, оставяйки истинско физическо устройство
- Лесно за предварително конфигуриране на моментни снимки и връщане при нужда
За сериозно задълбочено тестване винаги препоръчваме да провеждате тестовете и на реалния физически хардуер, за да изключите евентуални разлики между виртуализиран и истински хардуер.
Обърнете внимание, че повечето тестове се нуждаят от root (admin) разрешения, за да стартират, така че за опростяване на нещата, целият пакет ще се изпълнява като root.
Научете повече за сценариите за течове, за които тестват инструментите
Следващите казуси предоставят повече информация за някои от сценариите за течове, за които тестват тези инструменти, като обясняват как биха могли да повлияят на вашата поверителност и сигурност, както и да посочите как да използвате съответния инструмент:
- Пример 1: „Ванилия“ изтича
- Пример 2: Течове на WebRTC
- Пример 3: Течове на мрежови преходи
- Пример 4: Недостъпни течове на VPN сървър
- Пример 5: Течове при срив на VPN процес
Принос към инструментите
Ние сме повече от щастливи да получим принос към инструментите, независимо дали това е за корекции на грешки, предложения за подобрения или изцяло нови тестови случаи. Можете да изпращате вноски чрез заявки за изтегляне в GitHub.
Свържете се с нас относно инструментите
Можете да се свържете с нас относно инструментите на адрес [email protected].
Обърнете внимание, че инструментите в момента са в алфа състояние и вероятно ще се променя често. Ние обаче ще се постараем да гарантираме, че инструментите винаги са в използваемо състояние.
Ian
17.04.2023 @ 16:34
команда в терминала: python run_tests.py. Конфигурации на устройства и мрежи Инструментите са проектирани да работят с различни конфигурации на устройства и мрежи. Това включва различни операционни системи, различни VPN клиенти и различни мрежови условия. Тестовете се изпълняват върху реални устройства и мрежи, за да се гарантира, че резултатите са реалистични. Автоматизация Инструментите са напълно автоматизирани, което означава, че те могат да бъдат изпълнени без никакво човешко вмешателство. Това ги прави идеални за регресионни тестове, където е необходимо да се изпълнят множество тестове в кратък период от време. Настройка на инструментите За да използвате инструментите, трябва да ги клонирате от GitHub и да следвате инструкциите в README.md файл. Трябва да имате Python 3 инсталиран на вашия компютър, както и някои допълнителни библиотеки, които са изброени в документацията. Научете повече за сценариите за течове, за които тестват инструментите За да научите повече за сценариите за течове, за които тестват инструментите, можете да посетите страницата на GitHub на инструмент