• Чем отличается функциональное тестирование от приемочного?

    @polarnik
    Тестировщик
    В теории функциональное и приёмочное - разные типы классификаций.

    Приёмочное - один из этапов тестирования в классификации "по времени выполнения" или "по хронологии", где есть разные виды:
    * Smoke-test - проверка, что приложение запускается, и что в нём работает основная функциональность
    * Приёмочное или входной тест - быстрая проверка того, что новая функциональность, которая отдаётся на тестирование вообще существует в приложении, и новую функциональность можно протестировать. На практике применяется только если разработчики и тестировщики находятся в разных отделах и разработчики выдают большой процент брака на тестирование, спешат и просто оттягивают время передавая на тестирование сырой продукт. А тестировщики, чтобы зря не тратить время на тестирование недоразработанных версий, придумали такой этап - приёмочное тестирование. Который по хронологии идёт перед основным
    * Основное тестирование - основные тесты на новую функциональность
    * Повторное тестирование - перепроверка, после исправления дефектов и более близкого знакомства с новой функциональностью
    * Регрессионное - перепроверка старой и новой функциональности, обычно тех блоков, которые могли сломаться при выводе новых фич

    А функциональное - это классификация по целям тестирования и тут на верхнем уровне всего два вида:
    * функциональное тестирование - проверка соответствия функциональным требованиям
    * нефункциональное тестирование - проверка соотвествия нефункциональным требованиям

    Классификация:
    https://github.com/polarnik/TypesOfTesting
    https://habr.com/company/npo-comp/blog/223833/

    Это в теории. А на практике, люди могут называть знакомыми словами знакомые действия. И приёмочное тестирование может означать что угодно.
    Ответ написан
  • JMeter настройка Thread Group, что означает Rump-Up period?

    @polarnik
    Тестировщик
    Как можно использовать эти параметры.

    Пусть нужна интенсивность выполнения сценария "Аутентификация, Создание и скачивание документа" равная 8 в сек. И чтобы тест выполнялся в таком режиме 30 минут или 1800 сек.

    То есть, нужно, чтобы за 1 секунду запускалось выполнение 8 потоков (virtual user / thread).
    Значит за 10 000 секунд должно запуститься 80 000 потоков.
    Это если каждый поток будет делать одну итерацию теста.

    Задаём настройки:
    • Users - 80 000
    • Rump-Up - 10 000
    • Loop Count - 1
    • Duration - 1800
    • Startup Delay - 0


    Если же, допустимо, чтобы один пользователь в цикле дважды выполнял вход, создание и скачивание документа, то настройки можно изменить - пользователей теперь нужно в 2 раза меньше, для требуемой интенсивности работы:
    • Users - 40 000
    • Rump-Up - 10 000
    • Loop Count - 2
    • Duration - 1800
    • Startup Delay - 0


    А если допустимо, чтобы в цикле выполнялось по 8 сценариев, то можно сделать так:
    • Users - 10 000
    • Rump-Up - 10 000
    • Loop Count - 8
    • Duration - 1800
    • Startup Delay - 0


    Из-за кратности Users и Rump-Up, это уже эквивалентно:
    • Users - 4000
    • Rump-Up - 4000
    • Loop Count - 8
    • Duration - 1800
    • Startup Delay - 0
    Ответ написан
    Комментировать
  • Причина низкой скорости выполнения запросов в Jmeter?

    @polarnik
    Тестировщик
    В прокси-сервере, через который работает Apache.JMeter.
    Во включенном отладчике, подключенном к java-машине, выполняющей Apache.JMeter. Или включенном gc-логе.
    В том, что логи Apache.JMeter пишутся в сетевую папку. А доступ до неё медленный.
    В том, что ответы от сервера слишком большие и для Apache.JMeter не хватает памяти.
    В том, что приложение просто медленное.
    Или может включена эмуляция ошибок сети, с помощью toxy Proxy, chaos monkey, clumsy.

    ... десятки вариантов ...

    Нужны примеры запросов, описание стенда, нужно больше информации, чтобы указать более-менее точно на причину медленного получения ответов.
    Ответ написан
    Комментировать
  • Как рассчитать ресурсы необходимые для стенда нагрузочного тестирования?

    @polarnik
    Тестировщик
    Подбором.
    И касательно облаков - с ними не всё так просто.
    Например, пусть в облаке на выбранном тарифе есть квота на длительность высокой доступности диска. И в первый час работы диск работает быстро, а во второй час и последующие - работает вдруг медленно.

    Единственное в чем можно быть уверенным, так это в оперативной памяти. Она в облаке не плавает.
    А рассчитать необходимое количество ОЗУ надо от количества потоков, которые будут выполняться во время теста.
    Нужно провести пробные тесты, замониторить, сколько оперативной памяти необходимо для выбранного профиля нагрузки. Метод оценки такой - если приложение не упало в java.lang.OutOfMemoryError: Java heap space и время отклика в JMeter и по логам сервера пости совпадают (JMeter не тормозит), то памяти ему достаточно.

    А если будет что-то такое:
    $ ./run.sh ./script.01.Thread_Group.jmx --nongui
    Creating summariser <summary>
    Created the tree successfully using ./script.01.Thread_Group.jmx
    Starting the test @ Mon Oct 01 17:21:27 MSK 2018 (1538403687382)
    Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
    summary +     19 in 00:00:02 =    7.7/s Avg:     0 Min:     0 Max:     2 Err:     0 (0.00%) Active: 1 Started: 10 Finished: 9
    summary +    256 in 00:00:30 =    8.6/s Avg:     0 Min:     0 Max:    12 Err:     0 (0.00%) Active: 2 Started: 139 Finished: 137
    summary =    275 in 00:00:32 =    8.5/s Avg:     0 Min:     0 Max:    12 Err:     0 (0.00%)
    summary +    498 in 00:00:30 =   16.6/s Avg:     0 Min:     0 Max:     2 Err:     0 (0.00%) Active: 3 Started: 389 Finished: 386
    summary =    773 in 00:01:02 =   12.4/s Avg:     0 Min:     0 Max:    12 Err:     0 (0.00%)
    summary +    738 in 00:00:30 =   24.6/s Avg:     0 Min:     0 Max:    19 Err:     0 (0.00%) Active: 2 Started: 757 Finished: 755
    summary =   1511 in 00:01:32 =   16.4/s Avg:     0 Min:     0 Max:    19 Err:     0 (0.00%)
    summary +    976 in 00:00:30 =   32.6/s Avg:     0 Min:     0 Max:    17 Err:     0 (0.00%) Active: 2 Started: 1245 Finished: 1243
    summary =   2487 in 00:02:02 =   20.3/s Avg:     0 Min:     0 Max:    19 Err:     0 (0.00%)
    summary +   1214 in 00:00:30 =   40.4/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%) Active: 4 Started: 1854 Finished: 1850
    summary =   3701 in 00:02:32 =   24.3/s Avg:     0 Min:     0 Max:    19 Err:     0 (0.00%)
    summary +   1454 in 00:00:30 =   48.5/s Avg:     0 Min:     0 Max:     2 Err:     0 (0.00%) Active: 3 Started: 2580 Finished: 2577
    summary =   5155 in 00:03:02 =   28.3/s Avg:     0 Min:     0 Max:    19 Err:     0 (0.00%)
    summary +   1684 in 00:00:30 =   56.1/s Avg:     0 Min:     0 Max:     2 Err:     0 (0.00%) Active: 8 Started: 3427 Finished: 3419
    summary =   6839 in 00:03:32 =   32.2/s Avg:     0 Min:     0 Max:    19 Err:     0 (0.00%)
    summary +    488 in 00:00:30 =   16.1/s Avg:     2 Min:     0 Max:   361 Err:     0 (0.00%) Active: 155 Started: 3818 Finished: 3663
    summary =   7327 in 00:04:03 =   30.2/s Avg:     0 Min:     0 Max:   361 Err:     0 (0.00%)
    java.lang.OutOfMemoryError: Java heap space
    Dumping heap to java_pid21386.hprof ...
    Heap dump file created [2723488978 bytes in 41,828 secs]
    Killed


    То видно, что приложение жило до отметки Active: 155. Возможно, при 200-ти потоках JMeter тоже будут чувствовать себя хорошо. И тут надо подобрать.
    Если настраиваете профиль через шаг нагрузки, как в HP LoadRunner, используя Constant Throughput Timer или Precise Throughput Timer, то можно как поступить:

    1. Рассчитать полный профиль и все параметры для достижения нужной интенсивности, например, по руководству https://loadtestweb.wordpress.com/2017/08/23/pacing/ - пусть получилось 600 потоков нужно
    2. Опытным путём определить, что станция с 4 ГБайт памяти под Heap Apache.JMeter вытягивает 200 потоков.
    3. Рассчитываем количество станций, как 600 / 200 = 3
    Ответ написан
    Комментировать
  • Как правильно агрегировать несколько генераторов jmeter в одном графике из influx?

    @polarnik
    Тестировщик
    Есть такая возможность:

    https://jmeter.apache.org/usermanual/component_ref...

    TAG_WhatEverYouWant
    You can add as many custom tags as you want. For each of them, just create a new line and prefix its name by "TAG_"


    Если в настройках Backend Listener добавить такой TAG_controllerName, и в значении указать, например, __machineName https://jmeter.apache.org/usermanual/functions.htm...
    то получится вполне себе ключ для группировки значений
    Ответ написан
    Комментировать
  • Импортировать лог jmeter в influxdb?

    @polarnik
    Тестировщик
    Используйте загрузку данных из csv, и загружайте csv/jtl-файks с помощью встроенной возможности telegraf:
    csv - https://github.com/influxdata/telegraf/tree/master...

    Решение простое. Если два Вас плюс, то, что будут вообще все запросы в Influxdb храниться, то хорошо.
    А на 10-й 20-й запуск данных в Influx станет много, запросы будут выполняться медленнее.
    Я пока лью сырые данные, как для JMeter так и для Gatling. Агрегировать только-только начал, для RPS - агрегирую по секундам. Использую для Gatling awk-скрипт.

    Для JMeter аггрегацию пока не использую.
    Думаю использовать встроенную :
    basicstats - https://github.com/influxdata/telegraf/tree/master...
    valuecounter - https://github.com/influxdata/telegraf/tree/master...
    histogram - https://github.com/influxdata/telegraf/tree/master...
    Ответ написан
    Комментировать
  • Можно ли подписать документ с помощью Jmeter?

    @polarnik
    Тестировщик
    ... а недавно сделали другой вариант:
    * подписание сделано на C# в виде библиотеки (КриптоПро и прочая крипрография работает в C# с использованием 20-30 строк кода всего)
    * а .net-библиотеку обернули в java-библиотеку с помощью jni4net уже без написания кода вообще

    Таким образом - 20-30 строк кода, немного терпения и готово. .NET работает хорошо, быстро, но работает только в Windows. В итоге 20 подписаний в сек на одной нагрузочной станции тест держит - это синтетический замер. А по профилю нагрузки нам достаточно иметь 1 подписание в секунду.

    Пример подписания на C# - 5 строк кода:
    * https://github.com/polarnik/Tools.CMSCreator/blob/...
    остальное обвязка.
    Ответ написан
    Комментировать
  • Как отправить с помощью JMetr POST запрос на URL, с данными из файла (файлов)?

    @polarnik
    Тестировщик
    Доброго дня.

    Про загрузку тела запроса из файла
    В компоненте HTTP Request есть особое поведение для поля File Path:, как раз для отправки полного тела запроса из файла:

    Name of the file to send. If left blank, JMeter does not send a file, if filled in, JMeter automatically sends the request as a multipart form request.

    If it is a POST or PUT or PATCH request and there is a single file whose 'Parameter name' attribute (below) is omitted, then the file is sent as the entire body of the request, i.e. no wrappers are added. This allows arbitrary bodies to be sent. This functionality is present for POST requests, and also for PUT requests. See below for some further information on parameter handling.


    Эту возможность особенно удобно использовать при отправке больших запросов с минимальным количеством оперативной памяти. Иначе бы пришлось хранить большое тело запроса в тесте, и загружать большие запросы в виде строк в память JMeter, а память всегда ценный ресурс.

    Про загрузку набора файлов в качестве тел запросов
    Рекомендую сделать так:
    * использовать Directory Listing Config из JMeter Plugins, помещая им названия файлов в переменную
    * а переменную указать в поле File Path компонента HTTP Request

    Если использовать только стандартные средства, то можно сделать так:
    * командой dir /B или ls -l или find * сформировать список имён файлов в виде файла, пусть его имя будет files.csv
    * используя CSV Data Set Config загружать имена файлов в переменную
    * а переменную указать в поле File Path компонента HTTP Request

    Про возможность управления частотой отправки
    Тут разные подходы.
    Самый простой такой - просто использовать Thread Group с параметрами:
    * Action to be taken after a Sampler error: Start Next Thread Loop
    * Number of Threads: 80000
    * Ramp-up Period: 10000
    * Loop Count: 1
    * Delay Thread creation until needed: [v]
    * Scheduler: [v]
    * Duration (seconds): 300
    * Startup delay (seconds): 0

    что получится - JMeter будет знать, что за 10 000 секунд надо выполнить 80 000 запусков, то есть будет работать с частотой 8 запусков в сек. Всё частота контроллируется. Космического значения 80 000 thread-ов не пугайтесь, ведь стоит галочка Delay Thread creation until needed: [v].
    А тест будет выполняться с такой частотой 300 сек или 5 минут (не 10 000 сек).

    Есть вариант контроля нагрузки, через расчет количества потоков и пауз между выполнениями операций в них.
    Классический вариант - использовать
    * Ultimate Thread Group
    * Test Action (сейчас называется Flow Control Action)
    * Constant Throughput Timer
    Инструкцию написал про такую связку:
    * https://loadtestweb.wordpress.com/2017/08/23/pacing/

    В качестве альтернативы можно использовать вариант с точным выполнением заданного количества запросов за интервал времени:
    * используя Precise Throughput Timer вместо Constant Throughput Timer

    Или четвертый, с использованием дополнительных плагинов:
    * Concurrency Thread Group
    * Throughput Shaping Timer
    * Schedule Feedback Function

    (но я так ещё не пробовал)

    Резюме
    Таким образом можно решить все задачи:
    • Отправить запрос с телом из указанного файла
    • Файлы брать из указанного каталога
    • Контролировать интенсивность отправки
    Ответ написан
    Комментировать
  • Опасно ли и чем черевато открытые исходящие порты на боевом веб сервере на котором бегут и морда и backend?

    @polarnik
    Тестировщик
    Исключительно для контроля того, что ничего лишнего на стороне сервера не будет устанавливать исходящие соединения - разумно закрыть всё исходящие порты, кроме разрешённых. BackConnect - традиционный способ работы с захваченной машиной (машина сама соединяется с тем, кто её захватил).

    Плюсы такого контроля. Есть BackConnect займёт существующий порт, то какое-то важное приложение его занять не сможет, упадёт, по логам станет понятно - порт занят.
    Если BackConnect займёт новый порт, то добавит новое правило, а новое правило брендмауэра будет замечено.

    Это теория. Ни разу не заботился так о защите. Не было времени настроить сервер.
    Ответ написан
    Комментировать
  • Какое железо выбрать для терминального сервера?

    @polarnik
    Тестировщик
    Я в таком случае проводил тестирование. Использовал четыре профиля. Терминальные клиенты идут различных версий (5.0, 6.0, 7.1) в разных версиях Windows. И разница в возможностях и скорости работы у них разная.

    Скачал себе mstsc из Windows XP и Windows 7 и тестировал на двух уровнях настроек: всё включено и более щадящий режим. Два на два - получилось четыре профиля.
    За четыре 15-ти минутных тестирования собрал данные по загруженности ОЗУ, процессора и сети.

    Также занёс в таблицу что сделал за это время (сценарий тестирования). То, что сделал на первом проходе повторил и на втором и на третьем. Одинаковость действий нужна для корректности сравнения результатов. Аутентификация, просмотр отчётов, редактирование документов, ...

    А потом рассчитывал на основе этих данных сможет ли работать 20 человек на сервере.

    Железо простое, сеть тоже простая. ПО тоже простое - подключиться к терминальному серверу, открыть новую терминальную сессию и подключиться к другому серверу (это куда меньшие требования, чем запустить 1С и офис). Тестирование показало, что мощностей сервера хватает.
    Ответ написан
    4 комментария
  • Есть ли возможность вытащить информацию о владельце сертификата из файла с расширением.sig?

    @polarnik
    Тестировщик
    Раз говорите о КриптоАРМ, то полагаю, речь об алгоритме ГОСТ. Если будете использовать OpenSSL, как советуют выше, то ищите OpenSSL с поддержкой ГОСТ. Вот соответствующая сборка: www.cryptocom.ru/opensource

    Те файлы sig, с которыми сталкивался, использовались при сдаче отчётности в электронном виде. Пара счёт-фактура + подпись, также в комплекте шел набор CRL-файлов со списками отзыва на момент подписания. Сама же подпись шла в формате, близком к формату CAdES-C (Electronic Signature with Complete Data References). Отсоединённая подпись.

    В такой подписи есть:
    • сертификат подписанта
    • сама подпись
    • штамп времени
    • цепочка сертификатов (от сертификата подписанта до сертификата головного УЦ)

    Проверить корректность подписи, проверить состояние сертификата по списку отзыва на текущий момент и получить цепочку сертификатов можно нехитрым кодом на C#:
    using System.Security.Cryptography.X509Certificates;
    using System.Security.Cryptography.Pkcs;
    public class SignChecker
    {
        public X509Certificate2Collection CheckDetachedSignatureAndGetChain
            (byte[] data, byte[] sign)
        {
            var contentInfo = new ContentInfo(data);
            //    true => DetachedSignature
            var signedCms = new SignedCms(contentInfo, true);
            signedCms.Decode(sign);
            //http://msdn.microsoft.com/ru-ru/library/aedbc064%28v=vs.110%29.aspx
            //    false => verifySignature + verifyChain
            signedCms.CheckSignature(false);
            return signedCms.Certificates;
        }
    }

    Метод проверит подпись и отозванность сертификатов и вернёт сертификаты вам для дальнейшей проверки.

    При правильной проверке следует помнить о штампе времени в подписи. Даже если сертификат отозван (был отозван вчера, например), а штамп времени говорит, что подпись была поставлена два года назад и штамп достоверен. То следует проверять состояние сертификата по списку отзыва на момент двухлетней давности.

    КриптоАРМ так и проверяет. Если же будете делать свой механизм проверки, проверяя сертификаты отдельно от подписи и штампа времени в ней, то методы CryptoAPI вернут состояние сертификатов на текущий момент времени. И сертификаты из исторических подписей, которые сегодня отозваны, но были действительны два года назад, сломают цепочку, проверка завершится неудачно.

    Перед вызовом проверки (signedCms.CheckSignature(false)), убедитесь, что у программы будет возможность работы с Интернет. Так как если возможности работы с Интернет нет (прокси, например, не настроен), то списки отзыва не загрузятся. И проверка без актуальных списков отзыва о OCSP-ответов будет всегда завершаться успешно. Даже если некоторые сертификаты уже отозваны.

    OCSP-ответы и списки отзыва кешируются. Поэтому не удивляйтесь, если они вдруг перестанут загружаться. Проверка по ним работает. Очистить кеш можно командами:
    • certutil urlcache crl delete
    • certutil urlcache ocsp delete


    Удачной отладки.
    Ответ написан
    Комментировать
  • Как у вас называется папка с вашими проектами, исходниками, какова структура хранения?

    @polarnik
    Тестировщик
    Старые проекты и текущие разработки, не тянущие на проект — группировка по языкам:
    • Project
    • C#, Asm, Python, bat, ..., Other
    • {название проекта}

    Новые проекты — отдельная папка github:
    • Project
    • github
    • {название проекта}
    Ответ написан
    Комментировать
  • Кто нибудь обучался в EPAM?

    @polarnik
    Тестировщик
    Не обучался, но слышал как проходит отбор и обучение со слов сотрудников компании.
    Обучение бесплатное, на территории компании.
    Специалисты компании выбирают студентов так, чтобы после обучения студент стал сотрудником компании.
    Ответ написан
    Комментировать
  • Как потратить молодость?

    @polarnik
    Тестировщик
    В первый год многие студенты уходят (на 100 бюджетных мест набирают 130 студентов, из-за того, что через пол года-год 30 уходит, 10 переводится на платное обучение). С такой точки зрения вы один из многих.

    Найдите способ списать, выучить, договориться, подготовить шпаргалки и сдать. Вы же копирайтер. Этот опыт вам пригодится.

    Сейчас у вас есть опыт планирования. Целью вы поставили организацию команды и создание стартапа. В качестве занятий выбрали лекции на конференциях, упустив занятия в ВУЗе. Возможно, это был неверный выбор. Но это опыт. Выгрузите пока его из головы. Запишите себе в блокноте заметку.
    Целью было создание команды.
    21 сентября, сходил на конференцию ...
    - качество докладов по теме ... - 3/10
    - вероятность собрать хорошую команду для проекта ... - 4/10
    - вероятность влиться в команду по направлению ... - 7/10
    - ....
    21 октября, сходил на выставку ...
    - ...

    После чего, поставьте целью сдать сессию.
    Ответ написан
    Комментировать
  • Что бы подобрать для UI-тестирования десктопного приложения?

    @polarnik
    Тестировщик
    Использовал TestComplete. Инструмент хороший. Платный. Отладчик лучше всего работает, если язык проекта Delphi Script.

    1. Логику работы приложения отделите от форм. Чтобы в событиях форм лишь вызывались методы основного класса. В собственных разработках не всегда следую этому правилу, но следую. На форме есть текстовое поле, а в методе параметр типа string. На форме есть таблица на четыре колонки, в методе есть список классов (в классе четыре поля). И так далее.
    На основной класс уже пишутся модульные тесты.

    2. Используя такие инструменты как TestComplete, удобно писать регрессионные тесты на проверку правильности отображения заранее подготовленных данных. А проверять логику работы кликами - крайне тяжело.
    Советы:
    - после каждого действия проверяйте отсутствие диалогов с ошибками и отсутствие ошибок в логах;
    - выделите время на подготовку тестовых данных, хорошие тестовые данные в визуальных тестах крайне важны;
    - пишите короткие тесты (открыть, проверить, закрыть), не пишите тесты, которые длятся дольше 20-30-ти секунд.

    Вам придётся разработать API, хотя бы для таких частых действий как "открыть" и "закрыть" и API для проверки результатов (обращения к базе данных, файлам, логам). Визуальные тесты окупаются, если вы заявляете поддержку нескольких конфигураций (интерфейс единый, а окружение различное - операционные системы, базы данных, настройки, параметры шрифтов, ...). Если хотите тестировать только на одной конфигурации, то автоматизируйте самым минимум операций, не усложняйте.
    Ответ написан
    3 комментария
  • Реально ли стать тестировщиком ПО в 39 лет, учитывая то, что основная профессия далека от IT?

    @polarnik
    Тестировщик
    Обучаю коллегу, который старше меня. Он экономист, работал на телевидении, много где. Он, пока, молчит когда идёт обсуждение архитектуры, принципов DDD или вариантов реализации новой фичи. Но каждая минута, вложенная в его обучение, экономит мне две.

    По выбору места работы - выберите среднюю компанию, наиболее крупную коммерческую из средних. В таких компаниях есть отлаженный процесс обучения. Если хотите устроиться туда, откуда никогда не увольняют - устройтесь в государственную структуру, там тоже есть ИТ.

    Что касается литературы - читайте всё, литературу для разработчиков, аналитиков, архитекторов, руководителей. Так поймёте, что хотят от инженера по тестированию. Литературу для инженеров по тестированию тоже читайте, так научитесь говорить на одном языке с коллегами.

    Если прочтёте советы выше, между строк. То увидите, что в тестирование советуют идти студентам. Среди студентов, половина из которых сменит место работы при получении диплома, будете специалистом относительно высокого уровня. Также между строк прочтите и такой совет - запишитесь на курсы, станьте студентом. Могу сказать только по своей команде, постоянно обучаемся всему подряд. Новые продукты и библиотеки, внешние внутренние курсы, книги, журналы, онлайн-обучение, ... Когда учился в университете, учился меньше.

    По сравнению зарплат разработчика и инженера по тестированию, замечу, следующее. Если разработчик работает по 16 часов в сутки, пишет лучший код, изучает всё вокруг, обучает коллег, улучшает процесс, стремиться к лучшим к отрасли. А тестировщик с тем же стажем лишь кликает по чек-листу. То зарплата тестировщика будет ниже, что логично. И это неправильно выполненное сравнение.
    Если же тестировщик прёт как танк, а разработчик лишь способен исправлять баги, создавая при этом два новых, то ситуация по зарплате будет обратной.
    Ответ написан
    Комментировать
  • Кто занимался информационной безопасностью?

    @polarnik
    Тестировщик
    Раз PKI и Java, то изучите предметную область по этой теме (когда начнёте отличать сертификат от закрытого ключа и от подписи - уже прониклись темой, начало положено), также BouncyCastle изучите и OpenSSL.

    Не повредит заглянуть внутрь ASN.1, посмотреть что внутри CMS-контейнера, OCSP-запроса и ответа, подписи, штампа времени, ...
    www.codeproject.com/Articles/4910/ASN-Editor - нормальный продукт, но не дружит с кириллицей и юникодом.
    lapo.it/asn1js - инструмент получше, как научить его видеть недостающие OID-ы легко разберётесь.

    Поработайте с конкретными реализациями инструментов, что сертифицированы в нашей стране. Разверните/перенастройте/удалите УЦ от КриптоПро раз пять. И вы будете по опыту в PKI на пол головы выше остальных. Сделайте тоже самое на базе Microsoft Server, поймёте в чем отличия. Попробуйте сделать так, чтобы оболочка была от Microsoft Server, а криптопровайдер от КриптоПро, или ЛИССИ, или VipNET.

    Очень интересная тема - работа клиентской части инфраструктуры PKI на Android, спрос есть.

    Считаю, что чтобы начать грамотно разбираться в PKI для Linux и Android надо сначала заложить основы, работая под Windows.
    Ответ написан
  • Как заставить работать не дефолтный сайт в IIS?

    @polarnik
    Тестировщик
    DNS.
    Ваш браузер не знает, что corp.test это http://127.0.0.1.
    Чтобы он узнал это:
    • \Windows\System32\drivers\etc\hosts - в этом файле добавьте строку "corp.test 127.0.0.1", просто, быстро;
    • или настройте ваш DNS сервер (если речь идёт о DNS сервере домена Windows, то добавьте зону test, в ней создайте AAA-запись corp, укажите, куда должно ссылаться это имя).
    Ответ написан
    Комментировать
  • Как визуально спроектировать поиск в TreeView?

    @polarnik
    Тестировщик
    Можно менять текст узлов - черный/серый.
    Смотрится неплохо.
    Сделал такую "фильтрацию" дерева в двух своих проектах. Например https://github.com/polarnik/isblScan/tree/master/E...

    Пример, визуализации:
    6f0d1c1025f64bd99e1aad46556e40c6.png

    Посмотрите код проекта. Поймёте как расставляются цвета. Код нехитрый.
    Ответ написан
    Комментировать
  • В ОС семейства MS Windows список отзыва сертификатов (CRL) применяется автоматически?

    @polarnik
    Тестировщик
    Да. CRL-файл запрашивается всегда, за исключением случаев:
    - CRL уже хранится в кеше и с момента последнего обновления прошло меньше времени, чем указано в сроке жизни файла;
    - CRL хранится в хранилище списка отзыва (локальный список отзыва), и также пока не устарел.
    Отображение содержимого кеша:
    certutil -urlcache crl

    А вот OCSP-запросы могут не выполняться из-за настроек Windows. В Internet Explorer есть опция, проверять действительность сертификата издателя (как-то так). И если там указано, что проверять не надо, то OCSP-запросы посылаться не будут при автоматической проверке. Но, конечно, можно послать OCSP-запрос явно.

    OCSP-ответы также кешируются.
    Очистить кеш можно аналогично кешу CRL:
    certutil -urlcache ocsp delete
    Ответ написан
    Комментировать