Утверждайте несколько условий в единственном тесте или разделите на несколько тестов? [дубликат]

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

В этом ответе приведен пример реализации: https://stackoverflow.com/a/55033209/4593267

Чтобы обнаружить намеренное вмешательство в данные, вы можете добавить секрет ключ к хешированным данным. Устройство должно иметь копию секретного ключа, так что это не очень безопасный метод, поскольку ключ может быть извлечен из устройства с помощью обратного инжиниринга или других методов. Если устройство хорошо защищено от этого, например, если оно находится в безопасном месте, в защищенном чипе или в очень удаленном месте, например, в спутнике в космосе, и вы уверены, что в удаленном доступе нет недостатков, этого может быть достаточно .

В противном случае требуется асимметричная криптографическая система с закрытым ключом, известным только законному источнику (источникам) этих файлов данных, и открытым ключом, используемым устройством для проверки криптографического хэша, как описано в ответе duskwuff. [ 114]

5
задан Bilesh Ganguly 7 April 2017 в 08:54
поделиться

5 ответов

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

4
ответ дан 13 December 2019 в 22:16
поделиться

Идеально иметь по одному тестовому сценарию для каждого сценария. Однако в некоторых случаях удобнее (эффективнее с точки зрения реализации) тестировать более одного сценария в одном тестовом примере. Если вы используете платформу, которая не останавливается при первом сбое, но пытается выполнить как можно больше в тестовом примере, эта платформа подходит для нескольких сценариев в тестовом примере.

Я предпочитаю тратить как можно меньше времени на модульное тестирование и при этом получать как можно больше охвата за это время.

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

4
ответ дан 13 December 2019 в 22:16
поделиться

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

Один это делает RSpec для Ruby, что позволяет вам установить вложенных групп примеров . Например:

  • Пользователь
    • без пароля
      • недопустимо
      • выдает исключение
    • с паролем
      • , который использовался ранее
        • недопустимо
        • выдает исключение
        • отключает предупреждение безопасности
      • , которое раньше не использовалось
        • действителен
        • перенаправляет на страницу учетной записи

За счет постепенного создания сценариев и тестирования каждого шага по пути легче придерживаться одного утверждения для каждого подхода к тестированию. Это также облегчает обнаружение непроверенных сценариев.

1
ответ дан 13 December 2019 в 22:16
поделиться

Я не знаю ни одной соответствующей документации.

Что бы я сделал, если бы реализовал нечто подобное. Покажите UIImage представление вашего представления над представлением. Затем закрепите оверлейный UIImage только на той части изображения, которую вы хотите увеличить. Вы можете увеличить часть, используя CGAffineTransformScale.

Вы можете нарисовать существующее представление в UIImage, используя метод renderInContext :, CALayer. Ваш пример - это скорее автоматизированный функциональный тест, который проверяет поток функций.

НО В этом случае допустимо иметь несколько утверждений.

Просто убедитесь, что 2 утверждения не располагаются одно за другим.

Плохой пример

public void ValidateRulesEntry_Valid_ValidConditionsFromFile()
{
    string condition = "Target.HasValue";
    string returnMessage;

    bool successFul = CodeParserTryParseCondition(condition, out returnMessage);


    Assert.IsTrue(successFul);
    Assert.IsFalse(string.IsNullOrEmpty(returnMessage));
    Assert.IsTrue(returnMessage == "OK");

}  

Два последних утверждения зависят от первого утверждения IsTrue (successFul).

Подумайте: Если этот тест не прошел -> Скажите мне, почему (не просматривая вывод отладки)

0
ответ дан 13 December 2019 в 22:16
поделиться

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

Кроме того, сделав название каждого теста максимально понятным, вы получите дополнительные подсказки, когда что-то сломается.

1
ответ дан 13 December 2019 в 22:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: