Когда выбирать тестирование на основе примеров и свойство на основе тестирования с отслеживанием состояния

В настоящее время я провожу модульное тестирование в основном для Android SDK в Android Studio и использую Jqwik , инструмент тестирования на основе свойств на платформе JUnit.

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

1 ответ

Цель поделиться этим: перепроверить с сообществом, правильно ли я думаю.

Обозначения:EBT = тестирование на основе примеров;PBT = тестирование на основе свойств;

Что я понял: EBT делается для проверки того, работают ли функции так, как они должны быть, в то время как PBT поднимается на один уровень выше, фальсифицируя заданные предварительные условия (входные данные) против инвариантов (поведение предметной области)

Что я чувствую: мне кажется, что инструмент Jqwik похож на параметризованный тест JUnit, но на стероидах.

Примеры тестирования баз

Плюсы:

  • Простая видимость того, какой тест проходит с указанными именами программистом, в отличие от PBT, просто показывает общее количество попыток, хотя мы можем регистрировать сгенерированные тестовые случаи, но способ JUnit более визуально привлекателен и прост для прохождения и чтения.

  • Может легко читать и понимать входные данные, как указано в самом тестовом примере, в отличие от PBT, где нам нужно изучить метод Provider, из которого Jqwik получает все произвольные значения.

  • Хорошо подходит для тестирования конечного автомата, где нет какой-либо комбинации зависимостей.

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

Минусы:

  • Обычно не охватывают все крайние случаи, поскольку автор Jqwik также сказал в презентации о EBT, что « он не может сдержать свое обещание».
  • Не лучший вариант, когда есть масса комбинаций для покрытия
  • В тестировании на основе примеров мы действительно действуем интуитивно, поэтому каждый программист покрывает тест разными тестовыми примерами, в отличие от PBT, который является своего рода исчерпывающим.

Тестирование на основе свойств

Плюсы:

  • Хорошо подходит для генерации случайных и конкретных входных данных.
  • Довольно хорошо, когда есть много комбинаций уникальных тестовых случаев, для этого он работает просто отлично.
  • Речь идет не только об исчерпывающих наборах входных комбинаций, но и об одном подмножестве PBT.

Минусы:

Для PBT в основном я наблюдал недостатки, связанные с читабельностью тестовых случаев:

  • Трудно читать и проходить через сгенерированные тестовые случаи, так как это просто журналы
  • Каковы текущие входные данные для тестовых случаев, мы должны изучить функции аннотации.
Другие вопросы по тегам