Когда выбирать тестирование на основе примеров и свойство на основе тестирования с отслеживанием состояния
В настоящее время я провожу модульное тестирование в основном для Android SDK в Android Studio и использую Jqwik , инструмент тестирования на основе свойств на платформе JUnit.
Изучая различные подходы к тестированию со своими старшими, я узнал о тестировании на основе примеров и тестировании на основе свойств. Я хочу знать, когда что выбрать.
1 ответ
Цель поделиться этим: перепроверить с сообществом, правильно ли я думаю.
Обозначения:EBT = тестирование на основе примеров;PBT = тестирование на основе свойств;
Что я понял: EBT делается для проверки того, работают ли функции так, как они должны быть, в то время как PBT поднимается на один уровень выше, фальсифицируя заданные предварительные условия (входные данные) против инвариантов (поведение предметной области)
Что я чувствую: мне кажется, что инструмент Jqwik похож на параметризованный тест JUnit, но на стероидах.
Примеры тестирования баз
Плюсы:
Простая видимость того, какой тест проходит с указанными именами программистом, в отличие от PBT, просто показывает общее количество попыток, хотя мы можем регистрировать сгенерированные тестовые случаи, но способ JUnit более визуально привлекателен и прост для прохождения и чтения.
Может легко читать и понимать входные данные, как указано в самом тестовом примере, в отличие от PBT, где нам нужно изучить метод Provider, из которого Jqwik получает все произвольные значения.
Хорошо подходит для тестирования конечного автомата, где нет какой-либо комбинации зависимостей.
Неспециалисту может быть легко понять работу конечного автомата, если он знает, как работает этот доменный компонент.
Минусы:
- Обычно не охватывают все крайние случаи, поскольку автор Jqwik также сказал в презентации о EBT, что « он не может сдержать свое обещание».
- Не лучший вариант, когда есть масса комбинаций для покрытия
- В тестировании на основе примеров мы действительно действуем интуитивно, поэтому каждый программист покрывает тест разными тестовыми примерами, в отличие от PBT, который является своего рода исчерпывающим.
Тестирование на основе свойств
Плюсы:
- Хорошо подходит для генерации случайных и конкретных входных данных.
- Довольно хорошо, когда есть много комбинаций уникальных тестовых случаев, для этого он работает просто отлично.
- Речь идет не только об исчерпывающих наборах входных комбинаций, но и об одном подмножестве PBT.
Минусы:
Для PBT в основном я наблюдал недостатки, связанные с читабельностью тестовых случаев:
- Трудно читать и проходить через сгенерированные тестовые случаи, так как это просто журналы
- Каковы текущие входные данные для тестовых случаев, мы должны изучить
функции аннотации.