Модульное тестирование шифрования/дешифрования с некоторой солью, расположенной в разных базах кода

Прежде всего, я упомяну, что я видел модульное тестирование шифрования/дешифрования и Модульное тестирование шифрования и дешифрования в Java.

Я хочу защитить библиотеку, проверив ее лицензию. Лицензия содержит такую ​​информацию, как максимальное количество пользователей, срок действия и так далее.

Проблемы, с которыми я сталкиваюсь:

  • Шифровальщик и дешифратор находятся в двух разных кодовых базах. Расшифровщик поставляется вместе с библиотекой, а шифратор — нет, поэтому их трудно использовать в одном наборе тестов!
  • В шифраторе используется случайная соль, поэтому даже при одном и том же вводе шифратор каждый раз выдает разные выходные данные, опять же, я не могу утверждать результат.
  • По своему назначению дешифратор (чтобы затруднить внедрение другого класса для него) является окончательным классом, и все его методы являются закрытыми, за исключением нескольких точек входа, доступных для пакетов.

Я не хочу тестировать JCE, но я хочу протестировать свой код, который делает:

  • Извлечение соли из зашифрованной лицензии,
  • Расшифровывает зашифрованную лицензию,
  • Десериализует вывод в некоторую структуру данных, содержащую данные лицензии,

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

Есть ли лучшие решения для этого?


person Amir Pashazadeh    schedule 13.09.2017    source источник


Ответы (1)


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

  • Шифровальщик и дешифратор находятся в двух разных кодовых базах.

Не проблема, если вы тестируете их отдельно.

  • В шифраторе используется случайная соль

Вы можете внедрить фиктивный генератор случайных чисел, который даст те же результаты.

  • По своему назначению дешифратор является конечным классом, и все его методы закрыты.

Многие способы тестирования частных методов, как можно увидеть здесь

  • Извлечение соли из зашифрованной лицензии

Все, что вам нужно для этого, — это зашифрованная лицензия, о которой вы знаете соль.

  • Расшифровывает зашифрованную лицензию

Точно так же вы можете использовать лицензию, которую вы знаете, что она расшифровывает.

  • Десериализует вывод в некоторую структуру данных, содержащую данные лицензии,

Не связано и является отдельным тестом кода десериализации.

person Oleg    schedule 13.09.2017