Отрицательные тесты на основе свойств
Тестирование на основе свойств хорошо, когда вы можете выразить простые и четко определенные свойства.
Мне также повезло с "отрицательными свойствами" в случае тестирования парсеров, например, путем генерации неверных идентификаторов или несовпадения отступов для чувствительных к отступам языков. Но являются ли "негативные свойства" обычным делом для выражения и проверки? Это означает написание генераторов, которые производят специализированный, фиктивный ввод.
Какие реальные примеры отрицательных свойств, не связанных с парсерами?
1 ответ
У меня по сути тот же вопрос.
Я опубликовал это более подробно, а также все мои мысли о том, как это может быть достигнуто:
Для нас ситуация "реального мира" такова, что у нас есть большие, связанные с данными классы дел, и эти классы дел имеют логику проверки (мы используем Wix Accord для проверки). Чтобы тщательно проверить логику проверки, нам нужно создать объект, сделать недействительным одно из его свойств и посмотреть, validate(o)
выходит из строя. Затем повторите для каждого свойства объекта.
Мы также сталкиваемся с конкретными случаями, когда определенное свойство должно быть недействительным. Например, проверка того, будет ли наша система правильно обрабатывать неверный идентификатор. Это проще, мы можем просто использовать forAll(someGen)
и мутировать его. Эффективно, просто v => val invalidV = v copy(id = "badID")
и теперь для каждого сгенерированного свойства я изменил его, чтобы иметь плохой идентификатор. Конечно, вы можете полюбить, но вы поняли идею.
Все это кратко изложено в моем другом посте... вместе с открытым предложением о "лучшем образце". Надеюсь получить хорошие идеи!