Отрицательные тесты на основе свойств

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

Мне также повезло с "отрицательными свойствами" в случае тестирования парсеров, например, путем генерации неверных идентификаторов или несовпадения отступов для чувствительных к отступам языков. Но являются ли "негативные свойства" обычным делом для выражения и проверки? Это означает написание генераторов, которые производят специализированный, фиктивный ввод.

Какие реальные примеры отрицательных свойств, не связанных с парсерами?

1 ответ

У меня по сути тот же вопрос.

Я опубликовал это более подробно, а также все мои мысли о том, как это может быть достигнуто:

Шаблон для генерации отрицательных сценариев Scalacheck: Использование тестирования на основе свойств для проверки логики проверки в Scala

Для нас ситуация "реального мира" такова, что у нас есть большие, связанные с данными классы дел, и эти классы дел имеют логику проверки (мы используем Wix Accord для проверки). Чтобы тщательно проверить логику проверки, нам нужно создать объект, сделать недействительным одно из его свойств и посмотреть, validate(o) выходит из строя. Затем повторите для каждого свойства объекта.

Мы также сталкиваемся с конкретными случаями, когда определенное свойство должно быть недействительным. Например, проверка того, будет ли наша система правильно обрабатывать неверный идентификатор. Это проще, мы можем просто использовать forAll(someGen) и мутировать его. Эффективно, просто v => val invalidV = v copy(id = "badID") и теперь для каждого сгенерированного свойства я изменил его, чтобы иметь плохой идентификатор. Конечно, вы можете полюбить, но вы поняли идею.

Все это кратко изложено в моем другом посте... вместе с открытым предложением о "лучшем образце". Надеюсь получить хорошие идеи!

Другие вопросы по тегам